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/profile.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 internal/server/profile.go (limited to 'internal/server/profile.go') diff --git a/internal/server/profile.go b/internal/server/profile.go new file mode 100644 index 0000000..42f0e52 --- /dev/null +++ b/internal/server/profile.go @@ -0,0 +1,46 @@ +package server + +type Profile struct { + ID string `json:"profile_id"` + DisplayName string `json:"display_name"` + VPNProtoList []string `json:"vpn_proto_list"` + DefaultGateway bool `json:"default_gateway"` +} + +type ProfileListInfo struct { + ProfileList []Profile `json:"profile_list"` +} + +type ProfileInfo struct { + Current string `json:"current_profile"` + Info ProfileListInfo `json:"info"` +} + +func (info ProfileInfo) GetCurrentProfileIndex() int { + index := 0 + for _, profile := range info.Info.ProfileList { + if profile.ID == info.Current { + return index + } + index++ + } + // Default is 'first' profile + return 0 +} + +func (profile *Profile) supportsProtocol(protocol string) bool { + for _, proto := range profile.VPNProtoList { + if proto == protocol { + return true + } + } + return false +} + +func (profile *Profile) supportsWireguard() bool { + return profile.supportsProtocol("wireguard") +} + +func (profile *Profile) supportsOpenVPN() bool { + return profile.supportsProtocol("openvpn") +} -- cgit v1.2.3