aboutsummaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go31
1 files changed, 24 insertions, 7 deletions
diff --git a/main.go b/main.go
index f0c8c51..e47d311 100644
--- a/main.go
+++ b/main.go
@@ -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)
+}