root: connect to backend via socket (#6720)
* root: connect to gunicorn via socket Signed-off-by: Jens Langhammer <jens@goauthentik.io> * put socket in temp folder Signed-off-by: Jens Langhammer <jens@goauthentik.io> * use non-socket connection for debug Signed-off-by: Jens Langhammer <jens@goauthentik.io> * don't hardcode local url Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix dev_server missing websocket Signed-off-by: Jens Langhammer <jens@goauthentik.io> * dedupe logging config between gunicorn and main app Signed-off-by: Jens Langhammer <jens@goauthentik.io> * slight refactor for proxy errors Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
		| @ -13,7 +13,6 @@ import ( | ||||
| 	"goauthentik.io/internal/config" | ||||
| 	"goauthentik.io/internal/constants" | ||||
| 	"goauthentik.io/internal/debug" | ||||
| 	"goauthentik.io/internal/gounicorn" | ||||
| 	"goauthentik.io/internal/outpost/ak" | ||||
| 	"goauthentik.io/internal/outpost/proxyv2" | ||||
| 	sentryutils "goauthentik.io/internal/utils/sentry" | ||||
| @ -22,8 +21,6 @@ import ( | ||||
| 	"goauthentik.io/internal/web/tenant_tls" | ||||
| ) | ||||
|  | ||||
| var running = true | ||||
|  | ||||
| var rootCmd = &cobra.Command{ | ||||
| 	Use:     "authentik", | ||||
| 	Short:   "Start authentik instance", | ||||
| @ -63,40 +60,25 @@ var rootCmd = &cobra.Command{ | ||||
| 		ex := common.Init() | ||||
| 		defer common.Defer() | ||||
|  | ||||
| 		u, _ := url.Parse("http://localhost:8000") | ||||
|  | ||||
| 		g := gounicorn.New() | ||||
| 		defer func() { | ||||
| 			l.Info("shutting down gunicorn") | ||||
| 			g.Kill() | ||||
| 		}() | ||||
| 		ws := web.NewWebServer(g) | ||||
| 		g.HealthyCallback = func() { | ||||
| 			if !config.Get().Outposts.DisableEmbeddedOutpost { | ||||
| 				go attemptProxyStart(ws, u) | ||||
| 			} | ||||
| 		u, err := url.Parse(fmt.Sprintf("http://%s", config.Get().Listen.HTTP)) | ||||
| 		if err != nil { | ||||
| 			panic(err) | ||||
| 		} | ||||
|  | ||||
| 		ws := web.NewWebServer() | ||||
| 		ws.Core().HealthyCallback = func() { | ||||
| 			if config.Get().Outposts.DisableEmbeddedOutpost { | ||||
| 				return | ||||
| 			} | ||||
| 			go attemptProxyStart(ws, u) | ||||
| 		} | ||||
| 		go web.RunMetricsServer() | ||||
| 		go attemptStartBackend(g) | ||||
| 		ws.Start() | ||||
| 		<-ex | ||||
| 		running = false | ||||
| 		l.Info("shutting down webserver") | ||||
| 		go ws.Shutdown() | ||||
|  | ||||
| 	}, | ||||
| } | ||||
|  | ||||
| func attemptStartBackend(g *gounicorn.GoUnicorn) { | ||||
| 	for { | ||||
| 		if !running { | ||||
| 			return | ||||
| 		} | ||||
| 		err := g.Start() | ||||
| 		log.WithField("logger", "authentik.router").WithError(err).Warning("gunicorn process died, restarting") | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func attemptProxyStart(ws *web.WebServer, u *url.URL) { | ||||
| 	maxTries := 100 | ||||
| 	attempt := 0 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 Jens L
					Jens L