feat: refactor relay server flags
gosunuts committed
Feb 26, 2026 at 19:15 UTC
44b5d1fc52a913d5adc2276567babf222465ccfb
1 file changed
+28
-30
cmd/relay-server/main.go
+28
-30
@@ -20,22 +20,21 @@ import (
20
)
21
22
var (
23
- flagPortalURL string
24
- flagBootstraps []string
25
- flagALPN string
23
+ // Server
24
flagPort int
27
- flagMaxLease int
28
- flagLeaseBPS int
29
- flagNoIndex bool
25
flagAdminSecretKey string
26
+ flagNoIndex bool
27
+ flagLeaseBPS int
28
+
29
+ // Portal
30
+ flagPortalURL string
31
+ flagBootstraps []string
32
32
- // ACME DNS-01 flags for TLSAuto support
33
+ // TLS
34
+ flagSNIPort string
35
flagACMEDNSProvider string
36
flagACMEEmail string
37
flagACMEDirectory string
36
-
37
- // SNI router
38
- flagSNIPort string
38
)
39
40
func main() {
@@ -50,25 +49,27 @@ func main() {
49
if defaultBootstraps == "" {
50
defaultBootstraps = defaultBootstrapFrom(defaultPortalURL)
51
}
52
+ defaultSNIPort := os.Getenv("SNI_PORT")
53
+ if defaultSNIPort == "" {
54
+ defaultSNIPort = ":443"
55
+ }
56
54
- var flagBootstrapsCSV string
55
- flag.StringVar(&flagPortalURL, "portal-url", defaultPortalURL, "base URL for portal frontend (env: PORTAL_URL)")
56
- flag.StringVar(&flagBootstrapsCSV, "bootstraps", defaultBootstraps, "bootstrap addresses (comma-separated)")
57
- flag.StringVar(&flagALPN, "alpn", "http/1.1", "ALPN identifier for this service")
58
- flag.IntVar(&flagPort, "port", 4017, "app UI and HTTP proxy port")
59
- flag.IntVar(&flagMaxLease, "max-lease", 0, "maximum active relayed connections per lease (0 = unlimited)")
60
- flag.IntVar(&flagLeaseBPS, "lease-bps", 0, "default bytes-per-second limit per lease (0 = unlimited)")
61
-
62
- defaultNoIndex := os.Getenv("NOINDEX") == "true"
63
- flag.BoolVar(&flagNoIndex, "noindex", defaultNoIndex, "disallow all crawlers via robots.txt (env: NOINDEX)")
64
- flag.StringVar(&flagAdminSecretKey, "admin-secret-key", os.Getenv("ADMIN_SECRET_KEY"), "secret key for admin authentication (env: ADMIN_SECRET_KEY)")
57
+ // Server flags
58
+ flag.IntVar(&flagPort, "port", 4017, "HTTP server port")
59
+ flag.StringVar(&flagAdminSecretKey, "admin-secret-key", os.Getenv("ADMIN_SECRET_KEY"), "admin auth secret (env: ADMIN_SECRET_KEY)")
60
+ flag.BoolVar(&flagNoIndex, "noindex", os.Getenv("NOINDEX") == "true", "disallow crawlers (env: NOINDEX)")
61
+ flag.IntVar(&flagLeaseBPS, "lease-bps", 0, "bytes-per-second limit per lease (0=unlimited)")
62
66
- // ACME DNS-01 flags
67
- flag.StringVar(&flagACMEDNSProvider, "acme-dns-provider", os.Getenv("ACME_DNS_PROVIDER"), "DNS provider for ACME DNS-01 challenge (cloudflare, route53)")
68
- flag.StringVar(&flagACMEEmail, "acme-email", os.Getenv("ACME_EMAIL"), "email for ACME account registration")
69
- flag.StringVar(&flagACMEDirectory, "acme-directory", os.Getenv("ACME_DIRECTORY"), "ACME directory URL (default: Let's Encrypt production)")
63
+ // Portal flags
64
+ var flagBootstrapsCSV string
65
+ flag.StringVar(&flagPortalURL, "portal-url", defaultPortalURL, "portal base URL (env: PORTAL_URL)")
66
+ flag.StringVar(&flagBootstrapsCSV, "bootstraps", defaultBootstraps, "bootstrap URIs, comma-separated (env: BOOTSTRAP_URIS)")
67
71
- flag.StringVar(&flagSNIPort, "sni-port", os.Getenv("SNI_PORT"), "SNI router port for TLS passthrough (env: SNI_PORT)")
68
+ // TLS flags
69
+ flag.StringVar(&flagSNIPort, "sni-port", defaultSNIPort, "SNI router port (env: SNI_PORT)")
70
+ flag.StringVar(&flagACMEDNSProvider, "acme-dns-provider", os.Getenv("ACME_DNS_PROVIDER"), "ACME DNS provider (env: ACME_DNS_PROVIDER)")
71
+ flag.StringVar(&flagACMEEmail, "acme-email", os.Getenv("ACME_EMAIL"), "ACME account email (env: ACME_EMAIL)")
72
+ flag.StringVar(&flagACMEDirectory, "acme-directory", os.Getenv("ACME_DIRECTORY"), "ACME directory URL (env: ACME_DIRECTORY)")
73
74
flag.Parse()
75
@@ -84,12 +85,9 @@ func runServer() error {
85
86
log.Info().
87
Str("portal_base_url", flagPortalURL).
87
- Str("bootstrap_uris", strings.Join(flagBootstraps, ",")).
88
+ Strs("bootstrap_uris", flagBootstraps).
89
Msg("[server] frontend configuration")
90
90
- if flagSNIPort == "" {
91
- flagSNIPort = ":443"
92
- }
91
serv := portal.NewRelayServer(ctx, flagBootstraps, flagSNIPort, flagPortalURL, flagACMEDNSProvider, flagACMEEmail, flagACMEDirectory)
92
93
frontend := NewFrontend()