From f108b7c71841df92cb96064697c1dbe82939be08 Mon Sep 17 00:00:00 2001 From: YouROK <8yourok8@mail.ru> Date: Wed, 3 Mar 2021 12:29:41 +0300 Subject: [PATCH] add http auth --- server/cmd/main.go | 2 ++ server/settings/settings.go | 1 + server/web/api/route.go | 2 +- server/web/pages/route.go | 2 +- server/web/server.go | 13 +++++++++++-- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/server/cmd/main.go b/server/cmd/main.go index 7d80c85..9194bd8 100644 --- a/server/cmd/main.go +++ b/server/cmd/main.go @@ -21,6 +21,7 @@ type args struct { Path string `arg:"-d" help:"database path"` LogPath string `arg:"-l" help:"log path"` RDB bool `arg:"-r" help:"start in read-only DB mode"` + HttpAuth bool `arg:"-a" help:"Http auth on all requests"` DontKill bool `arg:"-k" help:"dont kill program on signal"` UI bool `arg:"-u" help:"run page torrserver in browser"` } @@ -43,6 +44,7 @@ func main() { } settings.Path = params.Path + settings.HttpAuth = params.HttpAuth log.Init(params.LogPath) dnsResolve() diff --git a/server/settings/settings.go b/server/settings/settings.go index 047a7be..319b726 100644 --- a/server/settings/settings.go +++ b/server/settings/settings.go @@ -4,6 +4,7 @@ var ( tdb *TDB Path string ReadOnly bool + HttpAuth bool ) func InitSets(readOnly bool) { diff --git a/server/web/api/route.go b/server/web/api/route.go index 93dd31d..aef73b1 100644 --- a/server/web/api/route.go +++ b/server/web/api/route.go @@ -14,7 +14,7 @@ type requestI struct { Action string `json:"action,omitempty"` } -func SetupRoute(route *gin.Engine) { +func SetupRoute(route *gin.RouterGroup) { route.GET("/echo", echo) route.GET("/shutdown", shutdown) diff --git a/server/web/pages/route.go b/server/web/pages/route.go index 712bcaa..c99828c 100644 --- a/server/web/pages/route.go +++ b/server/web/pages/route.go @@ -6,7 +6,7 @@ import ( "server/web/pages/template" ) -func SetupRoute(route *gin.Engine) { +func SetupRoute(route *gin.RouterGroup) { route.GET("/", mainPage) route.GET("/stat", statPage) } diff --git a/server/web/server.go b/server/web/server.go index a007ba6..4da1b43 100644 --- a/server/web/server.go +++ b/server/web/server.go @@ -3,10 +3,12 @@ package web import ( "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" + "server/log" "server/torr" "server/version" "server/web/api" + "server/web/auth" "server/web/pages" ) @@ -26,8 +28,15 @@ func Start(port string) { route := gin.New() route.Use(gin.Recovery(), cors.Default()) - api.SetupRoute(route) - pages.SetupRoute(route) + + routeAuth := auth.SetupAuth(route) + if routeAuth != nil { + api.SetupRoute(routeAuth) + pages.SetupRoute(routeAuth) + } else { + api.SetupRoute(&route.RouterGroup) + pages.SetupRoute(&route.RouterGroup) + } log.TLogln("Start web", port) waitChan <- route.Run(":" + port) }