summaryrefslogtreecommitdiff
path: root/state.go
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2022-05-03 14:10:40 +0200
committerjwijenbergh <jeroenwijenbergh@protonmail.com>2022-05-03 14:10:40 +0200
commit43604f7ffcbbf5b06ae481d2af7e66f6423f183f (patch)
tree6eb74ed54929edcfac61e5ca55078ab6670e0081 /state.go
parent466450f0c47bdc614e66326d90e5fc6fb56ae732 (diff)
Refactor: Secure internet into a different type but with interface
Diffstat (limited to 'state.go')
-rw-r--r--state.go49
1 files changed, 27 insertions, 22 deletions
diff --git a/state.go b/state.go
index 767425c..47f23df 100644
--- a/state.go
+++ b/state.go
@@ -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
}