44 "context"
55 "crypto/tls"
66 "errors"
7- "log"
7+ "log/slog "
88 "net/http"
99 "os"
1010 "os/signal"
@@ -24,6 +24,12 @@ var flags []cli.Flag = []cli.Flag{
2424 Value : "127.0.0.1:8080" ,
2525 Usage : "address to listen on" ,
2626 },
27+ & cli.StringFlag {
28+ Name : "listen-addr-healthcheck" ,
29+ EnvVars : []string {"LISTEN_ADDR_HEALTHCHECK" },
30+ Value : "" ,
31+ Usage : "address to listen on for health checks" ,
32+ },
2733 & cli.StringFlag {
2834 Name : "target-addr" ,
2935 EnvVars : []string {"TARGET_ADDR" },
@@ -39,12 +45,12 @@ var flags []cli.Flag = []cli.Flag{
3945 & cli.StringFlag {
4046 Name : "tls-certificate" ,
4147 EnvVars : []string {"TLS_CERTIFICATE" },
42- Usage : "Certificate to present (PEM). Only valid for --server-attestation-type=none and with --tls-private-key." ,
48+ Usage : "Path to TLS certificate (PEM). Only valid for --server-attestation-type=none and with --tls-private-key." ,
4349 },
4450 & cli.StringFlag {
4551 Name : "tls-private-key" ,
4652 EnvVars : []string {"TLS_PRIVATE_KEY" },
47- Usage : "Private key for the certificate (PEM) . Only valid with --tls-certificate." ,
53+ Usage : "Path to private key for the certificate. Only valid with --tls-certificate." ,
4854 },
4955 & cli.StringFlag {
5056 Name : "client-attestation-type" ,
@@ -71,6 +77,8 @@ var flags []cli.Flag = []cli.Flag{
7177 },
7278}
7379
80+ var log * slog.Logger
81+
7482func main () {
7583 app := & cli.App {
7684 Name : "proxy-server" ,
@@ -80,7 +88,11 @@ func main() {
8088 }
8189
8290 if err := app .Run (os .Args ); err != nil {
83- log .Fatal (err )
91+ if log != nil {
92+ log .Error ("error running app" , "err" , err )
93+ } else {
94+ panic (err )
95+ }
8496 }
8597}
8698
@@ -95,7 +107,7 @@ func runServer(cCtx *cli.Context) error {
95107 certFile := cCtx .String ("tls-certificate" )
96108 keyFile := cCtx .String ("tls-private-key" )
97109
98- log : = common .SetupLogger (& common.LoggingOpts {
110+ log = common .SetupLogger (& common.LoggingOpts {
99111 Debug : logDebug ,
100112 JSON : logJSON ,
101113 Service : "proxy-server" ,
@@ -196,6 +208,12 @@ func runServer(cCtx *cli.Context) error {
196208 }
197209 }()
198210
211+ // Start the health check server
212+ listenAddrHealthCheck := cCtx .String ("listen-addr-healthcheck" )
213+ if listenAddrHealthCheck != "" {
214+ go startHealthCheckServer (listenAddrHealthCheck )
215+ }
216+
199217 log .With ("listenAddr" , listenAddr ).Info ("Starting proxy server" )
200218 err = server .Serve (tlsListener )
201219 if err != nil {
@@ -205,3 +223,17 @@ func runServer(cCtx *cli.Context) error {
205223
206224 return nil
207225}
226+
227+ func startHealthCheckServer (listenAddrHealthCheck string ) {
228+ log .With ("healthCheckListenAddr" , listenAddrHealthCheck ).Info ("Starting health check server" )
229+ healthCheckServer := & http.Server {
230+ Addr : listenAddrHealthCheck ,
231+ Handler : http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
232+ w .WriteHeader (http .StatusOK )
233+ }),
234+ }
235+ err := healthCheckServer .ListenAndServe ()
236+ if err != nil {
237+ log .Error ("could not start health check server" , "err" , err )
238+ }
239+ }
0 commit comments