tls 활성화 할 때 파일이 존재하는 지 확인

This commit is contained in:
2024-07-08 15:26:47 +09:00
parent 18d284a4ea
commit fa3b0c070a

View File

@ -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)
}