summaryrefslogtreecommitdiff
path: root/internal/server/base.go
diff options
context:
space:
mode:
authorjwijenbergh <jeroenwijenbergh@protonmail.com>2022-11-28 15:14:17 +0100
committerjwijenbergh <jeroenwijenbergh@protonmail.com>2022-11-28 15:14:17 +0100
commit5143ed35f2af2fe0e725c2a466c86f1cf929333c (patch)
treeb6c19f466226fa1c25534404f9935464af7cb314 /internal/server/base.go
parent3934d75ac516a530ceb9f494f7ce0de12cb1b5de (diff)
Server: Split more into multiple implementation files
Diffstat (limited to 'internal/server/base.go')
-rw-r--r--internal/server/base.go45
1 files changed, 45 insertions, 0 deletions
diff --git a/internal/server/base.go b/internal/server/base.go
new file mode 100644
index 0000000..bb88eb3
--- /dev/null
+++ b/internal/server/base.go
@@ -0,0 +1,45 @@
+package server
+
+import (
+ "time"
+
+ "github.com/eduvpn/eduvpn-common/types"
+)
+
+// The base type for servers.
+type Base struct {
+ URL string `json:"base_url"`
+ DisplayName map[string]string `json:"display_name"`
+ SupportContact []string `json:"support_contact"`
+ Endpoints Endpoints `json:"endpoints"`
+ Profiles ProfileInfo `json:"profiles"`
+ StartTime time.Time `json:"start_time"`
+ EndTime time.Time `json:"expire_time"`
+ Type string `json:"server_type"`
+}
+
+func (base *Base) InitializeEndpoints() error {
+ errorMessage := "failed initializing endpoints"
+ endpoints, endpointsErr := APIGetEndpoints(base.URL)
+ if endpointsErr != nil {
+ return types.NewWrappedError(errorMessage, endpointsErr)
+ }
+ base.Endpoints = *endpoints
+ return nil
+}
+
+func (base *Base) ValidProfiles(clientSupportsWireguard bool) ProfileInfo {
+ var validProfiles []Profile
+ for _, profile := range base.Profiles.Info.ProfileList {
+ // Not a valid profile because it does not support openvpn
+ // Also the client does not support wireguard
+ if !profile.supportsOpenVPN() && !clientSupportsWireguard {
+ continue
+ }
+ validProfiles = append(validProfiles, profile)
+ }
+ return ProfileInfo{
+ Current: base.Profiles.Current,
+ Info: ProfileListInfo{ProfileList: validProfiles},
+ }
+}