From 5143ed35f2af2fe0e725c2a466c86f1cf929333c Mon Sep 17 00:00:00 2001 From: jwijenbergh Date: Mon, 28 Nov 2022 15:14:17 +0100 Subject: Server: Split more into multiple implementation files --- internal/server/base.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 internal/server/base.go (limited to 'internal/server/base.go') 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}, + } +} -- cgit v1.2.3