Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add test case for 4 part FQDN routing #53

Merged
merged 11 commits into from
May 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,8 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Launch gateway and create link on gateway
run: make link-ci
- name: Run CI tests for subdomain.domain.tld
run: make link-ci GATEWAY=gateway-sshd FQDN=subdomain.domain.com

- name: Run CI tests for app.subdomain.domain.tld
run: make link-ci GATEWAY=gateway-sshd FQDN=app.subdomain.domain.com
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,4 @@ link-macos:
docker run -v /run/host-services/ssh-auth.sock:/run/host-services/ssh-auth.sock -e SSH_AUTH_SOCK="/run/host-services/ssh-auth.sock" -v "$$PWD:/workdir" --rm -it fractalnetworks/gateway-cli:latest $(GATEWAY) $(FQDN) $(EXPOSE)

link-ci:
./ci/create-link-ci.sh gateway-sshd app.example.com nginx:80
./ci/create-link-ci.sh $(GATEWAY) $(FQDN) nginx:80
24 changes: 17 additions & 7 deletions ci/create-link-ci.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ docker compose up -d --build
eval $(ssh-agent -s)
ssh-add ./gateway-sim-key

FQDN=$2
DASHED_FQDN="${2//./-}"



testLinkFile="" # Define the variable in a scope outside the cleanup function

Expand All @@ -21,7 +25,7 @@ function cleanup {
if [[ -n "$testLinkFile" ]]; then # Check if the variable is non-empty
echo "******* Cleanup function: cleaning up $testLinkFile..."
docker compose -f "$testLinkFile" down --timeout 0 || true
docker rm -f app-example-com || true
docker rm -f $DASHED_FQDN || true
# stop and remove gateway and sshd containers
docker compose down --timeout 0 || true

Expand All @@ -42,22 +46,28 @@ if [ "$normal_test_proceed" = true ]; then
docker run --network gateway -e SSH_AGENT_PID=$SSH_AGENT_PID -e SSH_AUTH_SOCK=$SSH_AUTH_SOCK -v $SSH_AUTH_SOCK:$SSH_AUTH_SOCK --rm fractalnetworks/gateway-cli:latest $1 $2 $3 >> $testLinkFile
cat network.yaml >> $testLinkFile
# set the gateway endpoint to the gateway link container
sed -i 's/^\(\s*GATEWAY_ENDPOINT:\).*/\1 app-example-com:18521/' $testLinkFile
sed -i "s/^\(\s*GATEWAY_ENDPOINT:\).*/\1 $DASHED_FQDN:18521/" $testLinkFile

docker compose -f $testLinkFile up -d --wait
docker compose -f $testLinkFile exec link ping 10.0.0.1 -c 1
# assert http response code was 200
# asserts basic auth is working with user: admin, password: admin

if ! docker compose exec gateway curl -k -H "Authorization: Basic YWRtaW46YWRtaW4=" --resolve app.example.com:443:127.0.0.1 https://app.example.com -I |grep "HTTP/2 200"; then

if ! docker compose exec gateway curl -k -H "Authorization: Basic YWRtaW46YWRtaW4=" --resolve $FQDN:80:127.0.0.1 http://$FQDN -I |grep "HTTP/1.1 308"; then
FAILED="true"
echo -e "\033[0;31m Default Link curl FAILED\033[0m" # red for failure
else
echo -e "\033[0;32m Default Link curl SUCCESS\033[0m" # green for success
fi
if ! docker compose exec gateway curl -k -H "Authorization: Basic YWRtaW46YWRtaW4=" --resolve $FQDN:443:127.0.0.1 https://$FQDN -I |grep "HTTP/2 200"; then
FAILED="true"
echo -e "\033[0;31m Default Link curl FAILED\033[0m" # red for failure
else
echo -e "\033[0;32m Default Link curl SUCCESS\033[0m" # green for success
fi

# remove test link so the next test can recreate it
docker rm -f app-example-com
docker rm -f $DASHED_FQDN
rm $testLinkFile
else
echo "******************* Skipping normal link test... \n(normal_test_greenlight was false)"
Expand All @@ -78,7 +88,7 @@ if [ "$caddy_greenlight" = true ]; then

# Go inside $testLinkFile and change... (requires the commented options to be there! Can change later)
# 1. gateway endpoint to the gateway link container
sed -i 's/^\(\s*GATEWAY_ENDPOINT:\).*/\1 app-example-com:18521/' $testLinkFile
sed -i "s/^\(\s*GATEWAY_ENDPOINT:\).*/\1 $DASHED_FQDN:18521/" $testLinkFile

# 2. CADDY_TLS_PROXY to ------------------------------------- true
sed -i 's/^\(\s*\)#\s*CADDY_TLS_PROXY: true/\1CADDY_TLS_PROXY: true/' $testLinkFile
Expand All @@ -97,7 +107,7 @@ if [ "$caddy_greenlight" = true ]; then
# assert http response code was 200
# asserts basic auth is working with user: admin, password: admin

if ! docker compose exec gateway curl -v -k -H "Authorization: Basic YWRtaW46YWRtaW4=" --resolve app.example.com:443:127.0.0.1 https://app.example.com -I 2>&1 |grep "HTTP/2 200"; then
if ! docker compose exec gateway curl -v -k -H "Authorization: Basic YWRtaW46YWRtaW4=" --resolve $FQDN:443:127.0.0.1 https://$FQDN -I 2>&1 |grep "HTTP/2 200"; then
FAILED="true"
echo -e "\033[0;31m Caddy TLS Link curl FAILED\033[0m" # red for failure
else
Expand Down
9 changes: 5 additions & 4 deletions src/gateway/http.conf.template
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@ server {
server_name "~^(?<app>.+?)?\.(?<subdomain>.+?)?\.(?<domain>.+)\.(?<tld>.+)$" "~^(?<subdomain>.+)\.(?<domain>.+)\.(?<tld>.+)$" "~^(?<domain>.+)\.(?<tld>.+)$";
#access_log /var/log/nginx/host.access.log main;

set $target http://$subdomain-$domain-$tld;
set $target http://$subdomain-$domain-$tld;

if ($app != '') {
set $target http://$app-$subdomain-$domain-$tld;
}
if ($app != '') {
set $target http://$app-$subdomain-$domain-$tld;
}

if ($subdomain = '') {
set $target http://$domain-$tld;
}

location /test {
add_header Content-Type text/plain;
return 200 "target: $target \napp: $app - subdomain: $subdomain - domain: $domain.$tld";
Expand Down