Files
Luna YaoandClaude Code 250c2ad8d6 refactor(config): preserve explicit flags with FlagsPatch and derive CLI arguments from schema (#2585)
This PR refactors EasyTier's configuration flags system across protobuf definitions, TOML/API persistence, runtime reconciliation, and the CLI.

It introduces a synthesized FlagsPatch protobuf message with optionize and pbjson support to track field presence reliably, replaces manual CLI flag boilerplate with dynamic schema-driven clap argument generation, and
establishes Flags::resolve(patch) as the single source of truth for runtime defaults.

Co-authored-by: Claude Code <noreply@anthropic.com>
2026-10-10 22:11:08 +08:00

1062 lines
35 KiB
Go

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc v7.36.1
// source: api_config.proto
package config
import (
acl "github.com/easytier/easytier/easytier-go/proto/acl"
instance "github.com/easytier/easytier/easytier-go/proto/api/instance"
manage "github.com/easytier/easytier/easytier-go/proto/api/manage"
common "github.com/easytier/easytier/easytier-go/proto/common"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
unsafe "unsafe"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type ConfigPatchAction int32
const (
ConfigPatchAction_ADD ConfigPatchAction = 0
ConfigPatchAction_REMOVE ConfigPatchAction = 1
ConfigPatchAction_CLEAR ConfigPatchAction = 2
)
// Enum value maps for ConfigPatchAction.
var (
ConfigPatchAction_name = map[int32]string{
0: "ADD",
1: "REMOVE",
2: "CLEAR",
}
ConfigPatchAction_value = map[string]int32{
"ADD": 0,
"REMOVE": 1,
"CLEAR": 2,
}
)
func (x ConfigPatchAction) Enum() *ConfigPatchAction {
p := new(ConfigPatchAction)
*p = x
return p
}
func (x ConfigPatchAction) String() string {
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}
func (ConfigPatchAction) Descriptor() protoreflect.EnumDescriptor {
return file_api_config_proto_enumTypes[0].Descriptor()
}
func (ConfigPatchAction) Type() protoreflect.EnumType {
return &file_api_config_proto_enumTypes[0]
}
func (x ConfigPatchAction) Number() protoreflect.EnumNumber {
return protoreflect.EnumNumber(x)
}
// Deprecated: Use ConfigPatchAction.Descriptor instead.
func (ConfigPatchAction) EnumDescriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{0}
}
type InstanceConfigPatch struct {
state protoimpl.MessageState `protogen:"open.v1"`
Hostname *string `protobuf:"bytes,1,opt,name=hostname,proto3,oneof" json:"hostname,omitempty"`
Ipv4 *common.Ipv4Inet `protobuf:"bytes,2,opt,name=ipv4,proto3,oneof" json:"ipv4,omitempty"`
Ipv6 *common.Ipv6Inet `protobuf:"bytes,3,opt,name=ipv6,proto3,oneof" json:"ipv6,omitempty"`
PortForwards []*PortForwardPatch `protobuf:"bytes,4,rep,name=port_forwards,json=portForwards,proto3" json:"port_forwards,omitempty"`
Acl *AclPatch `protobuf:"bytes,5,opt,name=acl,proto3,oneof" json:"acl,omitempty"`
ProxyNetworks []*ProxyNetworkPatch `protobuf:"bytes,6,rep,name=proxy_networks,json=proxyNetworks,proto3" json:"proxy_networks,omitempty"`
Routes []*RoutePatch `protobuf:"bytes,7,rep,name=routes,proto3" json:"routes,omitempty"`
ExitNodes []*ExitNodePatch `protobuf:"bytes,8,rep,name=exit_nodes,json=exitNodes,proto3" json:"exit_nodes,omitempty"`
MappedListeners []*UrlPatch `protobuf:"bytes,9,rep,name=mapped_listeners,json=mappedListeners,proto3" json:"mapped_listeners,omitempty"`
Connectors []*UrlPatch `protobuf:"bytes,10,rep,name=connectors,proto3" json:"connectors,omitempty"`
Ipv6PublicAddrProvider *bool `protobuf:"varint,11,opt,name=ipv6_public_addr_provider,json=ipv6PublicAddrProvider,proto3,oneof" json:"ipv6_public_addr_provider,omitempty"`
Ipv6PublicAddrAuto *bool `protobuf:"varint,12,opt,name=ipv6_public_addr_auto,json=ipv6PublicAddrAuto,proto3,oneof" json:"ipv6_public_addr_auto,omitempty"`
Ipv6PublicAddrPrefix *string `protobuf:"bytes,13,opt,name=ipv6_public_addr_prefix,json=ipv6PublicAddrPrefix,proto3,oneof" json:"ipv6_public_addr_prefix,omitempty"`
DisableRelayData *bool `protobuf:"varint,14,opt,name=disable_relay_data,json=disableRelayData,proto3,oneof" json:"disable_relay_data,omitempty"`
VpnPortalClients []*VpnPortalClientPatch `protobuf:"bytes,15,rep,name=vpn_portal_clients,json=vpnPortalClients,proto3" json:"vpn_portal_clients,omitempty"`
ManagedCredentials *manage.ManagedCredentialSet `protobuf:"bytes,16,opt,name=managed_credentials,json=managedCredentials,proto3" json:"managed_credentials,omitempty"`
PreferPeerRelay *bool `protobuf:"varint,17,opt,name=prefer_peer_relay,json=preferPeerRelay,proto3,oneof" json:"prefer_peer_relay,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *InstanceConfigPatch) Reset() {
*x = InstanceConfigPatch{}
mi := &file_api_config_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *InstanceConfigPatch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*InstanceConfigPatch) ProtoMessage() {}
func (x *InstanceConfigPatch) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[0]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use InstanceConfigPatch.ProtoReflect.Descriptor instead.
func (*InstanceConfigPatch) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{0}
}
func (x *InstanceConfigPatch) GetHostname() string {
if x != nil && x.Hostname != nil {
return *x.Hostname
}
return ""
}
func (x *InstanceConfigPatch) GetIpv4() *common.Ipv4Inet {
if x != nil {
return x.Ipv4
}
return nil
}
func (x *InstanceConfigPatch) GetIpv6() *common.Ipv6Inet {
if x != nil {
return x.Ipv6
}
return nil
}
func (x *InstanceConfigPatch) GetPortForwards() []*PortForwardPatch {
if x != nil {
return x.PortForwards
}
return nil
}
func (x *InstanceConfigPatch) GetAcl() *AclPatch {
if x != nil {
return x.Acl
}
return nil
}
func (x *InstanceConfigPatch) GetProxyNetworks() []*ProxyNetworkPatch {
if x != nil {
return x.ProxyNetworks
}
return nil
}
func (x *InstanceConfigPatch) GetRoutes() []*RoutePatch {
if x != nil {
return x.Routes
}
return nil
}
func (x *InstanceConfigPatch) GetExitNodes() []*ExitNodePatch {
if x != nil {
return x.ExitNodes
}
return nil
}
func (x *InstanceConfigPatch) GetMappedListeners() []*UrlPatch {
if x != nil {
return x.MappedListeners
}
return nil
}
func (x *InstanceConfigPatch) GetConnectors() []*UrlPatch {
if x != nil {
return x.Connectors
}
return nil
}
func (x *InstanceConfigPatch) GetIpv6PublicAddrProvider() bool {
if x != nil && x.Ipv6PublicAddrProvider != nil {
return *x.Ipv6PublicAddrProvider
}
return false
}
func (x *InstanceConfigPatch) GetIpv6PublicAddrAuto() bool {
if x != nil && x.Ipv6PublicAddrAuto != nil {
return *x.Ipv6PublicAddrAuto
}
return false
}
func (x *InstanceConfigPatch) GetIpv6PublicAddrPrefix() string {
if x != nil && x.Ipv6PublicAddrPrefix != nil {
return *x.Ipv6PublicAddrPrefix
}
return ""
}
func (x *InstanceConfigPatch) GetDisableRelayData() bool {
if x != nil && x.DisableRelayData != nil {
return *x.DisableRelayData
}
return false
}
func (x *InstanceConfigPatch) GetVpnPortalClients() []*VpnPortalClientPatch {
if x != nil {
return x.VpnPortalClients
}
return nil
}
func (x *InstanceConfigPatch) GetManagedCredentials() *manage.ManagedCredentialSet {
if x != nil {
return x.ManagedCredentials
}
return nil
}
func (x *InstanceConfigPatch) GetPreferPeerRelay() bool {
if x != nil && x.PreferPeerRelay != nil {
return *x.PreferPeerRelay
}
return false
}
type VpnPortalClientPatch struct {
state protoimpl.MessageState `protogen:"open.v1"`
Action ConfigPatchAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.config.ConfigPatchAction" json:"action,omitempty"`
Client *manage.VpnPortalClientConfig `protobuf:"bytes,2,opt,name=client,proto3" json:"client,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *VpnPortalClientPatch) Reset() {
*x = VpnPortalClientPatch{}
mi := &file_api_config_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *VpnPortalClientPatch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*VpnPortalClientPatch) ProtoMessage() {}
func (x *VpnPortalClientPatch) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[1]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use VpnPortalClientPatch.ProtoReflect.Descriptor instead.
func (*VpnPortalClientPatch) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{1}
}
func (x *VpnPortalClientPatch) GetAction() ConfigPatchAction {
if x != nil {
return x.Action
}
return ConfigPatchAction_ADD
}
func (x *VpnPortalClientPatch) GetClient() *manage.VpnPortalClientConfig {
if x != nil {
return x.Client
}
return nil
}
type PortForwardPatch struct {
state protoimpl.MessageState `protogen:"open.v1"`
Action ConfigPatchAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.config.ConfigPatchAction" json:"action,omitempty"`
Cfg *common.PortForwardConfigPb `protobuf:"bytes,2,opt,name=cfg,proto3" json:"cfg,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PortForwardPatch) Reset() {
*x = PortForwardPatch{}
mi := &file_api_config_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PortForwardPatch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PortForwardPatch) ProtoMessage() {}
func (x *PortForwardPatch) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[2]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PortForwardPatch.ProtoReflect.Descriptor instead.
func (*PortForwardPatch) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{2}
}
func (x *PortForwardPatch) GetAction() ConfigPatchAction {
if x != nil {
return x.Action
}
return ConfigPatchAction_ADD
}
func (x *PortForwardPatch) GetCfg() *common.PortForwardConfigPb {
if x != nil {
return x.Cfg
}
return nil
}
type StringPatch struct {
state protoimpl.MessageState `protogen:"open.v1"`
Action ConfigPatchAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.config.ConfigPatchAction" json:"action,omitempty"`
Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *StringPatch) Reset() {
*x = StringPatch{}
mi := &file_api_config_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *StringPatch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*StringPatch) ProtoMessage() {}
func (x *StringPatch) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[3]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use StringPatch.ProtoReflect.Descriptor instead.
func (*StringPatch) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{3}
}
func (x *StringPatch) GetAction() ConfigPatchAction {
if x != nil {
return x.Action
}
return ConfigPatchAction_ADD
}
func (x *StringPatch) GetValue() string {
if x != nil {
return x.Value
}
return ""
}
type UrlPatch struct {
state protoimpl.MessageState `protogen:"open.v1"`
Action ConfigPatchAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.config.ConfigPatchAction" json:"action,omitempty"`
Url *common.Url `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *UrlPatch) Reset() {
*x = UrlPatch{}
mi := &file_api_config_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *UrlPatch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UrlPatch) ProtoMessage() {}
func (x *UrlPatch) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[4]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use UrlPatch.ProtoReflect.Descriptor instead.
func (*UrlPatch) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{4}
}
func (x *UrlPatch) GetAction() ConfigPatchAction {
if x != nil {
return x.Action
}
return ConfigPatchAction_ADD
}
func (x *UrlPatch) GetUrl() *common.Url {
if x != nil {
return x.Url
}
return nil
}
type AclPatch struct {
state protoimpl.MessageState `protogen:"open.v1"`
Acl *acl.Acl `protobuf:"bytes,1,opt,name=acl,proto3,oneof" json:"acl,omitempty"`
TcpWhitelist []*StringPatch `protobuf:"bytes,2,rep,name=tcp_whitelist,json=tcpWhitelist,proto3" json:"tcp_whitelist,omitempty"`
UdpWhitelist []*StringPatch `protobuf:"bytes,3,rep,name=udp_whitelist,json=udpWhitelist,proto3" json:"udp_whitelist,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *AclPatch) Reset() {
*x = AclPatch{}
mi := &file_api_config_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *AclPatch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*AclPatch) ProtoMessage() {}
func (x *AclPatch) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[5]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use AclPatch.ProtoReflect.Descriptor instead.
func (*AclPatch) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{5}
}
func (x *AclPatch) GetAcl() *acl.Acl {
if x != nil {
return x.Acl
}
return nil
}
func (x *AclPatch) GetTcpWhitelist() []*StringPatch {
if x != nil {
return x.TcpWhitelist
}
return nil
}
func (x *AclPatch) GetUdpWhitelist() []*StringPatch {
if x != nil {
return x.UdpWhitelist
}
return nil
}
type ProxyNetworkPatch struct {
state protoimpl.MessageState `protogen:"open.v1"`
Action ConfigPatchAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.config.ConfigPatchAction" json:"action,omitempty"`
Cidr *common.Ipv4Inet `protobuf:"bytes,2,opt,name=cidr,proto3" json:"cidr,omitempty"`
MappedCidr *common.Ipv4Inet `protobuf:"bytes,3,opt,name=mapped_cidr,json=mappedCidr,proto3,oneof" json:"mapped_cidr,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ProxyNetworkPatch) Reset() {
*x = ProxyNetworkPatch{}
mi := &file_api_config_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ProxyNetworkPatch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ProxyNetworkPatch) ProtoMessage() {}
func (x *ProxyNetworkPatch) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[6]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ProxyNetworkPatch.ProtoReflect.Descriptor instead.
func (*ProxyNetworkPatch) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{6}
}
func (x *ProxyNetworkPatch) GetAction() ConfigPatchAction {
if x != nil {
return x.Action
}
return ConfigPatchAction_ADD
}
func (x *ProxyNetworkPatch) GetCidr() *common.Ipv4Inet {
if x != nil {
return x.Cidr
}
return nil
}
func (x *ProxyNetworkPatch) GetMappedCidr() *common.Ipv4Inet {
if x != nil {
return x.MappedCidr
}
return nil
}
type RoutePatch struct {
state protoimpl.MessageState `protogen:"open.v1"`
Action ConfigPatchAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.config.ConfigPatchAction" json:"action,omitempty"`
Cidr *common.Ipv4Inet `protobuf:"bytes,2,opt,name=cidr,proto3" json:"cidr,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *RoutePatch) Reset() {
*x = RoutePatch{}
mi := &file_api_config_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *RoutePatch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RoutePatch) ProtoMessage() {}
func (x *RoutePatch) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[7]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use RoutePatch.ProtoReflect.Descriptor instead.
func (*RoutePatch) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{7}
}
func (x *RoutePatch) GetAction() ConfigPatchAction {
if x != nil {
return x.Action
}
return ConfigPatchAction_ADD
}
func (x *RoutePatch) GetCidr() *common.Ipv4Inet {
if x != nil {
return x.Cidr
}
return nil
}
type ExitNodePatch struct {
state protoimpl.MessageState `protogen:"open.v1"`
Action ConfigPatchAction `protobuf:"varint,1,opt,name=action,proto3,enum=api.config.ConfigPatchAction" json:"action,omitempty"`
Node *common.IpAddr `protobuf:"bytes,2,opt,name=node,proto3" json:"node,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *ExitNodePatch) Reset() {
*x = ExitNodePatch{}
mi := &file_api_config_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *ExitNodePatch) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ExitNodePatch) ProtoMessage() {}
func (x *ExitNodePatch) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[8]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ExitNodePatch.ProtoReflect.Descriptor instead.
func (*ExitNodePatch) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{8}
}
func (x *ExitNodePatch) GetAction() ConfigPatchAction {
if x != nil {
return x.Action
}
return ConfigPatchAction_ADD
}
func (x *ExitNodePatch) GetNode() *common.IpAddr {
if x != nil {
return x.Node
}
return nil
}
type PatchConfigRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
Patch *InstanceConfigPatch `protobuf:"bytes,1,opt,name=patch,proto3" json:"patch,omitempty"`
Instance *instance.InstanceIdentifier `protobuf:"bytes,2,opt,name=instance,proto3" json:"instance,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PatchConfigRequest) Reset() {
*x = PatchConfigRequest{}
mi := &file_api_config_proto_msgTypes[9]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PatchConfigRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PatchConfigRequest) ProtoMessage() {}
func (x *PatchConfigRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[9]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PatchConfigRequest.ProtoReflect.Descriptor instead.
func (*PatchConfigRequest) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{9}
}
func (x *PatchConfigRequest) GetPatch() *InstanceConfigPatch {
if x != nil {
return x.Patch
}
return nil
}
func (x *PatchConfigRequest) GetInstance() *instance.InstanceIdentifier {
if x != nil {
return x.Instance
}
return nil
}
type PatchConfigResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *PatchConfigResponse) Reset() {
*x = PatchConfigResponse{}
mi := &file_api_config_proto_msgTypes[10]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *PatchConfigResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PatchConfigResponse) ProtoMessage() {}
func (x *PatchConfigResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[10]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PatchConfigResponse.ProtoReflect.Descriptor instead.
func (*PatchConfigResponse) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{10}
}
type GetConfigRequest struct {
state protoimpl.MessageState `protogen:"open.v1"`
Instance *instance.InstanceIdentifier `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetConfigRequest) Reset() {
*x = GetConfigRequest{}
mi := &file_api_config_proto_msgTypes[11]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetConfigRequest) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetConfigRequest) ProtoMessage() {}
func (x *GetConfigRequest) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[11]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetConfigRequest.ProtoReflect.Descriptor instead.
func (*GetConfigRequest) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{11}
}
func (x *GetConfigRequest) GetInstance() *instance.InstanceIdentifier {
if x != nil {
return x.Instance
}
return nil
}
type GetConfigResponse struct {
state protoimpl.MessageState `protogen:"open.v1"`
Config *manage.NetworkConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
TomlConfig string `protobuf:"bytes,2,opt,name=toml_config,json=tomlConfig,proto3" json:"toml_config,omitempty"`
unknownFields protoimpl.UnknownFields
sizeCache protoimpl.SizeCache
}
func (x *GetConfigResponse) Reset() {
*x = GetConfigResponse{}
mi := &file_api_config_proto_msgTypes[12]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
func (x *GetConfigResponse) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*GetConfigResponse) ProtoMessage() {}
func (x *GetConfigResponse) ProtoReflect() protoreflect.Message {
mi := &file_api_config_proto_msgTypes[12]
if x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use GetConfigResponse.ProtoReflect.Descriptor instead.
func (*GetConfigResponse) Descriptor() ([]byte, []int) {
return file_api_config_proto_rawDescGZIP(), []int{12}
}
func (x *GetConfigResponse) GetConfig() *manage.NetworkConfig {
if x != nil {
return x.Config
}
return nil
}
func (x *GetConfigResponse) GetTomlConfig() string {
if x != nil {
return x.TomlConfig
}
return ""
}
var File_api_config_proto protoreflect.FileDescriptor
const file_api_config_proto_rawDesc = "" +
"\n" +
"\x10api_config.proto\x12\n" +
"api.config\x1a\fcommon.proto\x1a\tacl.proto\x1a\x12api_instance.proto\x1a\x10api_manage.proto\"\x86\t\n" +
"\x13InstanceConfigPatch\x12\x1f\n" +
"\bhostname\x18\x01 \x01(\tH\x00R\bhostname\x88\x01\x01\x12)\n" +
"\x04ipv4\x18\x02 \x01(\v2\x10.common.Ipv4InetH\x01R\x04ipv4\x88\x01\x01\x12)\n" +
"\x04ipv6\x18\x03 \x01(\v2\x10.common.Ipv6InetH\x02R\x04ipv6\x88\x01\x01\x12A\n" +
"\rport_forwards\x18\x04 \x03(\v2\x1c.api.config.PortForwardPatchR\fportForwards\x12+\n" +
"\x03acl\x18\x05 \x01(\v2\x14.api.config.AclPatchH\x03R\x03acl\x88\x01\x01\x12D\n" +
"\x0eproxy_networks\x18\x06 \x03(\v2\x1d.api.config.ProxyNetworkPatchR\rproxyNetworks\x12.\n" +
"\x06routes\x18\a \x03(\v2\x16.api.config.RoutePatchR\x06routes\x128\n" +
"\n" +
"exit_nodes\x18\b \x03(\v2\x19.api.config.ExitNodePatchR\texitNodes\x12?\n" +
"\x10mapped_listeners\x18\t \x03(\v2\x14.api.config.UrlPatchR\x0fmappedListeners\x124\n" +
"\n" +
"connectors\x18\n" +
" \x03(\v2\x14.api.config.UrlPatchR\n" +
"connectors\x12>\n" +
"\x19ipv6_public_addr_provider\x18\v \x01(\bH\x04R\x16ipv6PublicAddrProvider\x88\x01\x01\x126\n" +
"\x15ipv6_public_addr_auto\x18\f \x01(\bH\x05R\x12ipv6PublicAddrAuto\x88\x01\x01\x12:\n" +
"\x17ipv6_public_addr_prefix\x18\r \x01(\tH\x06R\x14ipv6PublicAddrPrefix\x88\x01\x01\x121\n" +
"\x12disable_relay_data\x18\x0e \x01(\bH\aR\x10disableRelayData\x88\x01\x01\x12N\n" +
"\x12vpn_portal_clients\x18\x0f \x03(\v2 .api.config.VpnPortalClientPatchR\x10vpnPortalClients\x12Q\n" +
"\x13managed_credentials\x18\x10 \x01(\v2 .api.manage.ManagedCredentialSetR\x12managedCredentials\x12/\n" +
"\x11prefer_peer_relay\x18\x11 \x01(\bH\bR\x0fpreferPeerRelay\x88\x01\x01B\v\n" +
"\t_hostnameB\a\n" +
"\x05_ipv4B\a\n" +
"\x05_ipv6B\x06\n" +
"\x04_aclB\x1c\n" +
"\x1a_ipv6_public_addr_providerB\x18\n" +
"\x16_ipv6_public_addr_autoB\x1a\n" +
"\x18_ipv6_public_addr_prefixB\x15\n" +
"\x13_disable_relay_dataB\x14\n" +
"\x12_prefer_peer_relay\"\x88\x01\n" +
"\x14VpnPortalClientPatch\x125\n" +
"\x06action\x18\x01 \x01(\x0e2\x1d.api.config.ConfigPatchActionR\x06action\x129\n" +
"\x06client\x18\x02 \x01(\v2!.api.manage.VpnPortalClientConfigR\x06client\"x\n" +
"\x10PortForwardPatch\x125\n" +
"\x06action\x18\x01 \x01(\x0e2\x1d.api.config.ConfigPatchActionR\x06action\x12-\n" +
"\x03cfg\x18\x02 \x01(\v2\x1b.common.PortForwardConfigPbR\x03cfg\"Z\n" +
"\vStringPatch\x125\n" +
"\x06action\x18\x01 \x01(\x0e2\x1d.api.config.ConfigPatchActionR\x06action\x12\x14\n" +
"\x05value\x18\x02 \x01(\tR\x05value\"`\n" +
"\bUrlPatch\x125\n" +
"\x06action\x18\x01 \x01(\x0e2\x1d.api.config.ConfigPatchActionR\x06action\x12\x1d\n" +
"\x03url\x18\x02 \x01(\v2\v.common.UrlR\x03url\"\xaf\x01\n" +
"\bAclPatch\x12\x1f\n" +
"\x03acl\x18\x01 \x01(\v2\b.acl.AclH\x00R\x03acl\x88\x01\x01\x12<\n" +
"\rtcp_whitelist\x18\x02 \x03(\v2\x17.api.config.StringPatchR\ftcpWhitelist\x12<\n" +
"\rudp_whitelist\x18\x03 \x03(\v2\x17.api.config.StringPatchR\fudpWhitelistB\x06\n" +
"\x04_acl\"\xb8\x01\n" +
"\x11ProxyNetworkPatch\x125\n" +
"\x06action\x18\x01 \x01(\x0e2\x1d.api.config.ConfigPatchActionR\x06action\x12$\n" +
"\x04cidr\x18\x02 \x01(\v2\x10.common.Ipv4InetR\x04cidr\x126\n" +
"\vmapped_cidr\x18\x03 \x01(\v2\x10.common.Ipv4InetH\x00R\n" +
"mappedCidr\x88\x01\x01B\x0e\n" +
"\f_mapped_cidr\"i\n" +
"\n" +
"RoutePatch\x125\n" +
"\x06action\x18\x01 \x01(\x0e2\x1d.api.config.ConfigPatchActionR\x06action\x12$\n" +
"\x04cidr\x18\x02 \x01(\v2\x10.common.Ipv4InetR\x04cidr\"j\n" +
"\rExitNodePatch\x125\n" +
"\x06action\x18\x01 \x01(\x0e2\x1d.api.config.ConfigPatchActionR\x06action\x12\"\n" +
"\x04node\x18\x02 \x01(\v2\x0e.common.IpAddrR\x04node\"\x89\x01\n" +
"\x12PatchConfigRequest\x125\n" +
"\x05patch\x18\x01 \x01(\v2\x1f.api.config.InstanceConfigPatchR\x05patch\x12<\n" +
"\binstance\x18\x02 \x01(\v2 .api.instance.InstanceIdentifierR\binstance\"\x15\n" +
"\x13PatchConfigResponse\"P\n" +
"\x10GetConfigRequest\x12<\n" +
"\binstance\x18\x01 \x01(\v2 .api.instance.InstanceIdentifierR\binstance\"g\n" +
"\x11GetConfigResponse\x121\n" +
"\x06config\x18\x01 \x01(\v2\x19.api.manage.NetworkConfigR\x06config\x12\x1f\n" +
"\vtoml_config\x18\x02 \x01(\tR\n" +
"tomlConfig*3\n" +
"\x11ConfigPatchAction\x12\a\n" +
"\x03ADD\x10\x00\x12\n" +
"\n" +
"\x06REMOVE\x10\x01\x12\t\n" +
"\x05CLEAR\x10\x022\xa5\x01\n" +
"\tConfigRpc\x12N\n" +
"\vPatchConfig\x12\x1e.api.config.PatchConfigRequest\x1a\x1f.api.config.PatchConfigResponse\x12H\n" +
"\tGetConfig\x12\x1c.api.config.GetConfigRequest\x1a\x1d.api.config.GetConfigResponseb\x06proto3"
var (
file_api_config_proto_rawDescOnce sync.Once
file_api_config_proto_rawDescData []byte
)
func file_api_config_proto_rawDescGZIP() []byte {
file_api_config_proto_rawDescOnce.Do(func() {
file_api_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_api_config_proto_rawDesc), len(file_api_config_proto_rawDesc)))
})
return file_api_config_proto_rawDescData
}
var file_api_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_api_config_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_api_config_proto_goTypes = []any{
(ConfigPatchAction)(0), // 0: api.config.ConfigPatchAction
(*InstanceConfigPatch)(nil), // 1: api.config.InstanceConfigPatch
(*VpnPortalClientPatch)(nil), // 2: api.config.VpnPortalClientPatch
(*PortForwardPatch)(nil), // 3: api.config.PortForwardPatch
(*StringPatch)(nil), // 4: api.config.StringPatch
(*UrlPatch)(nil), // 5: api.config.UrlPatch
(*AclPatch)(nil), // 6: api.config.AclPatch
(*ProxyNetworkPatch)(nil), // 7: api.config.ProxyNetworkPatch
(*RoutePatch)(nil), // 8: api.config.RoutePatch
(*ExitNodePatch)(nil), // 9: api.config.ExitNodePatch
(*PatchConfigRequest)(nil), // 10: api.config.PatchConfigRequest
(*PatchConfigResponse)(nil), // 11: api.config.PatchConfigResponse
(*GetConfigRequest)(nil), // 12: api.config.GetConfigRequest
(*GetConfigResponse)(nil), // 13: api.config.GetConfigResponse
(*common.Ipv4Inet)(nil), // 14: common.Ipv4Inet
(*common.Ipv6Inet)(nil), // 15: common.Ipv6Inet
(*manage.ManagedCredentialSet)(nil), // 16: api.manage.ManagedCredentialSet
(*manage.VpnPortalClientConfig)(nil), // 17: api.manage.VpnPortalClientConfig
(*common.PortForwardConfigPb)(nil), // 18: common.PortForwardConfigPb
(*common.Url)(nil), // 19: common.Url
(*acl.Acl)(nil), // 20: acl.Acl
(*common.IpAddr)(nil), // 21: common.IpAddr
(*instance.InstanceIdentifier)(nil), // 22: api.instance.InstanceIdentifier
(*manage.NetworkConfig)(nil), // 23: api.manage.NetworkConfig
}
var file_api_config_proto_depIdxs = []int32{
14, // 0: api.config.InstanceConfigPatch.ipv4:type_name -> common.Ipv4Inet
15, // 1: api.config.InstanceConfigPatch.ipv6:type_name -> common.Ipv6Inet
3, // 2: api.config.InstanceConfigPatch.port_forwards:type_name -> api.config.PortForwardPatch
6, // 3: api.config.InstanceConfigPatch.acl:type_name -> api.config.AclPatch
7, // 4: api.config.InstanceConfigPatch.proxy_networks:type_name -> api.config.ProxyNetworkPatch
8, // 5: api.config.InstanceConfigPatch.routes:type_name -> api.config.RoutePatch
9, // 6: api.config.InstanceConfigPatch.exit_nodes:type_name -> api.config.ExitNodePatch
5, // 7: api.config.InstanceConfigPatch.mapped_listeners:type_name -> api.config.UrlPatch
5, // 8: api.config.InstanceConfigPatch.connectors:type_name -> api.config.UrlPatch
2, // 9: api.config.InstanceConfigPatch.vpn_portal_clients:type_name -> api.config.VpnPortalClientPatch
16, // 10: api.config.InstanceConfigPatch.managed_credentials:type_name -> api.manage.ManagedCredentialSet
0, // 11: api.config.VpnPortalClientPatch.action:type_name -> api.config.ConfigPatchAction
17, // 12: api.config.VpnPortalClientPatch.client:type_name -> api.manage.VpnPortalClientConfig
0, // 13: api.config.PortForwardPatch.action:type_name -> api.config.ConfigPatchAction
18, // 14: api.config.PortForwardPatch.cfg:type_name -> common.PortForwardConfigPb
0, // 15: api.config.StringPatch.action:type_name -> api.config.ConfigPatchAction
0, // 16: api.config.UrlPatch.action:type_name -> api.config.ConfigPatchAction
19, // 17: api.config.UrlPatch.url:type_name -> common.Url
20, // 18: api.config.AclPatch.acl:type_name -> acl.Acl
4, // 19: api.config.AclPatch.tcp_whitelist:type_name -> api.config.StringPatch
4, // 20: api.config.AclPatch.udp_whitelist:type_name -> api.config.StringPatch
0, // 21: api.config.ProxyNetworkPatch.action:type_name -> api.config.ConfigPatchAction
14, // 22: api.config.ProxyNetworkPatch.cidr:type_name -> common.Ipv4Inet
14, // 23: api.config.ProxyNetworkPatch.mapped_cidr:type_name -> common.Ipv4Inet
0, // 24: api.config.RoutePatch.action:type_name -> api.config.ConfigPatchAction
14, // 25: api.config.RoutePatch.cidr:type_name -> common.Ipv4Inet
0, // 26: api.config.ExitNodePatch.action:type_name -> api.config.ConfigPatchAction
21, // 27: api.config.ExitNodePatch.node:type_name -> common.IpAddr
1, // 28: api.config.PatchConfigRequest.patch:type_name -> api.config.InstanceConfigPatch
22, // 29: api.config.PatchConfigRequest.instance:type_name -> api.instance.InstanceIdentifier
22, // 30: api.config.GetConfigRequest.instance:type_name -> api.instance.InstanceIdentifier
23, // 31: api.config.GetConfigResponse.config:type_name -> api.manage.NetworkConfig
10, // 32: api.config.ConfigRpc.PatchConfig:input_type -> api.config.PatchConfigRequest
12, // 33: api.config.ConfigRpc.GetConfig:input_type -> api.config.GetConfigRequest
11, // 34: api.config.ConfigRpc.PatchConfig:output_type -> api.config.PatchConfigResponse
13, // 35: api.config.ConfigRpc.GetConfig:output_type -> api.config.GetConfigResponse
34, // [34:36] is the sub-list for method output_type
32, // [32:34] is the sub-list for method input_type
32, // [32:32] is the sub-list for extension type_name
32, // [32:32] is the sub-list for extension extendee
0, // [0:32] is the sub-list for field type_name
}
func init() { file_api_config_proto_init() }
func file_api_config_proto_init() {
if File_api_config_proto != nil {
return
}
file_api_config_proto_msgTypes[0].OneofWrappers = []any{}
file_api_config_proto_msgTypes[5].OneofWrappers = []any{}
file_api_config_proto_msgTypes[6].OneofWrappers = []any{}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: unsafe.Slice(unsafe.StringData(file_api_config_proto_rawDesc), len(file_api_config_proto_rawDesc)),
NumEnums: 1,
NumMessages: 13,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_api_config_proto_goTypes,
DependencyIndexes: file_api_config_proto_depIdxs,
EnumInfos: file_api_config_proto_enumTypes,
MessageInfos: file_api_config_proto_msgTypes,
}.Build()
File_api_config_proto = out.File
file_api_config_proto_goTypes = nil
file_api_config_proto_depIdxs = nil
}