Skip to content

Commit 7ded489

Browse files
committed
Add TLS_ACCEPT_TOS configuration option
- Add getEnvBoolWithDefault helper function to parse boolean environment variables - Add tlsAcceptTOS flag and TLS_ACCEPT_TOS environment variable - Update autocert.Manager to use configurable TOS acceptance instead of automatic acceptance - Allows users to explicitly control whether to accept ACME terms of service
1 parent 1cb0564 commit 7ded489

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

main.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,22 @@ func getEnvWithDefault(key, defaultValue string) string {
1515
return defaultValue
1616
}
1717

18+
func getEnvBoolWithDefault(key string, defaultValue bool) bool {
19+
if value := os.Getenv(key); value != "" {
20+
if strings.ToLower(value) == "true" || value == "1" {
21+
return true
22+
}
23+
return false
24+
}
25+
return defaultValue
26+
}
27+
1828
func main() {
1929
var listen string
2030
var listenTLS string
2131
var tlsHost string
2232
var tlsDirectoryURL string
33+
var tlsAcceptTOS bool
2334
var dataPath string
2435
var externalURL string
2536
var proxyURL string
@@ -57,6 +68,7 @@ func main() {
5768
listenTLS,
5869
tlsHost,
5970
tlsDirectoryURL,
71+
tlsAcceptTOS,
6072
dataPath,
6173
externalURL,
6274
proxyURL,
@@ -75,10 +87,11 @@ func main() {
7587
},
7688
}
7789

78-
rootCmd.Flags().StringVarP(&listen, "listen", "l", getEnvWithDefault("LISTEN", ":80"), "Address to listen on")
79-
rootCmd.Flags().StringVarP(&listenTLS, "listen-tls", "t", getEnvWithDefault("TLS_LISTEN", ":443"), "Address to listen on for TLS")
90+
rootCmd.Flags().StringVar(&listen, "listen", getEnvWithDefault("LISTEN", ":80"), "Address to listen on")
91+
rootCmd.Flags().StringVar(&listenTLS, "listen-tls", getEnvWithDefault("TLS_LISTEN", ":443"), "Address to listen on for TLS")
8092
rootCmd.Flags().StringVarP(&tlsHost, "tls-host", "H", getEnvWithDefault("TLS_HOST", ""), "Host name for TLS")
81-
rootCmd.Flags().StringVarP(&tlsDirectoryURL, "tls-directory-url", "D", getEnvWithDefault("TLS_DIRECTORY_URL", "https://acme-v02.api.letsencrypt.org/directory"), "ACME directory URL for TLS certificates")
93+
rootCmd.Flags().StringVar(&tlsDirectoryURL, "tls-directory-url", getEnvWithDefault("TLS_DIRECTORY_URL", "https://acme-v02.api.letsencrypt.org/directory"), "ACME directory URL for TLS certificates")
94+
rootCmd.Flags().BoolVar(&tlsAcceptTOS, "tls-accept-tos", getEnvBoolWithDefault("TLS_ACCEPT_TOS", false), "Accept TLS terms of service")
8295
rootCmd.Flags().StringVarP(&dataPath, "data", "d", getEnvWithDefault("DATA_PATH", "./data"), "Path to the data directory")
8396
rootCmd.Flags().StringVarP(&externalURL, "external-url", "e", getEnvWithDefault("EXTERNAL_URL", "http://localhost"), "External URL for the proxy")
8497
rootCmd.Flags().StringVarP(&proxyURL, "proxy-url", "p", getEnvWithDefault("PROXY_URL", "http://localhost:8080"), "Proxy URL for the proxy")

pkg/mcp-proxy/main.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ func Run(
3030
listenTLS string,
3131
tlsHost string,
3232
tlsDirectoryURL string,
33+
tlsAcceptTOS bool,
3334
dataPath string,
3435
externalURL string,
3536
proxyURL string,
@@ -141,7 +142,9 @@ func Run(
141142

142143
if tlsHost != "" {
143144
m := autocert.Manager{
144-
Prompt: autocert.AcceptTOS,
145+
Prompt: func(tosURL string) bool {
146+
return tlsAcceptTOS
147+
},
145148
HostPolicy: autocert.HostWhitelist(tlsHost),
146149
Cache: autocert.DirCache(path.Join(dataPath, "certs")),
147150
Client: &acme.Client{

0 commit comments

Comments
 (0)