From 172479e4fbfad48d4b7e7ca18126387a6f41b72b Mon Sep 17 00:00:00 2001 From: Toby Chui Date: Fri, 20 Oct 2023 13:44:47 +0800 Subject: [PATCH] Added default HTTP/2 Mode + Added automatic HTTP/2 switch to TLS mode (Related to #40) --- src/mod/dynamicproxy/dynamicproxy.go | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/mod/dynamicproxy/dynamicproxy.go b/src/mod/dynamicproxy/dynamicproxy.go index 8b5d750..4c280ea 100644 --- a/src/mod/dynamicproxy/dynamicproxy.go +++ b/src/mod/dynamicproxy/dynamicproxy.go @@ -95,15 +95,21 @@ func (router *Router) StartProxyService() error { } if router.Option.UseTls { - //Serve with TLS mode - ln, err := tls.Listen("tcp", ":"+strconv.Itoa(router.Option.Port), config) - if err != nil { - log.Println(err) - router.Running = false - return err + /* + //Serve with TLS mode + ln, err := tls.Listen("tcp", ":"+strconv.Itoa(router.Option.Port), config) + if err != nil { + log.Println(err) + router.Running = false + return err + } + router.tlsListener = ln + */ + router.server = &http.Server{ + Addr: ":" + strconv.Itoa(router.Option.Port), + Handler: router.mux, + TLSConfig: config, } - router.tlsListener = ln - router.server = &http.Server{Addr: ":" + strconv.Itoa(router.Option.Port), Handler: router.mux} router.Running = true if router.Option.Port != 80 && router.Option.ForceHttpsRedirect { @@ -143,7 +149,7 @@ func (router *Router) StartProxyService() error { if err := httpServer.ListenAndServe(); err != nil && err != http.ErrServerClosed { //Unable to startup port 80 listener. Handle shutdown process gracefully stopChan <- true - log.Fatalf("Could not start server: %v\n", err) + log.Fatalf("Could not start redirection server: %v\n", err) } }() router.tlsRedirectStop = stopChan @@ -152,8 +158,8 @@ func (router *Router) StartProxyService() error { //Start the TLS server log.Println("Reverse proxy service started in the background (TLS mode)") go func() { - if err := router.server.Serve(ln); err != nil && err != http.ErrServerClosed { - log.Fatalf("Could not start server: %v\n", err) + if err := router.server.ListenAndServeTLS("", ""); err != nil && err != http.ErrServerClosed { + log.Fatalf("Could not start proxy server: %v\n", err) } }() } else {