|
14 | 14 | # Load .env if present |
15 | 15 | if [ -f ".env" ]; then |
16 | 16 | set -a |
| 17 | + # shellcheck source=/dev/null |
17 | 18 | source .env |
18 | 19 | set +a |
19 | 20 | fi |
20 | 21 |
|
21 | 22 | ADMIN_ADDR="${1:-${GATEWAY_ADMIN_RPC_ADDR:-127.0.0.1:9203}}" |
22 | 23 |
|
| 24 | +# When admin auth is enabled, ADMIN_TOKEN must be set so curl can present |
| 25 | +# X-Admin-Token. Empty token = legacy unauthenticated mode. |
| 26 | +AUTH_HEADER=() |
| 27 | +if [ -n "$ADMIN_TOKEN" ]; then |
| 28 | + AUTH_HEADER=(-H "X-Admin-Token: $ADMIN_TOKEN") |
| 29 | +fi |
| 30 | + |
23 | 31 | echo "Waiting for gateway admin API at $ADMIN_ADDR..." |
24 | 32 | max_retries=60 |
25 | 33 | retry=0 |
26 | 34 | while [ $retry -lt $max_retries ]; do |
27 | | - if curl -sf "http://$ADMIN_ADDR/prpc/Status" >/dev/null 2>&1; then |
| 35 | + if curl -sf "${AUTH_HEADER[@]}" "http://$ADMIN_ADDR/prpc/Status" >/dev/null 2>&1; then |
28 | 36 | break |
29 | 37 | fi |
30 | 38 | retry=$((retry + 1)) |
|
47 | 55 | fi |
48 | 56 |
|
49 | 57 | echo "Setting certbot config (ACME URL: $ACME_URL)..." |
50 | | -curl -sf -X POST "http://$ADMIN_ADDR/prpc/SetCertbotConfig" \ |
| 58 | +curl -sf -X POST "${AUTH_HEADER[@]}" "http://$ADMIN_ADDR/prpc/SetCertbotConfig" \ |
51 | 59 | -H "Content-Type: application/json" \ |
52 | 60 | -d '{"acme_url":"'"$ACME_URL"'","renew_interval_secs":3600,"renew_before_expiration_secs":864000,"renew_timeout_secs":300}' >/dev/null \ |
53 | 61 | && echo " Certbot config set" || echo " WARN: failed to set certbot config" |
54 | 62 |
|
55 | 63 | # Create DNS credential if CF_API_TOKEN is provided and no credentials exist yet |
56 | 64 | if [ -n "$CF_API_TOKEN" ]; then |
57 | | - existing=$(curl -sf "http://$ADMIN_ADDR/prpc/ListDnsCredentials" 2>/dev/null) |
| 65 | + existing=$(curl -sf "${AUTH_HEADER[@]}" "http://$ADMIN_ADDR/prpc/ListDnsCredentials" 2>/dev/null) |
58 | 66 | cred_count=$(echo "$existing" | jq -r '.credentials | length' 2>/dev/null || echo "0") |
59 | 67 |
|
60 | 68 | if [ "$cred_count" = "0" ]; then |
61 | 69 | echo "Creating default DNS credential..." |
62 | | - curl -sf -X POST "http://$ADMIN_ADDR/prpc/CreateDnsCredential" \ |
| 70 | + curl -sf -X POST "${AUTH_HEADER[@]}" "http://$ADMIN_ADDR/prpc/CreateDnsCredential" \ |
63 | 71 | -H "Content-Type: application/json" \ |
64 | 72 | -d '{"name":"cloudflare","provider_type":"cloudflare","cf_api_token":"'"$CF_API_TOKEN"'","set_as_default":true}' >/dev/null \ |
65 | 73 | && echo " DNS credential created" || echo " WARN: failed to create DNS credential" |
|
72 | 80 |
|
73 | 81 | # Add ZT-Domain if SRV_DOMAIN is provided and domain doesn't exist yet |
74 | 82 | if [ -n "$SRV_DOMAIN" ]; then |
75 | | - existing=$(curl -sf "http://$ADMIN_ADDR/prpc/ListZtDomains" 2>/dev/null) |
| 83 | + existing=$(curl -sf "${AUTH_HEADER[@]}" "http://$ADMIN_ADDR/prpc/ListZtDomains" 2>/dev/null) |
76 | 84 | has_domain=$(echo "$existing" | jq -r '.domains[]? | select(.domain=="'"$SRV_DOMAIN"'") | .domain' 2>/dev/null) |
77 | 85 |
|
78 | 86 | if [ -z "$has_domain" ]; then |
79 | 87 | echo "Adding ZT-Domain: $SRV_DOMAIN..." |
80 | | - curl -sf -X POST "http://$ADMIN_ADDR/prpc/AddZtDomain" \ |
| 88 | + curl -sf -X POST "${AUTH_HEADER[@]}" "http://$ADMIN_ADDR/prpc/AddZtDomain" \ |
81 | 89 | -H "Content-Type: application/json" \ |
82 | 90 | -d '{"domain":"'"$SRV_DOMAIN"'","port":443,"priority":100}' >/dev/null \ |
83 | 91 | && echo " ZT-Domain added" || echo " WARN: failed to add ZT-Domain" |
|
0 commit comments