summaryrefslogtreecommitdiff
path: root/internal/server/custom.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/server/custom.go')
-rw-r--r--internal/server/custom.go63
1 files changed, 63 insertions, 0 deletions
diff --git a/internal/server/custom.go b/internal/server/custom.go
new file mode 100644
index 0000000..b4b81cb
--- /dev/null
+++ b/internal/server/custom.go
@@ -0,0 +1,63 @@
+package server
+
+import (
+ "context"
+ "time"
+
+ "github.com/eduvpn/eduvpn-common/internal/api"
+ "github.com/eduvpn/eduvpn-common/internal/config/v2"
+ "github.com/eduvpn/eduvpn-common/types/server"
+ "github.com/jwijenbergh/eduoauth-go"
+)
+
+func (s *Servers) AddCustom(ctx context.Context, id string, na bool) (*Server, error) {
+ sd := api.ServerData{
+ ID: id,
+ Type: server.TypeCustom,
+ BaseWK: id,
+ BaseAuthWK: id,
+ }
+
+ var a *api.API
+ var err error
+ if !na {
+ // Authorize by creating the API object
+ a, err = api.NewAPI(ctx, s.clientID, sd, s.cb, nil)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ err = s.config.AddServer(id, server.TypeCustom, v2.Server{LastAuthorizeTime: time.Now()})
+ if err != nil {
+ return nil, err
+ }
+
+ cust := s.NewServer(id, server.TypeCustom, a)
+ // Return the server with the API
+
+ return &cust, nil
+}
+
+func (s *Servers) GetCustom(ctx context.Context, id string, tok *eduoauth.Token, disableAuth bool) (*Server, error) {
+ sd := api.ServerData{
+ ID: id,
+ Type: server.TypeCustom,
+ BaseWK: id,
+ BaseAuthWK: id,
+ DisableAuthorize: disableAuth,
+ }
+
+ // Get the server from the config
+ _, err := s.config.GetServer(id, server.TypeCustom)
+ if err != nil {
+ return nil, err
+ }
+ a, err := api.NewAPI(ctx, s.clientID, sd, s.cb, tok)
+ if err != nil {
+ return nil, err
+ }
+
+ cust := s.NewServer(id, server.TypeCustom, a)
+ return &cust, nil
+}