diff options
Diffstat (limited to 'internal/server/list.go')
| -rw-r--r-- | internal/server/list.go | 180 |
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) -} |
