zrok proxy config v1 (#12)

This commit is contained in:
Michael Quigley 2022-08-15 17:29:31 -04:00
parent d8d3e77788
commit cd3d7d81f4
No known key found for this signature in database
GPG Key ID: 9B60314A9DD20A62
5 changed files with 30 additions and 18 deletions

View File

@ -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
}

View File

@ -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,
}

View File

@ -1,5 +0,0 @@
package model
type ZrokAuth struct {
Hello string
}

14
model/config.go Normal file
View File

@ -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"`
}

View File

@ -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()