diff options
| author | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-05-03 14:10:40 +0200 |
|---|---|---|
| committer | jwijenbergh <jeroenwijenbergh@protonmail.com> | 2022-05-03 14:10:40 +0200 |
| commit | 43604f7ffcbbf5b06ae481d2af7e66f6423f183f (patch) | |
| tree | 6eb74ed54929edcfac61e5ca55078ab6670e0081 /state.go | |
| parent | 466450f0c47bdc614e66326d90e5fc6fb56ae732 (diff) | |
Refactor: Secure internet into a different type but with interface
Diffstat (limited to 'state.go')
| -rw-r--r-- | state.go | 49 |
1 files changed, 27 insertions, 22 deletions
@@ -83,36 +83,38 @@ func (state *VPNState) CancelOAuth() error { if serverErr != nil { return &StateOAuthCancelError{Err: serverErr} } - server.CancelOAuth() + internal.CancelOAuth(server) return nil } -func (state *VPNState) connectWithOptions(url string, isSecureInternet bool) (string, error) { - if state.FSM.InState(internal.DEREGISTERED) { - return "", &StateFSMNotRegisteredError{} - } +func (state *VPNState) chooseServer(url string, isSecureInternet bool) (internal.Server, error) { // New server chosen, ensure the server is fresh - server, serverErr := state.Servers.EnsureServer(url, &state.FSM, &state.Logger, true) + server, serverErr := state.Servers.EnsureServer(url, isSecureInternet, &state.FSM, &state.Logger) if serverErr != nil { - return "", &StateConnectError{URL: url, IsSecureInternet: isSecureInternet, Err: serverErr} + return nil, serverErr } - // When we connect to secure internet, copy over the tokens from the home server - if isSecureInternet { - // Ensure the secure home server - state.Servers.EnsureServer(state.Servers.SecureHome, &state.FSM, &state.Logger, false) + // Make sure we are in the chosen state if available + state.FSM.GoTransition(internal.CHOSEN_SERVER) + return server, nil +} - // Copy the tokens - state.Servers.CopySecureInternetOAuth(server) +func (state *VPNState) connectWithOptions(url string, isSecureInternet bool) (string, error) { + if state.FSM.InState(internal.DEREGISTERED) { + return "", &StateFSMNotRegisteredError{} } - // Make sure we are in the chosen state if available - state.FSM.GoTransition(internal.CHOSEN_SERVER) + // Make sure the server is chosen + server, serverErr := state.chooseServer(url, isSecureInternet) + + if serverErr != nil { + return "", &StateConnectError{URL: url, IsSecureInternet: isSecureInternet, Err: serverErr} + } // Relogin with oauth // This moves the state to authorized - if server.NeedsRelogin() { - loginErr := server.Login() + if internal.NeedsRelogin(server) { + loginErr := internal.Login(server) if loginErr != nil { // We are possibly in oauth started @@ -124,12 +126,9 @@ func (state *VPNState) connectWithOptions(url string, isSecureInternet bool) (st state.FSM.GoTransition(internal.AUTHORIZED) } - // Set the home server if it is not set already - state.Servers.EnsureSecureHome(server) - state.FSM.GoTransition(internal.REQUEST_CONFIG) - config, configErr := server.GetConfig() + config, configErr := internal.GetConfig(server) if configErr != nil { return "", &StateConnectError{URL: url, IsSecureInternet: isSecureInternet, Err: configErr} @@ -171,7 +170,13 @@ func (state *VPNState) SetProfileID(profileID string) error { if serverErr != nil { return &StateSetProfileError{ProfileID: profileID, Err: serverErr} } - server.Profiles.Current = profileID + + base, baseErr := server.GetBase() + + if baseErr != nil { + return &StateSetProfileError{ProfileID: profileID, Err: baseErr} + } + base.Profiles.Current = profileID return nil } |
