From cd3d7d81f48b6260d72d48da3caad3e1e57db4e8 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Mon, 15 Aug 2022 17:29:31 -0400 Subject: [PATCH] zrok proxy config v1 (#12) --- controller/startup.go | 22 ++++++++++++---------- controller/tunnel.go | 4 ++-- model/ZrokAuth.go | 5 ----- model/config.go | 14 ++++++++++++++ proxy/proxy.go | 3 ++- 5 files changed, 30 insertions(+), 18 deletions(-) delete mode 100644 model/ZrokAuth.go create mode 100644 model/config.go diff --git a/controller/startup.go b/controller/startup.go index 4f216529..e0e32064 100644 --- a/controller/startup.go +++ b/controller/startup.go @@ -2,6 +2,8 @@ package controller import ( "context" + "fmt" + "github.com/openziti-test-kitchen/zrok/model" "github.com/openziti/edge/rest_management_api_client" "github.com/openziti/edge/rest_management_api_client/config" "github.com/openziti/edge/rest_model" @@ -10,7 +12,7 @@ import ( "time" ) -var zrokAuthV1Id string +var zrokProxyConfigId string func controllerStartup(cfg *Config) error { if err := inspectZiti(cfg); err != nil { @@ -26,15 +28,15 @@ func inspectZiti(cfg *Config) error { if err != nil { return errors.Wrap(err, "error getting ziti edge client") } - if err := ensureZrokAuthConfigType(edge); err != nil { + if err := ensureZrokProxyConfigType(edge); err != nil { return err } return nil } -func ensureZrokAuthConfigType(edge *rest_management_api_client.ZitiEdgeManagement) error { - filter := "name=\"zrok.auth.v1\"" +func ensureZrokProxyConfigType(edge *rest_management_api_client.ZitiEdgeManagement) error { + filter := fmt.Sprintf("name=\"%v\"", model.ZrokProxyConfig) limit := int64(100) offset := int64(0) listReq := &config.ListConfigTypesParams{ @@ -49,7 +51,7 @@ func ensureZrokAuthConfigType(edge *rest_management_api_client.ZitiEdgeManagemen return err } if len(listResp.Payload.Data) < 1 { - name := "zrok.auth.v1" + name := model.ZrokProxyConfig ct := &rest_model.ConfigTypeCreate{Name: &name} createReq := &config.CreateConfigTypeParams{ConfigType: ct} createReq.SetTimeout(30 * time.Second) @@ -57,13 +59,13 @@ func ensureZrokAuthConfigType(edge *rest_management_api_client.ZitiEdgeManagemen if err != nil { return err } - logrus.Infof("created 'zrok.auth.v1' config type with id '%v'", createResp.Payload.Data.ID) - zrokAuthV1Id = createResp.Payload.Data.ID + logrus.Infof("created '%v' config type with id '%v'", model.ZrokProxyConfig, createResp.Payload.Data.ID) + zrokProxyConfigId = createResp.Payload.Data.ID } else if len(listResp.Payload.Data) > 1 { - return errors.Errorf("found %d 'zrok.auth.v1' config types; expected 0 or 1", len(listResp.Payload.Data)) + return errors.Errorf("found %d '%v' config types; expected 0 or 1", len(listResp.Payload.Data), model.ZrokProxyConfig) } else { - logrus.Infof("found 'zrok.auth.v1' config type with id '%v'", *(listResp.Payload.Data[0].ID)) - zrokAuthV1Id = *(listResp.Payload.Data[0].ID) + logrus.Infof("found '%v' config type with id '%v'", model.ZrokProxyConfig, *(listResp.Payload.Data[0].ID)) + zrokProxyConfigId = *(listResp.Payload.Data[0].ID) } return nil } diff --git a/controller/tunnel.go b/controller/tunnel.go index 1256cd6e..85ab3a39 100644 --- a/controller/tunnel.go +++ b/controller/tunnel.go @@ -118,9 +118,9 @@ func (self *tunnelHandler) Handle(params tunnel.TunnelParams, principal *rest_mo } func (self *tunnelHandler) createConfig(svcName string, edge *rest_management_api_client.ZitiEdgeManagement) (cfgID string, err error) { - cfg := &model.ZrokAuth{Hello: "World"} + cfg := &model.ProxyConfig{AuthScheme: model.None} cfgCrt := &rest_model.ConfigCreate{ - ConfigTypeID: &zrokAuthV1Id, + ConfigTypeID: &zrokProxyConfigId, Data: cfg, Name: &svcName, } diff --git a/model/ZrokAuth.go b/model/ZrokAuth.go deleted file mode 100644 index cb76e585..00000000 --- a/model/ZrokAuth.go +++ /dev/null @@ -1,5 +0,0 @@ -package model - -type ZrokAuth struct { - Hello string -} diff --git a/model/config.go b/model/config.go new file mode 100644 index 00000000..dd8db0ba --- /dev/null +++ b/model/config.go @@ -0,0 +1,14 @@ +package model + +const ZrokProxyConfig = "zrok.proxy.v1" + +type AuthScheme string + +const ( + None AuthScheme = "none" + Basic = "basic" +) + +type ProxyConfig struct { + AuthScheme AuthScheme `json:"auth_scheme"` +} diff --git a/proxy/proxy.go b/proxy/proxy.go index 2755480e..e5477d09 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -3,6 +3,7 @@ package proxy import ( "context" "fmt" + "github.com/openziti-test-kitchen/zrok/model" "github.com/openziti-test-kitchen/zrok/util" "github.com/openziti/sdk-golang/ziti" "github.com/openziti/sdk-golang/ziti/config" @@ -25,7 +26,7 @@ func Run(cfg *Config) error { if err != nil { return errors.Wrap(err, "error loading config") } - zCfg.ConfigTypes = []string{"zrok.auth.v1"} + zCfg.ConfigTypes = []string{model.ZrokProxyConfig} zCtx := ziti.NewContextWithConfig(zCfg) zDialCtx := ZitiDialContext{Context: zCtx} zTransport := http.DefaultTransport.(*http.Transport).Clone()