diff --git a/server.go b/server.go index 9be8c94..ccce477 100644 --- a/server.go +++ b/server.go @@ -109,9 +109,35 @@ func welcomeHandler(w http.ResponseWriter, r *http.Request) { var tls = flagx.String("tls", "", "") var portptr = flagx.Int("port", 80, "") +func isTlsEnabled(fileout ...*string) bool { + if len(*tls) == 0 { + return false + } + + crtfile := *tls + ".crt" + if _, err := os.Stat(crtfile); os.IsNotExist(err) { + return false + } + + keyfile := *tls + ".key" + if _, err := os.Stat(keyfile); os.IsNotExist(err) { + return false + } + + if len(fileout) > 0 { + *fileout[0] = crtfile + } + + if len(fileout) > 1 { + *fileout[1] = keyfile + } + + return true +} + // NewHTTPServer : func NewHTTPServerWithPort(serveMux *http.ServeMux, port int) *Server { - if len(*tls) > 0 && port == 80 { + if isTlsEnabled() && port == 80 { port = 443 } addr := fmt.Sprintf(":%d", port) @@ -130,7 +156,7 @@ func NewHTTPServerWithPort(serveMux *http.ServeMux, port int) *Server { func NewHTTPServer(serveMux *http.ServeMux) *Server { // 시작시 자동으로 enable됨 - if len(*tls) > 0 && *portptr == 80 { + if isTlsEnabled() && *portptr == 80 { *portptr = 443 } return NewHTTPServerWithPort(serveMux, *portptr) @@ -198,12 +224,13 @@ func (server *Server) Start() error { defer proxyListener.Close() var err error - if len(*tls) > 0 { - crtfile := *tls + ".crt" - keyfile := *tls + ".key" + var crtfile string + var keyfile string + if isTlsEnabled(&crtfile, &keyfile) { logger.Println("tls enabled :", crtfile, keyfile) err = server.httpserver.ServeTLS(proxyListener, crtfile, keyfile) } else { + logger.Println("tls disabled") err = server.httpserver.Serve(proxyListener) }