forked from External/grumble
Merge pull request #51 from olabiniV2/optional_webport
Add a configuration parameter making it possible to avoid the web port
This commit is contained in:
commit
00b8984bd4
1 changed files with 63 additions and 41 deletions
|
|
@ -1358,6 +1358,12 @@ func (server *Server) Port() int {
|
||||||
return port
|
return port
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ListenWebPort returns true if we should listen to the
|
||||||
|
// web port, otherwise false
|
||||||
|
func (server *Server) ListenWebPort() bool {
|
||||||
|
return !server.cfg.BoolValue("NoWebServer")
|
||||||
|
}
|
||||||
|
|
||||||
// WebPort returns the port the web server will listen on when it is
|
// WebPort returns the port the web server will listen on when it is
|
||||||
// started.
|
// started.
|
||||||
func (server *Server) WebPort() int {
|
func (server *Server) WebPort() int {
|
||||||
|
|
@ -1399,6 +1405,7 @@ func (server *Server) Start() (err error) {
|
||||||
host := server.HostAddress()
|
host := server.HostAddress()
|
||||||
port := server.Port()
|
port := server.Port()
|
||||||
webport := server.WebPort()
|
webport := server.WebPort()
|
||||||
|
shouldListenWeb := server.ListenWebPort()
|
||||||
|
|
||||||
// Setup our UDP listener
|
// Setup our UDP listener
|
||||||
server.udpconn, err = net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP(host), Port: port})
|
server.udpconn, err = net.ListenUDP("udp", &net.UDPAddr{IP: net.ParseIP(host), Port: port})
|
||||||
|
|
@ -1437,6 +1444,7 @@ func (server *Server) Start() (err error) {
|
||||||
}
|
}
|
||||||
server.tlsl = tls.NewListener(server.tcpl, server.tlscfg)
|
server.tlsl = tls.NewListener(server.tcpl, server.tlscfg)
|
||||||
|
|
||||||
|
if shouldListenWeb {
|
||||||
// Create HTTP server and WebSocket "listener"
|
// Create HTTP server and WebSocket "listener"
|
||||||
webaddr := &net.TCPAddr{IP: net.ParseIP(host), Port: webport}
|
webaddr := &net.TCPAddr{IP: net.ParseIP(host), Port: webport}
|
||||||
server.webtlscfg = &tls.Config{
|
server.webtlscfg = &tls.Config{
|
||||||
|
|
@ -1468,6 +1476,10 @@ func (server *Server) Start() (err error) {
|
||||||
}()
|
}()
|
||||||
|
|
||||||
server.Printf("Started: listening on %v and %v", server.tcpl.Addr(), server.webwsl.Addr())
|
server.Printf("Started: listening on %v and %v", server.tcpl.Addr(), server.webwsl.Addr())
|
||||||
|
} else {
|
||||||
|
server.Printf("Started: listening on %v", server.tcpl.Addr())
|
||||||
|
}
|
||||||
|
|
||||||
server.running = true
|
server.running = true
|
||||||
|
|
||||||
// Open a fresh freezer log
|
// Open a fresh freezer log
|
||||||
|
|
@ -1490,10 +1502,17 @@ func (server *Server) Start() (err error) {
|
||||||
// for the servers. Each network goroutine defers a call to
|
// for the servers. Each network goroutine defers a call to
|
||||||
// netwg.Done(). In the Stop() we close all the connections
|
// netwg.Done(). In the Stop() we close all the connections
|
||||||
// and call netwg.Wait() to wait for the goroutines to end.
|
// and call netwg.Wait() to wait for the goroutines to end.
|
||||||
server.netwg.Add(3)
|
numWG := 2
|
||||||
|
if shouldListenWeb {
|
||||||
|
numWG++
|
||||||
|
}
|
||||||
|
|
||||||
|
server.netwg.Add(numWG)
|
||||||
go server.udpListenLoop()
|
go server.udpListenLoop()
|
||||||
go server.acceptLoop(server.tlsl)
|
go server.acceptLoop(server.tlsl)
|
||||||
|
if shouldListenWeb {
|
||||||
go server.acceptLoop(server.webwsl)
|
go server.acceptLoop(server.webwsl)
|
||||||
|
}
|
||||||
|
|
||||||
// Schedule a server registration update (if needed)
|
// Schedule a server registration update (if needed)
|
||||||
go func() {
|
go func() {
|
||||||
|
|
@ -1523,6 +1542,7 @@ func (server *Server) Stop() (err error) {
|
||||||
// This does not apply to opened WebSockets, which were forcibly closed when
|
// This does not apply to opened WebSockets, which were forcibly closed when
|
||||||
// all clients were disconnected.
|
// all clients were disconnected.
|
||||||
ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(15*time.Second))
|
ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(15*time.Second))
|
||||||
|
if server.ListenWebPort() {
|
||||||
err = server.webhttp.Shutdown(ctx)
|
err = server.webhttp.Shutdown(ctx)
|
||||||
cancel()
|
cancel()
|
||||||
if err == context.DeadlineExceeded {
|
if err == context.DeadlineExceeded {
|
||||||
|
|
@ -1531,12 +1551,14 @@ func (server *Server) Stop() (err error) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close the listeners
|
err = server.webwsl.Close()
|
||||||
err = server.tlsl.Close()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
err = server.webwsl.Close()
|
}
|
||||||
|
|
||||||
|
// Close the listeners
|
||||||
|
err = server.tlsl.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue