summaryrefslogtreecommitdiff
path: root/internal/server
diff options
context:
space:
mode:
Diffstat (limited to 'internal/server')
-rw-r--r--internal/server/api.go40
-rw-r--r--internal/server/common.go103
-rw-r--r--internal/server/instituteaccess.go8
-rw-r--r--internal/server/secureinternet.go21
4 files changed, 143 insertions, 29 deletions
diff --git a/internal/server/api.go b/internal/server/api.go
index bf6a577..57d91c6 100644
--- a/internal/server/api.go
+++ b/internal/server/api.go
@@ -32,7 +32,12 @@ func APIGetEndpoints(baseURL string) (*ServerEndpoints, error) {
return endpoints, nil
}
-func apiAuthorized(server Server, method string, endpoint string, opts *httpw.HTTPOptionalParams) (http.Header, []byte, error) {
+func apiAuthorized(
+ server Server,
+ method string,
+ endpoint string,
+ opts *httpw.HTTPOptionalParams,
+) (http.Header, []byte, error) {
errorMessage := "failed API authorized"
// Ensure optional is not nil as we will fill it with headers
if opts == nil {
@@ -67,7 +72,12 @@ func apiAuthorized(server Server, method string, endpoint string, opts *httpw.HT
return httpw.HTTPMethodWithOpts(method, url, opts)
}
-func apiAuthorizedRetry(server Server, method string, endpoint string, opts *httpw.HTTPOptionalParams) (http.Header, []byte, error) {
+func apiAuthorizedRetry(
+ server Server,
+ method string,
+ endpoint string,
+ opts *httpw.HTTPOptionalParams,
+) (http.Header, []byte, error) {
errorMessage := "failed authorized API retry"
header, body, bodyErr := apiAuthorized(server, method, endpoint, opts)
@@ -116,7 +126,12 @@ func APIInfo(server Server) error {
return nil
}
-func APIConnectWireguard(server Server, profile_id string, pubkey string, supportsOpenVPN bool) (string, string, time.Time, error) {
+func APIConnectWireguard(
+ server Server,
+ profile_id string,
+ pubkey string,
+ supportsOpenVPN bool,
+) (string, string, time.Time, error) {
errorMessage := "failed obtaining a WireGuard configuration"
headers := http.Header{
"content-type": {"application/x-www-form-urlencoded"},
@@ -131,9 +146,17 @@ func APIConnectWireguard(server Server, profile_id string, pubkey string, suppor
"profile_id": {profile_id},
"public_key": {pubkey},
}
- header, connectBody, connectErr := apiAuthorizedRetry(server, http.MethodPost, "/connect", &httpw.HTTPOptionalParams{Headers: headers, Body: urlForm})
+ header, connectBody, connectErr := apiAuthorizedRetry(
+ server,
+ http.MethodPost,
+ "/connect",
+ &httpw.HTTPOptionalParams{Headers: headers, Body: urlForm},
+ )
if connectErr != nil {
- return "", "", time.Time{}, &types.WrappedErrorMessage{Message: errorMessage, Err: connectErr}
+ return "", "", time.Time{}, &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: connectErr,
+ }
}
expires := header.Get("expires")
@@ -163,7 +186,12 @@ func APIConnectOpenVPN(server Server, profile_id string) (string, time.Time, err
"profile_id": {profile_id},
}
- header, connectBody, connectErr := apiAuthorizedRetry(server, http.MethodPost, "/connect", &httpw.HTTPOptionalParams{Headers: headers, Body: urlForm})
+ header, connectBody, connectErr := apiAuthorizedRetry(
+ server,
+ http.MethodPost,
+ "/connect",
+ &httpw.HTTPOptionalParams{Headers: headers, Body: urlForm},
+ )
if connectErr != nil {
return "", time.Time{}, &types.WrappedErrorMessage{Message: errorMessage, Err: connectErr}
}
diff --git a/internal/server/common.go b/internal/server/common.go
index 56c8af0..1a92eb0 100644
--- a/internal/server/common.go
+++ b/internal/server/common.go
@@ -88,7 +88,10 @@ func (servers *Servers) GetCurrentServer() (Server, error) {
errorMessage := "failed getting current server"
if servers.IsType == SecureInternetServerType {
if !servers.HasSecureLocation() {
- return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: &ServerGetCurrentNotFoundError{}}
+ return nil, &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: &ServerGetCurrentNotFoundError{},
+ }
}
return &servers.SecureInternetHomeServer, nil
}
@@ -101,12 +104,18 @@ func (servers *Servers) GetCurrentServer() (Server, error) {
currentServerURL := serversStruct.CurrentURL
bases := serversStruct.Map
if bases == nil {
- return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: &ServerGetCurrentNoMapError{}}
+ return nil, &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: &ServerGetCurrentNoMapError{},
+ }
}
server, exists := bases[currentServerURL]
if !exists || server == nil {
- return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: &ServerGetCurrentNotFoundError{}}
+ return nil, &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: &ServerGetCurrentNotFoundError{},
+ }
}
return server, nil
}
@@ -146,7 +155,7 @@ func getServerInfoScreen(base ServerBase) ServerInfoScreen {
return serverInfoScreen
}
-func (servers *Servers) GetServersConfigured() (*ServersConfiguredScreen) {
+func (servers *Servers) GetServersConfigured() *ServersConfiguredScreen {
customServersInfo := []ServerInfoScreen{}
instituteServersInfo := []ServerInfoScreen{}
var secureInternetServerInfo *ServerInfoScreen = nil
@@ -171,7 +180,11 @@ func (servers *Servers) GetServersConfigured() (*ServersConfiguredScreen) {
secureInternetServerInfo.CountryCode = servers.SecureInternetHomeServer.CurrentLocation
}
- return &ServersConfiguredScreen{CustomServers: customServersInfo, InstituteAccessServers: instituteServersInfo, SecureInternetServer: secureInternetServerInfo}
+ return &ServersConfiguredScreen{
+ CustomServers: customServersInfo,
+ InstituteAccessServers: instituteServersInfo,
+ SecureInternetServer: secureInternetServerInfo,
+ }
}
func (servers *Servers) GetCurrentServerInfo() (*ServerInfoScreen, error) {
@@ -198,7 +211,11 @@ func (servers *Servers) GetCurrentServerInfo() (*ServerInfoScreen, error) {
return &serverInfoScreen, nil
}
-func (servers *Servers) addInstituteAndCustom(discoServer *types.DiscoveryServer, isCustom bool, fsm *fsm.FSM) (Server, error) {
+func (servers *Servers) addInstituteAndCustom(
+ discoServer *types.DiscoveryServer,
+ isCustom bool,
+ fsm *fsm.FSM,
+) (Server, error) {
url := discoServer.BaseURL
errorMessage := fmt.Sprintf("failed adding institute access server: %s", url)
toAddServers := &servers.InstituteServers
@@ -222,7 +239,13 @@ func (servers *Servers) addInstituteAndCustom(discoServer *types.DiscoveryServer
// Set the current server
toAddServers.CurrentURL = url
- instituteInitErr := server.init(url, discoServer.DisplayName, discoServer.Type, discoServer.SupportContact, fsm)
+ instituteInitErr := server.init(
+ url,
+ discoServer.DisplayName,
+ discoServer.Type,
+ discoServer.SupportContact,
+ fsm,
+ )
if instituteInitErr != nil {
return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: instituteInitErr}
}
@@ -231,11 +254,17 @@ func (servers *Servers) addInstituteAndCustom(discoServer *types.DiscoveryServer
return server, nil
}
-func (servers *Servers) AddInstituteAccessServer(instituteServer *types.DiscoveryServer, fsm *fsm.FSM) (Server, error) {
+func (servers *Servers) AddInstituteAccessServer(
+ instituteServer *types.DiscoveryServer,
+ fsm *fsm.FSM,
+) (Server, error) {
return servers.addInstituteAndCustom(instituteServer, false, fsm)
}
-func (servers *Servers) AddCustomServer(customServer *types.DiscoveryServer, fsm *fsm.FSM) (Server, error) {
+func (servers *Servers) AddCustomServer(
+ customServer *types.DiscoveryServer,
+ fsm *fsm.FSM,
+) (Server, error) {
return servers.addInstituteAndCustom(customServer, true, fsm)
}
@@ -243,7 +272,10 @@ func (servers *Servers) GetSecureLocation() string {
return servers.SecureInternetHomeServer.CurrentLocation
}
-func (servers *Servers) SetSecureLocation(chosenLocationServer *types.DiscoveryServer, fsm *fsm.FSM) error {
+func (servers *Servers) SetSecureLocation(
+ chosenLocationServer *types.DiscoveryServer,
+ fsm *fsm.FSM,
+) error {
errorMessage := "failed to set secure location"
// Make sure to add the current location
_, addLocationErr := servers.SecureInternetHomeServer.addLocation(chosenLocationServer, fsm)
@@ -256,7 +288,11 @@ func (servers *Servers) SetSecureLocation(chosenLocationServer *types.DiscoveryS
return nil
}
-func (servers *Servers) AddSecureInternet(secureOrg *types.DiscoveryOrganization, secureServer *types.DiscoveryServer, fsm *fsm.FSM) (Server, error) {
+func (servers *Servers) AddSecureInternet(
+ secureOrg *types.DiscoveryOrganization,
+ secureServer *types.DiscoveryServer,
+ fsm *fsm.FSM,
+) (Server, error) {
errorMessage := "failed adding secure internet server"
// If we have specified an organization ID
// We also need to get an authorization template
@@ -361,7 +397,10 @@ func getCurrentProfile(server Server) (*ServerProfile, error) {
}
}
- return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: &ServerGetCurrentProfileNotFoundError{ProfileID: profileID}}
+ return nil, &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: &ServerGetCurrentProfileNotFoundError{ProfileID: profileID},
+ }
}
func wireguardGetConfig(server Server, supportsOpenVPN bool) (string, string, error) {
@@ -380,7 +419,12 @@ func wireguardGetConfig(server Server, supportsOpenVPN bool) (string, string, er
}
wireguardPublicKey := wireguardKey.PublicKey().String()
- config, content, expires, configErr := APIConnectWireguard(server, profile_id, wireguardPublicKey, supportsOpenVPN)
+ config, content, expires, configErr := APIConnectWireguard(
+ server,
+ profile_id,
+ wireguardPublicKey,
+ supportsOpenVPN,
+ )
if configErr != nil {
return "", "", &types.WrappedErrorMessage{Message: errorMessage, Err: configErr}
@@ -430,7 +474,13 @@ func getConfigWithProfile(server Server, forceTCP bool) (string, string, error)
return "", "", &types.WrappedErrorMessage{Message: errorMessage, Err: baseErr}
}
if !base.FSM.HasTransition(fsm.HAS_CONFIG) {
- return "", "", &types.WrappedErrorMessage{Message: errorMessage, Err: fsm.WrongStateTransitionError{Got: base.FSM.Current, Want: fsm.HAS_CONFIG}.CustomError()}
+ return "", "", &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: fsm.WrongStateTransitionError{
+ Got: base.FSM.Current,
+ Want: fsm.HAS_CONFIG,
+ }.CustomError(),
+ }
}
profile, profileErr := getCurrentProfile(server)
@@ -443,7 +493,10 @@ func getConfigWithProfile(server Server, forceTCP bool) (string, string, error)
// If forceTCP we must be able to get a config with OpenVPN
if forceTCP && supportsOpenVPN {
- return "", "", &types.WrappedErrorMessage{Message: errorMessage, Err: &ServerGetConfigForceTCPError{}}
+ return "", "", &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: &ServerGetConfigForceTCPError{},
+ }
}
var config string
@@ -473,7 +526,13 @@ func askForProfileID(server Server) error {
return &types.WrappedErrorMessage{Message: errorMessage, Err: baseErr}
}
if !base.FSM.HasTransition(fsm.ASK_PROFILE) {
- return &types.WrappedErrorMessage{Message: errorMessage, Err: fsm.WrongStateTransitionError{Got: base.FSM.Current, Want: fsm.ASK_PROFILE}.CustomError()}
+ return &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: fsm.WrongStateTransitionError{
+ Got: base.FSM.Current,
+ Want: fsm.ASK_PROFILE,
+ }.CustomError(),
+ }
}
base.FSM.GoTransitionWithData(fsm.ASK_PROFILE, &base.Profiles, false)
return nil
@@ -487,7 +546,13 @@ func GetConfig(server Server, forceTCP bool) (string, string, error) {
return "", "", &types.WrappedErrorMessage{Message: errorMessage, Err: baseErr}
}
if !base.FSM.InState(fsm.REQUEST_CONFIG) {
- return "", "", &types.WrappedErrorMessage{Message: errorMessage, Err: fsm.WrongStateError{Got: base.FSM.Current, Want: fsm.REQUEST_CONFIG}.CustomError()}
+ return "", "", &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: fsm.WrongStateError{
+ Got: base.FSM.Current,
+ Want: fsm.REQUEST_CONFIG,
+ }.CustomError(),
+ }
}
// Get new profiles using the info call
@@ -538,7 +603,9 @@ func (e *ServerGetCurrentProfileNotFoundError) Error() string {
type ServerGetConfigForceTCPError struct{}
func (e *ServerGetConfigForceTCPError) Error() string {
- return fmt.Sprintf("failed to get config, force TCP is on but the server does not support OpenVPN")
+ return fmt.Sprintf(
+ "failed to get config, force TCP is on but the server does not support OpenVPN",
+ )
}
type ServerEnsureServerEmptyURLError struct{}
diff --git a/internal/server/instituteaccess.go b/internal/server/instituteaccess.go
index 1da2d1e..6ac248d 100644
--- a/internal/server/instituteaccess.go
+++ b/internal/server/instituteaccess.go
@@ -37,7 +37,13 @@ func (institute *InstituteAccessServer) GetBase() (*ServerBase, error) {
return &institute.Base, nil
}
-func (institute *InstituteAccessServer) init(url string, displayName map[string]string, serverType string, supportContact []string, fsm *fsm.FSM) error {
+func (institute *InstituteAccessServer) init(
+ url string,
+ displayName map[string]string,
+ serverType string,
+ supportContact []string,
+ fsm *fsm.FSM,
+) error {
errorMessage := fmt.Sprintf("failed initializing institute server %s", url)
institute.Base.URL = url
institute.Base.DisplayName = displayName
diff --git a/internal/server/secureinternet.go b/internal/server/secureinternet.go
index 9ada8ae..3498bcc 100644
--- a/internal/server/secureinternet.go
+++ b/internal/server/secureinternet.go
@@ -37,13 +37,19 @@ func (secure *SecureInternetHomeServer) GetTemplateAuth() func(string) string {
func (server *SecureInternetHomeServer) GetBase() (*ServerBase, error) {
errorMessage := "failed getting current secure internet home base"
if server.BaseMap == nil {
- return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: &ServerSecureInternetMapNotFoundError{}}
+ return nil, &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: &ServerSecureInternetMapNotFoundError{},
+ }
}
base, exists := server.BaseMap[server.CurrentLocation]
if !exists {
- return nil, &types.WrappedErrorMessage{Message: errorMessage, Err: &ServerSecureInternetBaseNotFoundError{Current: server.CurrentLocation}}
+ return nil, &types.WrappedErrorMessage{
+ Message: errorMessage,
+ Err: &ServerSecureInternetBaseNotFoundError{Current: server.CurrentLocation},
+ }
}
return base, nil
}
@@ -52,7 +58,10 @@ func (servers *Servers) HasSecureLocation() bool {
return servers.SecureInternetHomeServer.CurrentLocation != ""
}
-func (secure *SecureInternetHomeServer) addLocation(locationServer *types.DiscoveryServer, fsm *fsm.FSM) (*ServerBase, error) {
+func (secure *SecureInternetHomeServer) addLocation(
+ locationServer *types.DiscoveryServer,
+ fsm *fsm.FSM,
+) (*ServerBase, error) {
errorMessage := "failed adding a location"
// Initialize the base map if it is non-nil
if secure.BaseMap == nil {
@@ -85,7 +94,11 @@ func (secure *SecureInternetHomeServer) addLocation(locationServer *types.Discov
}
// Initializes the home server and adds its own location
-func (secure *SecureInternetHomeServer) init(homeOrg *types.DiscoveryOrganization, homeLocation *types.DiscoveryServer, fsm *fsm.FSM) error {
+func (secure *SecureInternetHomeServer) init(
+ homeOrg *types.DiscoveryOrganization,
+ homeLocation *types.DiscoveryServer,
+ fsm *fsm.FSM,
+) error {
errorMessage := "failed initializing secure internet home server"
if secure.HomeOrganizationID != homeOrg.OrgId {