@@ -3,6 +3,7 @@ package cmd
33import (
44 "context"
55 "fmt"
6+ "net"
67 "net/http"
78 "os"
89 "os/signal"
@@ -42,26 +43,40 @@ the address is defined in config file`,
4243 r := gin .New ()
4344 r .Use (gin .LoggerWithWriter (log .StandardLogger ().Out ), gin .RecoveryWithWriter (log .StandardLogger ().Out ))
4445 server .Init (r )
45- var httpSrv , httpsSrv * http.Server
46- if ! conf .Conf .Scheme .DisableHttp {
47- httpBase := fmt .Sprintf ("%s:%d" , conf .Conf .Address , conf .Conf .Port )
46+ var httpSrv , httpsSrv , unixSrv * http.Server
47+ if conf .Conf .Scheme .HttpPort != - 1 {
48+ httpBase := fmt .Sprintf ("%s:%d" , conf .Conf .Scheme . Address , conf .Conf .Scheme . HttpPort )
4849 utils .Log .Infof ("start HTTP server @ %s" , httpBase )
4950 httpSrv = & http.Server {Addr : httpBase , Handler : r }
5051 go func () {
5152 err := httpSrv .ListenAndServe ()
5253 if err != nil && err != http .ErrServerClosed {
53- utils .Log .Fatalf ("failed to start: %s" , err .Error ())
54+ utils .Log .Fatalf ("failed to start http : %s" , err .Error ())
5455 }
5556 }()
5657 }
57- if conf .Conf .Scheme .Https {
58- httpsBase := fmt .Sprintf ("%s:%d" , conf .Conf .Address , conf .Conf .HttpsPort )
58+ if conf .Conf .Scheme .HttpsPort != - 1 {
59+ httpsBase := fmt .Sprintf ("%s:%d" , conf .Conf .Scheme . Address , conf .Conf .Scheme . HttpPort )
5960 utils .Log .Infof ("start HTTPS server @ %s" , httpsBase )
6061 httpsSrv = & http.Server {Addr : httpsBase , Handler : r }
6162 go func () {
6263 err := httpsSrv .ListenAndServeTLS (conf .Conf .Scheme .CertFile , conf .Conf .Scheme .KeyFile )
6364 if err != nil && err != http .ErrServerClosed {
64- utils .Log .Fatalf ("failed to start: %s" , err .Error ())
65+ utils .Log .Fatalf ("failed to start https: %s" , err .Error ())
66+ }
67+ }()
68+ }
69+ if conf .Conf .Scheme .UnixFile != "" {
70+ utils .Log .Infof ("start unix server @ %s" , conf .Conf .Scheme .UnixFile )
71+ unixSrv = & http.Server {Handler : r }
72+ go func () {
73+ listener , err := net .Listen ("unix" , conf .Conf .Scheme .UnixFile )
74+ if err != nil {
75+ utils .Log .Fatalf ("failed to listen unix: %+v" , err )
76+ }
77+ err = unixSrv .Serve (listener )
78+ if err != nil && err != http .ErrServerClosed {
79+ utils .Log .Fatalf ("failed to start unix: %s" , err .Error ())
6580 }
6681 }()
6782 }
@@ -78,21 +93,30 @@ the address is defined in config file`,
7893 ctx , cancel := context .WithTimeout (context .Background (), 1 * time .Second )
7994 defer cancel ()
8095 var wg sync.WaitGroup
81- if ! conf .Conf .Scheme .DisableHttp {
96+ if conf .Conf .Scheme .HttpPort != - 1 {
8297 wg .Add (1 )
8398 go func () {
8499 defer wg .Done ()
85100 if err := httpSrv .Shutdown (ctx ); err != nil {
86- utils .Log .Fatal ("HTTP server shutdown: " , err )
101+ utils .Log .Fatal ("HTTP server shutdown err: " , err )
87102 }
88103 }()
89104 }
90- if conf .Conf .Scheme .Https {
105+ if conf .Conf .Scheme .HttpsPort != - 1 {
91106 wg .Add (1 )
92107 go func () {
93108 defer wg .Done ()
94109 if err := httpsSrv .Shutdown (ctx ); err != nil {
95- utils .Log .Fatal ("HTTPS server shutdown:" , err )
110+ utils .Log .Fatal ("HTTPS server shutdown err: " , err )
111+ }
112+ }()
113+ }
114+ if conf .Conf .Scheme .UnixFile != "" {
115+ wg .Add (1 )
116+ go func () {
117+ defer wg .Done ()
118+ if err := unixSrv .Shutdown (ctx ); err != nil {
119+ utils .Log .Fatal ("Unix server shutdown err: " , err )
96120 }
97121 }()
98122 }
0 commit comments