@@ -3,10 +3,14 @@ package proxy
33import (
44 "fmt"
55 "github.com/jsiebens/brink/internal/api"
6+ "github.com/jsiebens/brink/internal/auth"
7+ "github.com/jsiebens/brink/internal/auth/templates"
68 "github.com/jsiebens/brink/internal/cache"
79 "github.com/jsiebens/brink/internal/config"
810 "github.com/jsiebens/brink/internal/key"
11+ "github.com/jsiebens/brink/internal/server"
912 "github.com/jsiebens/brink/internal/util"
13+ "github.com/jsiebens/brink/internal/version"
1014 "github.com/labstack/echo/v4"
1115 "github.com/rancher/remotedialer"
1216 "github.com/sirupsen/logrus"
@@ -16,7 +20,58 @@ import (
1620 "time"
1721)
1822
19- func NewServer (config config.Proxy , cache cache.Cache , registrar SessionRegistrar ) (* Server , error ) {
23+ const authCachePrefix = "pa_"
24+ const proxyCachePrefix = "pp_"
25+
26+ func StartServer (config * config.Config ) error {
27+ v , r := version .GetReleaseInfo ()
28+ logrus .Infof ("Starting brink proxy server. Version %s - %s" , v , r )
29+
30+ c , err := cache .NewCache (config .Cache )
31+ if err != nil {
32+ return err
33+ }
34+
35+ e := echo .New ()
36+ e .HideBanner = true
37+ e .HidePort = true
38+ e .Renderer = templates .NewTemplates ()
39+
40+ version .RegisterRoutes (e )
41+
42+ var sessionRegistry auth.SessionRegistry
43+
44+ if config .Auth .RemoteServer == "" {
45+ logrus .Info ("registering oidc routes" )
46+
47+ authServer , err := auth .NewServer (config .Auth , cache .Prefixed (c , authCachePrefix ))
48+ if err != nil {
49+ return err
50+ }
51+ authServer .RegisterRoutes (e , false )
52+
53+ sessionRegistry = authServer
54+ } else {
55+ logrus .Info ("configuring remote auth server, skipping oidc routes" )
56+ remoteSessionRegistrar , err := auth .NewRemoteSessionRegistrar (config .Auth )
57+ if err != nil {
58+ return err
59+ }
60+ sessionRegistry = remoteSessionRegistrar
61+ }
62+
63+ logrus .Info ("registering proxy routes" )
64+
65+ proxyServer , err := NewServer (config .Proxy , cache .Prefixed (c , proxyCachePrefix ), sessionRegistry )
66+ if err != nil {
67+ return err
68+ }
69+ proxyServer .RegisterRoutes (e )
70+
71+ return server .Start (config , e )
72+ }
73+
74+ func NewServer (config config.Proxy , cache cache.Cache , registrar auth.SessionRegistry ) (* Server , error ) {
2075 targetFilters , err := parseTargetFilters (config .Policies )
2176 if err != nil {
2277 return nil , err
@@ -39,7 +94,7 @@ func NewServer(config config.Proxy, cache cache.Cache, registrar SessionRegistra
3994}
4095
4196type Server struct {
42- sessionRegistrar SessionRegistrar
97+ sessionRegistrar auth. SessionRegistry
4398 sessions cache.Cache
4499 policy map [string ]config.Policy
45100 targetFilters map [string ][]TargetFilter
@@ -99,7 +154,7 @@ func (s *Server) checkSessionToken(c echo.Context) error {
99154 return err
100155 }
101156
102- response , err := s .sessionRegistrar .AuthenticateSession (& req )
157+ response , err := s .sessionRegistrar .CheckSessionToken (& req )
103158 if err != nil {
104159 return err
105160 }
0 commit comments