mirror of
https://github.com/project-zot/zot.git
synced 2026-06-16 04:17:55 +08:00
report listening port when chosen by kernel (#770)
Based off of the PR by @thesayyn https://github.com/project-zot/zot/pull/720 Signed-off-by: Ramkumar Chinchani <rchincha@cisco.com>
This commit is contained in:
committed by
GitHub
parent
d68bbf6743
commit
f3faae0e09
@@ -9,6 +9,7 @@ import (
|
||||
"net/http"
|
||||
"os"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
goSync "sync"
|
||||
"syscall"
|
||||
@@ -41,6 +42,8 @@ type Controller struct {
|
||||
Server *http.Server
|
||||
Metrics monitoring.MetricServer
|
||||
wgShutDown *goSync.WaitGroup // use it to gracefully shutdown goroutines
|
||||
// runtime params
|
||||
chosenPort int // kernel-chosen port
|
||||
}
|
||||
|
||||
func NewController(config *config.Config) *Controller {
|
||||
@@ -103,6 +106,10 @@ func DumpRuntimeParams(log log.Logger) {
|
||||
evt.Msg("runtime params")
|
||||
}
|
||||
|
||||
func (c *Controller) GetPort() int {
|
||||
return c.chosenPort
|
||||
}
|
||||
|
||||
func (c *Controller) Run(reloadCtx context.Context) error {
|
||||
// print the current configuration, but strip secrets
|
||||
c.Log.Info().Interface("params", c.Config.Sanitize()).Msg("configuration settings")
|
||||
@@ -171,6 +178,25 @@ func (c *Controller) Run(reloadCtx context.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if c.Config.HTTP.Port == "0" || c.Config.HTTP.Port == "" {
|
||||
chosenAddr, ok := listener.Addr().(*net.TCPAddr)
|
||||
if !ok {
|
||||
c.Log.Error().Str("port", c.Config.HTTP.Port).Msg("invalid addr type")
|
||||
|
||||
return errors.ErrBadType
|
||||
}
|
||||
|
||||
c.chosenPort = chosenAddr.Port
|
||||
|
||||
c.Log.Info().Int("port", chosenAddr.Port).IPAddr("address", chosenAddr.IP).Msg(
|
||||
"port is unspecified, listening on kernel chosen port",
|
||||
)
|
||||
} else {
|
||||
chosenPort, _ := strconv.ParseInt(c.Config.HTTP.Port, 10, 64)
|
||||
|
||||
c.chosenPort = int(chosenPort)
|
||||
}
|
||||
|
||||
if c.Config.HTTP.TLS != nil && c.Config.HTTP.TLS.Key != "" && c.Config.HTTP.TLS.Cert != "" {
|
||||
server.TLSConfig = &tls.Config{
|
||||
CipherSuites: []uint16{
|
||||
|
||||
Reference in New Issue
Block a user