diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2023-09-06 15:55:26 +0200 |
|---|---|---|
| committer | Jeroen Wijenbergh <46386452+jwijenbergh@users.noreply.github.com> | 2023-09-25 09:43:37 +0200 |
| commit | 9697ea01b79cde6c8901d7853dc0b414acf84fa7 (patch) | |
| tree | 2827e2328de82a59fb840905fbfe295342f3d97f /internal/server/secure/secure.go | |
| parent | 2e9dbcb863bf72239a80c7c33f6808d24c3ac69e (diff) | |
Server: Have separate implementations for refreshing endpoints
Diffstat (limited to 'internal/server/secure/secure.go')
| -rw-r--r-- | internal/server/secure/secure.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/internal/server/secure/secure.go b/internal/server/secure/secure.go index d25bf02..c60c38e 100644 --- a/internal/server/secure/secure.go +++ b/internal/server/secure/secure.go @@ -2,6 +2,7 @@ package secure import ( "context" + "github.com/eduvpn/eduvpn-common/internal/discovery" "github.com/eduvpn/eduvpn-common/internal/oauth" "github.com/eduvpn/eduvpn-common/internal/server/api" "github.com/eduvpn/eduvpn-common/internal/server/base" @@ -58,6 +59,42 @@ func (s *Server) NeedsLocation() bool { return false } +func (s *Server) RefreshEndpoints(ctx context.Context, disco *discovery.Discovery) error { + // update OAuth for home server + auth := s.OAuth() + if auth != nil && s.HomeOrganizationID != "" { + _, srv, err := disco.SecureHomeArgs(s.HomeOrganizationID) + if err != nil { + return err + } + if hb, ok := s.BaseMap[srv.CountryCode]; ok && hb != nil { + err := api.Endpoints(ctx, hb) + if err != nil { + return err + } + auth.BaseAuthorizationURL = hb.Endpoints.API.V3.Authorization + auth.TokenURL = hb.Endpoints.API.V3.Token + } + // already updated, return + if srv.CountryCode == s.CurrentLocation { + return nil + } + } + + // refresh the current location endpoints + // Re-initialize the endpoints + b, err := s.Base() + if err != nil { + return err + } + + err = api.Endpoints(ctx, b) + if err != nil { + return err + } + return nil +} + func (s *Server) addLocation(ctx context.Context, locSrv *discotypes.Server) (*base.Base, error) { // Initialize the base map if it is non-nil if s.BaseMap == nil { |
