mirror of
https://github.com/openziti/ziti.git
synced 2026-09-10 00:35:41 +00:00
Add configs field to routers. Fixes #3780
This commit is contained in:
+44
-2
@@ -6,6 +6,7 @@
|
||||
* [Fully Connected Controller Mesh](#fully-connected-controller-mesh) - Controllers now proactively keep the cluster mesh fully connected
|
||||
* [Config Type Target Field](#config-type-target-field) - Config types now have a target field indicating whether they apply to services, routers or other entities
|
||||
* [Wildcard OIDC Issuers](#wildcard-oidc-issuers) - Controllers with a wildcard server-certificate SAN can serve OIDC for explicitly allow-listed hostnames
|
||||
* [Router Configs](#router-configs) - Allow routers to have a list of associated configs
|
||||
|
||||
## Cluster Quorum Recovery
|
||||
|
||||
@@ -113,13 +114,54 @@ entries are matched against wildcard SANs using standard X.509 hostname rules. T
|
||||
are therefore concrete, fixed hostnames, so the set of valid `iss` values stays closed. Concrete
|
||||
(non-wildcard) SANs continue to be served as issuers automatically and do not need to be listed.
|
||||
|
||||
## Router Configs
|
||||
|
||||
Routers (edge, transit, and fabric) now have a `configs` field that holds a list of config IDs the
|
||||
router should use. This is the second step toward controller-managed router configuration: routers
|
||||
can now be associated with configs in the same way services already can.
|
||||
|
||||
Validation rules:
|
||||
|
||||
* Every config referenced by a router must use a config type with `target = "router"`. Configs
|
||||
with `target = "service"` (or anything else) are rejected.
|
||||
* A router may reference at most one config per config type. Attempting to attach two configs of
|
||||
the same type is rejected with a duplicate-config error naming both configs.
|
||||
* Deleting a config automatically removes it from the `configs` list of any router that referenced
|
||||
it, so dangling references are not possible.
|
||||
|
||||
The `configs` field is exposed on router create, update, patch, and detail responses across the
|
||||
edge, transit, and fabric router REST APIs.
|
||||
|
||||
The CLI has been updated to support the new field:
|
||||
|
||||
* `ziti edge create edge-router` accepts `--config <id>` (repeatable)
|
||||
* `ziti edge create transit-router` accepts `--config <id>` (repeatable)
|
||||
* `ziti edge update edge-router` accepts `--config <id>` to replace the router's config list
|
||||
* `ziti fabric create router` accepts `--config <id>` (repeatable)
|
||||
* `ziti fabric update router` accepts `--config <id>` to replace the router's config list
|
||||
|
||||
## Component Updates and Bug Fixes
|
||||
|
||||
* github.com/openziti/foundation/v2: [v2.0.91 -> v2.0.92](https://github.com/openziti/foundation/compare/v2.0.91...v2.0.92)
|
||||
* github.com/openziti/identity: [v1.0.129 -> v1.0.130](https://github.com/openziti/identity/compare/v1.0.129...v1.0.130)
|
||||
* github.com/openziti/sdk-golang: [v1.7.0 -> v1.8.0](https://github.com/openziti/sdk-golang/compare/v1.7.0...v1.8.0)
|
||||
* [Issue #927](https://github.com/openziti/sdk-golang/issues/927) - Apply exponential backoff to auth retry attempts
|
||||
* [Issue #926](https://github.com/openziti/sdk-golang/issues/926) - Refresh OIDC token using a window to avoid race conditions and herding
|
||||
* [Issue #925](https://github.com/openziti/sdk-golang/issues/925) - Switch controllers on a broader set of errors
|
||||
* [Issue #924](https://github.com/openziti/sdk-golang/issues/924) - Make controller http timeout configurable, with a default of 30s
|
||||
* [Issue #932](https://github.com/openziti/sdk-golang/issues/932) - API Session Certificate chain is not preserved
|
||||
|
||||
* github.com/openziti/ziti/v2: [v2.0.0 -> v2.1.0](https://github.com/openziti/ziti/compare/v2.0.0...v2.1.0)
|
||||
* [Issue #1593](https://github.com/openziti/ziti/issues/1593) - Expanded attribute query support in management API; add policy attribute support and usage count
|
||||
* [Issue #3867](https://github.com/openziti/ziti/issues/3867) - Tunneler skips iptables rules for services sharing an intercept hostname
|
||||
* [Issue #3949](https://github.com/openziti/ziti/issues/3949) - DeleteById swallows errors when firing change events
|
||||
* [Issue #3945](https://github.com/openziti/ziti/issues/3945) - Increase certificate serial number namespace to 159 bits
|
||||
* [Issue #3942](https://github.com/openziti/ziti/issues/3942) - Prep for channel v5: bind handler invocation, send priorities
|
||||
* [Issue #3938](https://github.com/openziti/ziti/issues/3938) - Carry the link id in a link header instead of only in the channel identity token
|
||||
* [Issue #3914](https://github.com/openziti/ziti/issues/3914) - ziti login fails with oidc + wildcard certs
|
||||
* [Issue #3891](https://github.com/openziti/ziti/issues/3891) - oidc auth fails with wildcard server-cert SANs
|
||||
* [Issue #3744](https://github.com/openziti/ziti/issues/3744) - Add a target field to config type
|
||||
* [Issue #3684](https://github.com/openziti/ziti/issues/3684) - Keep controller mesh fully connected, as much as possible
|
||||
* [Issue #3849](https://github.com/openziti/ziti/issues/3849) - Add a recover mechanism for when a controller cluster can't form a quorum
|
||||
* [Issue #3891](https://github.com/openziti/ziti/issues/3891) - Fix OIDC auth failing for controllers using a wildcard server-cert SAN
|
||||
* [Issue #3961](https://github.com/openziti/ziti/issues/3961) - Fix router panic evaluating a process posture check when the client has reported no process/OS posture data
|
||||
|
||||
|
||||
|
||||
+345
-641
File diff suppressed because it is too large
Load Diff
@@ -118,6 +118,7 @@ message Router {
|
||||
map<string, TagValue> tags = 7;
|
||||
repeated Interface interfaces = 8;
|
||||
map<string, CtrlChanListenerDetail> ctrlChanListeners = 9;
|
||||
repeated string configs = 10;
|
||||
}
|
||||
|
||||
message Terminator {
|
||||
|
||||
@@ -1403,6 +1403,7 @@ type EdgeRouter struct {
|
||||
Disabled bool `protobuf:"varint,15,opt,name=disabled,proto3" json:"disabled,omitempty"`
|
||||
Interfaces []*Interface `protobuf:"bytes,16,rep,name=interfaces,proto3" json:"interfaces,omitempty"`
|
||||
CtrlChanListeners map[string]*CtrlChanListenerDetail `protobuf:"bytes,17,rep,name=ctrlChanListeners,proto3" json:"ctrlChanListeners,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
Configs []string `protobuf:"bytes,18,rep,name=configs,proto3" json:"configs,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
@@ -1556,6 +1557,13 @@ func (x *EdgeRouter) GetCtrlChanListeners() map[string]*CtrlChanListenerDetail {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *EdgeRouter) GetConfigs() []string {
|
||||
if x != nil {
|
||||
return x.Configs
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type ReEnrollEdgeRouterCmd struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
EdgeRouterId string `protobuf:"bytes,1,opt,name=edgeRouterId,proto3" json:"edgeRouterId,omitempty"`
|
||||
@@ -3260,6 +3268,7 @@ type TransitRouter struct {
|
||||
NoTraversal bool `protobuf:"varint,9,opt,name=noTraversal,proto3" json:"noTraversal,omitempty"`
|
||||
Disabled bool `protobuf:"varint,10,opt,name=disabled,proto3" json:"disabled,omitempty"`
|
||||
CtrlChanListeners map[string]*CtrlChanListenerDetail `protobuf:"bytes,11,rep,name=ctrlChanListeners,proto3" json:"ctrlChanListeners,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
|
||||
Configs []string `protobuf:"bytes,12,rep,name=configs,proto3" json:"configs,omitempty"`
|
||||
unknownFields protoimpl.UnknownFields
|
||||
sizeCache protoimpl.SizeCache
|
||||
}
|
||||
@@ -3371,6 +3380,13 @@ func (x *TransitRouter) GetCtrlChanListeners() map[string]*CtrlChanListenerDetai
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *TransitRouter) GetConfigs() []string {
|
||||
if x != nil {
|
||||
return x.Configs
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type CreateTransitRouterCmd struct {
|
||||
state protoimpl.MessageState `protogen:"open.v1"`
|
||||
Router *TransitRouter `protobuf:"bytes,1,opt,name=router,proto3" json:"router,omitempty"`
|
||||
@@ -4918,7 +4934,7 @@ const file_edge_cmd_proto_rawDesc = "" +
|
||||
"\x05flags\x18\x05 \x01(\x04R\x05flags\x12\x1c\n" +
|
||||
"\taddresses\x18\x06 \x03(\tR\taddresses\"0\n" +
|
||||
"\x16CtrlChanListenerDetail\x12\x16\n" +
|
||||
"\x06groups\x18\x01 \x03(\tR\x06groups\"\xe1\a\n" +
|
||||
"\x06groups\x18\x01 \x03(\tR\x06groups\"\xfb\a\n" +
|
||||
"\n" +
|
||||
"EdgeRouter\x12\x0e\n" +
|
||||
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
|
||||
@@ -4942,7 +4958,8 @@ const file_edge_cmd_proto_rawDesc = "" +
|
||||
"\n" +
|
||||
"interfaces\x18\x10 \x03(\v2\x1b.ziti.edge_cmd.pb.InterfaceR\n" +
|
||||
"interfaces\x12a\n" +
|
||||
"\x11ctrlChanListeners\x18\x11 \x03(\v23.ziti.edge_cmd.pb.EdgeRouter.CtrlChanListenersEntryR\x11ctrlChanListeners\x1aS\n" +
|
||||
"\x11ctrlChanListeners\x18\x11 \x03(\v23.ziti.edge_cmd.pb.EdgeRouter.CtrlChanListenersEntryR\x11ctrlChanListeners\x12\x18\n" +
|
||||
"\aconfigs\x18\x12 \x03(\tR\aconfigs\x1aS\n" +
|
||||
"\tTagsEntry\x12\x10\n" +
|
||||
"\x03key\x18\x01 \x01(\tR\x03key\x120\n" +
|
||||
"\x05value\x18\x02 \x01(\v2\x1a.ziti.edge_cmd.pb.TagValueR\x05value:\x028\x01\x1an\n" +
|
||||
@@ -5227,7 +5244,7 @@ const file_edge_cmd_proto_rawDesc = "" +
|
||||
"policyType\x1aS\n" +
|
||||
"\tTagsEntry\x12\x10\n" +
|
||||
"\x03key\x18\x01 \x01(\tR\x03key\x120\n" +
|
||||
"\x05value\x18\x02 \x01(\v2\x1a.ziti.edge_cmd.pb.TagValueR\x05value:\x028\x01\"\xe4\x05\n" +
|
||||
"\x05value\x18\x02 \x01(\v2\x1a.ziti.edge_cmd.pb.TagValueR\x05value:\x028\x01\"\xfe\x05\n" +
|
||||
"\rTransitRouter\x12\x0e\n" +
|
||||
"\x02id\x18\x01 \x01(\tR\x02id\x12\x12\n" +
|
||||
"\x04name\x18\x02 \x01(\tR\x04name\x12=\n" +
|
||||
@@ -5242,7 +5259,8 @@ const file_edge_cmd_proto_rawDesc = "" +
|
||||
"\vnoTraversal\x18\t \x01(\bR\vnoTraversal\x12\x1a\n" +
|
||||
"\bdisabled\x18\n" +
|
||||
" \x01(\bR\bdisabled\x12d\n" +
|
||||
"\x11ctrlChanListeners\x18\v \x03(\v26.ziti.edge_cmd.pb.TransitRouter.CtrlChanListenersEntryR\x11ctrlChanListeners\x1aS\n" +
|
||||
"\x11ctrlChanListeners\x18\v \x03(\v26.ziti.edge_cmd.pb.TransitRouter.CtrlChanListenersEntryR\x11ctrlChanListeners\x12\x18\n" +
|
||||
"\aconfigs\x18\f \x03(\tR\aconfigs\x1aS\n" +
|
||||
"\tTagsEntry\x12\x10\n" +
|
||||
"\x03key\x18\x01 \x01(\tR\x03key\x120\n" +
|
||||
"\x05value\x18\x02 \x01(\v2\x1a.ziti.edge_cmd.pb.TagValueR\x05value:\x028\x01\x1an\n" +
|
||||
|
||||
@@ -231,6 +231,7 @@ message EdgeRouter {
|
||||
bool disabled = 15;
|
||||
repeated Interface interfaces = 16;
|
||||
map<string, CtrlChanListenerDetail> ctrlChanListeners = 17;
|
||||
repeated string configs = 18;
|
||||
}
|
||||
|
||||
message ReEnrollEdgeRouterCmd {
|
||||
@@ -501,6 +502,7 @@ message TransitRouter {
|
||||
bool noTraversal = 9;
|
||||
bool disabled = 10;
|
||||
map<string, CtrlChanListenerDetail> ctrlChanListeners = 11;
|
||||
repeated string configs = 12;
|
||||
}
|
||||
|
||||
message CreateTransitRouterCmd {
|
||||
|
||||
@@ -77,6 +77,7 @@ type configStoreImpl struct {
|
||||
indexName boltz.ReadIndex
|
||||
symbolType boltz.EntitySymbol
|
||||
symbolServices boltz.EntitySetSymbol
|
||||
symbolRouters boltz.EntitySetSymbol
|
||||
symbolIdentityServices boltz.EntitySetSymbol
|
||||
identityServicesLinks *boltz.LinkedSetSymbol
|
||||
}
|
||||
@@ -91,6 +92,7 @@ func (store *configStoreImpl) initializeLocal() {
|
||||
store.symbolType = store.AddFkSymbol(FieldConfigType, store.stores.configType)
|
||||
store.AddMapSymbol(FieldConfigData, ast.NodeTypeAnyType, FieldConfigData)
|
||||
store.symbolServices = store.AddFkSetSymbol(EntityTypeServices, store.stores.edgeService)
|
||||
store.symbolRouters = store.AddFkSetSymbol(EntityTypeRouters, store.stores.router)
|
||||
store.symbolIdentityServices = store.AddSetSymbol(FieldConfigIdentityService, ast.NodeTypeOther)
|
||||
store.identityServicesLinks = &boltz.LinkedSetSymbol{EntitySymbol: store.symbolIdentityServices}
|
||||
}
|
||||
@@ -98,6 +100,7 @@ func (store *configStoreImpl) initializeLocal() {
|
||||
func (store *configStoreImpl) initializeLinked() {
|
||||
store.AddFkIndex(store.symbolType, store.stores.configType.symbolConfigs)
|
||||
store.AddLinkCollection(store.symbolServices, store.stores.edgeService.symbolConfigs)
|
||||
store.AddLinkCollection(store.symbolRouters, store.stores.router.symbolConfigs)
|
||||
}
|
||||
|
||||
func (store *configStoreImpl) NewEntity() *Config {
|
||||
@@ -148,6 +151,20 @@ func (store *configStoreImpl) DeleteById(ctx boltz.MutateContext, id string) err
|
||||
}
|
||||
}
|
||||
|
||||
// clear config from referencing routers
|
||||
for _, routerId := range store.GetRelatedEntitiesIdList(ctx.Tx(), id, EntityTypeRouters) {
|
||||
router, err := store.stores.router.LoadById(ctx.Tx(), routerId)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error loading router %s to clear reference to config %s (%w)", routerId, id, err)
|
||||
}
|
||||
router.Configs = slices.DeleteFunc(router.Configs, func(s string) bool {
|
||||
return s == id
|
||||
})
|
||||
if err = store.stores.router.Update(ctx, router, nil); err != nil {
|
||||
return fmt.Errorf("error updating router %s to clear reference to config %s (%w)", routerId, id, err)
|
||||
}
|
||||
}
|
||||
|
||||
err := store.symbolIdentityServices.Map(ctx.Tx(), []byte(id), func(mapCtx *boltz.MapContext) {
|
||||
keys, err := boltz.DecodeStringSlice(mapCtx.Value())
|
||||
if err != nil {
|
||||
|
||||
@@ -42,6 +42,7 @@ type Router struct {
|
||||
Disabled bool `json:"disabled"`
|
||||
CtrlChanListeners map[string][]string `json:"ctrlChanListeners"`
|
||||
Interfaces []*Interface `json:"interfaces"`
|
||||
Configs []string `json:"configs"`
|
||||
}
|
||||
|
||||
func (entity *Router) GetEntityType() string {
|
||||
@@ -69,6 +70,7 @@ type routerStoreImpl struct {
|
||||
baseStore[*Router]
|
||||
indexName boltz.ReadIndex
|
||||
terminatorsSymbol boltz.EntitySetSymbol
|
||||
symbolConfigs boltz.EntitySetSymbol
|
||||
}
|
||||
|
||||
func (store *routerStoreImpl) initializeLocal() {
|
||||
@@ -83,9 +85,12 @@ func (store *routerStoreImpl) initializeLocal() {
|
||||
store.AddSymbol(FieldRouterNoTraversal, ast.NodeTypeBool)
|
||||
store.AddSymbol(FieldRouterDisabled, ast.NodeTypeBool)
|
||||
store.AddSymbol(FieldRouterCtrlChanListeners, ast.NodeTypeOther)
|
||||
store.symbolConfigs = store.AddFkSetSymbol(EntityTypeConfigs, store.stores.config)
|
||||
store.MakeSymbolPublic(EntityTypeConfigs)
|
||||
}
|
||||
|
||||
func (store *routerStoreImpl) initializeLinked() {
|
||||
store.AddLinkCollection(store.symbolConfigs, store.stores.config.symbolRouters)
|
||||
}
|
||||
|
||||
func (self *routerStoreImpl) NewEntity() *Router {
|
||||
@@ -101,6 +106,7 @@ func (self *routerStoreImpl) FillEntity(entity *Router, bucket *boltz.TypedBucke
|
||||
entity.Disabled = bucket.GetBoolWithDefault(FieldRouterDisabled, false)
|
||||
entity.CtrlChanListeners = decodeCtrlChanListeners(bucket.GetMap(FieldRouterCtrlChanListeners))
|
||||
entity.Interfaces = loadInterfaces(bucket)
|
||||
entity.Configs = bucket.GetStringList(EntityTypeConfigs)
|
||||
}
|
||||
|
||||
func (self *routerStoreImpl) PersistEntity(entity *Router, ctx *boltz.PersistContext) {
|
||||
@@ -112,6 +118,7 @@ func (self *routerStoreImpl) PersistEntity(entity *Router, ctx *boltz.PersistCon
|
||||
ctx.SetBool(FieldRouterDisabled, entity.Disabled)
|
||||
ctx.Bucket.PutMap(FieldRouterCtrlChanListeners, encodeCtrlChanListeners(entity.CtrlChanListeners), ctx.FieldChecker, true)
|
||||
storeInterfaces(entity.Interfaces, ctx)
|
||||
ctx.SetLinkedIds(EntityTypeConfigs, entity.Configs)
|
||||
}
|
||||
|
||||
func (self *routerStoreImpl) UpdateInterfaces(entity *Router, interfaces map[string]*Interface, ctx *boltz.PersistContext) {
|
||||
|
||||
@@ -67,6 +67,7 @@ func MapCreateEdgeRouterToModel(router *rest_model.EdgeRouterCreate) *model.Edge
|
||||
NoTraversal: BoolOrDefault(router.NoTraversal),
|
||||
Disabled: BoolOrDefault(router.Disabled),
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -86,6 +87,7 @@ func MapUpdateEdgeRouterToModel(id string, router *rest_model.EdgeRouterUpdate)
|
||||
NoTraversal: BoolOrDefault(router.NoTraversal),
|
||||
Disabled: BoolOrDefault(router.Disabled),
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -105,6 +107,7 @@ func MapPatchEdgeRouterToModel(id string, router *rest_model.EdgeRouterPatch) *m
|
||||
NoTraversal: BoolOrDefault(router.NoTraversal),
|
||||
Disabled: BoolOrDefault(router.Disabled),
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -167,6 +170,7 @@ func MapEdgeRouterToRestModel(ae *env.AppEnv, router *model.EdgeRouter) (*rest_m
|
||||
UnverifiedFingerprint: router.UnverifiedFingerprint,
|
||||
UnverifiedCertPem: router.UnverifiedCertPem,
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
for _, intf := range router.Interfaces {
|
||||
|
||||
@@ -60,6 +60,7 @@ func MapCreateFabricRouterToModel(router *rest_model.RouterCreate) *model.Router
|
||||
NoTraversal: BoolOrDefault(router.NoTraversal),
|
||||
Disabled: BoolOrDefault(router.Disabled),
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -77,6 +78,7 @@ func MapUpdateFabricRouterToModel(id string, router *rest_model.RouterUpdate) *m
|
||||
NoTraversal: BoolOrDefault(router.NoTraversal),
|
||||
Disabled: BoolOrDefault(router.Disabled),
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -94,6 +96,7 @@ func MapPatchFabricRouterToModel(id string, router *rest_model.RouterPatch) *mod
|
||||
NoTraversal: BoolOrDefault(router.NoTraversal),
|
||||
Disabled: BoolOrDefault(router.Disabled),
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -127,6 +130,7 @@ func (FabricRouterModelMapper) ToApi(ae *env.AppEnv, _ *response.RequestContext,
|
||||
NoTraversal: &router.NoTraversal,
|
||||
Disabled: &router.Disabled,
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
if connected != nil {
|
||||
|
||||
@@ -23,6 +23,7 @@ func MapCreateRouterToModel(router *rest_model.RouterCreate) *model.TransitRoute
|
||||
Cost: uint16(Int64OrDefault(router.Cost)),
|
||||
NoTraversal: BoolOrDefault(router.NoTraversal),
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -39,6 +40,7 @@ func MapUpdateTransitRouterToModel(id string, router *rest_model.RouterUpdate) *
|
||||
NoTraversal: BoolOrDefault(router.NoTraversal),
|
||||
Disabled: BoolOrDefault(router.Disabled),
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -55,6 +57,7 @@ func MapPatchTransitRouterToModel(id string, router *rest_model.RouterPatch) *mo
|
||||
NoTraversal: BoolOrDefault(router.NoTraversal),
|
||||
Disabled: BoolOrDefault(router.Disabled),
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
return ret
|
||||
@@ -79,6 +82,7 @@ func MapTransitRouterToRestModel(ae *env.AppEnv, router *model.TransitRouter) (*
|
||||
NoTraversal: &router.NoTraversal,
|
||||
Disabled: &router.Disabled,
|
||||
CtrlChanListeners: router.CtrlChanListeners,
|
||||
Configs: router.Configs,
|
||||
}
|
||||
|
||||
if !router.IsBase && !router.IsVerified {
|
||||
|
||||
@@ -50,6 +50,7 @@ func NewEdgeRouterManager(env Env) *EdgeRouterManager {
|
||||
db.FieldRouterDisabled: struct{}{},
|
||||
db.FieldEdgeRouterAppData: struct{}{},
|
||||
db.FieldRouterCtrlChanListeners: struct{}{},
|
||||
db.EntityTypeConfigs: struct{}{},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -459,6 +460,7 @@ func (self *EdgeRouterManager) EdgeRouterToProtobuf(entity *EdgeRouter) (*edge_c
|
||||
NoTraversal: entity.NoTraversal,
|
||||
Disabled: entity.Disabled,
|
||||
CtrlChanListeners: edge_cmd_pb.EncodeCtrlChanListeners(entity.CtrlChanListeners),
|
||||
Configs: entity.Configs,
|
||||
}
|
||||
|
||||
for _, intf := range entity.Interfaces {
|
||||
@@ -508,6 +510,7 @@ func (self *EdgeRouterManager) ProtobufToEdgeRouter(msg *edge_cmd_pb.EdgeRouter)
|
||||
NoTraversal: msg.NoTraversal,
|
||||
Disabled: msg.Disabled,
|
||||
CtrlChanListeners: edge_cmd_pb.DecodeCtrlChanListeners(msg.CtrlChanListeners),
|
||||
Configs: msg.Configs,
|
||||
}
|
||||
|
||||
for _, intf := range msg.Interfaces {
|
||||
|
||||
@@ -42,13 +42,18 @@ type EdgeRouter struct {
|
||||
Disabled bool
|
||||
CtrlChanListeners map[string][]string
|
||||
Interfaces []*Interface
|
||||
Configs []string
|
||||
}
|
||||
|
||||
func (self *EdgeRouter) GetName() string {
|
||||
return self.Name
|
||||
}
|
||||
|
||||
func (entity *EdgeRouter) toBoltEntityForCreate(*bbolt.Tx, Env) (*db.EdgeRouter, error) {
|
||||
func (entity *EdgeRouter) toBoltEntityForCreate(tx *bbolt.Tx, env Env) (*db.EdgeRouter, error) {
|
||||
if err := validateRouterConfigs(tx, env, entity.Configs, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
boltEntity := &db.EdgeRouter{
|
||||
Router: db.Router{
|
||||
BaseExtEntity: *boltz.NewExtEntity(entity.Id, entity.Tags),
|
||||
@@ -58,6 +63,7 @@ func (entity *EdgeRouter) toBoltEntityForCreate(*bbolt.Tx, Env) (*db.EdgeRouter,
|
||||
Disabled: entity.Disabled,
|
||||
CtrlChanListeners: entity.CtrlChanListeners,
|
||||
Interfaces: InterfacesToBolt(entity.Interfaces),
|
||||
Configs: entity.Configs,
|
||||
},
|
||||
RoleAttributes: entity.RoleAttributes,
|
||||
IsVerified: false,
|
||||
@@ -68,7 +74,11 @@ func (entity *EdgeRouter) toBoltEntityForCreate(*bbolt.Tx, Env) (*db.EdgeRouter,
|
||||
return boltEntity, nil
|
||||
}
|
||||
|
||||
func (entity *EdgeRouter) toBoltEntityForUpdate(*bbolt.Tx, Env, boltz.FieldChecker) (*db.EdgeRouter, error) {
|
||||
func (entity *EdgeRouter) toBoltEntityForUpdate(tx *bbolt.Tx, env Env, checker boltz.FieldChecker) (*db.EdgeRouter, error) {
|
||||
if err := validateRouterConfigs(tx, env, entity.Configs, checker); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &db.EdgeRouter{
|
||||
Router: db.Router{
|
||||
BaseExtEntity: *boltz.NewExtEntity(entity.Id, entity.Tags),
|
||||
@@ -79,6 +89,7 @@ func (entity *EdgeRouter) toBoltEntityForUpdate(*bbolt.Tx, Env, boltz.FieldCheck
|
||||
Disabled: entity.Disabled,
|
||||
CtrlChanListeners: entity.CtrlChanListeners,
|
||||
Interfaces: InterfacesToBolt(entity.Interfaces),
|
||||
Configs: entity.Configs,
|
||||
},
|
||||
RoleAttributes: entity.RoleAttributes,
|
||||
IsVerified: entity.IsVerified,
|
||||
@@ -106,5 +117,6 @@ func (entity *EdgeRouter) fillFrom(_ Env, _ *bbolt.Tx, boltEdgeRouter *db.EdgeRo
|
||||
entity.Disabled = boltEdgeRouter.Disabled
|
||||
entity.CtrlChanListeners = boltEdgeRouter.CtrlChanListeners
|
||||
entity.Interfaces = InterfacesFromBolt(boltEdgeRouter.Interfaces)
|
||||
entity.Configs = boltEdgeRouter.Configs
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -453,6 +453,7 @@ func (self *RouterManager) UpdateCachedRouter(id string) {
|
||||
v.NoTraversal = router.NoTraversal
|
||||
v.Disabled = router.Disabled
|
||||
v.CtrlChanListeners = router.CtrlChanListeners
|
||||
v.Configs = router.Configs
|
||||
|
||||
if v.Disabled {
|
||||
if ctrl := v.Control; ctrl != nil {
|
||||
@@ -493,6 +494,7 @@ func (self *RouterManager) Marshall(entity *Router) ([]byte, error) {
|
||||
Disabled: entity.Disabled,
|
||||
Tags: tags,
|
||||
CtrlChanListeners: cmd_pb.EncodeCtrlChanListeners(entity.CtrlChanListeners),
|
||||
Configs: entity.Configs,
|
||||
}
|
||||
|
||||
for _, intf := range entity.Interfaces {
|
||||
@@ -532,6 +534,7 @@ func (self *RouterManager) Unmarshall(bytes []byte) (*Router, error) {
|
||||
NoTraversal: msg.NoTraversal,
|
||||
Disabled: msg.Disabled,
|
||||
CtrlChanListeners: cmd_pb.DecodeCtrlChanListeners(msg.CtrlChanListeners),
|
||||
Configs: msg.Configs,
|
||||
}
|
||||
|
||||
for _, intf := range msg.Interfaces {
|
||||
|
||||
@@ -17,17 +17,19 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/big"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/openziti/foundation/v2/errorz"
|
||||
"github.com/openziti/foundation/v2/versions"
|
||||
"github.com/openziti/ziti/v2/controller/storage/boltz"
|
||||
"github.com/openziti/ziti/v2/common/capabilities"
|
||||
"github.com/openziti/ziti/v2/common/ctrlchan"
|
||||
"github.com/openziti/ziti/v2/common/pb/ctrl_pb"
|
||||
"github.com/openziti/ziti/v2/controller/db"
|
||||
"github.com/openziti/ziti/v2/controller/models"
|
||||
"github.com/openziti/ziti/v2/controller/storage/boltz"
|
||||
"go.etcd.io/bbolt"
|
||||
)
|
||||
|
||||
@@ -53,17 +55,28 @@ type Router struct {
|
||||
Capabilities *big.Int
|
||||
Interfaces []*Interface
|
||||
CtrlChanListeners map[string][]string
|
||||
Configs []string
|
||||
}
|
||||
|
||||
func (entity *Router) GetLinks() []*Link {
|
||||
return entity.routerLinks.GetLinks()
|
||||
}
|
||||
|
||||
func (entity *Router) toBoltEntityForUpdate(tx *bbolt.Tx, env Env, _ boltz.FieldChecker) (*db.Router, error) {
|
||||
return entity.toBoltEntityForCreate(tx, env)
|
||||
func (entity *Router) toBoltEntityForUpdate(tx *bbolt.Tx, env Env, checker boltz.FieldChecker) (*db.Router, error) {
|
||||
if err := validateRouterConfigs(tx, env, entity.Configs, checker); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return entity.toBoltEntity(), nil
|
||||
}
|
||||
|
||||
func (entity *Router) toBoltEntityForCreate(*bbolt.Tx, Env) (*db.Router, error) {
|
||||
func (entity *Router) toBoltEntityForCreate(tx *bbolt.Tx, env Env) (*db.Router, error) {
|
||||
if err := validateRouterConfigs(tx, env, entity.Configs, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return entity.toBoltEntity(), nil
|
||||
}
|
||||
|
||||
func (entity *Router) toBoltEntity() *db.Router {
|
||||
return &db.Router{
|
||||
BaseExtEntity: *boltz.NewExtEntity(entity.Id, entity.Tags),
|
||||
Name: entity.Name,
|
||||
@@ -73,7 +86,52 @@ func (entity *Router) toBoltEntityForCreate(*bbolt.Tx, Env) (*db.Router, error)
|
||||
Disabled: entity.Disabled,
|
||||
CtrlChanListeners: entity.CtrlChanListeners,
|
||||
Interfaces: InterfacesToBolt(entity.Interfaces),
|
||||
}, nil
|
||||
Configs: entity.Configs,
|
||||
}
|
||||
}
|
||||
|
||||
// validateRouterConfigs validates that all configs target routers and have unique config types.
|
||||
// If checker is non-nil and the configs field is not being updated, validation is skipped.
|
||||
func validateRouterConfigs(tx *bbolt.Tx, env Env, configs []string, checker boltz.FieldChecker) error {
|
||||
if checker != nil && !checker.IsUpdated(db.EntityTypeConfigs) {
|
||||
return nil
|
||||
}
|
||||
if len(configs) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
typeMap := map[string]*db.Config{}
|
||||
configStore := env.GetStores().Config
|
||||
configTypeStore := env.GetStores().ConfigType
|
||||
for _, id := range configs {
|
||||
config, err := configStore.LoadById(tx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
configType, err := configTypeStore.LoadById(tx, config.TypeId)
|
||||
if err != nil {
|
||||
if boltz.IsErrNotFoundErr(err) {
|
||||
msg := fmt.Sprintf("config %v references config type %v which does not exist",
|
||||
config.Name, config.TypeId)
|
||||
return errorz.NewFieldError(msg, "configs", configs)
|
||||
}
|
||||
return err
|
||||
}
|
||||
if configType.Target != db.ConfigTypeTargetRouter {
|
||||
msg := fmt.Sprintf("config %v has config type %v which does not target routers",
|
||||
config.Name, configType.Name)
|
||||
return errorz.NewFieldError(msg, "configs", configs)
|
||||
}
|
||||
|
||||
if conflictConfig, found := typeMap[config.TypeId]; found {
|
||||
msg := fmt.Sprintf("duplicate configs named %v and %v found for config type %v. Only one config of a given type is allowed per router",
|
||||
conflictConfig.Name, config.Name, configType.Name)
|
||||
return errorz.NewFieldError(msg, "configs", configs)
|
||||
}
|
||||
typeMap[config.TypeId] = config
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (entity *Router) fillFrom(_ Env, _ *bbolt.Tx, boltRouter *db.Router) error {
|
||||
@@ -84,6 +142,7 @@ func (entity *Router) fillFrom(_ Env, _ *bbolt.Tx, boltRouter *db.Router) error
|
||||
entity.Disabled = boltRouter.Disabled
|
||||
entity.CtrlChanListeners = boltRouter.CtrlChanListeners
|
||||
entity.Interfaces = InterfacesFromBolt(boltRouter.Interfaces)
|
||||
entity.Configs = boltRouter.Configs
|
||||
entity.FillCommon(boltRouter)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -42,6 +42,7 @@ func NewTransitRouterManager(env Env) *TransitRouterManager {
|
||||
db.FieldName: struct{}{},
|
||||
boltz.FieldTags: struct{}{},
|
||||
db.FieldRouterCtrlChanListeners: struct{}{},
|
||||
db.EntityTypeConfigs: struct{}{},
|
||||
},
|
||||
}
|
||||
manager.impl = manager
|
||||
@@ -310,6 +311,7 @@ func (self *TransitRouterManager) TransitRouterToProtobuf(entity *TransitRouter)
|
||||
NoTraversal: entity.NoTraversal,
|
||||
Disabled: entity.Disabled,
|
||||
CtrlChanListeners: edge_cmd_pb.EncodeCtrlChanListeners(entity.CtrlChanListeners),
|
||||
Configs: entity.Configs,
|
||||
}
|
||||
|
||||
return msg, nil
|
||||
@@ -338,6 +340,7 @@ func (self *TransitRouterManager) ProtobufToTransitRouter(msg *edge_cmd_pb.Trans
|
||||
NoTraversal: msg.NoTraversal,
|
||||
Disabled: msg.Disabled,
|
||||
CtrlChanListeners: edge_cmd_pb.DecodeCtrlChanListeners(msg.CtrlChanListeners),
|
||||
Configs: msg.Configs,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
@@ -35,13 +35,18 @@ type TransitRouter struct {
|
||||
NoTraversal bool
|
||||
Disabled bool
|
||||
CtrlChanListeners map[string][]string
|
||||
Configs []string
|
||||
}
|
||||
|
||||
func (self *TransitRouter) GetName() string {
|
||||
return self.Name
|
||||
}
|
||||
|
||||
func (entity *TransitRouter) toBoltEntityForCreate(*bbolt.Tx, Env) (*db.TransitRouter, error) {
|
||||
func (entity *TransitRouter) toBoltEntityForCreate(tx *bbolt.Tx, env Env) (*db.TransitRouter, error) {
|
||||
if err := validateRouterConfigs(tx, env, entity.Configs, nil); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
boltEntity := &db.TransitRouter{
|
||||
Router: db.Router{
|
||||
BaseExtEntity: *boltz.NewExtEntity(entity.Id, entity.Tags),
|
||||
@@ -51,6 +56,7 @@ func (entity *TransitRouter) toBoltEntityForCreate(*bbolt.Tx, Env) (*db.TransitR
|
||||
NoTraversal: entity.NoTraversal,
|
||||
Disabled: entity.Disabled,
|
||||
CtrlChanListeners: entity.CtrlChanListeners,
|
||||
Configs: entity.Configs,
|
||||
},
|
||||
IsVerified: false,
|
||||
}
|
||||
@@ -58,7 +64,11 @@ func (entity *TransitRouter) toBoltEntityForCreate(*bbolt.Tx, Env) (*db.TransitR
|
||||
return boltEntity, nil
|
||||
}
|
||||
|
||||
func (entity *TransitRouter) toBoltEntityForUpdate(*bbolt.Tx, Env, boltz.FieldChecker) (*db.TransitRouter, error) {
|
||||
func (entity *TransitRouter) toBoltEntityForUpdate(tx *bbolt.Tx, env Env, checker boltz.FieldChecker) (*db.TransitRouter, error) {
|
||||
if err := validateRouterConfigs(tx, env, entity.Configs, checker); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
ret := &db.TransitRouter{
|
||||
Router: db.Router{
|
||||
BaseExtEntity: *boltz.NewExtEntity(entity.Id, entity.Tags),
|
||||
@@ -68,6 +78,7 @@ func (entity *TransitRouter) toBoltEntityForUpdate(*bbolt.Tx, Env, boltz.FieldCh
|
||||
NoTraversal: entity.NoTraversal,
|
||||
Disabled: entity.Disabled,
|
||||
CtrlChanListeners: entity.CtrlChanListeners,
|
||||
Configs: entity.Configs,
|
||||
},
|
||||
IsVerified: entity.IsVerified,
|
||||
UnverifiedFingerprint: entity.UnverifiedFingerprint,
|
||||
@@ -89,6 +100,7 @@ func (entity *TransitRouter) fillFrom(_ Env, _ *bbolt.Tx, boltTransitRouter *db.
|
||||
entity.NoTraversal = boltTransitRouter.NoTraversal
|
||||
entity.Disabled = boltTransitRouter.Disabled
|
||||
entity.CtrlChanListeners = boltTransitRouter.CtrlChanListeners
|
||||
entity.Configs = boltTransitRouter.Configs
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -44,6 +44,9 @@ import (
|
||||
// swagger:model routerCreate
|
||||
type RouterCreate struct {
|
||||
|
||||
// configs
|
||||
Configs []string `json:"configs"`
|
||||
|
||||
// cost
|
||||
// Required: true
|
||||
// Maximum: 65535
|
||||
|
||||
@@ -46,6 +46,9 @@ import (
|
||||
type RouterDetail struct {
|
||||
BaseEntity
|
||||
|
||||
// configs
|
||||
Configs []string `json:"configs"`
|
||||
|
||||
// connected
|
||||
// Required: true
|
||||
Connected *bool `json:"connected"`
|
||||
@@ -96,6 +99,8 @@ func (m *RouterDetail) UnmarshalJSON(raw []byte) error {
|
||||
|
||||
// AO1
|
||||
var dataAO1 struct {
|
||||
Configs []string `json:"configs"`
|
||||
|
||||
Connected *bool `json:"connected"`
|
||||
|
||||
Cost *int64 `json:"cost"`
|
||||
@@ -120,6 +125,8 @@ func (m *RouterDetail) UnmarshalJSON(raw []byte) error {
|
||||
return err
|
||||
}
|
||||
|
||||
m.Configs = dataAO1.Configs
|
||||
|
||||
m.Connected = dataAO1.Connected
|
||||
|
||||
m.Cost = dataAO1.Cost
|
||||
@@ -153,6 +160,8 @@ func (m RouterDetail) MarshalJSON() ([]byte, error) {
|
||||
}
|
||||
_parts = append(_parts, aO0)
|
||||
var dataAO1 struct {
|
||||
Configs []string `json:"configs"`
|
||||
|
||||
Connected *bool `json:"connected"`
|
||||
|
||||
Cost *int64 `json:"cost"`
|
||||
@@ -174,6 +183,8 @@ func (m RouterDetail) MarshalJSON() ([]byte, error) {
|
||||
VersionInfo *VersionInfo `json:"versionInfo,omitempty"`
|
||||
}
|
||||
|
||||
dataAO1.Configs = m.Configs
|
||||
|
||||
dataAO1.Connected = m.Connected
|
||||
|
||||
dataAO1.Cost = m.Cost
|
||||
|
||||
@@ -44,6 +44,9 @@ import (
|
||||
// swagger:model routerPatch
|
||||
type RouterPatch struct {
|
||||
|
||||
// configs
|
||||
Configs []string `json:"configs"`
|
||||
|
||||
// cost
|
||||
// Maximum: 65535
|
||||
// Minimum: 0
|
||||
|
||||
@@ -44,6 +44,9 @@ import (
|
||||
// swagger:model routerUpdate
|
||||
type RouterUpdate struct {
|
||||
|
||||
// configs
|
||||
Configs []string `json:"configs"`
|
||||
|
||||
// cost
|
||||
// Required: true
|
||||
// Maximum: 65535
|
||||
|
||||
@@ -2125,6 +2125,12 @@ func init() {
|
||||
"noTraversal"
|
||||
],
|
||||
"properties": {
|
||||
"configs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"cost": {
|
||||
"type": "integer",
|
||||
"maximum": 65535
|
||||
@@ -2178,6 +2184,12 @@ func init() {
|
||||
"disabled"
|
||||
],
|
||||
"properties": {
|
||||
"configs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"connected": {
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -2249,6 +2261,12 @@ func init() {
|
||||
"routerPatch": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"configs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"cost": {
|
||||
"type": "integer",
|
||||
"maximum": 65535,
|
||||
@@ -2293,6 +2311,12 @@ func init() {
|
||||
"noTraversal"
|
||||
],
|
||||
"properties": {
|
||||
"configs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"cost": {
|
||||
"type": "integer",
|
||||
"maximum": 65535
|
||||
@@ -7976,6 +8000,12 @@ func init() {
|
||||
"noTraversal"
|
||||
],
|
||||
"properties": {
|
||||
"configs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"cost": {
|
||||
"type": "integer",
|
||||
"maximum": 65535,
|
||||
@@ -8030,6 +8060,12 @@ func init() {
|
||||
"disabled"
|
||||
],
|
||||
"properties": {
|
||||
"configs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"connected": {
|
||||
"type": "boolean"
|
||||
},
|
||||
@@ -8102,6 +8138,12 @@ func init() {
|
||||
"routerPatch": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"configs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"cost": {
|
||||
"type": "integer",
|
||||
"maximum": 65535,
|
||||
@@ -8147,6 +8189,12 @@ func init() {
|
||||
"noTraversal"
|
||||
],
|
||||
"properties": {
|
||||
"configs": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"cost": {
|
||||
"type": "integer",
|
||||
"maximum": 65535,
|
||||
|
||||
@@ -1640,6 +1640,10 @@ definitions:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
configs:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
routerListener:
|
||||
type: object
|
||||
required:
|
||||
@@ -1681,6 +1685,10 @@ definitions:
|
||||
items:
|
||||
type: string
|
||||
x-omitempty: false
|
||||
configs:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
tags:
|
||||
$ref: '#/definitions/tags'
|
||||
routerUpdate:
|
||||
@@ -1711,6 +1719,10 @@ definitions:
|
||||
items:
|
||||
type: string
|
||||
x-omitempty: false
|
||||
configs:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
tags:
|
||||
$ref: '#/definitions/tags'
|
||||
routerPatch:
|
||||
@@ -1739,6 +1751,10 @@ definitions:
|
||||
items:
|
||||
type: string
|
||||
x-omitempty: false
|
||||
configs:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
tags:
|
||||
$ref: '#/definitions/tags'
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
module github.com/openziti/ziti/v2
|
||||
|
||||
go 1.26.1
|
||||
go 1.26.4
|
||||
|
||||
// pinned
|
||||
replace github.com/michaelquigley/pfxlog => github.com/michaelquigley/pfxlog v0.6.10
|
||||
|
||||
require (
|
||||
github.com/AppsFlyer/go-sundheit v0.6.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0
|
||||
github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0
|
||||
github.com/Jeffail/gabs v1.4.0
|
||||
github.com/Jeffail/gabs/v2 v2.7.0
|
||||
@@ -16,7 +16,7 @@ require (
|
||||
github.com/antlr4-go/antlr/v4 v4.13.1
|
||||
github.com/biogo/store v0.0.0-20201120204734-aad293a2328f
|
||||
github.com/blang/semver v3.5.1+incompatible
|
||||
github.com/c-bata/go-prompt v0.2.6
|
||||
github.com/c-bata/go-prompt v0.2.5
|
||||
github.com/cenkalti/backoff/v4 v4.3.0
|
||||
github.com/coreos/go-iptables v0.8.0
|
||||
github.com/dgryski/dgoogauth v0.0.0-20190221195224-5a805980a5f3
|
||||
@@ -25,17 +25,17 @@ require (
|
||||
github.com/fatih/color v1.19.0
|
||||
github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa
|
||||
github.com/gaissmai/extnetip v1.3.1
|
||||
github.com/go-acme/lego/v4 v4.35.2
|
||||
github.com/go-acme/lego/v4 v4.18.0
|
||||
github.com/go-jose/go-jose/v4 v4.1.4
|
||||
github.com/go-openapi/errors v0.22.7
|
||||
github.com/go-openapi/errors v0.22.8
|
||||
github.com/go-openapi/jsonpointer v0.23.1
|
||||
github.com/go-openapi/loads v0.23.3
|
||||
github.com/go-openapi/runtime v0.32.2
|
||||
github.com/go-openapi/spec v0.22.4
|
||||
github.com/go-openapi/strfmt v0.26.2
|
||||
github.com/go-openapi/swag v0.26.0
|
||||
github.com/go-openapi/swag/jsonutils v0.26.0
|
||||
github.com/go-openapi/validate v0.25.2
|
||||
github.com/go-openapi/loads v0.24.0
|
||||
github.com/go-openapi/runtime v0.32.3
|
||||
github.com/go-openapi/spec v0.22.5
|
||||
github.com/go-openapi/strfmt v0.26.3
|
||||
github.com/go-openapi/swag v0.26.1
|
||||
github.com/go-openapi/swag/jsonutils v0.26.1
|
||||
github.com/go-openapi/validate v0.26.0
|
||||
github.com/go-resty/resty/v2 v2.17.2
|
||||
github.com/go-viper/mapstructure/v2 v2.5.0
|
||||
github.com/golang-jwt/jwt/v5 v5.3.1
|
||||
@@ -50,7 +50,7 @@ require (
|
||||
github.com/hashicorp/golang-lru/v2 v2.0.7
|
||||
github.com/hashicorp/raft v1.7.3
|
||||
github.com/hashicorp/raft-boltdb/v2 v2.3.1
|
||||
github.com/jedib0t/go-pretty/v6 v6.7.10
|
||||
github.com/jedib0t/go-pretty/v6 v6.8.1
|
||||
github.com/jellydator/ttlcache/v3 v3.4.0
|
||||
github.com/jessevdk/go-flags v1.6.1
|
||||
github.com/jinzhu/copier v0.4.0
|
||||
@@ -65,15 +65,15 @@ require (
|
||||
github.com/openziti/agent v1.0.33
|
||||
github.com/openziti/channel/v4 v4.3.11
|
||||
github.com/openziti/cobra-to-md v1.0.1
|
||||
github.com/openziti/edge-api v0.31.0
|
||||
github.com/openziti/foundation/v2 v2.0.92
|
||||
github.com/openziti/identity v1.0.130
|
||||
github.com/openziti/edge-api v0.31.1
|
||||
github.com/openziti/foundation/v2 v2.0.95
|
||||
github.com/openziti/identity v1.0.133
|
||||
github.com/openziti/jwks v1.0.6
|
||||
github.com/openziti/metrics v1.4.5
|
||||
github.com/openziti/runzmd v1.0.90
|
||||
github.com/openziti/sdk-golang v1.8.0
|
||||
github.com/openziti/secretstream v0.1.49
|
||||
github.com/openziti/transport/v2 v2.0.215
|
||||
github.com/openziti/secretstream v0.1.51
|
||||
github.com/openziti/transport/v2 v2.0.216
|
||||
github.com/openziti/x509-claims v1.0.3
|
||||
github.com/openziti/xweb/v3 v3.0.4
|
||||
github.com/orcaman/concurrent-map/v2 v2.0.1
|
||||
@@ -95,13 +95,13 @@ require (
|
||||
go.etcd.io/bbolt v1.4.3
|
||||
go.uber.org/atomic v1.11.0
|
||||
go4.org v0.0.0-20260112195520-a5071408f32f
|
||||
golang.org/x/crypto v0.52.0
|
||||
golang.org/x/net v0.55.0
|
||||
golang.org/x/crypto v0.53.0
|
||||
golang.org/x/net v0.56.0
|
||||
golang.org/x/oauth2 v0.36.0
|
||||
golang.org/x/sync v0.20.0
|
||||
golang.org/x/sys v0.45.0
|
||||
golang.org/x/term v0.43.0
|
||||
golang.org/x/text v0.37.0
|
||||
golang.org/x/sync v0.21.0
|
||||
golang.org/x/sys v0.46.0
|
||||
golang.org/x/term v0.44.0
|
||||
golang.org/x/text v0.38.0
|
||||
google.golang.org/protobuf v1.36.11
|
||||
gopkg.in/AlecAivazis/survey.v1 v1.8.8
|
||||
gopkg.in/resty.v1 v1.12.0
|
||||
@@ -112,7 +112,7 @@ require (
|
||||
|
||||
require (
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 // indirect
|
||||
github.com/Azure/go-amqp v1.6.0 // indirect
|
||||
github.com/Azure/go-amqp v1.7.0 // indirect
|
||||
github.com/MichaelMure/go-term-text v0.3.1 // indirect
|
||||
github.com/alecthomas/chroma v0.10.0 // indirect
|
||||
github.com/andybalholm/brotli v1.2.1 // indirect
|
||||
@@ -120,35 +120,34 @@ require (
|
||||
github.com/armon/go-metrics v0.4.1 // indirect
|
||||
github.com/bmatcuk/doublestar/v4 v4.10.0 // indirect
|
||||
github.com/boltdb/bolt v1.3.1 // indirect
|
||||
github.com/cenkalti/backoff/v5 v5.0.3 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
||||
github.com/clipperhouse/uax29/v2 v2.7.0 // indirect
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
|
||||
github.com/creack/pty v1.1.11 // indirect
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||
github.com/creack/pty v1.1.24 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/dlclark/regexp2 v1.12.0 // indirect
|
||||
github.com/docker/go-units v0.5.0 // indirect
|
||||
github.com/ebitengine/purego v0.10.0 // indirect
|
||||
github.com/ebitengine/purego v0.10.1 // indirect
|
||||
github.com/emirpasic/gods v1.18.1 // indirect
|
||||
github.com/felixge/httpsnoop v1.0.4 // indirect
|
||||
github.com/fsnotify/fsnotify v1.10.1 // indirect
|
||||
github.com/go-chi/chi/v5 v5.2.5 // indirect
|
||||
github.com/go-chi/chi/v5 v5.3.0 // indirect
|
||||
github.com/go-logr/logr v1.4.3 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||
github.com/go-openapi/analysis v0.25.0 // indirect
|
||||
github.com/go-openapi/jsonreference v0.21.5 // indirect
|
||||
github.com/go-openapi/runtime/server-middleware v0.30.0 // indirect
|
||||
github.com/go-openapi/swag/cmdutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/conv v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/fileutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/jsonname v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/loading v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/mangling v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/netutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/stringutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/typeutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/yamlutils v0.26.0 // indirect
|
||||
github.com/go-openapi/analysis v0.25.2 // indirect
|
||||
github.com/go-openapi/jsonreference v0.21.6 // indirect
|
||||
github.com/go-openapi/runtime/server-middleware v0.32.3 // indirect
|
||||
github.com/go-openapi/swag/cmdutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/conv v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/fileutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/jsonname v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/loading v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/mangling v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/netutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/stringutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/typeutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/yamlutils v0.26.1 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
|
||||
github.com/gomarkdown/markdown v0.0.0-20260417124207-7d523f7318df // indirect
|
||||
github.com/hashicorp/go-immutable-radix v1.3.1 // indirect
|
||||
@@ -160,11 +159,11 @@ require (
|
||||
github.com/kr/pty v1.1.8 // indirect
|
||||
github.com/kyokomi/emoji/v2 v2.2.13 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-colorable v0.1.15 // indirect
|
||||
github.com/mattn/go-isatty v0.0.22 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.23 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.24 // indirect
|
||||
github.com/mattn/go-tty v0.0.8 // indirect
|
||||
github.com/mdlayher/socket v0.6.0 // indirect
|
||||
github.com/mdlayher/socket v0.6.1 // indirect
|
||||
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
|
||||
github.com/miekg/pkcs11 v1.1.2 // indirect
|
||||
github.com/mitchellh/go-ps v1.0.0 // indirect
|
||||
@@ -174,16 +173,16 @@ require (
|
||||
github.com/openziti/go-term-markdown v1.0.1 // indirect
|
||||
github.com/parallaxsecond/parsec-client-go v0.0.0-20221025095442-f0a77d263cf9 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.3.1 // indirect
|
||||
github.com/pion/dtls/v3 v3.1.2 // indirect
|
||||
github.com/pion/dtls/v3 v3.1.4 // indirect
|
||||
github.com/pion/logging v0.2.4 // indirect
|
||||
github.com/pion/transport/v4 v4.0.1 // indirect
|
||||
github.com/pkg/term v1.2.0-beta.2 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
github.com/pion/transport/v4 v4.0.2 // indirect
|
||||
github.com/pkg/term v1.1.0 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
|
||||
github.com/rs/cors v1.11.1 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/sagikazarmark/locafero v0.12.0 // indirect
|
||||
github.com/shirou/gopsutil/v4 v4.26.4 // indirect
|
||||
github.com/shirou/gopsutil/v4 v4.26.5 // indirect
|
||||
github.com/shoenig/go-m1cpu v0.2.1 // indirect
|
||||
github.com/speps/go-hashids v2.0.0+incompatible // indirect
|
||||
github.com/spf13/afero v1.15.0 // indirect
|
||||
@@ -200,13 +199,13 @@ require (
|
||||
github.com/zitadel/schema v1.3.2 // indirect
|
||||
go.mozilla.org/pkcs7 v0.9.0 // indirect
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
|
||||
go.opentelemetry.io/otel v1.43.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.43.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.43.0 // indirect
|
||||
go.opentelemetry.io/otel v1.44.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.44.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.44.0 // indirect
|
||||
go.yaml.in/yaml/v3 v3.0.4 // indirect
|
||||
golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a // indirect
|
||||
golang.org/x/mod v0.36.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect
|
||||
golang.org/x/mod v0.37.0 // indirect
|
||||
golang.org/x/tools v0.45.0 // indirect
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
|
||||
nhooyr.io/websocket v1.8.17 // indirect
|
||||
)
|
||||
|
||||
@@ -41,21 +41,21 @@ github.com/AlecAivazis/survey/v2 v2.0.5/go.mod h1:WYBhg6f0y/fNYUuesWQc0PKbJcEliG
|
||||
github.com/AppsFlyer/go-sundheit v0.6.0 h1:d2hBvCjBSb2lUsEWGfPigr4MCOt04sxB+Rppl0yUMSk=
|
||||
github.com/AppsFlyer/go-sundheit v0.6.0/go.mod h1:LDdBHD6tQBtmHsdW+i1GwdTt6Wqc0qazf5ZEJVTbTME=
|
||||
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1 h1:jHb/wfvRikGdxMXYV3QG/SzUOPYN9KEUUuC0Yd0/vC0=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1/go.mod h1:pzBXCYn05zvYIrwLgtK8Ap8QcjRg+0i76tMQdWN6wOk=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 h1:aokoqcHvaGjiM3VpjKDfMMnF/8epJ+Q1HLJ7CudztqE=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0/go.mod h1:/WYEx9pcM9Y+Dd/APJaNlSvVSvzl54rrMdZT5+Oi2LM=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 h1:fhqpLE3UEXi9lPaBRpQ6XuRW0nU7hgg4zlmZZa+a9q4=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0/go.mod h1:7dCRMLwisfRH3dBupKeNCioWYUZ4SS09Z14H+7i8ZoY=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0 h1:kE5kpeiSqu4jcCQ/sWuyggMXJ/pT6oQ99+8hwPmyeJ0=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0/go.mod h1:IAN3Z0DMtehoxoQQnfqg1891z1P7GNoDryKtFcAyMBI=
|
||||
github.com/Azure/go-amqp v1.6.0 h1:pMnBstxSd2JnvTopR/L9MUdQi4e5Mp9FscP4kZ0rZ8M=
|
||||
github.com/Azure/go-amqp v1.6.0/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE=
|
||||
github.com/Azure/go-amqp v1.7.0 h1:9VlH/LEWr386XWWJRNON0eslFqSClYBXP4HewvIqkDQ=
|
||||
github.com/Azure/go-amqp v1.7.0/go.mod h1:pCJaHsvRlmmFUpxyQbh2qPkUFqYJeRBTqJSHKJadvPg=
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 h1:XRzhVemXdgvJqCH0sFfrBUTnUJSBrBf7++ypk+twtRs=
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk=
|
||||
github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
|
||||
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
||||
github.com/Jeffail/gabs v1.4.0 h1://5fYRRTq1edjfIrQGvdkcd22pkYUrHZ5YC/H2GJVAo=
|
||||
@@ -102,12 +102,10 @@ github.com/bmatcuk/doublestar/v4 v4.10.0 h1:zU9WiOla1YA122oLM6i4EXvGW62DvKZVxIe6
|
||||
github.com/bmatcuk/doublestar/v4 v4.10.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc=
|
||||
github.com/boltdb/bolt v1.3.1 h1:JQmyP4ZBrce+ZQu0dY660FMfatumYDLun9hBCUVIkF4=
|
||||
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
|
||||
github.com/c-bata/go-prompt v0.2.6 h1:POP+nrHE+DfLYx370bedwNhsqmpCUynWPxuHi0C5vZI=
|
||||
github.com/c-bata/go-prompt v0.2.6/go.mod h1:/LMAke8wD2FsNu9EXNdHxNLbd9MedkPnCdfpU9wwHfY=
|
||||
github.com/c-bata/go-prompt v0.2.5 h1:3zg6PecEywxNn0xiqcXHD96fkbxghD+gdB2tbsYfl+Y=
|
||||
github.com/c-bata/go-prompt v0.2.5/go.mod h1:vFnjEGDIIA/Lib7giyE4E9c50Lvl8j0S+7FVlAwDAVw=
|
||||
github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
|
||||
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
|
||||
github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM=
|
||||
github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw=
|
||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
|
||||
@@ -134,12 +132,11 @@ github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6N
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
|
||||
github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=
|
||||
github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=
|
||||
github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dgryski/dgoogauth v0.0.0-20190221195224-5a805980a5f3 h1:AqeKSZIG/NIC75MNQlPy/LM3LxfpLwahICJBHwSMFNc=
|
||||
github.com/dgryski/dgoogauth v0.0.0-20190221195224-5a805980a5f3/go.mod h1:hEfFauPHz7+NnjR/yHJGhrKo1Za+zStgwUETx3yzqgY=
|
||||
github.com/dineshappavoo/basex v0.0.0-20170425072625-481a6f6dc663 h1:fctNkSsavbXpt8geFWZb8n+noCqS8MrOXRJ/YfdZ2dQ=
|
||||
@@ -149,8 +146,8 @@ github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz
|
||||
github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
|
||||
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
|
||||
github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU=
|
||||
github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||
github.com/ebitengine/purego v0.10.1 h1:dewVBCBT2GaMu1SrNTYxQhgQBethzfhiwvZiLGP/qyY=
|
||||
github.com/ebitengine/purego v0.10.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||
github.com/ef-ds/deque v1.0.4 h1:iFAZNmveMT9WERAkqLJ+oaABF9AcVQ5AjXem/hroniI=
|
||||
github.com/ef-ds/deque v1.0.4/go.mod h1:gXDnTC3yqvBcHbq2lcExjtAcVrOnJCbMcZXmuj8Z4tg=
|
||||
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
|
||||
@@ -181,10 +178,10 @@ github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXt
|
||||
github.com/gaissmai/extnetip v1.3.1 h1:e8xa3hJG/+6NevjZXVkC60WBLypNjH/ugEy4kaPoKAU=
|
||||
github.com/gaissmai/extnetip v1.3.1/go.mod h1:PepswGWH0GJ4XSdiY7bY2EaEPpCQs7OaYcySeW525fg=
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/go-acme/lego/v4 v4.35.2 h1:uVQg+KC/yj9R2g7Q9W5wDqhvQvxV5SMu5eqFVoN5xZU=
|
||||
github.com/go-acme/lego/v4 v4.35.2/go.mod h1:pX2jN5n8OphMGY1IaMjYm5DAEzguBaKRt8AvJAgJXpc=
|
||||
github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug=
|
||||
github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0=
|
||||
github.com/go-acme/lego/v4 v4.18.0 h1:2hH8KcdRBSb+p5o9VZIm61GAOXYALgILUCSs1Q+OYsk=
|
||||
github.com/go-acme/lego/v4 v4.18.0/go.mod h1:Blkg3izvXpl3zxk7WKngIuwR2I/hvYVP3vRnvgBp7m8=
|
||||
github.com/go-chi/chi/v5 v5.3.0 h1:halUjDxhshgXHMrao5bB8eNBXo/rnzwr8m5m36glehM=
|
||||
github.com/go-chi/chi/v5 v5.3.0/go.mod h1:R+tYY2hNuVUUjxoPtqUdgBqevM9s9njzkTLutVsOCto=
|
||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
@@ -204,56 +201,56 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||
github.com/go-openapi/analysis v0.25.0 h1:EnjAq1yO8wEO9HbPmY8vLPEIkdZuuFhCAKBPvCB7bCs=
|
||||
github.com/go-openapi/analysis v0.25.0/go.mod h1:5WFTRE43WLkPG9r9OtlMfqkkvUTYLVVCIxLlEpyF8kE=
|
||||
github.com/go-openapi/errors v0.22.7 h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA=
|
||||
github.com/go-openapi/errors v0.22.7/go.mod h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w=
|
||||
github.com/go-openapi/analysis v0.25.2 h1:I0vy4n3alz+DHTiN1PRhCb7QZxkK6g5YmswZKv2TKuw=
|
||||
github.com/go-openapi/analysis v0.25.2/go.mod h1:Uhs1t/2XR10EnwONYILGEzw8gcfGIG5Xk5K2AxnhqDo=
|
||||
github.com/go-openapi/errors v0.22.8 h1:oP7sW7TWc3wFFjrzzj0nI83H2qMBkNjNfSd+XRejk/I=
|
||||
github.com/go-openapi/errors v0.22.8/go.mod h1:BuUoHcYrU6E7V9gfj1I5wLQqgtIHnup/alXZ8KdgQ0w=
|
||||
github.com/go-openapi/jsonpointer v0.23.1 h1:1HBACs7XIwR2RcmItfdSFlALhGbe6S92p0ry4d1GWg4=
|
||||
github.com/go-openapi/jsonpointer v0.23.1/go.mod h1:iWRmZTrGn7XwYhtPt/fvdSFj1OfNBngqRT2UG3BxSqY=
|
||||
github.com/go-openapi/jsonreference v0.21.5 h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE=
|
||||
github.com/go-openapi/jsonreference v0.21.5/go.mod h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw=
|
||||
github.com/go-openapi/loads v0.23.3 h1:g5Xap1JfwKkUnZdn+S0L3SzBDpcTIYzZ5Qaag0YDkKQ=
|
||||
github.com/go-openapi/loads v0.23.3/go.mod h1:NOH07zLajXo8y55hom0omlHWDVVvCwBM/S+csCK8LqA=
|
||||
github.com/go-openapi/runtime v0.32.2 h1:X9mZz716lFwYZ6bFV1BBnthNdHTy46zKM5Em4D1UISI=
|
||||
github.com/go-openapi/runtime v0.32.2/go.mod h1:IfM3cpgencPuwBp5Uo16i2IQaE74odL7Q4DCGovIQac=
|
||||
github.com/go-openapi/runtime/server-middleware v0.30.0 h1:8rPoJ/xv7JL8BsovaqboKETlpWBArVh8n+0L/GyePog=
|
||||
github.com/go-openapi/runtime/server-middleware v0.30.0/go.mod h1:OYNT/TxNvB/VK5oe4htM2jDTwlEXuejVJmu0DVZfAMs=
|
||||
github.com/go-openapi/spec v0.22.4 h1:4pxGjipMKu0FzFiu/DPwN3CTBRlVM2yLf/YTWorYfDQ=
|
||||
github.com/go-openapi/spec v0.22.4/go.mod h1:WQ6Ai0VPWMZgMT4XySjlRIE6GP1bGQOtEThn3gcWLtQ=
|
||||
github.com/go-openapi/strfmt v0.26.2 h1:ysjheCh4i1rmFEo2LanhELDNucNzfWTZhUDKgWWPaFM=
|
||||
github.com/go-openapi/strfmt v0.26.2/go.mod h1:fXh1e449cyUn2NYuz+wb3wARBUdMl7qPEZwX00nqivY=
|
||||
github.com/go-openapi/swag v0.26.0 h1:GVDXCmfvhfu1BxiHo8/FA+BbKmhecHnG3varjON5/RI=
|
||||
github.com/go-openapi/swag v0.26.0/go.mod h1:82g3193sZJRbocs7bNCqGfIgq8pkuwVwCfhKIRlEQF0=
|
||||
github.com/go-openapi/swag/cmdutils v0.26.0 h1:iowihOcvq7y4egO8cOq0dmfohz6wfeQ63U1EnuhO2TU=
|
||||
github.com/go-openapi/swag/cmdutils v0.26.0/go.mod h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM=
|
||||
github.com/go-openapi/swag/conv v0.26.0 h1:5yGGsPYI1ZCva93U0AoKi/iZrNhaJEjr324YVsiD89I=
|
||||
github.com/go-openapi/swag/conv v0.26.0/go.mod h1:tpAmIL7X58VPnHHiSO4uE3jBeRamGsFsfdDeDtb5ECE=
|
||||
github.com/go-openapi/swag/fileutils v0.26.0 h1:WJoPRvsA7QRiiWluowkLJa9jaYR7FCuxmDvnCgaRRxU=
|
||||
github.com/go-openapi/swag/fileutils v0.26.0/go.mod h1:0WDJ7lp67eNjPMO50wAWYlKvhOb6CQ37rzR7wrgI8Tc=
|
||||
github.com/go-openapi/swag/jsonname v0.26.0 h1:gV1NFX9M8avo0YSpmWogqfQISigCmpaiNci8cGECU5w=
|
||||
github.com/go-openapi/swag/jsonname v0.26.0/go.mod h1:urBBR8bZNoDYGr653ynhIx+gTeIz0ARZxHkAPktJK2M=
|
||||
github.com/go-openapi/swag/jsonutils v0.26.0 h1:FawFML2iAXsPqmERscuMPIHmFsoP1tOqWkxBaKNMsnA=
|
||||
github.com/go-openapi/swag/jsonutils v0.26.0/go.mod h1:2VmA0CJlyFqgawOaPI9psnjFDqzyivIqLYN34t9p91E=
|
||||
github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0 h1:apqeINu/ICHouqiRZbyFvuDge5jCmmLTqGQ9V95EaOM=
|
||||
github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0/go.mod h1:AyM6QT8uz5IdKxk5akv0y6u4QvcL9GWERt0Jx/F/R8Y=
|
||||
github.com/go-openapi/swag/loading v0.26.0 h1:Apg6zaKhCJurpJer0DCxq99qwmhFddBhaMX7kilDcko=
|
||||
github.com/go-openapi/swag/loading v0.26.0/go.mod h1:dBxQ/6V2uBaAQdevN18VELE6xSpJWZxLX4txe12JwDg=
|
||||
github.com/go-openapi/swag/mangling v0.26.0 h1:Du2YC4YLA/Y5m/YKQd7AnY5qq0wRKSFZTTt8ktFaXcQ=
|
||||
github.com/go-openapi/swag/mangling v0.26.0/go.mod h1:jifS7W9vbg+pw63bT+GI53otluMQL3CeemuyCHKwVx0=
|
||||
github.com/go-openapi/swag/netutils v0.26.0 h1:CmZp+ZT7HrmFwrC3GdGsXBq2+42T1bjKBapcqVpIs3c=
|
||||
github.com/go-openapi/swag/netutils v0.26.0/go.mod h1:5iK+Ok3ZohWWex1C50BFTPexi03UaPwjW4Oj8kgrpwo=
|
||||
github.com/go-openapi/swag/stringutils v0.26.0 h1:qZQngLxs5s7SLijc3N2ZO+fUq2o8LjuWAASSrJuh+xg=
|
||||
github.com/go-openapi/swag/stringutils v0.26.0/go.mod h1:sWn5uY+QIIspwPhvgnqJsH8xqFT2ZbYcvbcFanRyhFE=
|
||||
github.com/go-openapi/swag/typeutils v0.26.0 h1:2kdEwdiNWy+JJdOvu5MA2IIg2SylWAFuuyQIKYybfq4=
|
||||
github.com/go-openapi/swag/typeutils v0.26.0/go.mod h1:oovDuIUvTrEHVMqWilQzKzV4YlSKgyZmFh7AlfABNVE=
|
||||
github.com/go-openapi/swag/yamlutils v0.26.0 h1:H7O8l/8NJJQ/oiReEN+oMpnGMyt8G0hl460nRZxhLMQ=
|
||||
github.com/go-openapi/swag/yamlutils v0.26.0/go.mod h1:1evKEGAtP37Pkwcc7EWMF0hedX0/x3Rkvei2wtG/TbU=
|
||||
github.com/go-openapi/jsonreference v0.21.6 h1:NZ5nGfnaM1n4I43Xjm1e5/M2GjOwQwndQz22uhxwD+Y=
|
||||
github.com/go-openapi/jsonreference v0.21.6/go.mod h1:xzbgtQ3ZbWxvET3AxdzCJlJt6vkovbf+IfSPJjD0tUY=
|
||||
github.com/go-openapi/loads v0.24.0 h1:4LLorXRPTzIN9V6ngMUZbAscsBOUBk3Oa8cClu/bFrQ=
|
||||
github.com/go-openapi/loads v0.24.0/go.mod h1:xQMgX+hw5xRAhGrcDXxeMw78IFqUpIzhleu3HqPhyF4=
|
||||
github.com/go-openapi/runtime v0.32.3 h1:J7Ycy5DJmhhP1By3NifhRUjnkXTrk21qbeqSULjwX8U=
|
||||
github.com/go-openapi/runtime v0.32.3/go.mod h1:/WTQi0fa5DiGnnCXQKsTkSm15OzJp8Uz3H2t+67TBr4=
|
||||
github.com/go-openapi/runtime/server-middleware v0.32.3 h1:Y/6h9ix9NCoMG04XazRwX6eA3alh4+JZ6qXdar5yd24=
|
||||
github.com/go-openapi/runtime/server-middleware v0.32.3/go.mod h1:fYPep4GdTwg/XqZUjR40uIM/8C12Ba5M+MrGCiwpTHo=
|
||||
github.com/go-openapi/spec v0.22.5 h1:KhO7RBlKQfonUWX2WzQCoLIXVA6AcNqDGZ3a1Dutdlo=
|
||||
github.com/go-openapi/spec v0.22.5/go.mod h1:vxpOtMya5TXtENXKE5bKqv5NjocVhyhxHrlZfvKnZ74=
|
||||
github.com/go-openapi/strfmt v0.26.3 h1:rzmslHarJgBbf2qfGge+X3htclQfmXqBZMm0Too0HhU=
|
||||
github.com/go-openapi/strfmt v0.26.3/go.mod h1:a5nsUw0oRpQzZeOwx8bi6cKbzFZslpbCKt1LEot+KnQ=
|
||||
github.com/go-openapi/swag v0.26.1 h1:l5sVEyVpwj+DDYeZyo7wQI/Ebn/mKYIyGB/pFwAfGoQ=
|
||||
github.com/go-openapi/swag v0.26.1/go.mod h1:yNY38BbIVthxbkDtq1UHBCGasBqjakW3lCR6ANzdBEw=
|
||||
github.com/go-openapi/swag/cmdutils v0.26.1 h1:f2iE1ijYaJ3nuu5PaEMx3zpEhzhZFgivCJObWEObLIQ=
|
||||
github.com/go-openapi/swag/cmdutils v0.26.1/go.mod h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM=
|
||||
github.com/go-openapi/swag/conv v0.26.1 h1:slr5FVkg9Wc3Y5zcwenD8Sd/PQ94b2I/QJI7N7KTBpg=
|
||||
github.com/go-openapi/swag/conv v0.26.1/go.mod h1:mvQXgPptZk9GTrFgGwWvT4q+dN+zQej9JfmGwnipz1A=
|
||||
github.com/go-openapi/swag/fileutils v0.26.1 h1:K1XCM2CGhfNsc6YDt6v7Q5+1e59rftYWdcu/isZhvFw=
|
||||
github.com/go-openapi/swag/fileutils v0.26.1/go.mod h1:mYUgxQAKX4ShS3qvvySx+/9yrlUnDhjiD1CalaQl8lQ=
|
||||
github.com/go-openapi/swag/jsonname v0.26.1 h1:VReupaV6WxlAsCn0e4DUfgV6bPmINnPpyJDLqSfNPcE=
|
||||
github.com/go-openapi/swag/jsonname v0.26.1/go.mod h1:OvdW6BoWoj33pTfi7x9vFrgmT+fk7aw0BRwvCE0YOuc=
|
||||
github.com/go-openapi/swag/jsonutils v0.26.1 h1:2hdBfFkHg+7Wrz2VsCbeyR6hzkRDs7AztnMR2u84yOY=
|
||||
github.com/go-openapi/swag/jsonutils v0.26.1/go.mod h1:U+RMJH3wa+6BRiphuRtIyI8fW9HPFqFQ4sHk2oRx0UQ=
|
||||
github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.1 h1:1CD7NiLLb/TXl3tOnFYU4b+mNfb5rtgHkaA+q7RMYYQ=
|
||||
github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.1/go.mod h1:ZWafc8nMdYzTE3uYY6W86f0n46+IF0g4uUyRhJw/kXc=
|
||||
github.com/go-openapi/swag/loading v0.26.1 h1:E9K4wqXeROlhjFQ13K9zMz6ojFGXIggGe+ad1odrK9w=
|
||||
github.com/go-openapi/swag/loading v0.26.1/go.mod h1:3qvRIlWzWdq1HvmldwmuJ2ohpcAryN6xVt2OTKd0/7E=
|
||||
github.com/go-openapi/swag/mangling v0.26.1 h1:gpYI4WuPKFJJVjV5cDLGlDVJhFIxYjQc7yN5eEb4CqM=
|
||||
github.com/go-openapi/swag/mangling v0.26.1/go.mod h1:POETDH01hqAdASXfw7ISEd9bCOE6xBHOt8NHmGZRmYM=
|
||||
github.com/go-openapi/swag/netutils v0.26.1 h1:BNctoc39WTAUMxyAs355fExOPzMZtPbZ0ZZ1Am2FR5M=
|
||||
github.com/go-openapi/swag/netutils v0.26.1/go.mod h1:y02vByhZhQPAVwOX+0KipXFZ/hUbk6G/Enhf5rGaOkQ=
|
||||
github.com/go-openapi/swag/stringutils v0.26.1 h1:f88uYyTso7TnHrKM/bUBsQ5e2wKf37cpgo6pvbzd9yU=
|
||||
github.com/go-openapi/swag/stringutils v0.26.1/go.mod h1:Sc6d3bU8fgk5AyZR8/8jEQ+Is/Ald+TD/IIggPN8UJk=
|
||||
github.com/go-openapi/swag/typeutils v0.26.1 h1:yg42FgMzRR6PVQ3M3qHz1s+Y6/P4HoJ3cBarXa3OVnU=
|
||||
github.com/go-openapi/swag/typeutils v0.26.1/go.mod h1:VfnV+oUtSP2vCSCn2aJgnr8OevUYemyIzzS1VOzS10o=
|
||||
github.com/go-openapi/swag/yamlutils v0.26.1 h1:0TSLK+lXs9vfIhAWzBeI/lOzEnIoot6WTCO1aAeWFTk=
|
||||
github.com/go-openapi/swag/yamlutils v0.26.1/go.mod h1:7W5b7PRX9MxwL7TjeG7H8HkyBGRsIDRObhyMWFgBI2M=
|
||||
github.com/go-openapi/testify/enable/yaml/v2 v2.5.1 h1:q9NtHwK4qHF7yZziBPvZyv7zWAIk8ok88Gh2mR6Jpc8=
|
||||
github.com/go-openapi/testify/enable/yaml/v2 v2.5.1/go.mod h1:JW0MXIotCYps/XsgJnG3a8Q7rE5xAiBwoOD5OfaIQBk=
|
||||
github.com/go-openapi/testify/v2 v2.5.1 h1:TMdhCaw8fUNraVSf3Omoob1dO/AzBfhtFAPW0an6sBo=
|
||||
github.com/go-openapi/testify/v2 v2.5.1/go.mod h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw=
|
||||
github.com/go-openapi/validate v0.25.2 h1:12NsfLAwGegqbGWr2CnvT65X/Q2USJipmJ9b7xDJZz0=
|
||||
github.com/go-openapi/validate v0.25.2/go.mod h1:Pgl1LpPPGFnZ+ys4/hTlDiRYQdI1ocKypgE+8Q8BLfY=
|
||||
github.com/go-openapi/validate v0.26.0 h1:dxWzQ3F+vb1SajqUxHjwb5T4mTpSHmdrtv5Bi7+ZNhw=
|
||||
github.com/go-openapi/validate v0.26.0/go.mod h1:b4o00uq7fJeJA+wWhVFCJpKTctzeFwzZImGGmHsl2JA=
|
||||
github.com/go-resty/resty/v2 v2.17.2 h1:FQW5oHYcIlkCNrMD2lloGScxcHJ0gkjshV3qcQAyHQk=
|
||||
github.com/go-resty/resty/v2 v2.17.2/go.mod h1:kCKZ3wWmwJaNc7S29BRtUhJwy7iqmn+2mLtQrOyQlVA=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
@@ -402,8 +399,8 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
|
||||
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
|
||||
github.com/jedib0t/go-pretty/v6 v6.7.10 h1:B/2qW2Bkv2L6n14PP8o1kx75kWzHOQ3YTluWzg9icac=
|
||||
github.com/jedib0t/go-pretty/v6 v6.7.10/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU=
|
||||
github.com/jedib0t/go-pretty/v6 v6.8.1 h1:0fkCNhjrX0zPpwkWaDYU5VMrygg41Tu197mWILIJoqQ=
|
||||
github.com/jedib0t/go-pretty/v6 v6.8.1/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU=
|
||||
github.com/jellydator/ttlcache/v3 v3.4.0 h1:YS4P125qQS0tNhtL6aeYkheEaB/m8HCqdMMP4mnWdTY=
|
||||
github.com/jellydator/ttlcache/v3 v3.4.0/go.mod h1:Hw9EgjymziQD3yGsQdf1FqFdpp7YjFMd4Srg5EJlgD4=
|
||||
github.com/jeremija/gosubmit v0.2.8 h1:mmSITBz9JxVtu8eqbN+zmmwX7Ij2RidQxhcwRVI4wqA=
|
||||
@@ -463,8 +460,8 @@ github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc
|
||||
github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
||||
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
||||
github.com/mattn/go-colorable v0.1.15 h1:+u9SLTRGnXv73cEsnsmoZBom+dMU88B2M0aDcWy0/jY=
|
||||
github.com/mattn/go-colorable v0.1.15/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
@@ -477,16 +474,16 @@ github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJ
|
||||
github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
||||
github.com/mattn/go-runewidth v0.0.23 h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw=
|
||||
github.com/mattn/go-runewidth v0.0.23/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
|
||||
github.com/mattn/go-runewidth v0.0.24 h1:cpokDiIn0MGnhdHwuWnJBITySJ20QyNGnY2kR/ay2DU=
|
||||
github.com/mattn/go-runewidth v0.0.24/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
|
||||
github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0=
|
||||
github.com/mattn/go-tty v0.0.8 h1:yxtc0Ye17/1ne/bjy993YUoyP8bJJFa9n5M9XTdwoZQ=
|
||||
github.com/mattn/go-tty v0.0.8/go.mod h1:f2i5ZOvXBU/tCABmLmOfzLz9azMo5wdAaElRNnJKr+k=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/mdlayher/netlink v1.11.2 h1:HKh2jqe+omdSWcQ88nrT7INE61B0NXfiSPFdgL4YbNI=
|
||||
github.com/mdlayher/netlink v1.11.2/go.mod h1:uT2Yc/QLaZubzDpZIBi9d4GoeLwtp3x1AMeqSRrK2sA=
|
||||
github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU=
|
||||
github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18=
|
||||
github.com/mdlayher/socket v0.6.1 h1:M7uj2NtuujUY4mYr1C57NmfNiRHbkKpnBxO856lsc3A=
|
||||
github.com/mdlayher/socket v0.6.1/go.mod h1:+/SGtqc9V+5dAuRgQsU0fGBI+oRDiW7O2Obx10OIWfg=
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
|
||||
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
|
||||
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
|
||||
@@ -543,14 +540,14 @@ github.com/openziti/channel/v4 v4.3.11 h1:ugezUhTEuSQnVFKUioN1gh6f+ZF4eBqx6mOrT5
|
||||
github.com/openziti/channel/v4 v4.3.11/go.mod h1:WZpOeuPliA7mJ3m7Pal8WdYu74eHMzkM/1Z9AMLmUAg=
|
||||
github.com/openziti/cobra-to-md v1.0.1 h1:WRinNoIRmwWUSJm+pSNXMjOrtU48oxXDZgeCYQfVXxE=
|
||||
github.com/openziti/cobra-to-md v1.0.1/go.mod h1:FjCpk/yzHF7/r28oSTNr5P57yN5VolpdAtS/g7KNi2c=
|
||||
github.com/openziti/edge-api v0.31.0 h1:QdaaPnKQj4B40q404+c8VZxMsoVpfGpfOhzs3LLCd/A=
|
||||
github.com/openziti/edge-api v0.31.0/go.mod h1:pDtCR6Mq0h5e8ulJhmuhPshEBa39hpQy+yTtLpUSBOs=
|
||||
github.com/openziti/foundation/v2 v2.0.92 h1:vmyZfY/Iw9y2p6jlDWNapK97vjPh+9enMQoly6XPEfo=
|
||||
github.com/openziti/foundation/v2 v2.0.92/go.mod h1:pb0yHDHb9pNrWOyvLWeDiHhYzJXlzJSz1RmQWBxhrFA=
|
||||
github.com/openziti/edge-api v0.31.1 h1:0AA2g/fXVkLV5ud89gzXFbcbQF6s9B8L15k+Fi7FhbI=
|
||||
github.com/openziti/edge-api v0.31.1/go.mod h1:wFExSB9pO7yEwVVuz4AatZeU++dgcjy9pkzeCFLXeno=
|
||||
github.com/openziti/foundation/v2 v2.0.95 h1:ZB6AeclGCfuI2l3c3PN7stKLp6Ck+P0wBuokY4pp7qo=
|
||||
github.com/openziti/foundation/v2 v2.0.95/go.mod h1:yhdRzmEzrHxqG8frg2fMmSpR5+iZI1tL/teeaAoWl7U=
|
||||
github.com/openziti/go-term-markdown v1.0.1 h1:9uzMpK4tav6OtvRxRt99WwPTzAzCh+Pj9zWU2FBp3Qg=
|
||||
github.com/openziti/go-term-markdown v1.0.1/go.mod h1:aIhR12zlROVqr7x51DtBALaQZQ3FofBuKDWqCfaz3oo=
|
||||
github.com/openziti/identity v1.0.130 h1:AU4KV4bbIuWeOZ3YZJDkZoY5AKPPoPVM80JqGshTzDs=
|
||||
github.com/openziti/identity v1.0.130/go.mod h1:vlz/ZqlHpzmt3jhGKqWSO6/YSu3sxXrQh6J72Z/JWdQ=
|
||||
github.com/openziti/identity v1.0.133 h1:rOFsV+sQVpy3FJqtShF7NYQxR+678FDQfFUS3ziGNeo=
|
||||
github.com/openziti/identity v1.0.133/go.mod h1:mZKgg92/dHxGytk8eRCSg2wmEFUp/ajy4KhoArP+g94=
|
||||
github.com/openziti/jwks v1.0.6 h1:PR+9OVaMO8oHEoVQmHqeUBExWwLWyODEGJQK2DXHaqE=
|
||||
github.com/openziti/jwks v1.0.6/go.mod h1:t4xxq8vlXGsPn29kiQVnZBBDDnEoOFqtJoHibkJunQQ=
|
||||
github.com/openziti/metrics v1.4.5 h1:p51HYSQyqaDafizPWluhYjU/rVfY52snER8/BHpfPrU=
|
||||
@@ -559,10 +556,10 @@ github.com/openziti/runzmd v1.0.90 h1:fasGlaq9xV+zohEGDC7Q0nOLA0n8Kpfccribc+VGQV
|
||||
github.com/openziti/runzmd v1.0.90/go.mod h1:ma3b7UdVYAC9ZCVUSjevUH/7yz9asI537XPsEh7+j14=
|
||||
github.com/openziti/sdk-golang v1.8.0 h1:Gt2QT8+bO/qq7eVU/HeMYlBvatddTJoiwE8HS+xwxVo=
|
||||
github.com/openziti/sdk-golang v1.8.0/go.mod h1:2nIjYyl7fBtomYRE6kZGkA3hU7Ene+tI7jqnA4yTWnk=
|
||||
github.com/openziti/secretstream v0.1.49 h1:qfyex2w4fGtTnvIGSiVXn8prQC2IWajQ4Y76r8x9CD0=
|
||||
github.com/openziti/secretstream v0.1.49/go.mod h1:wrPNC1z0rh4e3wFW4kYumU1Tx9YoXXc9Im2biyxb0P4=
|
||||
github.com/openziti/transport/v2 v2.0.215 h1:JkasjdBTa8kcVsLO1fn655GJWBrp6BsMElzSxN9dcEA=
|
||||
github.com/openziti/transport/v2 v2.0.215/go.mod h1:oPeiTC0UHndnK8mQDAwnqZiefoXA8GfRlvVSMSFRbLc=
|
||||
github.com/openziti/secretstream v0.1.51 h1:j/rMfIzBNqZD5a1EKV8J4Z5QeaoSK56s/zxvvB08eSA=
|
||||
github.com/openziti/secretstream v0.1.51/go.mod h1:YapZv2c/SyZyohn6Q0MJkl8SUuBbs9Q6XWSiboBc1jA=
|
||||
github.com/openziti/transport/v2 v2.0.216 h1:/2ALqUaeDzOfvZwzGSPNtWqMu8srgA1AERF3Nk94nDQ=
|
||||
github.com/openziti/transport/v2 v2.0.216/go.mod h1:Kh4dP6FtAUbiJvTmRcMJvLVCBmpQOpvUT1jMUCLDxQg=
|
||||
github.com/openziti/x509-claims v1.0.3 h1:HNdQ8Nf1agB3lBs1gahcO6zfkeS4S5xoQ2/PkY4HRX0=
|
||||
github.com/openziti/x509-claims v1.0.3/go.mod h1:Z0WIpBm6c4ecrpRKrou6Gk2wrLWxJO/+tuUwKh8VewE=
|
||||
github.com/openziti/xweb/v3 v3.0.4 h1:sKQJOJDQiWcTkuc37L7oc0Z0jQ5Poh2zaa5raiP0GLc=
|
||||
@@ -578,12 +575,12 @@ github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwp
|
||||
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
||||
github.com/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc=
|
||||
github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
||||
github.com/pion/dtls/v3 v3.1.2 h1:gqEdOUXLtCGW+afsBLO0LtDD8GnuBBjEy6HRtyofZTc=
|
||||
github.com/pion/dtls/v3 v3.1.2/go.mod h1:Hw/igcX4pdY69z1Hgv5x7wJFrUkdgHwAn/Q/uo7YHRo=
|
||||
github.com/pion/dtls/v3 v3.1.4 h1:QhvtMflMfu9Kf0RcDC5BJBle4caPskByrKQR6uuYqpY=
|
||||
github.com/pion/dtls/v3 v3.1.4/go.mod h1:cr/qotLISUw/9C1m83ZPNZtj9WnXkYLpfCptPqbkInc=
|
||||
github.com/pion/logging v0.2.4 h1:tTew+7cmQ+Mc1pTBLKH2puKsOvhm32dROumOZ655zB8=
|
||||
github.com/pion/logging v0.2.4/go.mod h1:DffhXTKYdNZU+KtJ5pyQDjvOAh/GsNSyv1lbkFbe3so=
|
||||
github.com/pion/transport/v4 v4.0.1 h1:sdROELU6BZ63Ab7FrOLn13M6YdJLY20wldXW2Cu2k8o=
|
||||
github.com/pion/transport/v4 v4.0.1/go.mod h1:nEuEA4AD5lPdcIegQDpVLgNoDGreqM/YqmEx3ovP4jM=
|
||||
github.com/pion/transport/v4 v4.0.2 h1:ifYlPqNwsy6aKQ9y8yzxXlHae5431ZrH2avkD/Rn6Tk=
|
||||
github.com/pion/transport/v4 v4.0.2/go.mod h1:06hFI+jCFcok2X2MekVufNZ/uzNZXivGBPfviSVcjgM=
|
||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
|
||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
@@ -591,11 +588,10 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
|
||||
github.com/pkg/term v1.2.0-beta.2 h1:L3y/h2jkuBVFdWiJvNfYfKmzcCnILw7mJWm2JQuMppw=
|
||||
github.com/pkg/term v1.2.0-beta.2/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
|
||||
github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk=
|
||||
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
|
||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU=
|
||||
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
|
||||
@@ -641,8 +637,8 @@ github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9t
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
|
||||
github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk=
|
||||
github.com/shirou/gopsutil/v4 v4.26.4 h1:B4SXVbcwTyrocPHEmWBC4uCYr4Xcu3MK1TXqbprAOWY=
|
||||
github.com/shirou/gopsutil/v4 v4.26.4/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ=
|
||||
github.com/shirou/gopsutil/v4 v4.26.5 h1:RPcBXkpz7kOj9PqGFQOlBPZHsyaPvPVQc098y9RmCNM=
|
||||
github.com/shirou/gopsutil/v4 v4.26.5/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ=
|
||||
github.com/shoenig/go-m1cpu v0.2.1 h1:yqRB4fvOge2+FyRXFkXqsyMoqPazv14Yyy+iyccT2E4=
|
||||
github.com/shoenig/go-m1cpu v0.2.1/go.mod h1:KkDOw6m3ZJQAPHbrzkZki4hnx+pDRR1Lo+ldA56wD5w=
|
||||
github.com/shoenig/test v1.7.0 h1:eWcHtTXa6QLnBvm0jgEabMRN/uJ4DMV3M8xUGgRkZmk=
|
||||
@@ -682,8 +678,8 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
|
||||
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4=
|
||||
github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0=
|
||||
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
|
||||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||
github.com/stretchr/testify v1.2.1/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
@@ -750,14 +746,14 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
||||
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
||||
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
||||
go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
|
||||
go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
|
||||
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
|
||||
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
|
||||
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
|
||||
go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
|
||||
go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
|
||||
go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
|
||||
go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
|
||||
go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
|
||||
go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
|
||||
go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
|
||||
go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58=
|
||||
go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0=
|
||||
go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
|
||||
go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
|
||||
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
|
||||
@@ -780,8 +776,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||
golang.org/x/crypto v0.52.0 h1:RMs7fP2rXdep0CftQlK8Uf+kibLm7qkCcradZWYz988=
|
||||
golang.org/x/crypto v0.52.0/go.mod h1:1QgfPxDqh0T2M/elOJtp9RvuR95kVjir0e6/BvEmGbc=
|
||||
golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto=
|
||||
golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
@@ -792,8 +788,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
|
||||
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||
golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a h1:+3jdDGGB8NGb1Zktc737jlt3/A5f6UlwSzmvqUuufxw=
|
||||
golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw=
|
||||
golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q=
|
||||
golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
@@ -820,8 +816,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
|
||||
golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
|
||||
golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ=
|
||||
golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@@ -866,8 +862,8 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||
golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8=
|
||||
golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww=
|
||||
golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o=
|
||||
golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
@@ -894,8 +890,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
|
||||
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||
golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM=
|
||||
golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@@ -965,13 +961,13 @@ golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.45.0 h1:dO4czNzziLiiXplLQgBCEpCvXQ3dnkn0SdaZSYdQ+FY=
|
||||
golang.org/x/sys v0.45.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw=
|
||||
golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
|
||||
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
|
||||
golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc=
|
||||
golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@@ -981,13 +977,13 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
|
||||
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
|
||||
golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE=
|
||||
golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
|
||||
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
|
||||
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
|
||||
golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
@@ -1163,8 +1159,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||
gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=
|
||||
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
||||
|
||||
@@ -12,6 +12,7 @@ import (
|
||||
"github.com/openziti/edge-api/rest_management_api_client/auth_policy"
|
||||
managementAuthenticator "github.com/openziti/edge-api/rest_management_api_client/authenticator"
|
||||
"github.com/openziti/edge-api/rest_management_api_client/certificate_authority"
|
||||
managementConfig "github.com/openziti/edge-api/rest_management_api_client/config"
|
||||
managementCurrentApiSession "github.com/openziti/edge-api/rest_management_api_client/current_api_session"
|
||||
managementCurrentIdentity "github.com/openziti/edge-api/rest_management_api_client/current_identity"
|
||||
managementEnrollment "github.com/openziti/edge-api/rest_management_api_client/enrollment"
|
||||
@@ -107,6 +108,43 @@ func (helper *ManagementHelperClient) CreateIdentity(name string, isAdmin bool,
|
||||
return resp.Payload.Data, nil
|
||||
}
|
||||
|
||||
// CreateConfigType creates a config type with a generated name and the given target.
|
||||
func (helper *ManagementHelperClient) CreateConfigType(target *string) (*rest_model.CreateLocation, error) {
|
||||
params := &managementConfig.CreateConfigTypeParams{
|
||||
ConfigType: &rest_model.ConfigTypeCreate{
|
||||
Name: ToPtr(eid.New()),
|
||||
Target: target,
|
||||
},
|
||||
}
|
||||
|
||||
resp, err := helper.API.Config.CreateConfigType(params, nil)
|
||||
|
||||
if err != nil {
|
||||
return nil, rest_util.WrapErr(err)
|
||||
}
|
||||
|
||||
return resp.Payload.Data, nil
|
||||
}
|
||||
|
||||
// CreateConfig creates a config with a generated name for the given config type.
|
||||
func (helper *ManagementHelperClient) CreateConfig(configTypeId string, data interface{}) (*rest_model.CreateLocation, error) {
|
||||
params := &managementConfig.CreateConfigParams{
|
||||
Config: &rest_model.ConfigCreate{
|
||||
Name: ToPtr(eid.New()),
|
||||
ConfigTypeID: &configTypeId,
|
||||
Data: data,
|
||||
},
|
||||
}
|
||||
|
||||
resp, err := helper.API.Config.CreateConfig(params, nil)
|
||||
|
||||
if err != nil {
|
||||
return nil, rest_util.WrapErr(err)
|
||||
}
|
||||
|
||||
return resp.Payload.Data, nil
|
||||
}
|
||||
|
||||
func (helper *ManagementHelperClient) GetIdentity(identityId string) (*rest_model.IdentityDetail, error) {
|
||||
getParams := &managementIdentity.DetailIdentityParams{
|
||||
ID: identityId,
|
||||
|
||||
@@ -25,6 +25,7 @@ import (
|
||||
"github.com/openziti/edge-api/rest_management_api_client/edge_router"
|
||||
"github.com/openziti/edge-api/rest_management_api_client/role_attributes"
|
||||
"github.com/openziti/edge-api/rest_model"
|
||||
"github.com/openziti/foundation/v2/errorz"
|
||||
"github.com/openziti/foundation/v2/stringz"
|
||||
"github.com/openziti/foundation/v2/util"
|
||||
"github.com/openziti/ziti/v2/common/eid"
|
||||
@@ -322,3 +323,205 @@ func Test_EdgeRouter(t *testing.T) {
|
||||
ctx.Req.NoError(err)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_EdgeRouterConfigs(t *testing.T) {
|
||||
ctx := NewTestContext(t)
|
||||
defer ctx.Teardown()
|
||||
ctx.StartServer()
|
||||
ctx.RequireAdminManagementApiLogin()
|
||||
|
||||
t.Run("create with router-target config should succeed", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
er := newTestEdgeRouter()
|
||||
er.configs = s(config.Id)
|
||||
er.id = ctx.AdminManagementSession.requireCreateEntity(er)
|
||||
ctx.AdminManagementSession.validateEntityWithQuery(er)
|
||||
})
|
||||
|
||||
t.Run("create with service-target config should fail", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("service")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
er := newTestEdgeRouter()
|
||||
er.configs = s(config.Id)
|
||||
resp := ctx.AdminManagementSession.createEntity(er)
|
||||
ctx.requireFieldError(resp.StatusCode(), resp.Body(), errorz.CouldNotValidateCode, "configs")
|
||||
})
|
||||
|
||||
t.Run("create with duplicate config types should fail", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config1 := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
config2 := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
er := newTestEdgeRouter()
|
||||
er.configs = s(config1.Id, config2.Id)
|
||||
resp := ctx.AdminManagementSession.createEntity(er)
|
||||
ctx.requireFieldError(resp.StatusCode(), resp.Body(), errorz.CouldNotValidateCode, "configs")
|
||||
})
|
||||
|
||||
t.Run("update should add configs", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config1 := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
ct2 := ctx.newConfigType()
|
||||
ct2.Target = util.Ptr("router")
|
||||
ct2.Id = ctx.AdminManagementSession.requireCreateEntity(ct2)
|
||||
config2 := ctx.AdminManagementSession.requireCreateNewConfig(ct2.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
er := newTestEdgeRouter()
|
||||
er.configs = s(config1.Id)
|
||||
er.id = ctx.AdminManagementSession.requireCreateEntity(er)
|
||||
ctx.AdminManagementSession.validateEntityWithQuery(er)
|
||||
|
||||
er.configs = s(config1.Id, config2.Id)
|
||||
ctx.AdminManagementSession.requireUpdateEntity(er)
|
||||
ctx.AdminManagementSession.validateUpdate(er)
|
||||
})
|
||||
|
||||
t.Run("patch should update configs", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
er := newTestEdgeRouter()
|
||||
er.id = ctx.AdminManagementSession.requireCreateEntity(er)
|
||||
|
||||
er.configs = s(config.Id)
|
||||
ctx.AdminManagementSession.requirePatchEntity(er, "configs")
|
||||
ctx.AdminManagementSession.validateUpdate(er)
|
||||
})
|
||||
|
||||
t.Run("update should clear configs", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
er := newTestEdgeRouter()
|
||||
er.configs = s(config.Id)
|
||||
er.id = ctx.AdminManagementSession.requireCreateEntity(er)
|
||||
ctx.AdminManagementSession.validateEntityWithQuery(er)
|
||||
|
||||
er.configs = nil
|
||||
ctx.AdminManagementSession.requireUpdateEntity(er)
|
||||
ctx.AdminManagementSession.validateUpdate(er)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_TransitRouterConfigs(t *testing.T) {
|
||||
ctx := NewTestContext(t)
|
||||
defer ctx.Teardown()
|
||||
ctx.StartServer()
|
||||
ctx.RequireAdminManagementApiLogin()
|
||||
|
||||
t.Run("create with router-target config should succeed", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
tr := newTestTransitRouter()
|
||||
tr.configs = s(config.Id)
|
||||
tr.id = ctx.AdminManagementSession.requireCreateEntity(tr)
|
||||
ctx.AdminManagementSession.validateEntityWithQuery(tr)
|
||||
})
|
||||
|
||||
t.Run("create with service-target config should fail", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("service")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
tr := newTestTransitRouter()
|
||||
tr.configs = s(config.Id)
|
||||
resp := ctx.AdminManagementSession.createEntity(tr)
|
||||
ctx.requireFieldError(resp.StatusCode(), resp.Body(), errorz.CouldNotValidateCode, "configs")
|
||||
})
|
||||
|
||||
t.Run("create with duplicate config types should fail", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config1 := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
config2 := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
tr := newTestTransitRouter()
|
||||
tr.configs = s(config1.Id, config2.Id)
|
||||
resp := ctx.AdminManagementSession.createEntity(tr)
|
||||
ctx.requireFieldError(resp.StatusCode(), resp.Body(), errorz.CouldNotValidateCode, "configs")
|
||||
})
|
||||
|
||||
t.Run("update should add configs", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config1 := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
ct2 := ctx.newConfigType()
|
||||
ct2.Target = util.Ptr("router")
|
||||
ct2.Id = ctx.AdminManagementSession.requireCreateEntity(ct2)
|
||||
config2 := ctx.AdminManagementSession.requireCreateNewConfig(ct2.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
tr := newTestTransitRouter()
|
||||
tr.configs = s(config1.Id)
|
||||
tr.id = ctx.AdminManagementSession.requireCreateEntity(tr)
|
||||
ctx.AdminManagementSession.validateEntityWithQuery(tr)
|
||||
|
||||
tr.configs = s(config1.Id, config2.Id)
|
||||
ctx.AdminManagementSession.requireUpdateEntity(tr)
|
||||
ctx.AdminManagementSession.validateUpdate(tr)
|
||||
})
|
||||
|
||||
t.Run("patch should update configs", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
tr := newTestTransitRouter()
|
||||
tr.id = ctx.AdminManagementSession.requireCreateEntity(tr)
|
||||
|
||||
tr.configs = s(config.Id)
|
||||
ctx.AdminManagementSession.requirePatchEntity(tr, "configs")
|
||||
ctx.AdminManagementSession.validateUpdate(tr)
|
||||
})
|
||||
|
||||
t.Run("update should clear configs", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
ct := ctx.newConfigType()
|
||||
ct.Target = util.Ptr("router")
|
||||
ct.Id = ctx.AdminManagementSession.requireCreateEntity(ct)
|
||||
config := ctx.AdminManagementSession.requireCreateNewConfig(ct.Id, map[string]interface{}{"key": "value"})
|
||||
|
||||
tr := newTestTransitRouter()
|
||||
tr.configs = s(config.Id)
|
||||
tr.id = ctx.AdminManagementSession.requireCreateEntity(tr)
|
||||
ctx.AdminManagementSession.validateEntityWithQuery(tr)
|
||||
|
||||
tr.configs = nil
|
||||
ctx.AdminManagementSession.requireUpdateEntity(tr)
|
||||
ctx.AdminManagementSession.validateUpdate(tr)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -381,6 +381,7 @@ type edgeRouter struct {
|
||||
name string
|
||||
isTunnelerEnabled bool
|
||||
roleAttributes []string
|
||||
configs []string
|
||||
ctrlChanListeners map[string][]string
|
||||
tags map[string]interface{}
|
||||
}
|
||||
@@ -402,6 +403,9 @@ func (entity *edgeRouter) toJson(_ bool, ctx *TestContext, _ ...string) string {
|
||||
ctx.setJsonValue(entityData, entity.name, "name")
|
||||
ctx.setJsonValue(entityData, entity.roleAttributes, "roleAttributes")
|
||||
ctx.setJsonValue(entityData, entity.isTunnelerEnabled, "isTunnelerEnabled")
|
||||
if len(entity.configs) > 0 {
|
||||
ctx.setJsonValue(entityData, entity.configs, "configs")
|
||||
}
|
||||
listeners := entity.ctrlChanListeners
|
||||
if listeners == nil {
|
||||
listeners = map[string][]string{}
|
||||
@@ -418,6 +422,8 @@ func (entity *edgeRouter) validate(ctx *TestContext, c *gabs.Container) {
|
||||
}
|
||||
ctx.pathEquals(c, entity.name, path("name"))
|
||||
ctx.pathEquals(c, entity.isTunnelerEnabled, path("isTunnelerEnabled"))
|
||||
sort.Strings(entity.configs)
|
||||
ctx.pathEqualsStringSlice(c, entity.configs, path("configs"))
|
||||
sort.Strings(entity.roleAttributes)
|
||||
ctx.pathEqualsStringSlice(c, entity.roleAttributes, path("roleAttributes"))
|
||||
ctx.pathEqualsCtrlChanListeners(c, entity.ctrlChanListeners, path("ctrlChanListeners"))
|
||||
@@ -716,6 +722,7 @@ func newTestTransitRouter() *transitRouter {
|
||||
type transitRouter struct {
|
||||
id string
|
||||
name string
|
||||
configs []string
|
||||
ctrlChanListeners map[string][]string
|
||||
tags map[string]interface{}
|
||||
}
|
||||
@@ -735,6 +742,9 @@ func (entity *transitRouter) getEntityType() string {
|
||||
func (entity *transitRouter) toJson(_ bool, ctx *TestContext, _ ...string) string {
|
||||
entityData := gabs.New()
|
||||
ctx.setJsonValue(entityData, entity.name, "name")
|
||||
if len(entity.configs) > 0 {
|
||||
ctx.setJsonValue(entityData, entity.configs, "configs")
|
||||
}
|
||||
listeners := entity.ctrlChanListeners
|
||||
if listeners == nil {
|
||||
listeners = map[string][]string{}
|
||||
@@ -750,6 +760,8 @@ func (entity *transitRouter) validate(ctx *TestContext, c *gabs.Container) {
|
||||
entity.tags = map[string]interface{}{}
|
||||
}
|
||||
ctx.pathEquals(c, entity.name, path("name"))
|
||||
sort.Strings(entity.configs)
|
||||
ctx.pathEqualsStringSlice(c, entity.configs, path("configs"))
|
||||
ctx.pathEqualsCtrlChanListeners(c, entity.ctrlChanListeners, path("ctrlChanListeners"))
|
||||
ctx.pathEquals(c, entity.tags, path("tags"))
|
||||
}
|
||||
|
||||
@@ -190,3 +190,168 @@ func Test_FabricRouters(t *testing.T) {
|
||||
ctx.Req.Empty(detailResp.Payload.Data.CtrlChanListeners)
|
||||
})
|
||||
}
|
||||
|
||||
func Test_FabricRouterConfigs(t *testing.T) {
|
||||
ctx := NewTestContext(t)
|
||||
defer ctx.Teardown()
|
||||
ctx.StartServer()
|
||||
|
||||
mgmtClient := ctx.NewEdgeManagementApi(nil)
|
||||
adminCreds := ctx.NewAdminCredentials()
|
||||
_, err := mgmtClient.Authenticate(adminCreds, nil)
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
t.Run("create with router-target config should succeed", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
configType, err := mgmtClient.CreateConfigType(util.Ptr("router"))
|
||||
ctx.Req.NoError(err)
|
||||
cfg, err := mgmtClient.CreateConfig(configType.ID, map[string]interface{}{})
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
createResp, err := mgmtClient.API.Router.CreateRouter(&router.CreateRouterParams{
|
||||
Router: &rest_model.RouterCreate{
|
||||
Name: util.Ptr(eid.New()),
|
||||
Configs: []string{cfg.ID},
|
||||
},
|
||||
}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
detailResp, err := mgmtClient.API.Router.DetailRouter(&router.DetailRouterParams{
|
||||
ID: createResp.Payload.Data.ID,
|
||||
}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
ctx.Req.Equal([]string{cfg.ID}, detailResp.Payload.Data.Configs)
|
||||
})
|
||||
|
||||
t.Run("create with service-target config should fail", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
configType, err := mgmtClient.CreateConfigType(util.Ptr("service"))
|
||||
ctx.Req.NoError(err)
|
||||
cfg, err := mgmtClient.CreateConfig(configType.ID, map[string]interface{}{})
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
_, err = mgmtClient.API.Router.CreateRouter(&router.CreateRouterParams{
|
||||
Router: &rest_model.RouterCreate{
|
||||
Name: util.Ptr(eid.New()),
|
||||
Configs: []string{cfg.ID},
|
||||
},
|
||||
}, nil)
|
||||
ctx.Req.Error(err)
|
||||
var badReq *router.CreateRouterBadRequest
|
||||
ctx.Req.ErrorAs(err, &badReq)
|
||||
})
|
||||
|
||||
t.Run("create with duplicate config types should fail", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
configType, err := mgmtClient.CreateConfigType(util.Ptr("router"))
|
||||
ctx.Req.NoError(err)
|
||||
cfg1, err := mgmtClient.CreateConfig(configType.ID, map[string]interface{}{})
|
||||
ctx.Req.NoError(err)
|
||||
cfg2, err := mgmtClient.CreateConfig(configType.ID, map[string]interface{}{})
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
_, err = mgmtClient.API.Router.CreateRouter(&router.CreateRouterParams{
|
||||
Router: &rest_model.RouterCreate{
|
||||
Name: util.Ptr(eid.New()),
|
||||
Configs: []string{cfg1.ID, cfg2.ID},
|
||||
},
|
||||
}, nil)
|
||||
ctx.Req.Error(err)
|
||||
var badReq *router.CreateRouterBadRequest
|
||||
ctx.Req.ErrorAs(err, &badReq)
|
||||
})
|
||||
|
||||
t.Run("update should add configs", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
configType1, err := mgmtClient.CreateConfigType(util.Ptr("router"))
|
||||
ctx.Req.NoError(err)
|
||||
cfg1, err := mgmtClient.CreateConfig(configType1.ID, map[string]interface{}{})
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
configType2, err := mgmtClient.CreateConfigType(util.Ptr("router"))
|
||||
ctx.Req.NoError(err)
|
||||
cfg2, err := mgmtClient.CreateConfig(configType2.ID, map[string]interface{}{})
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
name := eid.New()
|
||||
createResp, err := mgmtClient.API.Router.CreateRouter(&router.CreateRouterParams{
|
||||
Router: &rest_model.RouterCreate{
|
||||
Name: &name,
|
||||
Configs: []string{cfg1.ID},
|
||||
},
|
||||
}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
id := createResp.Payload.Data.ID
|
||||
|
||||
_, err = mgmtClient.API.Router.UpdateRouter(&router.UpdateRouterParams{
|
||||
ID: id,
|
||||
Router: &rest_model.RouterUpdate{
|
||||
Name: &name,
|
||||
Configs: []string{cfg1.ID, cfg2.ID},
|
||||
},
|
||||
}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
detailResp, err := mgmtClient.API.Router.DetailRouter(&router.DetailRouterParams{ID: id}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
ctx.Req.ElementsMatch([]string{cfg1.ID, cfg2.ID}, detailResp.Payload.Data.Configs)
|
||||
})
|
||||
|
||||
t.Run("patch should update configs", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
configType, err := mgmtClient.CreateConfigType(util.Ptr("router"))
|
||||
ctx.Req.NoError(err)
|
||||
cfg, err := mgmtClient.CreateConfig(configType.ID, map[string]interface{}{})
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
createResp, err := mgmtClient.API.Router.CreateRouter(&router.CreateRouterParams{
|
||||
Router: &rest_model.RouterCreate{
|
||||
Name: util.Ptr(eid.New()),
|
||||
},
|
||||
}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
id := createResp.Payload.Data.ID
|
||||
|
||||
_, err = mgmtClient.API.Router.PatchRouter(&router.PatchRouterParams{
|
||||
ID: id,
|
||||
Router: &rest_model.RouterPatch{
|
||||
Configs: []string{cfg.ID},
|
||||
},
|
||||
}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
detailResp, err := mgmtClient.API.Router.DetailRouter(&router.DetailRouterParams{ID: id}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
ctx.Req.Equal([]string{cfg.ID}, detailResp.Payload.Data.Configs)
|
||||
})
|
||||
|
||||
t.Run("update should clear configs", func(t *testing.T) {
|
||||
ctx.testContextChanged(t)
|
||||
configType, err := mgmtClient.CreateConfigType(util.Ptr("router"))
|
||||
ctx.Req.NoError(err)
|
||||
cfg, err := mgmtClient.CreateConfig(configType.ID, map[string]interface{}{})
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
name := eid.New()
|
||||
createResp, err := mgmtClient.API.Router.CreateRouter(&router.CreateRouterParams{
|
||||
Router: &rest_model.RouterCreate{
|
||||
Name: &name,
|
||||
Configs: []string{cfg.ID},
|
||||
},
|
||||
}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
id := createResp.Payload.Data.ID
|
||||
|
||||
_, err = mgmtClient.API.Router.UpdateRouter(&router.UpdateRouterParams{
|
||||
ID: id,
|
||||
Router: &rest_model.RouterUpdate{
|
||||
Name: &name,
|
||||
},
|
||||
}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
|
||||
detailResp, err := mgmtClient.API.Router.DetailRouter(&router.DetailRouterParams{ID: id}, nil)
|
||||
ctx.Req.NoError(err)
|
||||
ctx.Req.Empty(detailResp.Payload.Data.Configs)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -23,9 +23,10 @@ type TestLink struct {
|
||||
}
|
||||
|
||||
type LinkStateChecker struct {
|
||||
errorC chan error
|
||||
links map[string]*TestLink
|
||||
req *require.Assertions
|
||||
errorC chan error
|
||||
links map[string]*TestLink
|
||||
pendingFaults map[string]int
|
||||
req *require.Assertions
|
||||
sync.Mutex
|
||||
}
|
||||
|
||||
@@ -48,12 +49,19 @@ func (self *LinkStateChecker) HandleLink(msg *channel.Message, ch channel.Channe
|
||||
for _, link := range routerLinks.Links {
|
||||
testLink, ok := self.links[link.Id]
|
||||
if !ok {
|
||||
self.links[link.Id] = &TestLink{
|
||||
newLink := &TestLink{
|
||||
Id: link.Id,
|
||||
Src: ch.Id(),
|
||||
Dest: link.DestRouterId,
|
||||
Valid: true,
|
||||
}
|
||||
// Apply any faults that arrived before this link was registered.
|
||||
if pendingCount, hasPending := self.pendingFaults[link.Id]; hasPending {
|
||||
newLink.FaultCount = pendingCount
|
||||
newLink.Valid = false
|
||||
delete(self.pendingFaults, link.Id)
|
||||
}
|
||||
self.links[link.Id] = newLink
|
||||
} else {
|
||||
if testLink.Src != ch.Id() {
|
||||
self.reportError(fmt.Errorf("source router change for link %v => %v", testLink.Src, ch.Id()))
|
||||
@@ -61,7 +69,11 @@ func (self *LinkStateChecker) HandleLink(msg *channel.Message, ch channel.Channe
|
||||
if testLink.Dest != link.DestRouterId {
|
||||
self.reportError(fmt.Errorf("dest router change for link %v => %v", testLink.Dest, link.DestRouterId))
|
||||
}
|
||||
testLink.Valid = true
|
||||
// Don't resurrect a link that has been faulted. A router may re-report a
|
||||
// faulted link on reconnect before it's finished closing the duplicate.
|
||||
if testLink.FaultCount == 0 {
|
||||
testLink.Valid = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,9 +94,11 @@ func (self *LinkStateChecker) HandleFault(msg *channel.Message, _ channel.Channe
|
||||
if link, found := self.links[fault.Id]; found {
|
||||
link.FaultCount++
|
||||
link.Valid = false
|
||||
} else {
|
||||
// Fault arrived before the link was registered via HandleLink.
|
||||
// Track it so HandleLink can apply it when the link shows up.
|
||||
self.pendingFaults[fault.Id]++
|
||||
}
|
||||
// Faults for unknown link IDs are expected — the fault can arrive
|
||||
// before the link is registered via HandleLink due to message ordering.
|
||||
}
|
||||
}
|
||||
|
||||
@@ -139,9 +153,10 @@ func (self *LinkStateChecker) RequireOneActiveLink() *TestLink {
|
||||
|
||||
func NewLinkChecker(assertions *require.Assertions) *LinkStateChecker {
|
||||
checker := &LinkStateChecker{
|
||||
errorC: make(chan error, 4),
|
||||
links: map[string]*TestLink{},
|
||||
req: assertions,
|
||||
errorC: make(chan error, 4),
|
||||
links: map[string]*TestLink{},
|
||||
pendingFaults: map[string]int{},
|
||||
req: assertions,
|
||||
}
|
||||
return checker
|
||||
}
|
||||
|
||||
@@ -28,14 +28,15 @@ import (
|
||||
|
||||
type createEdgeRouterOptions struct {
|
||||
api.EntityOptions
|
||||
isTunnelerEnabled bool
|
||||
roleAttributes []string
|
||||
jwtOutputFile string
|
||||
appData map[string]string
|
||||
cost uint16
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
isTunnelerEnabled bool
|
||||
roleAttributes []string
|
||||
jwtOutputFile string
|
||||
appData map[string]string
|
||||
cost uint16
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
bootstrapCtrlChanListeners []string
|
||||
configs []string
|
||||
}
|
||||
|
||||
func NewCreateEdgeRouterCmd(out io.Writer, errOut io.Writer) *cobra.Command {
|
||||
@@ -67,6 +68,7 @@ func NewCreateEdgeRouterCmd(out io.Writer, errOut io.Writer) *cobra.Command {
|
||||
cmd.Flags().BoolVar(&options.noTraversal, "no-traversal", false, "Disallow traversal for this edge router. Default to allowed(false).")
|
||||
cmd.Flags().BoolVar(&options.disabled, "disabled", false, "Disabled routers can't connect to controllers")
|
||||
cmd.Flags().StringSliceVar(&options.bootstrapCtrlChanListeners, "bootstrap-ctrl-chan-listener", nil, "Bootstrap control channel listener address and optional groups. The router will update this automatically once connected. (e.g. 'tls:1.2.3.4:6262=group1,group2')")
|
||||
cmd.Flags().StringSliceVar(&options.configs, "config", nil, "Config IDs to associate with this edge router")
|
||||
|
||||
options.AddCommonFlags(cmd)
|
||||
|
||||
@@ -86,6 +88,9 @@ func runCreateEdgeRouter(o *createEdgeRouterOptions) error {
|
||||
if len(o.bootstrapCtrlChanListeners) > 0 {
|
||||
api.SetJSONValue(entityData, api.ParseCtrlChanListeners(o.bootstrapCtrlChanListeners), "ctrlChanListeners")
|
||||
}
|
||||
if len(o.configs) > 0 {
|
||||
api.SetJSONValue(entityData, o.configs, "configs")
|
||||
}
|
||||
o.SetTags(entityData)
|
||||
|
||||
result, err := CreateEntityOfType("edge-routers", entityData.String(), &o.Options)
|
||||
|
||||
@@ -29,11 +29,12 @@ import (
|
||||
|
||||
type createTransitRouterOptions struct {
|
||||
api.EntityOptions
|
||||
jwtOutputFile string
|
||||
cost uint16
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
jwtOutputFile string
|
||||
cost uint16
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
bootstrapCtrlChanListeners []string
|
||||
configs []string
|
||||
}
|
||||
|
||||
func newCreateTransitRouterCmd(out io.Writer, errOut io.Writer) *cobra.Command {
|
||||
@@ -60,6 +61,7 @@ func newCreateTransitRouterCmd(out io.Writer, errOut io.Writer) *cobra.Command {
|
||||
cmd.Flags().BoolVar(&options.noTraversal, "no-traversal", false, "Disallow traversal for this edge router. Default to allowed(false).")
|
||||
cmd.Flags().BoolVar(&options.disabled, "disabled", false, "Disabled routers can't connect to controllers")
|
||||
cmd.Flags().StringSliceVar(&options.bootstrapCtrlChanListeners, "bootstrap-ctrl-chan-listener", nil, "Bootstrap control channel listener address and optional groups. The router will update this automatically once connected. (e.g. 'tls:1.2.3.4:6262=group1,group2')")
|
||||
cmd.Flags().StringSliceVar(&options.configs, "config", nil, "Config IDs to associate with this transit router")
|
||||
|
||||
options.AddCommonFlags(cmd)
|
||||
|
||||
@@ -76,6 +78,9 @@ func runCreateTransitRouter(o *createTransitRouterOptions) error {
|
||||
if len(o.bootstrapCtrlChanListeners) > 0 {
|
||||
api.SetJSONValue(entityData, api.ParseCtrlChanListeners(o.bootstrapCtrlChanListeners), "ctrlChanListeners")
|
||||
}
|
||||
if len(o.configs) > 0 {
|
||||
api.SetJSONValue(entityData, o.configs, "configs")
|
||||
}
|
||||
o.SetTags(entityData)
|
||||
|
||||
result, err := CreateEntityOfType("transit-routers", entityData.String(), &o.Options)
|
||||
|
||||
@@ -30,15 +30,16 @@ import (
|
||||
|
||||
type updateEdgeRouterOptions struct {
|
||||
api.EntityOptions
|
||||
name string
|
||||
isTunnelerEnabled bool
|
||||
roleAttributes []string
|
||||
appData map[string]string
|
||||
usePut bool
|
||||
cost uint16
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
name string
|
||||
isTunnelerEnabled bool
|
||||
roleAttributes []string
|
||||
appData map[string]string
|
||||
usePut bool
|
||||
cost uint16
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
bootstrapCtrlChanListeners []string
|
||||
configs []string
|
||||
}
|
||||
|
||||
func newUpdateEdgeRouterCmd(out io.Writer, errOut io.Writer) *cobra.Command {
|
||||
@@ -72,6 +73,7 @@ func newUpdateEdgeRouterCmd(out io.Writer, errOut io.Writer) *cobra.Command {
|
||||
cmd.Flags().BoolVar(&options.noTraversal, "no-traversal", false, "Disallow traversal for this edge router. Default to allowed(false).")
|
||||
cmd.Flags().BoolVar(&options.disabled, "disabled", false, "Disabled routers can't connect to controllers")
|
||||
cmd.Flags().StringSliceVar(&options.bootstrapCtrlChanListeners, "bootstrap-ctrl-chan-listener", nil, "Bootstrap control channel listener address and optional groups. The router will update this automatically once connected. (e.g. 'tls:1.2.3.4:6262=group1,group2')")
|
||||
cmd.Flags().StringSliceVar(&options.configs, "config", nil, "Config IDs to associate with this edge router")
|
||||
|
||||
options.AddCommonFlags(cmd)
|
||||
|
||||
@@ -132,6 +134,11 @@ func runUpdateEdgeRouter(o *updateEdgeRouterOptions) error {
|
||||
change = true
|
||||
}
|
||||
|
||||
if o.Cmd.Flags().Changed("config") {
|
||||
api.SetJSONValue(entityData, o.configs, "configs")
|
||||
change = true
|
||||
}
|
||||
|
||||
if !change {
|
||||
return errors.New("no change specified. must specify at least one attribute to change")
|
||||
}
|
||||
|
||||
@@ -29,12 +29,13 @@ import (
|
||||
|
||||
type createRouterOptions struct {
|
||||
api.Options
|
||||
name string
|
||||
cost uint16
|
||||
tags map[string]string
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
name string
|
||||
cost uint16
|
||||
tags map[string]string
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
bootstrapCtrlChanListeners []string
|
||||
configs []string
|
||||
}
|
||||
|
||||
// newCreateRouterCmd creates the 'fabric create router' command for the given entity type
|
||||
@@ -62,6 +63,7 @@ func newCreateRouterCmd(p common.OptionsProvider) *cobra.Command {
|
||||
cmd.Flags().BoolVar(&options.noTraversal, "no-traversal", false, "Disallow traversal for this edge router. Default to allowed(false).")
|
||||
cmd.Flags().BoolVar(&options.disabled, "disabled", false, "Disabled routers can't connect to controllers")
|
||||
cmd.Flags().StringSliceVar(&options.bootstrapCtrlChanListeners, "bootstrap-ctrl-chan-listener", nil, "Bootstrap control channel listener address and optional groups. The router will update this automatically once connected. (e.g. 'tls:1.2.3.4:6262=group1,group2')")
|
||||
cmd.Flags().StringSliceVar(&options.configs, "config", nil, "Config IDs to associate with this router")
|
||||
|
||||
options.AddCommonFlags(cmd)
|
||||
|
||||
@@ -92,6 +94,9 @@ func (o *createRouterOptions) createRouter(_ *cobra.Command, args []string) erro
|
||||
if len(o.bootstrapCtrlChanListeners) > 0 {
|
||||
api.SetJSONValue(entityData, api.ParseCtrlChanListeners(o.bootstrapCtrlChanListeners), "ctrlChanListeners")
|
||||
}
|
||||
if len(o.configs) > 0 {
|
||||
api.SetJSONValue(entityData, o.configs, "configs")
|
||||
}
|
||||
result, err := createEntityOfType("routers", entityData.String(), &o.Options)
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
@@ -30,13 +30,14 @@ import (
|
||||
|
||||
type updateRouterOptions struct {
|
||||
api.Options
|
||||
name string
|
||||
fingerprint string
|
||||
cost uint16
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
name string
|
||||
fingerprint string
|
||||
cost uint16
|
||||
noTraversal bool
|
||||
disabled bool
|
||||
bootstrapCtrlChanListeners []string
|
||||
tags map[string]string
|
||||
configs []string
|
||||
tags map[string]string
|
||||
}
|
||||
|
||||
func newUpdateRouterCmd(p common.OptionsProvider) *cobra.Command {
|
||||
@@ -64,6 +65,7 @@ func newUpdateRouterCmd(p common.OptionsProvider) *cobra.Command {
|
||||
cmd.Flags().BoolVar(&options.noTraversal, "no-traversal", false, "Disallow traversal for this edge router. Default to allowed(false).")
|
||||
cmd.Flags().BoolVar(&options.disabled, "disabled", false, "Disabled routers can't connect to controllers")
|
||||
cmd.Flags().StringSliceVar(&options.bootstrapCtrlChanListeners, "bootstrap-ctrl-chan-listener", nil, "Bootstrap control channel listener address and optional groups. The router will update this automatically once connected. (e.g. 'tls:1.2.3.4:6262=group1,group2')")
|
||||
cmd.Flags().StringSliceVar(&options.configs, "config", nil, "Config IDs to associate with this router")
|
||||
cmd.Flags().StringToStringVar(&options.tags, "tags", nil, "Custom management tags")
|
||||
|
||||
options.AddCommonFlags(cmd)
|
||||
@@ -110,6 +112,11 @@ func runUpdateRouter(o *updateRouterOptions) error {
|
||||
change = true
|
||||
}
|
||||
|
||||
if o.Cmd.Flags().Changed("config") {
|
||||
api.SetJSONValue(entityData, o.configs, "configs")
|
||||
change = true
|
||||
}
|
||||
|
||||
if o.Cmd.Flags().Changed("tags") {
|
||||
api.SetJSONValue(entityData, o.tags, "tags")
|
||||
change = true
|
||||
|
||||
+51
-49
@@ -1,6 +1,6 @@
|
||||
module github.com/openziti/ziti/zititest
|
||||
|
||||
go 1.26.1
|
||||
go 1.26.4
|
||||
|
||||
// use parent project
|
||||
replace github.com/openziti/ziti/v2 => ../
|
||||
@@ -13,19 +13,19 @@ replace github.com/michaelquigley/pfxlog => github.com/michaelquigley/pfxlog v0.
|
||||
require (
|
||||
github.com/Jeffail/gabs v1.4.0
|
||||
github.com/Jeffail/gabs/v2 v2.7.0
|
||||
github.com/go-openapi/runtime v0.30.0
|
||||
github.com/go-openapi/runtime v0.32.3
|
||||
github.com/google/go-cmp v0.7.0
|
||||
github.com/google/uuid v1.6.0
|
||||
github.com/michaelquigley/pfxlog v1.0.0
|
||||
github.com/openziti/agent v1.0.33
|
||||
github.com/openziti/channel/v4 v4.3.11
|
||||
github.com/openziti/edge-api v0.31.0
|
||||
github.com/openziti/edge-api v0.31.1
|
||||
github.com/openziti/fablab v0.6.16
|
||||
github.com/openziti/foundation/v2 v2.0.91
|
||||
github.com/openziti/identity v1.0.129
|
||||
github.com/openziti/foundation/v2 v2.0.95
|
||||
github.com/openziti/identity v1.0.133
|
||||
github.com/openziti/metrics v1.4.5
|
||||
github.com/openziti/sdk-golang v1.7.0
|
||||
github.com/openziti/transport/v2 v2.0.215
|
||||
github.com/openziti/sdk-golang v1.8.0
|
||||
github.com/openziti/transport/v2 v2.0.216
|
||||
github.com/openziti/ziti/v2 v2.0.0
|
||||
github.com/orcaman/concurrent-map/v2 v2.0.1
|
||||
github.com/pkg/errors v0.9.1
|
||||
@@ -34,7 +34,7 @@ require (
|
||||
github.com/spf13/cobra v1.10.2
|
||||
github.com/stretchr/testify v1.11.1
|
||||
go.etcd.io/bbolt v1.4.3
|
||||
golang.org/x/net v0.54.0
|
||||
golang.org/x/net v0.56.0
|
||||
google.golang.org/protobuf v1.36.11
|
||||
gopkg.in/yaml.v2 v2.4.0
|
||||
gopkg.in/yaml.v3 v3.0.1
|
||||
@@ -42,10 +42,10 @@ require (
|
||||
|
||||
require (
|
||||
github.com/AppsFlyer/go-sundheit v0.6.0 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 // indirect
|
||||
github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0 // indirect
|
||||
github.com/Azure/go-amqp v1.6.0 // indirect
|
||||
github.com/Azure/go-amqp v1.7.0 // indirect
|
||||
github.com/MakeNowJust/heredoc v1.0.0 // indirect
|
||||
github.com/MichaelMure/go-term-text v0.3.1 // indirect
|
||||
github.com/alecthomas/chroma v0.10.0 // indirect
|
||||
@@ -94,6 +94,7 @@ require (
|
||||
github.com/dineshappavoo/basex v0.0.0-20170425072625-481a6f6dc663 // indirect
|
||||
github.com/dlclark/regexp2 v1.12.0 // indirect
|
||||
github.com/docker/go-units v0.5.0 // indirect
|
||||
github.com/ebitengine/purego v0.10.1 // indirect
|
||||
github.com/ef-ds/deque v1.0.4 // indirect
|
||||
github.com/emirpasic/gods v1.18.1 // indirect
|
||||
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
|
||||
@@ -103,32 +104,32 @@ require (
|
||||
github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa // indirect
|
||||
github.com/gaissmai/extnetip v1.3.1 // indirect
|
||||
github.com/go-acme/lego/v4 v4.35.2 // indirect
|
||||
github.com/go-chi/chi/v5 v5.2.5 // indirect
|
||||
github.com/go-chi/chi/v5 v5.3.0 // indirect
|
||||
github.com/go-jose/go-jose/v4 v4.1.4 // indirect
|
||||
github.com/go-logr/logr v1.4.3 // indirect
|
||||
github.com/go-logr/stdr v1.2.2 // indirect
|
||||
github.com/go-ole/go-ole v1.3.0 // indirect
|
||||
github.com/go-openapi/analysis v0.25.0 // indirect
|
||||
github.com/go-openapi/errors v0.22.7 // indirect
|
||||
github.com/go-openapi/analysis v0.25.2 // indirect
|
||||
github.com/go-openapi/errors v0.22.8 // indirect
|
||||
github.com/go-openapi/jsonpointer v0.23.1 // indirect
|
||||
github.com/go-openapi/jsonreference v0.21.5 // indirect
|
||||
github.com/go-openapi/loads v0.23.3 // indirect
|
||||
github.com/go-openapi/runtime/server-middleware v0.30.0 // indirect
|
||||
github.com/go-openapi/spec v0.22.4 // indirect
|
||||
github.com/go-openapi/strfmt v0.26.2 // indirect
|
||||
github.com/go-openapi/swag v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/cmdutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/conv v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/fileutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/jsonname v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/jsonutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/loading v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/mangling v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/netutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/stringutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/typeutils v0.26.0 // indirect
|
||||
github.com/go-openapi/swag/yamlutils v0.26.0 // indirect
|
||||
github.com/go-openapi/validate v0.25.2 // indirect
|
||||
github.com/go-openapi/jsonreference v0.21.6 // indirect
|
||||
github.com/go-openapi/loads v0.24.0 // indirect
|
||||
github.com/go-openapi/runtime/server-middleware v0.32.3 // indirect
|
||||
github.com/go-openapi/spec v0.22.5 // indirect
|
||||
github.com/go-openapi/strfmt v0.26.3 // indirect
|
||||
github.com/go-openapi/swag v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/cmdutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/conv v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/fileutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/jsonname v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/jsonutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/loading v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/mangling v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/netutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/stringutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/typeutils v0.26.1 // indirect
|
||||
github.com/go-openapi/swag/yamlutils v0.26.1 // indirect
|
||||
github.com/go-openapi/validate v0.26.0 // indirect
|
||||
github.com/go-resty/resty/v2 v2.17.2 // indirect
|
||||
github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
|
||||
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
|
||||
@@ -149,7 +150,7 @@ require (
|
||||
github.com/influxdata/influxdb-client-go/v2 v2.14.0 // indirect
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d // indirect
|
||||
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 // indirect
|
||||
github.com/jedib0t/go-pretty/v6 v6.7.10 // indirect
|
||||
github.com/jedib0t/go-pretty/v6 v6.8.1 // indirect
|
||||
github.com/jellydator/ttlcache/v3 v3.4.0 // indirect
|
||||
github.com/jessevdk/go-flags v1.6.1 // indirect
|
||||
github.com/jinzhu/copier v0.4.0 // indirect
|
||||
@@ -161,13 +162,13 @@ require (
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0 // indirect
|
||||
github.com/lucsky/cuid v1.2.1 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20260330125221-c963978e514e // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-colorable v0.1.15 // indirect
|
||||
github.com/mattn/go-isatty v0.0.22 // indirect
|
||||
github.com/mattn/go-localereader v0.0.1 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.23 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.24 // indirect
|
||||
github.com/mattn/go-tty v0.0.8 // indirect
|
||||
github.com/mdlayher/netlink v1.11.1 // indirect
|
||||
github.com/mdlayher/socket v0.6.0 // indirect
|
||||
github.com/mdlayher/netlink v1.11.2 // indirect
|
||||
github.com/mdlayher/socket v0.6.1 // indirect
|
||||
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect
|
||||
github.com/michaelquigley/figlet v0.1.0 // indirect
|
||||
github.com/miekg/dns v1.1.72 // indirect
|
||||
@@ -188,14 +189,14 @@ require (
|
||||
github.com/openziti/go-term-markdown v1.0.1 // indirect
|
||||
github.com/openziti/jwks v1.0.6 // indirect
|
||||
github.com/openziti/runzmd v1.0.90 // indirect
|
||||
github.com/openziti/secretstream v0.1.49 // indirect
|
||||
github.com/openziti/secretstream v0.1.51 // indirect
|
||||
github.com/openziti/x509-claims v1.0.3 // indirect
|
||||
github.com/openziti/xweb/v3 v3.0.4 // indirect
|
||||
github.com/parallaxsecond/parsec-client-go v0.0.0-20221025095442-f0a77d263cf9 // indirect
|
||||
github.com/pelletier/go-toml/v2 v2.3.1 // indirect
|
||||
github.com/pion/dtls/v3 v3.1.2 // indirect
|
||||
github.com/pion/dtls/v3 v3.1.4 // indirect
|
||||
github.com/pion/logging v0.2.4 // indirect
|
||||
github.com/pion/transport/v4 v4.0.1 // indirect
|
||||
github.com/pion/transport/v4 v4.0.2 // indirect
|
||||
github.com/pkg/sftp v1.13.10 // indirect
|
||||
github.com/pkg/term v1.2.0-beta.2 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
|
||||
@@ -208,6 +209,7 @@ require (
|
||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||
github.com/sagikazarmark/locafero v0.12.0 // indirect
|
||||
github.com/shirou/gopsutil/v3 v3.24.5 // indirect
|
||||
github.com/shirou/gopsutil/v4 v4.26.5 // indirect
|
||||
github.com/shoenig/go-m1cpu v0.2.1 // indirect
|
||||
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e // indirect
|
||||
github.com/speps/go-hashids v2.0.0+incompatible // indirect
|
||||
@@ -231,20 +233,20 @@ require (
|
||||
github.com/zitadel/schema v1.3.2 // indirect
|
||||
go.mozilla.org/pkcs7 v0.9.0 // indirect
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
|
||||
go.opentelemetry.io/otel v1.43.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.43.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.43.0 // indirect
|
||||
go.opentelemetry.io/otel v1.44.0 // indirect
|
||||
go.opentelemetry.io/otel/metric v1.44.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.44.0 // indirect
|
||||
go.uber.org/atomic v1.11.0 // indirect
|
||||
go.yaml.in/yaml/v3 v3.0.4 // indirect
|
||||
go4.org v0.0.0-20260112195520-a5071408f32f // indirect
|
||||
golang.org/x/crypto v0.51.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a // indirect
|
||||
golang.org/x/mod v0.36.0 // indirect
|
||||
golang.org/x/crypto v0.53.0 // indirect
|
||||
golang.org/x/exp v0.0.0-20260603202125-055de637280b // indirect
|
||||
golang.org/x/mod v0.37.0 // indirect
|
||||
golang.org/x/oauth2 v0.36.0 // indirect
|
||||
golang.org/x/sync v0.20.0 // indirect
|
||||
golang.org/x/sys v0.44.0 // indirect
|
||||
golang.org/x/term v0.43.0 // indirect
|
||||
golang.org/x/text v0.37.0 // indirect
|
||||
golang.org/x/sync v0.21.0 // indirect
|
||||
golang.org/x/sys v0.46.0 // indirect
|
||||
golang.org/x/term v0.44.0 // indirect
|
||||
golang.org/x/text v0.38.0 // indirect
|
||||
golang.org/x/tools v0.45.0 // indirect
|
||||
gopkg.in/AlecAivazis/survey.v1 v1.8.8 // indirect
|
||||
gopkg.in/resty.v1 v1.12.0 // indirect
|
||||
|
||||
+112
-108
@@ -41,16 +41,16 @@ github.com/AlecAivazis/survey/v2 v2.0.5/go.mod h1:WYBhg6f0y/fNYUuesWQc0PKbJcEliG
|
||||
github.com/AppsFlyer/go-sundheit v0.6.0 h1:d2hBvCjBSb2lUsEWGfPigr4MCOt04sxB+Rppl0yUMSk=
|
||||
github.com/AppsFlyer/go-sundheit v0.6.0/go.mod h1:LDdBHD6tQBtmHsdW+i1GwdTt6Wqc0qazf5ZEJVTbTME=
|
||||
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1 h1:jHb/wfvRikGdxMXYV3QG/SzUOPYN9KEUUuC0Yd0/vC0=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.21.1/go.mod h1:pzBXCYn05zvYIrwLgtK8Ap8QcjRg+0i76tMQdWN6wOk=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0 h1:aokoqcHvaGjiM3VpjKDfMMnF/8epJ+Q1HLJ7CudztqE=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.22.0/go.mod h1:/WYEx9pcM9Y+Dd/APJaNlSvVSvzl54rrMdZT5+Oi2LM=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1/go.mod h1:IYus9qsFobWIc2YVwe/WPjcnyCkPKtnHAqUYeebc8z0=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0 h1:fhqpLE3UEXi9lPaBRpQ6XuRW0nU7hgg4zlmZZa+a9q4=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/internal v1.12.0/go.mod h1:7dCRMLwisfRH3dBupKeNCioWYUZ4SS09Z14H+7i8ZoY=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0 h1:kE5kpeiSqu4jcCQ/sWuyggMXJ/pT6oQ99+8hwPmyeJ0=
|
||||
github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.10.0/go.mod h1:IAN3Z0DMtehoxoQQnfqg1891z1P7GNoDryKtFcAyMBI=
|
||||
github.com/Azure/go-amqp v1.6.0 h1:pMnBstxSd2JnvTopR/L9MUdQi4e5Mp9FscP4kZ0rZ8M=
|
||||
github.com/Azure/go-amqp v1.6.0/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE=
|
||||
github.com/Azure/go-amqp v1.7.0 h1:9VlH/LEWr386XWWJRNON0eslFqSClYBXP4HewvIqkDQ=
|
||||
github.com/Azure/go-amqp v1.7.0/go.mod h1:pCJaHsvRlmmFUpxyQbh2qPkUFqYJeRBTqJSHKJadvPg=
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0 h1:XRzhVemXdgvJqCH0sFfrBUTnUJSBrBf7++ypk+twtRs=
|
||||
github.com/AzureAD/microsoft-authentication-library-for-go v1.6.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
@@ -183,8 +183,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsr
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||
github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw=
|
||||
github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||
github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s=
|
||||
github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||
@@ -198,6 +198,8 @@ github.com/dlclark/regexp2 v1.12.0 h1:0j4c5qQmnC6XOWNjP3PIXURXN2gWx76rd3KvgdPkCz
|
||||
github.com/dlclark/regexp2 v1.12.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
|
||||
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
|
||||
github.com/ebitengine/purego v0.10.1 h1:dewVBCBT2GaMu1SrNTYxQhgQBethzfhiwvZiLGP/qyY=
|
||||
github.com/ebitengine/purego v0.10.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||
github.com/ef-ds/deque v1.0.4 h1:iFAZNmveMT9WERAkqLJ+oaABF9AcVQ5AjXem/hroniI=
|
||||
github.com/ef-ds/deque v1.0.4/go.mod h1:gXDnTC3yqvBcHbq2lcExjtAcVrOnJCbMcZXmuj8Z4tg=
|
||||
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
|
||||
@@ -232,8 +234,8 @@ github.com/gaissmai/extnetip v1.3.1/go.mod h1:PepswGWH0GJ4XSdiY7bY2EaEPpCQs7OaYc
|
||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||
github.com/go-acme/lego/v4 v4.35.2 h1:uVQg+KC/yj9R2g7Q9W5wDqhvQvxV5SMu5eqFVoN5xZU=
|
||||
github.com/go-acme/lego/v4 v4.35.2/go.mod h1:pX2jN5n8OphMGY1IaMjYm5DAEzguBaKRt8AvJAgJXpc=
|
||||
github.com/go-chi/chi/v5 v5.2.5 h1:Eg4myHZBjyvJmAFjFvWgrqDTXFyOzjj7YIm3L3mu6Ug=
|
||||
github.com/go-chi/chi/v5 v5.2.5/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0=
|
||||
github.com/go-chi/chi/v5 v5.3.0 h1:halUjDxhshgXHMrao5bB8eNBXo/rnzwr8m5m36glehM=
|
||||
github.com/go-chi/chi/v5 v5.3.0/go.mod h1:R+tYY2hNuVUUjxoPtqUdgBqevM9s9njzkTLutVsOCto=
|
||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
@@ -253,56 +255,56 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre
|
||||
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
|
||||
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
|
||||
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
|
||||
github.com/go-openapi/analysis v0.25.0 h1:EnjAq1yO8wEO9HbPmY8vLPEIkdZuuFhCAKBPvCB7bCs=
|
||||
github.com/go-openapi/analysis v0.25.0/go.mod h1:5WFTRE43WLkPG9r9OtlMfqkkvUTYLVVCIxLlEpyF8kE=
|
||||
github.com/go-openapi/errors v0.22.7 h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA=
|
||||
github.com/go-openapi/errors v0.22.7/go.mod h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w=
|
||||
github.com/go-openapi/analysis v0.25.2 h1:I0vy4n3alz+DHTiN1PRhCb7QZxkK6g5YmswZKv2TKuw=
|
||||
github.com/go-openapi/analysis v0.25.2/go.mod h1:Uhs1t/2XR10EnwONYILGEzw8gcfGIG5Xk5K2AxnhqDo=
|
||||
github.com/go-openapi/errors v0.22.8 h1:oP7sW7TWc3wFFjrzzj0nI83H2qMBkNjNfSd+XRejk/I=
|
||||
github.com/go-openapi/errors v0.22.8/go.mod h1:BuUoHcYrU6E7V9gfj1I5wLQqgtIHnup/alXZ8KdgQ0w=
|
||||
github.com/go-openapi/jsonpointer v0.23.1 h1:1HBACs7XIwR2RcmItfdSFlALhGbe6S92p0ry4d1GWg4=
|
||||
github.com/go-openapi/jsonpointer v0.23.1/go.mod h1:iWRmZTrGn7XwYhtPt/fvdSFj1OfNBngqRT2UG3BxSqY=
|
||||
github.com/go-openapi/jsonreference v0.21.5 h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE=
|
||||
github.com/go-openapi/jsonreference v0.21.5/go.mod h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw=
|
||||
github.com/go-openapi/loads v0.23.3 h1:g5Xap1JfwKkUnZdn+S0L3SzBDpcTIYzZ5Qaag0YDkKQ=
|
||||
github.com/go-openapi/loads v0.23.3/go.mod h1:NOH07zLajXo8y55hom0omlHWDVVvCwBM/S+csCK8LqA=
|
||||
github.com/go-openapi/runtime v0.30.0 h1:1llnyZcqkjm77VhM4FPO1O1rt2SzLZIRPkZAY4wv4mw=
|
||||
github.com/go-openapi/runtime v0.30.0/go.mod h1:QtJGUq+1S0VWPP+LQldH6o4tcqGsjzTVjn/wIWEn9o4=
|
||||
github.com/go-openapi/runtime/server-middleware v0.30.0 h1:8rPoJ/xv7JL8BsovaqboKETlpWBArVh8n+0L/GyePog=
|
||||
github.com/go-openapi/runtime/server-middleware v0.30.0/go.mod h1:OYNT/TxNvB/VK5oe4htM2jDTwlEXuejVJmu0DVZfAMs=
|
||||
github.com/go-openapi/spec v0.22.4 h1:4pxGjipMKu0FzFiu/DPwN3CTBRlVM2yLf/YTWorYfDQ=
|
||||
github.com/go-openapi/spec v0.22.4/go.mod h1:WQ6Ai0VPWMZgMT4XySjlRIE6GP1bGQOtEThn3gcWLtQ=
|
||||
github.com/go-openapi/strfmt v0.26.2 h1:ysjheCh4i1rmFEo2LanhELDNucNzfWTZhUDKgWWPaFM=
|
||||
github.com/go-openapi/strfmt v0.26.2/go.mod h1:fXh1e449cyUn2NYuz+wb3wARBUdMl7qPEZwX00nqivY=
|
||||
github.com/go-openapi/swag v0.26.0 h1:GVDXCmfvhfu1BxiHo8/FA+BbKmhecHnG3varjON5/RI=
|
||||
github.com/go-openapi/swag v0.26.0/go.mod h1:82g3193sZJRbocs7bNCqGfIgq8pkuwVwCfhKIRlEQF0=
|
||||
github.com/go-openapi/swag/cmdutils v0.26.0 h1:iowihOcvq7y4egO8cOq0dmfohz6wfeQ63U1EnuhO2TU=
|
||||
github.com/go-openapi/swag/cmdutils v0.26.0/go.mod h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM=
|
||||
github.com/go-openapi/swag/conv v0.26.0 h1:5yGGsPYI1ZCva93U0AoKi/iZrNhaJEjr324YVsiD89I=
|
||||
github.com/go-openapi/swag/conv v0.26.0/go.mod h1:tpAmIL7X58VPnHHiSO4uE3jBeRamGsFsfdDeDtb5ECE=
|
||||
github.com/go-openapi/swag/fileutils v0.26.0 h1:WJoPRvsA7QRiiWluowkLJa9jaYR7FCuxmDvnCgaRRxU=
|
||||
github.com/go-openapi/swag/fileutils v0.26.0/go.mod h1:0WDJ7lp67eNjPMO50wAWYlKvhOb6CQ37rzR7wrgI8Tc=
|
||||
github.com/go-openapi/swag/jsonname v0.26.0 h1:gV1NFX9M8avo0YSpmWogqfQISigCmpaiNci8cGECU5w=
|
||||
github.com/go-openapi/swag/jsonname v0.26.0/go.mod h1:urBBR8bZNoDYGr653ynhIx+gTeIz0ARZxHkAPktJK2M=
|
||||
github.com/go-openapi/swag/jsonutils v0.26.0 h1:FawFML2iAXsPqmERscuMPIHmFsoP1tOqWkxBaKNMsnA=
|
||||
github.com/go-openapi/swag/jsonutils v0.26.0/go.mod h1:2VmA0CJlyFqgawOaPI9psnjFDqzyivIqLYN34t9p91E=
|
||||
github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0 h1:apqeINu/ICHouqiRZbyFvuDge5jCmmLTqGQ9V95EaOM=
|
||||
github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0/go.mod h1:AyM6QT8uz5IdKxk5akv0y6u4QvcL9GWERt0Jx/F/R8Y=
|
||||
github.com/go-openapi/swag/loading v0.26.0 h1:Apg6zaKhCJurpJer0DCxq99qwmhFddBhaMX7kilDcko=
|
||||
github.com/go-openapi/swag/loading v0.26.0/go.mod h1:dBxQ/6V2uBaAQdevN18VELE6xSpJWZxLX4txe12JwDg=
|
||||
github.com/go-openapi/swag/mangling v0.26.0 h1:Du2YC4YLA/Y5m/YKQd7AnY5qq0wRKSFZTTt8ktFaXcQ=
|
||||
github.com/go-openapi/swag/mangling v0.26.0/go.mod h1:jifS7W9vbg+pw63bT+GI53otluMQL3CeemuyCHKwVx0=
|
||||
github.com/go-openapi/swag/netutils v0.26.0 h1:CmZp+ZT7HrmFwrC3GdGsXBq2+42T1bjKBapcqVpIs3c=
|
||||
github.com/go-openapi/swag/netutils v0.26.0/go.mod h1:5iK+Ok3ZohWWex1C50BFTPexi03UaPwjW4Oj8kgrpwo=
|
||||
github.com/go-openapi/swag/stringutils v0.26.0 h1:qZQngLxs5s7SLijc3N2ZO+fUq2o8LjuWAASSrJuh+xg=
|
||||
github.com/go-openapi/swag/stringutils v0.26.0/go.mod h1:sWn5uY+QIIspwPhvgnqJsH8xqFT2ZbYcvbcFanRyhFE=
|
||||
github.com/go-openapi/swag/typeutils v0.26.0 h1:2kdEwdiNWy+JJdOvu5MA2IIg2SylWAFuuyQIKYybfq4=
|
||||
github.com/go-openapi/swag/typeutils v0.26.0/go.mod h1:oovDuIUvTrEHVMqWilQzKzV4YlSKgyZmFh7AlfABNVE=
|
||||
github.com/go-openapi/swag/yamlutils v0.26.0 h1:H7O8l/8NJJQ/oiReEN+oMpnGMyt8G0hl460nRZxhLMQ=
|
||||
github.com/go-openapi/swag/yamlutils v0.26.0/go.mod h1:1evKEGAtP37Pkwcc7EWMF0hedX0/x3Rkvei2wtG/TbU=
|
||||
github.com/go-openapi/testify/enable/yaml/v2 v2.5.0 h1:3hZD1fwydvCx/cc1R2uYNQirHqf2s6lqpKV3FcNTURA=
|
||||
github.com/go-openapi/testify/enable/yaml/v2 v2.5.0/go.mod h1:TvDZKBH7ZbMaF3EqH2AwTvNQCmzyZq8K1agRjf1B+Nk=
|
||||
github.com/go-openapi/testify/v2 v2.5.0 h1:UOCr63aAsMIDydZbZGqo5Ev01D4eydItRbekDuZMJLw=
|
||||
github.com/go-openapi/testify/v2 v2.5.0/go.mod h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw=
|
||||
github.com/go-openapi/validate v0.25.2 h1:12NsfLAwGegqbGWr2CnvT65X/Q2USJipmJ9b7xDJZz0=
|
||||
github.com/go-openapi/validate v0.25.2/go.mod h1:Pgl1LpPPGFnZ+ys4/hTlDiRYQdI1ocKypgE+8Q8BLfY=
|
||||
github.com/go-openapi/jsonreference v0.21.6 h1:NZ5nGfnaM1n4I43Xjm1e5/M2GjOwQwndQz22uhxwD+Y=
|
||||
github.com/go-openapi/jsonreference v0.21.6/go.mod h1:xzbgtQ3ZbWxvET3AxdzCJlJt6vkovbf+IfSPJjD0tUY=
|
||||
github.com/go-openapi/loads v0.24.0 h1:4LLorXRPTzIN9V6ngMUZbAscsBOUBk3Oa8cClu/bFrQ=
|
||||
github.com/go-openapi/loads v0.24.0/go.mod h1:xQMgX+hw5xRAhGrcDXxeMw78IFqUpIzhleu3HqPhyF4=
|
||||
github.com/go-openapi/runtime v0.32.3 h1:J7Ycy5DJmhhP1By3NifhRUjnkXTrk21qbeqSULjwX8U=
|
||||
github.com/go-openapi/runtime v0.32.3/go.mod h1:/WTQi0fa5DiGnnCXQKsTkSm15OzJp8Uz3H2t+67TBr4=
|
||||
github.com/go-openapi/runtime/server-middleware v0.32.3 h1:Y/6h9ix9NCoMG04XazRwX6eA3alh4+JZ6qXdar5yd24=
|
||||
github.com/go-openapi/runtime/server-middleware v0.32.3/go.mod h1:fYPep4GdTwg/XqZUjR40uIM/8C12Ba5M+MrGCiwpTHo=
|
||||
github.com/go-openapi/spec v0.22.5 h1:KhO7RBlKQfonUWX2WzQCoLIXVA6AcNqDGZ3a1Dutdlo=
|
||||
github.com/go-openapi/spec v0.22.5/go.mod h1:vxpOtMya5TXtENXKE5bKqv5NjocVhyhxHrlZfvKnZ74=
|
||||
github.com/go-openapi/strfmt v0.26.3 h1:rzmslHarJgBbf2qfGge+X3htclQfmXqBZMm0Too0HhU=
|
||||
github.com/go-openapi/strfmt v0.26.3/go.mod h1:a5nsUw0oRpQzZeOwx8bi6cKbzFZslpbCKt1LEot+KnQ=
|
||||
github.com/go-openapi/swag v0.26.1 h1:l5sVEyVpwj+DDYeZyo7wQI/Ebn/mKYIyGB/pFwAfGoQ=
|
||||
github.com/go-openapi/swag v0.26.1/go.mod h1:yNY38BbIVthxbkDtq1UHBCGasBqjakW3lCR6ANzdBEw=
|
||||
github.com/go-openapi/swag/cmdutils v0.26.1 h1:f2iE1ijYaJ3nuu5PaEMx3zpEhzhZFgivCJObWEObLIQ=
|
||||
github.com/go-openapi/swag/cmdutils v0.26.1/go.mod h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM=
|
||||
github.com/go-openapi/swag/conv v0.26.1 h1:slr5FVkg9Wc3Y5zcwenD8Sd/PQ94b2I/QJI7N7KTBpg=
|
||||
github.com/go-openapi/swag/conv v0.26.1/go.mod h1:mvQXgPptZk9GTrFgGwWvT4q+dN+zQej9JfmGwnipz1A=
|
||||
github.com/go-openapi/swag/fileutils v0.26.1 h1:K1XCM2CGhfNsc6YDt6v7Q5+1e59rftYWdcu/isZhvFw=
|
||||
github.com/go-openapi/swag/fileutils v0.26.1/go.mod h1:mYUgxQAKX4ShS3qvvySx+/9yrlUnDhjiD1CalaQl8lQ=
|
||||
github.com/go-openapi/swag/jsonname v0.26.1 h1:VReupaV6WxlAsCn0e4DUfgV6bPmINnPpyJDLqSfNPcE=
|
||||
github.com/go-openapi/swag/jsonname v0.26.1/go.mod h1:OvdW6BoWoj33pTfi7x9vFrgmT+fk7aw0BRwvCE0YOuc=
|
||||
github.com/go-openapi/swag/jsonutils v0.26.1 h1:2hdBfFkHg+7Wrz2VsCbeyR6hzkRDs7AztnMR2u84yOY=
|
||||
github.com/go-openapi/swag/jsonutils v0.26.1/go.mod h1:U+RMJH3wa+6BRiphuRtIyI8fW9HPFqFQ4sHk2oRx0UQ=
|
||||
github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.1 h1:1CD7NiLLb/TXl3tOnFYU4b+mNfb5rtgHkaA+q7RMYYQ=
|
||||
github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.1/go.mod h1:ZWafc8nMdYzTE3uYY6W86f0n46+IF0g4uUyRhJw/kXc=
|
||||
github.com/go-openapi/swag/loading v0.26.1 h1:E9K4wqXeROlhjFQ13K9zMz6ojFGXIggGe+ad1odrK9w=
|
||||
github.com/go-openapi/swag/loading v0.26.1/go.mod h1:3qvRIlWzWdq1HvmldwmuJ2ohpcAryN6xVt2OTKd0/7E=
|
||||
github.com/go-openapi/swag/mangling v0.26.1 h1:gpYI4WuPKFJJVjV5cDLGlDVJhFIxYjQc7yN5eEb4CqM=
|
||||
github.com/go-openapi/swag/mangling v0.26.1/go.mod h1:POETDH01hqAdASXfw7ISEd9bCOE6xBHOt8NHmGZRmYM=
|
||||
github.com/go-openapi/swag/netutils v0.26.1 h1:BNctoc39WTAUMxyAs355fExOPzMZtPbZ0ZZ1Am2FR5M=
|
||||
github.com/go-openapi/swag/netutils v0.26.1/go.mod h1:y02vByhZhQPAVwOX+0KipXFZ/hUbk6G/Enhf5rGaOkQ=
|
||||
github.com/go-openapi/swag/stringutils v0.26.1 h1:f88uYyTso7TnHrKM/bUBsQ5e2wKf37cpgo6pvbzd9yU=
|
||||
github.com/go-openapi/swag/stringutils v0.26.1/go.mod h1:Sc6d3bU8fgk5AyZR8/8jEQ+Is/Ald+TD/IIggPN8UJk=
|
||||
github.com/go-openapi/swag/typeutils v0.26.1 h1:yg42FgMzRR6PVQ3M3qHz1s+Y6/P4HoJ3cBarXa3OVnU=
|
||||
github.com/go-openapi/swag/typeutils v0.26.1/go.mod h1:VfnV+oUtSP2vCSCn2aJgnr8OevUYemyIzzS1VOzS10o=
|
||||
github.com/go-openapi/swag/yamlutils v0.26.1 h1:0TSLK+lXs9vfIhAWzBeI/lOzEnIoot6WTCO1aAeWFTk=
|
||||
github.com/go-openapi/swag/yamlutils v0.26.1/go.mod h1:7W5b7PRX9MxwL7TjeG7H8HkyBGRsIDRObhyMWFgBI2M=
|
||||
github.com/go-openapi/testify/enable/yaml/v2 v2.5.1 h1:q9NtHwK4qHF7yZziBPvZyv7zWAIk8ok88Gh2mR6Jpc8=
|
||||
github.com/go-openapi/testify/enable/yaml/v2 v2.5.1/go.mod h1:JW0MXIotCYps/XsgJnG3a8Q7rE5xAiBwoOD5OfaIQBk=
|
||||
github.com/go-openapi/testify/v2 v2.5.1 h1:TMdhCaw8fUNraVSf3Omoob1dO/AzBfhtFAPW0an6sBo=
|
||||
github.com/go-openapi/testify/v2 v2.5.1/go.mod h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw=
|
||||
github.com/go-openapi/validate v0.26.0 h1:dxWzQ3F+vb1SajqUxHjwb5T4mTpSHmdrtv5Bi7+ZNhw=
|
||||
github.com/go-openapi/validate v0.26.0/go.mod h1:b4o00uq7fJeJA+wWhVFCJpKTctzeFwzZImGGmHsl2JA=
|
||||
github.com/go-resty/resty/v2 v2.17.2 h1:FQW5oHYcIlkCNrMD2lloGScxcHJ0gkjshV3qcQAyHQk=
|
||||
github.com/go-resty/resty/v2 v2.17.2/go.mod h1:kCKZ3wWmwJaNc7S29BRtUhJwy7iqmn+2mLtQrOyQlVA=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
@@ -452,8 +454,8 @@ github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZ
|
||||
github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo=
|
||||
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU=
|
||||
github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo=
|
||||
github.com/jedib0t/go-pretty/v6 v6.7.10 h1:B/2qW2Bkv2L6n14PP8o1kx75kWzHOQ3YTluWzg9icac=
|
||||
github.com/jedib0t/go-pretty/v6 v6.7.10/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU=
|
||||
github.com/jedib0t/go-pretty/v6 v6.8.1 h1:0fkCNhjrX0zPpwkWaDYU5VMrygg41Tu197mWILIJoqQ=
|
||||
github.com/jedib0t/go-pretty/v6 v6.8.1/go.mod h1:YwC5CE4fJ1HFUDeivSV1r//AmANFHyqczZk+U6BDALU=
|
||||
github.com/jellydator/ttlcache/v3 v3.4.0 h1:YS4P125qQS0tNhtL6aeYkheEaB/m8HCqdMMP4mnWdTY=
|
||||
github.com/jellydator/ttlcache/v3 v3.4.0/go.mod h1:Hw9EgjymziQD3yGsQdf1FqFdpp7YjFMd4Srg5EJlgD4=
|
||||
github.com/jeremija/gosubmit v0.2.8 h1:mmSITBz9JxVtu8eqbN+zmmwX7Ij2RidQxhcwRVI4wqA=
|
||||
@@ -517,8 +519,8 @@ github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVc
|
||||
github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
|
||||
github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE=
|
||||
github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
||||
github.com/mattn/go-colorable v0.1.15 h1:+u9SLTRGnXv73cEsnsmoZBom+dMU88B2M0aDcWy0/jY=
|
||||
github.com/mattn/go-colorable v0.1.15/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8=
|
||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
@@ -533,16 +535,16 @@ github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+Ei
|
||||
github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
|
||||
github.com/mattn/go-runewidth v0.0.23 h1:7ykA0T0jkPpzSvMS5i9uoNn2Xy3R383f9HDx3RybWcw=
|
||||
github.com/mattn/go-runewidth v0.0.23/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
|
||||
github.com/mattn/go-runewidth v0.0.24 h1:cpokDiIn0MGnhdHwuWnJBITySJ20QyNGnY2kR/ay2DU=
|
||||
github.com/mattn/go-runewidth v0.0.24/go.mod h1:XBkDxAl56ILZc9knddidhrOlY5R/pDhgLpndooCuJAs=
|
||||
github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0=
|
||||
github.com/mattn/go-tty v0.0.8 h1:yxtc0Ye17/1ne/bjy993YUoyP8bJJFa9n5M9XTdwoZQ=
|
||||
github.com/mattn/go-tty v0.0.8/go.mod h1:f2i5ZOvXBU/tCABmLmOfzLz9azMo5wdAaElRNnJKr+k=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/mdlayher/netlink v1.11.1 h1:T136gDS6Gkt+hLncaBwKdW5GpEC8Z0ykqimOebVoal0=
|
||||
github.com/mdlayher/netlink v1.11.1/go.mod h1:ao4LjamyK4Uq9L8+fQzqFYpAncbeCdwbvd9Edv/pYnc=
|
||||
github.com/mdlayher/socket v0.6.0 h1:ScZPaAGyO1icQnbFrhPM8mnXyMu9qukC1K4ZoM2IQKU=
|
||||
github.com/mdlayher/socket v0.6.0/go.mod h1:q7vozUAnxSqnjHc12Fik5yUKIzfZ8ITCfMkhOtE9z18=
|
||||
github.com/mdlayher/netlink v1.11.2 h1:HKh2jqe+omdSWcQ88nrT7INE61B0NXfiSPFdgL4YbNI=
|
||||
github.com/mdlayher/netlink v1.11.2/go.mod h1:uT2Yc/QLaZubzDpZIBi9d4GoeLwtp3x1AMeqSRrK2sA=
|
||||
github.com/mdlayher/socket v0.6.1 h1:M7uj2NtuujUY4mYr1C57NmfNiRHbkKpnBxO856lsc3A=
|
||||
github.com/mdlayher/socket v0.6.1/go.mod h1:+/SGtqc9V+5dAuRgQsU0fGBI+oRDiW7O2Obx10OIWfg=
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
|
||||
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d h1:5PJl274Y63IEHC+7izoQE9x6ikvDFZS2mDVS3drnohI=
|
||||
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
|
||||
@@ -613,28 +615,28 @@ github.com/openziti/channel/v4 v4.3.11 h1:ugezUhTEuSQnVFKUioN1gh6f+ZF4eBqx6mOrT5
|
||||
github.com/openziti/channel/v4 v4.3.11/go.mod h1:WZpOeuPliA7mJ3m7Pal8WdYu74eHMzkM/1Z9AMLmUAg=
|
||||
github.com/openziti/cobra-to-md v1.0.1 h1:WRinNoIRmwWUSJm+pSNXMjOrtU48oxXDZgeCYQfVXxE=
|
||||
github.com/openziti/cobra-to-md v1.0.1/go.mod h1:FjCpk/yzHF7/r28oSTNr5P57yN5VolpdAtS/g7KNi2c=
|
||||
github.com/openziti/edge-api v0.31.0 h1:QdaaPnKQj4B40q404+c8VZxMsoVpfGpfOhzs3LLCd/A=
|
||||
github.com/openziti/edge-api v0.31.0/go.mod h1:pDtCR6Mq0h5e8ulJhmuhPshEBa39hpQy+yTtLpUSBOs=
|
||||
github.com/openziti/edge-api v0.31.1 h1:0AA2g/fXVkLV5ud89gzXFbcbQF6s9B8L15k+Fi7FhbI=
|
||||
github.com/openziti/edge-api v0.31.1/go.mod h1:wFExSB9pO7yEwVVuz4AatZeU++dgcjy9pkzeCFLXeno=
|
||||
github.com/openziti/fablab v0.6.16 h1:JVy5zQ/NXoHl2SxMZDKT7jPnUlZyBSKAZXhVD2vOMKQ=
|
||||
github.com/openziti/fablab v0.6.16/go.mod h1:TXrgrWWnE9yxXP5e6RYBgjgmJhT1LXBnOtfir6Av+Ko=
|
||||
github.com/openziti/foundation/v2 v2.0.91 h1:gjXFu+fxKKMCs1hCkfLNI9jfdiSBW2gXAnBCy5xG/UI=
|
||||
github.com/openziti/foundation/v2 v2.0.91/go.mod h1:vbAudlD59QTMR+IifKXLL9c8W/OyL8DVsbYqGXWV2dY=
|
||||
github.com/openziti/foundation/v2 v2.0.95 h1:ZB6AeclGCfuI2l3c3PN7stKLp6Ck+P0wBuokY4pp7qo=
|
||||
github.com/openziti/foundation/v2 v2.0.95/go.mod h1:yhdRzmEzrHxqG8frg2fMmSpR5+iZI1tL/teeaAoWl7U=
|
||||
github.com/openziti/go-term-markdown v1.0.1 h1:9uzMpK4tav6OtvRxRt99WwPTzAzCh+Pj9zWU2FBp3Qg=
|
||||
github.com/openziti/go-term-markdown v1.0.1/go.mod h1:aIhR12zlROVqr7x51DtBALaQZQ3FofBuKDWqCfaz3oo=
|
||||
github.com/openziti/identity v1.0.129 h1:aGe3xHKwSUz6s7wv/t+/Td9P8C3oUVdk5ZdT876UdXw=
|
||||
github.com/openziti/identity v1.0.129/go.mod h1:Tqexnphch/kLbggaB9l9VWahTk0V9B0suRG3+R6ebf4=
|
||||
github.com/openziti/identity v1.0.133 h1:rOFsV+sQVpy3FJqtShF7NYQxR+678FDQfFUS3ziGNeo=
|
||||
github.com/openziti/identity v1.0.133/go.mod h1:mZKgg92/dHxGytk8eRCSg2wmEFUp/ajy4KhoArP+g94=
|
||||
github.com/openziti/jwks v1.0.6 h1:PR+9OVaMO8oHEoVQmHqeUBExWwLWyODEGJQK2DXHaqE=
|
||||
github.com/openziti/jwks v1.0.6/go.mod h1:t4xxq8vlXGsPn29kiQVnZBBDDnEoOFqtJoHibkJunQQ=
|
||||
github.com/openziti/metrics v1.4.5 h1:p51HYSQyqaDafizPWluhYjU/rVfY52snER8/BHpfPrU=
|
||||
github.com/openziti/metrics v1.4.5/go.mod h1:MOLcoTxhPNla6+NWUCMVTnl1PNqTU40qrbKVa/lVVgg=
|
||||
github.com/openziti/runzmd v1.0.90 h1:fasGlaq9xV+zohEGDC7Q0nOLA0n8Kpfccribc+VGQVw=
|
||||
github.com/openziti/runzmd v1.0.90/go.mod h1:ma3b7UdVYAC9ZCVUSjevUH/7yz9asI537XPsEh7+j14=
|
||||
github.com/openziti/sdk-golang v1.7.0 h1:4IzBbioToOPkb7F0+vQcXwAx7e9Ca3++TBZh4mrHc7I=
|
||||
github.com/openziti/sdk-golang v1.7.0/go.mod h1:MLEH77mc/l4CT4VShw0JFCzF0g+G+Z5HmV4Ic/Baer4=
|
||||
github.com/openziti/secretstream v0.1.49 h1:qfyex2w4fGtTnvIGSiVXn8prQC2IWajQ4Y76r8x9CD0=
|
||||
github.com/openziti/secretstream v0.1.49/go.mod h1:wrPNC1z0rh4e3wFW4kYumU1Tx9YoXXc9Im2biyxb0P4=
|
||||
github.com/openziti/transport/v2 v2.0.215 h1:JkasjdBTa8kcVsLO1fn655GJWBrp6BsMElzSxN9dcEA=
|
||||
github.com/openziti/transport/v2 v2.0.215/go.mod h1:oPeiTC0UHndnK8mQDAwnqZiefoXA8GfRlvVSMSFRbLc=
|
||||
github.com/openziti/sdk-golang v1.8.0 h1:Gt2QT8+bO/qq7eVU/HeMYlBvatddTJoiwE8HS+xwxVo=
|
||||
github.com/openziti/sdk-golang v1.8.0/go.mod h1:2nIjYyl7fBtomYRE6kZGkA3hU7Ene+tI7jqnA4yTWnk=
|
||||
github.com/openziti/secretstream v0.1.51 h1:j/rMfIzBNqZD5a1EKV8J4Z5QeaoSK56s/zxvvB08eSA=
|
||||
github.com/openziti/secretstream v0.1.51/go.mod h1:YapZv2c/SyZyohn6Q0MJkl8SUuBbs9Q6XWSiboBc1jA=
|
||||
github.com/openziti/transport/v2 v2.0.216 h1:/2ALqUaeDzOfvZwzGSPNtWqMu8srgA1AERF3Nk94nDQ=
|
||||
github.com/openziti/transport/v2 v2.0.216/go.mod h1:Kh4dP6FtAUbiJvTmRcMJvLVCBmpQOpvUT1jMUCLDxQg=
|
||||
github.com/openziti/x509-claims v1.0.3 h1:HNdQ8Nf1agB3lBs1gahcO6zfkeS4S5xoQ2/PkY4HRX0=
|
||||
github.com/openziti/x509-claims v1.0.3/go.mod h1:Z0WIpBm6c4ecrpRKrou6Gk2wrLWxJO/+tuUwKh8VewE=
|
||||
github.com/openziti/xweb/v3 v3.0.4 h1:sKQJOJDQiWcTkuc37L7oc0Z0jQ5Poh2zaa5raiP0GLc=
|
||||
@@ -650,12 +652,12 @@ github.com/pborman/getopt v0.0.0-20170112200414-7148bc3a4c30/go.mod h1:85jBQOZwp
|
||||
github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
|
||||
github.com/pelletier/go-toml/v2 v2.3.1 h1:MYEvvGnQjeNkRF1qUuGolNtNExTDwct51yp7olPtrEc=
|
||||
github.com/pelletier/go-toml/v2 v2.3.1/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
|
||||
github.com/pion/dtls/v3 v3.1.2 h1:gqEdOUXLtCGW+afsBLO0LtDD8GnuBBjEy6HRtyofZTc=
|
||||
github.com/pion/dtls/v3 v3.1.2/go.mod h1:Hw/igcX4pdY69z1Hgv5x7wJFrUkdgHwAn/Q/uo7YHRo=
|
||||
github.com/pion/dtls/v3 v3.1.4 h1:QhvtMflMfu9Kf0RcDC5BJBle4caPskByrKQR6uuYqpY=
|
||||
github.com/pion/dtls/v3 v3.1.4/go.mod h1:cr/qotLISUw/9C1m83ZPNZtj9WnXkYLpfCptPqbkInc=
|
||||
github.com/pion/logging v0.2.4 h1:tTew+7cmQ+Mc1pTBLKH2puKsOvhm32dROumOZ655zB8=
|
||||
github.com/pion/logging v0.2.4/go.mod h1:DffhXTKYdNZU+KtJ5pyQDjvOAh/GsNSyv1lbkFbe3so=
|
||||
github.com/pion/transport/v4 v4.0.1 h1:sdROELU6BZ63Ab7FrOLn13M6YdJLY20wldXW2Cu2k8o=
|
||||
github.com/pion/transport/v4 v4.0.1/go.mod h1:nEuEA4AD5lPdcIegQDpVLgNoDGreqM/YqmEx3ovP4jM=
|
||||
github.com/pion/transport/v4 v4.0.2 h1:ifYlPqNwsy6aKQ9y8yzxXlHae5431ZrH2avkD/Rn6Tk=
|
||||
github.com/pion/transport/v4 v4.0.2/go.mod h1:06hFI+jCFcok2X2MekVufNZ/uzNZXivGBPfviSVcjgM=
|
||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ=
|
||||
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
@@ -717,6 +719,8 @@ github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9t
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI=
|
||||
github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk=
|
||||
github.com/shirou/gopsutil/v4 v4.26.5 h1:RPcBXkpz7kOj9PqGFQOlBPZHsyaPvPVQc098y9RmCNM=
|
||||
github.com/shirou/gopsutil/v4 v4.26.5/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ=
|
||||
github.com/shoenig/go-m1cpu v0.2.1 h1:yqRB4fvOge2+FyRXFkXqsyMoqPazv14Yyy+iyccT2E4=
|
||||
github.com/shoenig/go-m1cpu v0.2.1/go.mod h1:KkDOw6m3ZJQAPHbrzkZki4hnx+pDRR1Lo+ldA56wD5w=
|
||||
github.com/shoenig/test v1.7.0 h1:eWcHtTXa6QLnBvm0jgEabMRN/uJ4DMV3M8xUGgRkZmk=
|
||||
@@ -822,14 +826,14 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk=
|
||||
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
|
||||
go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
|
||||
go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
|
||||
go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
|
||||
go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
|
||||
go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
|
||||
go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
|
||||
go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
|
||||
go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
|
||||
go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
|
||||
go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
|
||||
go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU=
|
||||
go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc=
|
||||
go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc=
|
||||
go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo=
|
||||
go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58=
|
||||
go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0=
|
||||
go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk=
|
||||
go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
|
||||
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
|
||||
@@ -852,8 +856,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw=
|
||||
golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI=
|
||||
golang.org/x/crypto v0.51.0/go.mod h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
|
||||
golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto=
|
||||
golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
@@ -864,8 +868,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
|
||||
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||
golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a h1:+3jdDGGB8NGb1Zktc737jlt3/A5f6UlwSzmvqUuufxw=
|
||||
golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw=
|
||||
golang.org/x/exp v0.0.0-20260603202125-055de637280b h1:v1uXiEBHo8QA0LiGCo7UgHMzHT4Kdfpl2zmtH5vaP1Q=
|
||||
golang.org/x/exp v0.0.0-20260603202125-055de637280b/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw=
|
||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||
@@ -892,8 +896,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4=
|
||||
golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ=
|
||||
golang.org/x/mod v0.37.0 h1:vF1DjpVEshcIqoEaauuHebaLk1O1forxjxBaVn884JQ=
|
||||
golang.org/x/mod v0.37.0/go.mod h1:m8S8VeM9r4dzDwjrKO0a1sZP3YjeMamRRlD+fmR2Q/0=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@@ -938,8 +942,8 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd
|
||||
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
|
||||
golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
|
||||
golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
|
||||
golang.org/x/net v0.56.0 h1:Rw8j/hFzGvJUZwNBXnAtf5sVDVt+65SK2C7IxCxZt5o=
|
||||
golang.org/x/net v0.56.0/go.mod h1:D3Ku6r+V6JROoZK144D2XfMHFcMq/0zSfLelVTCFKec=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
@@ -966,8 +970,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ
|
||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
|
||||
golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||
golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM=
|
||||
golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@@ -1038,13 +1042,13 @@ golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBc
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
|
||||
golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw=
|
||||
golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
|
||||
golang.org/x/term v0.43.0/go.mod h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
|
||||
golang.org/x/term v0.44.0 h1:0rLvDRCtNj0gZkyIXhCyOb2OAzEhLVqc4B+hrsBhrmc=
|
||||
golang.org/x/term v0.44.0/go.mod h1:7ze4MdzUzLXpSAoFP1H0bOI9aXDqveSvatT5vKcFh2Y=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@@ -1054,8 +1058,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
|
||||
golang.org/x/text v0.37.0/go.mod h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
|
||||
golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE=
|
||||
golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
@@ -1236,8 +1240,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce h1:+JknDZhAj8YMt7GC73Ei8pv4MzjDUNPHgQWJdtMAaDU=
|
||||
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c=
|
||||
gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI=
|
||||
|
||||
Reference in New Issue
Block a user