diff options
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 31 |
1 files changed, 24 insertions, 7 deletions
@@ -5,8 +5,13 @@ package main import ( "flag" + "net" + "net/http" "os" + "strconv" + "time" + "github.com/gorilla/mux" "github.com/rs/zerolog" "go.terinstock.com/cgit-httpd/handlers/cgit" "go.terinstock.com/cgit-httpd/handlers/git" @@ -30,10 +35,7 @@ func main() { logger.Info().Interface("config", cfg).Send() - srv := server.New(server.Options{ - Host: cfg.HTTP.Host, - Port: cfg.HTTP.Port, - }) + gitMux := mux.NewRouter() cgit.New(cgit.Options{ CGI: cfg.CGit.CGI, @@ -42,7 +44,7 @@ func main() { ConfigFile: cfg.CGit.ConfigFile, Logger: logger.With().Str("handler", "cgit").Logger(), }). - WithRegister(srv). + WithRegister(RegistererFunc(gitMux.Handle)). Build() git.New(git.Options{ @@ -51,13 +53,28 @@ func main() { ExportAll: cfg.Git.ExportAll, Logger: logger.With().Str("handler", "git").Logger(), }). - WithRegister(srv). + WithRegister(RegistererFunc(gitMux.Handle)). Build() m := manager.New() - m.Add(srv) + m.Add(&server.Server{ + Name: "git", + Server: &http.Server{ + Addr: net.JoinHostPort(cfg.HTTP.Host, strconv.Itoa(cfg.HTTP.Port)), + Handler: gitMux, + MaxHeaderBytes: 1 << 20, + IdleTimeout: 90 * time.Second, + ReadHeaderTimeout: 32 * time.Second, + }, + }) if err := m.Start(signals.SetupSignalHandler()); err != nil { logger.Info().Err(err).Msg("manager stopped") } } + +type RegistererFunc func(string, http.Handler) *mux.Route + +func (r RegistererFunc) Register(name string, handler http.Handler) { + r(name, handler) +} |