diff options
| author | Jeroen Wijenbergh <jeroen.wijenbergh@geant.org> | 2026-02-12 12:34:08 +0100 |
|---|---|---|
| committer | Jeroen Wijenbergh <jeroen.wijenbergh@geant.org> | 2026-02-12 12:59:03 +0100 |
| commit | a30ef6b27e578a4cf0a674b24f5b52b4c1516c63 (patch) | |
| tree | 27c7321cbceac2a487c1ba17151711de3d438a53 /internal/api/profiles | |
| parent | b00ce8214479c50e137db73c77b0cc1393c5e7d4 (diff) | |
All: Rename packages that sound useless or clash with std
Diffstat (limited to 'internal/api/profiles')
| -rw-r--r-- | internal/api/profiles/profiles.go | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/internal/api/profiles/profiles.go b/internal/api/profiles/profiles.go deleted file mode 100644 index 77109f1..0000000 --- a/internal/api/profiles/profiles.go +++ /dev/null @@ -1,119 +0,0 @@ -// Package profiles defines a wrapper around the various profiles -// returned by the /info endpoint -package profiles - -import ( - "codeberg.org/eduVPN/eduvpn-common/types/protocol" - "codeberg.org/eduVPN/eduvpn-common/types/server" -) - -// Profile is the information for a profile -type Profile struct { - // ID is the identifier of the profile - // Used to select a profile - ID string `json:"profile_id"` - // DisplayName defines the UI friendly name for the profile - DisplayName string `json:"display_name"` - // VPNProtoList defines the list of VPN protocols - // E.g. wireguard, openvpn - VPNProtoList []string `json:"vpn_proto_list"` - // VPNProtoTransportList defines the list of VPN protocols including their transport values - // E.g. wireguard+udp, openvpn+tcp - VPNProtoTransportList []string `json:"vpn_proto_transport_list"` - // DefaultGateway specifies whether or not this profile is a default gateway profile - DefaultGateway bool `json:"default_gateway"` - // DNSSearchDomains specifies the list of dns search domains - // This is provided for a Linux client issue - // See: https://github.com/eduvpn/python-eduvpn-client/issues/550 - DNSSearchDomains []string `json:"dns_search_domain_list"` - // Priority is the priority of the profile for sorting in the UI - // the higher the priority, the higher it should be in the list - Priority int `json:"profile_priority"` -} - -// ListInfo is the struct that has the profile list -type ListInfo struct { - ProfileList []Profile `json:"profile_list"` -} - -// Info is the top-level struct for the info endpoint -type Info struct { - Info ListInfo `json:"info"` -} - -// Len returns the length of the profile list -func (i Info) Len() int { - return len(i.Info.ProfileList) -} - -// Get returns a profile with id `id`, it returns nil if it is not found -func (i Info) Get(id string) *Profile { - for _, p := range i.Info.ProfileList { - if p.ID == id { - return &p - } - } - return nil -} - -// MustIndex gets a profile by index -// This index must be in the bounds -func (i Info) MustIndex(n int) Profile { - return i.Info.ProfileList[n] -} - -func hasProtocol(protos []string, proto protocol.Protocol) bool { - for _, p := range protos { - if protocol.New(p) == proto { - return true - } - } - return false -} - -// ShouldFailover returns whether or not this VPN profile should start a failover procedure -// This is true when the profile supports a TCP connection -// If we cannot determine whether it supports a TCP connection -// (because the server doesn't provide the VPN transport list function yet), -// we will just check if it supports OpenVPN -func (p *Profile) ShouldFailover() bool { - // old servers don't support it, only failover in case OpenVPN is supported - if len(p.VPNProtoTransportList) == 0 { - // this checks VPNProtoList - return p.HasOpenVPN() - } - for _, c := range p.VPNProtoTransportList { - if c == "wireguard+tcp" { - return true - } - if c == "openvpn+tcp" { - return true - } - } - return false -} - -// HasOpenVPN returns whether or not the profile has OpenVPN support -func (p *Profile) HasOpenVPN() bool { - return hasProtocol(p.VPNProtoList, protocol.OpenVPN) -} - -// HasWireGuard returns whether or not the profile has WireGuard support -func (p *Profile) HasWireGuard() bool { - return hasProtocol(p.VPNProtoList, protocol.WireGuard) -} - -// Public gets the server list as a structure that we return to clients -func (i Info) Public() server.Profiles { - m := make(map[string]server.Profile) - for _, p := range i.Info.ProfileList { - m[p.ID] = server.Profile{ - DisplayName: map[string]string{ - "en": p.DisplayName, - }, - DefaultGateway: p.DefaultGateway, - Priority: p.Priority, - } - } - return server.Profiles{Map: m} -} |
