mirror of
https://github.com/goauthentik/authentik.git
synced 2026-06-17 19:09:11 +03:00
internal/outpost/ak: fix ws URL on outpost restart (#21041)
This commit is contained in:
committed by
GitHub
parent
676189f640
commit
e3ddc0422a
@@ -31,6 +31,7 @@ const ConfigLogLevel = "log_level"
|
||||
|
||||
// APIController main controller which connects to the authentik api via http and ws
|
||||
type APIController struct {
|
||||
akURL url.URL
|
||||
Client *api.APIClient
|
||||
Outpost api.Outpost
|
||||
GlobalConfig *api.Config
|
||||
@@ -134,6 +135,7 @@ func NewAPIController(akURL url.URL, token string) *APIController {
|
||||
// doGlobalSetup(outpost, akConfig)
|
||||
|
||||
ac := &APIController{
|
||||
akURL: originalAkURL,
|
||||
Client: apiClient,
|
||||
GlobalConfig: akConfig,
|
||||
|
||||
@@ -148,7 +150,7 @@ func NewAPIController(akURL url.URL, token string) *APIController {
|
||||
}
|
||||
ac.logger.WithField("embedded", ac.IsEmbedded()).Info("Outpost mode")
|
||||
ac.logger.WithField("offset", ac.reloadOffset.String()).Debug("HA Reload offset")
|
||||
err = ac.initEvent(originalAkURL, outpost.Pk)
|
||||
err = ac.initEvent(outpost.Pk, 0)
|
||||
if err != nil {
|
||||
go ac.recentEvents()
|
||||
}
|
||||
|
||||
@@ -32,9 +32,11 @@ func (ac *APIController) getWebsocketURL(akURL url.URL, outpostUUID string, quer
|
||||
return wsUrl
|
||||
}
|
||||
|
||||
func (ac *APIController) initEvent(akURL url.URL, outpostUUID string) error {
|
||||
func (ac *APIController) initEvent(outpostUUID string, attempt int) error {
|
||||
akURL := ac.akURL
|
||||
query := akURL.Query()
|
||||
query.Set("instance_uuid", ac.instanceUUID.String())
|
||||
query.Set("attempt", strconv.Itoa(attempt))
|
||||
|
||||
authHeader := fmt.Sprintf("Bearer %s", ac.token)
|
||||
|
||||
@@ -106,18 +108,10 @@ func (ac *APIController) recentEvents() {
|
||||
return
|
||||
}
|
||||
ac.wsIsReconnecting = true
|
||||
u := url.URL{
|
||||
Host: ac.Client.GetConfig().Host,
|
||||
Scheme: ac.Client.GetConfig().Scheme,
|
||||
Path: strings.ReplaceAll(ac.Client.GetConfig().Servers[0].URL, "api/v3", ""),
|
||||
}
|
||||
attempt := 1
|
||||
_ = retry.Do(
|
||||
func() error {
|
||||
q := u.Query()
|
||||
q.Set("attempt", strconv.Itoa(attempt))
|
||||
u.RawQuery = q.Encode()
|
||||
err := ac.initEvent(u, ac.Outpost.Pk)
|
||||
err := ac.initEvent(ac.Outpost.Pk, attempt)
|
||||
attempt += 1
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
Reference in New Issue
Block a user