2 Commits

Author SHA1 Message Date
c36625cb56 chore: clean the start of the server 2021-12-03 18:55:03 +01:00
a067f0ee4c fix: rename WHOAMI_PORT to WHOAMI_PORT_NUMBER
k8s creates env var based on service name,
then WHOAMI_PORT exists and contains a URL instead of a number.
2021-12-03 18:49:47 +01:00
2 changed files with 25 additions and 20 deletions

View File

@ -22,7 +22,7 @@ Tiny Go webserver that prints os information and HTTP request to output
- `cert`: give me a certificate. - `cert`: give me a certificate.
- `key`: give me a key. - `key`: give me a key.
- `port`: give me a port number. (it can be also defined with `WHOAMI_PORT` environment variable) (default: 80) - `port`: give me a port number. (it can be also defined with `WHOAMI_PORT_NUMBER` environment variable) (default: 80)
- `name`: give me a name. (it can be also defined with `WHOAMI_NAME` environment variable) - `name`: give me a name. (it can be also defined with `WHOAMI_NAME` environment variable)
## Examples ## Examples

27
app.go
View File

@ -43,7 +43,7 @@ func init() {
flag.StringVar(&cert, "cert", "", "give me a certificate") flag.StringVar(&cert, "cert", "", "give me a certificate")
flag.StringVar(&key, "key", "", "give me a key") flag.StringVar(&key, "key", "", "give me a key")
flag.StringVar(&ca, "cacert", "", "give me a CA chain, enforces mutual TLS") flag.StringVar(&ca, "cacert", "", "give me a CA chain, enforces mutual TLS")
flag.StringVar(&port, "port", getEnv("WHOAMI_PORT", "80"), "give me a port number") flag.StringVar(&port, "port", getEnv("WHOAMI_PORT_NUMBER", "80"), "give me a port number")
flag.StringVar(&name, "name", os.Getenv("WHOAMI_NAME"), "give me a name") flag.StringVar(&name, "name", os.Getenv("WHOAMI_NAME"), "give me a name")
} }
@ -55,28 +55,33 @@ var upgrader = websocket.Upgrader{
func main() { func main() {
flag.Parse() flag.Parse()
http.HandleFunc("/data", dataHandler) mux := http.NewServeMux()
http.HandleFunc("/echo", echoHandler) mux.HandleFunc("/data", dataHandler)
http.HandleFunc("/bench", benchHandler) mux.HandleFunc("/echo", echoHandler)
http.HandleFunc("/", whoamiHandler) mux.HandleFunc("/bench", benchHandler)
http.HandleFunc("/api", apiHandler) mux.HandleFunc("/", whoamiHandler)
http.HandleFunc("/health", healthHandler) mux.HandleFunc("/api", apiHandler)
mux.HandleFunc("/health", healthHandler)
fmt.Println("Starting up on port " + port) if cert == "" || key == "" {
log.Printf("Starting up on port %s", port)
log.Fatal(http.ListenAndServe(":"+port, mux))
}
if len(cert) > 0 && len(key) > 0 {
server := &http.Server{ server := &http.Server{
Addr: ":" + port, Addr: ":" + port,
Handler: mux,
} }
if len(ca) > 0 { if len(ca) > 0 {
server.TLSConfig = setupMutualTLS(ca) server.TLSConfig = setupMutualTLS(ca)
} }
log.Printf("Starting up with TLS on port %s", port)
log.Fatal(server.ListenAndServeTLS(cert, key)) log.Fatal(server.ListenAndServeTLS(cert, key))
} }
log.Fatal(http.ListenAndServe(":"+port, nil))
}
func setupMutualTLS(ca string) *tls.Config { func setupMutualTLS(ca string) *tls.Config {
clientCACert, err := ioutil.ReadFile(ca) clientCACert, err := ioutil.ReadFile(ca)