summaryrefslogtreecommitdiff
path: root/internal/server/list.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/server/list.go')
-rw-r--r--internal/server/list.go180
1 files changed, 0 insertions, 180 deletions
diff --git a/internal/server/list.go b/internal/server/list.go
deleted file mode 100644
index f3ae4e8..0000000
--- a/internal/server/list.go
+++ /dev/null
@@ -1,180 +0,0 @@
-package server
-
-import (
- "context"
-
- "github.com/eduvpn/eduvpn-common/internal/server/custom"
- "github.com/eduvpn/eduvpn-common/internal/server/institute"
- "github.com/eduvpn/eduvpn-common/internal/server/secure"
- discotypes "github.com/eduvpn/eduvpn-common/types/discovery"
- srvtypes "github.com/eduvpn/eduvpn-common/types/server"
- "github.com/go-errors/errors"
-)
-
-type List struct {
- CustomServers custom.Servers `json:"custom_servers"`
- InstituteServers institute.Servers `json:"institute_servers"`
- SecureInternetHomeServer secure.Server `json:"secure_internet_home"`
- IsType srvtypes.Type `json:"is_secure_internet"`
-}
-
-// HasSecureInternet returns whether or not we have a secure internet server added
-func (l *List) HasSecureInternet() bool {
- return len(l.SecureInternetHomeServer.BaseMap) > 0
-}
-
-func (l *List) HasSecureLocation() bool {
- return l.SecureInternetHomeServer.CurrentLocation != ""
-}
-
-func (l *List) Current() (Server, error) {
- if l.IsType == srvtypes.TypeUnknown {
- return nil, errors.New("no current server")
- }
- if l.IsType == srvtypes.TypeSecureInternet {
- if !l.HasSecureLocation() {
- return nil, errors.Errorf("Current server is secure internet but there is no secure internet location: %v", l.IsType)
- }
- return &l.SecureInternetHomeServer, nil
- }
-
- if l.IsType == srvtypes.TypeCustom {
- return l.CustomServers.Current()
- }
- return l.InstituteServers.Current()
-}
-
-func (l *List) AddCustom(ctx context.Context, clientID string, url string) (Server, error) {
- srv, err := custom.New(ctx, clientID, url)
- if err != nil {
- return nil, err
- }
- l.CustomServers.Add(srv)
- return srv, nil
-}
-
-func (l *List) AddInstituteAccess(ctx context.Context, clientID string, discoServer *discotypes.Server) (Server, error) {
- srv, err := institute.New(ctx, clientID, discoServer.BaseURL, discoServer.DisplayName, discoServer.SupportContact)
- if err != nil {
- return nil, err
- }
- l.InstituteServers.Add(srv)
- return srv, nil
-}
-
-func (l *List) AddSecureInternet(
- ctx context.Context,
- clientID string,
- secureOrg *discotypes.Organization,
- secureServer *discotypes.Server,
-) (*secure.Server, error) {
- // If we have specified an organization ID
- // We also need to get an authorization template
- err := l.SecureInternetHomeServer.Init(ctx, clientID, secureOrg, secureServer)
- if err != nil {
- return nil, err
- }
-
- l.IsType = srvtypes.TypeSecureInternet
- return &l.SecureInternetHomeServer, nil
-}
-
-func (l *List) SecureInternet(identifier string) (*secure.Server, error) {
- if l.SecureInternetHomeServer.HomeOrganizationID != identifier {
- return nil, errors.Errorf("no secure internet home server with identifier: %s", identifier)
- }
- return &l.SecureInternetHomeServer, nil
-}
-
-func (l *List) SetSecureInternet(server Server) error {
- b, err := server.Base()
- if err != nil {
- return err
- }
-
- if b.Type != srvtypes.TypeSecureInternet {
- return errors.New("not a secure internet server")
- }
-
- // The location should already be configured
- // TODO: check for location?
- l.IsType = srvtypes.TypeSecureInternet
- return nil
-}
-
-func (l *List) RemoveSecureInternet(identifier string) error {
- oid := l.SecureInternetHomeServer.HomeOrganizationID
- if identifier != oid {
- return errors.Errorf("cannot remove secure internet server: identifier: %s, is not equal to the Org ID: %s", identifier, oid)
- }
- // Empty out the struct
- l.SecureInternetHomeServer = secure.Server{}
-
- // If the current server is secure internet, reset to unknown
- if l.IsType == srvtypes.TypeSecureInternet {
- l.IsType = srvtypes.TypeUnknown
- }
- return nil
-}
-
-func (l *List) SetInstituteAccess(srv Server) error {
- b, err := srv.Base()
- if err != nil {
- return err
- }
-
- if b.Type != srvtypes.TypeInstituteAccess {
- return errors.Errorf("not an institute access server, URL: %s, type: %v", b.URL, b.Type)
- }
-
- if _, ok := l.InstituteServers.Map[b.URL]; ok {
- l.InstituteServers.CurrentURL = b.URL
- l.IsType = srvtypes.TypeInstituteAccess
- } else {
- return errors.Errorf("institute access server with URL: %s, is not yet configured", b.URL)
- }
- return nil
-}
-
-func (l *List) InstituteAccess(url string) (*institute.Server, error) {
- if srv, ok := l.InstituteServers.Map[url]; ok {
- return srv, nil
- }
- return nil, errors.Errorf("no institute access server with URL: %s", url)
-}
-
-func (l *List) RemoveInstituteAccess(url string) error {
- // TODO: Reset current to unknown?
- return l.InstituteServers.Remove(url)
-}
-
-func (l *List) SetCustom(server Server) error {
- b, err := server.Base()
- if err != nil {
- return err
- }
-
- if b.Type != srvtypes.TypeCustom {
- return errors.New("not a custom server")
- }
-
- if _, ok := l.CustomServers.Map[b.URL]; ok {
- l.CustomServers.CurrentURL = b.URL
- l.IsType = srvtypes.TypeCustom
- } else {
- return errors.Errorf("this server is not yet added as a custom server: %s", b.URL)
- }
- return nil
-}
-
-func (l *List) CustomServer(url string) (*institute.Server, error) {
- if srv, ok := l.CustomServers.Map[url]; ok {
- return srv, nil
- }
- return nil, errors.Errorf("failed to get institute access server - no custom server with URL '%s'", url)
-}
-
-func (l *List) RemoveCustom(url string) error {
- // TODO: Reset current to unknown?
- return l.CustomServers.Remove(url)
-}