diff --git a/client/internal/connect.go b/client/internal/connect.go index d34d0aab0..44e85be53 100644 --- a/client/internal/connect.go +++ b/client/internal/connect.go @@ -26,6 +26,7 @@ import ( "github.com/netbirdio/netbird/iface" mgm "github.com/netbirdio/netbird/management/client" mgmProto "github.com/netbirdio/netbird/management/proto" + relayClient "github.com/netbirdio/netbird/relay/client" signal "github.com/netbirdio/netbird/signal/client" "github.com/netbirdio/netbird/util" "github.com/netbirdio/netbird/version" @@ -244,6 +245,12 @@ func (c *ConnectClient) run( c.statusRecorder.MarkSignalConnected() + relayManager := relayClient.NewManager(engineCtx, loginResp.GetWiretrusteeConfig().GetRelayAddress(), myPrivateKey.PublicKey().String()) + if err = relayManager.Serve(); err != nil { + log.Error(err) + return wrapErr(err) + } + peerConfig := loginResp.GetPeerConfig() engineConfig, err := createEngineConfig(myPrivateKey, c.config, peerConfig) @@ -253,7 +260,7 @@ func (c *ConnectClient) run( } c.engineMutex.Lock() - c.engine = NewEngineWithProbes(engineCtx, cancel, signalClient, mgmClient, engineConfig, mobileDependency, c.statusRecorder, mgmProbe, signalProbe, relayProbe, wgProbe) + c.engine = NewEngineWithProbes(engineCtx, cancel, signalClient, mgmClient, relayManager, engineConfig, mobileDependency, c.statusRecorder, mgmProbe, signalProbe, relayProbe, wgProbe) c.engineMutex.Unlock() err = c.engine.Start() diff --git a/client/internal/engine.go b/client/internal/engine.go index b09235714..a2f395ea0 100644 --- a/client/internal/engine.go +++ b/client/internal/engine.go @@ -35,6 +35,7 @@ import ( "github.com/netbirdio/netbird/iface/bind" mgm "github.com/netbirdio/netbird/management/client" mgmProto "github.com/netbirdio/netbird/management/proto" + relayClient "github.com/netbirdio/netbird/relay/client" "github.com/netbirdio/netbird/route" signal "github.com/netbirdio/netbird/signal/client" sProto "github.com/netbirdio/netbird/signal/proto" @@ -154,6 +155,8 @@ type Engine struct { wgProbe *Probe wgConnWorker sync.WaitGroup + + relayManager *relayClient.Manager } // Peer is an instance of the Connection Peer @@ -168,6 +171,7 @@ func NewEngine( clientCancel context.CancelFunc, signalClient signal.Client, mgmClient mgm.Client, + relayManager *relayClient.Manager, config *EngineConfig, mobileDep MobileDependency, statusRecorder *peer.Status, @@ -177,6 +181,7 @@ func NewEngine( clientCancel, signalClient, mgmClient, + relayManager, config, mobileDep, statusRecorder, @@ -193,6 +198,7 @@ func NewEngineWithProbes( clientCancel context.CancelFunc, signalClient signal.Client, mgmClient mgm.Client, + relayManager *relayClient.Manager, config *EngineConfig, mobileDep MobileDependency, statusRecorder *peer.Status, @@ -207,6 +213,7 @@ func NewEngineWithProbes( clientCancel: clientCancel, signal: signalClient, mgmClient: mgmClient, + relayManager: relayManager, peerConns: make(map[string]*peer.Conn), syncMsgMux: &sync.Mutex{}, config: config, @@ -493,10 +500,17 @@ func SignalOfferAnswer(offerAnswer peer.OfferAnswer, myKey wgtypes.Key, remoteKe t = sProto.Body_OFFER } - msg, err := signal.MarshalCredential(myKey, offerAnswer.WgListenPort, remoteKey, &signal.Credential{ - UFrag: offerAnswer.IceCredentials.UFrag, - Pwd: offerAnswer.IceCredentials.Pwd, - }, t, offerAnswer.RosenpassPubKey, offerAnswer.RosenpassAddr) + msg, err := signal.MarshalCredential( + myKey, + offerAnswer.WgListenPort, + remoteKey, &signal.Credential{ + UFrag: offerAnswer.IceCredentials.UFrag, + Pwd: offerAnswer.IceCredentials.Pwd, + }, + t, + offerAnswer.RosenpassPubKey, + offerAnswer.RosenpassAddr, + offerAnswer.RelaySrvAddress) if err != nil { return err } @@ -524,6 +538,8 @@ func (e *Engine) handleSync(update *mgmProto.SyncResponse) error { return err } + // todo update relay address in the relay manager + // todo update signal } @@ -987,7 +1003,7 @@ func (e *Engine) createPeerConn(pubKey string, allowedIPs string) (*peer.Conn, e RosenpassAddr: e.getRosenpassAddr(), } - peerConn, err := peer.NewConn(config, e.statusRecorder, e.wgProxyFactory, e.mobileDep.TunAdapter, e.mobileDep.IFaceDiscover) + peerConn, err := peer.NewConn(config, e.statusRecorder, e.wgProxyFactory, e.mobileDep.TunAdapter, e.mobileDep.IFaceDiscover, e.relayManager) if err != nil { return nil, err } @@ -1082,6 +1098,7 @@ func (e *Engine) receiveSignalEvents() { Version: msg.GetBody().GetNetBirdVersion(), RosenpassPubKey: rosenpassPubKey, RosenpassAddr: rosenpassAddr, + RelaySrvAddress: msg.GetBody().GetRelayServerAddress(), }) case sProto.Body_CANDIDATE: candidate, err := ice.UnmarshalCandidate(msg.GetBody().Payload) diff --git a/client/internal/peer/conn.go b/client/internal/peer/conn.go index c64c074a7..b2fb58855 100644 --- a/client/internal/peer/conn.go +++ b/client/internal/peer/conn.go @@ -19,6 +19,7 @@ import ( "github.com/netbirdio/netbird/client/internal/wgproxy" "github.com/netbirdio/netbird/iface" "github.com/netbirdio/netbird/iface/bind" + relayClient "github.com/netbirdio/netbird/relay/client" "github.com/netbirdio/netbird/route" sProto "github.com/netbirdio/netbird/signal/proto" nbnet "github.com/netbirdio/netbird/util/net" @@ -91,6 +92,9 @@ type OfferAnswer struct { // RosenpassAddr is the Rosenpass server address (IP:port) of the remote peer when receiving this message // This value is the local Rosenpass server address when sending the message RosenpassAddr string + + // relay server address + RelaySrvAddress string } // IceCredentials ICE protocol credentials struct @@ -138,6 +142,112 @@ type Conn struct { connID nbnet.ConnectionID beforeAddPeerHooks []BeforeAddPeerHookFunc afterRemovePeerHooks []AfterRemovePeerHookFunc + + relayManager *relayClient.Manager +} + +// NewConn creates a new not opened Conn to the remote peer. +// To establish a connection run Conn.Open +func NewConn(config ConnConfig, statusRecorder *Status, wgProxyFactory *wgproxy.Factory, adapter iface.TunAdapter, iFaceDiscover stdnet.ExternalIFaceDiscover, relayManager *relayClient.Manager) (*Conn, error) { + return &Conn{ + config: config, + mu: sync.Mutex{}, + status: StatusDisconnected, + closeCh: make(chan struct{}), + remoteOffersCh: make(chan OfferAnswer), + remoteAnswerCh: make(chan OfferAnswer), + statusRecorder: statusRecorder, + wgProxyFactory: wgProxyFactory, + adapter: adapter, + iFaceDiscover: iFaceDiscover, + relayManager: relayManager, + }, nil +} + +// Open opens connection to the remote peer starting ICE candidate gathering process. +// Blocks until connection has been closed or connection timeout. +// ConnStatus will be set accordingly +func (conn *Conn) Open(ctx context.Context) error { + log.Debugf("trying to connect to peer %s", conn.config.Key) + + peerState := State{ + PubKey: conn.config.Key, + IP: strings.Split(conn.config.WgConfig.AllowedIps, "/")[0], + ConnStatusUpdate: time.Now(), + ConnStatus: conn.status, + Mux: new(sync.RWMutex), + } + err := conn.statusRecorder.UpdatePeerState(peerState) + if err != nil { + log.Warnf("error while updating the state of peer %s,err: %v", conn.config.Key, err) + } + + defer func() { + err := conn.cleanup() + if err != nil { + log.Warnf("error while cleaning up peer connection %s: %v", conn.config.Key, err) + return + } + }() + + err = conn.sendOffer() + if err != nil { + return err + } + + log.Debugf("connection offer sent to peer %s, waiting for the confirmation", conn.config.Key) + + // Only continue once we got a connection confirmation from the remote peer. + // The connection timeout could have happened before a confirmation received from the remote. + // The connection could have also been closed externally (e.g. when we received an update from the management that peer shouldn't be connected) + remoteOfferAnswer, err := conn.waitForRemoteOfferConfirmation() + if err != nil { + return err + } + + log.Debugf("received connection confirmation from peer %s running version %s and with remote WireGuard listen port %d", + conn.config.Key, remoteOfferAnswer.Version, remoteOfferAnswer.WgListenPort) + + // at this point we received offer/answer and we are ready to gather candidates + conn.mu.Lock() + conn.status = StatusConnecting + conn.ctx, conn.notifyDisconnected = context.WithCancel(ctx) + defer conn.notifyDisconnected() + conn.mu.Unlock() + + peerState = State{ + PubKey: conn.config.Key, + ConnStatus: conn.status, + ConnStatusUpdate: time.Now(), + Mux: new(sync.RWMutex), + } + err = conn.statusRecorder.UpdatePeerState(peerState) + if err != nil { + log.Warnf("error while updating the state of peer %s,err: %v", conn.config.Key, err) + } + + // in edge case this function can block while the manager set up a new relay server connection + relayOperate := conn.setupRelayConnection(remoteOfferAnswer) + + err = conn.setupICEConnection(remoteOfferAnswer, relayOperate) + if err != nil { + log.Errorf("failed to setup ICE connection: %s", err) + if !relayOperate { + return err + } + } + + // wait until connection disconnected or has been closed externally (upper layer, e.g. engine) + err = conn.waitForDisconnection() + return err +} + +func (conn *Conn) AddBeforeAddPeerHook(hook BeforeAddPeerHookFunc) { + conn.beforeAddPeerHooks = append(conn.beforeAddPeerHooks, hook) +} + +func (conn *Conn) AddAfterRemovePeerHook(hook AfterRemovePeerHookFunc) { + conn.afterRemovePeerHooks = append(conn.afterRemovePeerHooks, hook) } // GetConf returns the connection config @@ -155,24 +265,126 @@ func (conn *Conn) UpdateStunTurn(turnStun []*stun.URI) { conn.config.StunTurn = turnStun } -// NewConn creates a new not opened Conn to the remote peer. -// To establish a connection run Conn.Open -func NewConn(config ConnConfig, statusRecorder *Status, wgProxyFactory *wgproxy.Factory, adapter iface.TunAdapter, iFaceDiscover stdnet.ExternalIFaceDiscover) (*Conn, error) { - return &Conn{ - config: config, - mu: sync.Mutex{}, - status: StatusDisconnected, - closeCh: make(chan struct{}), - remoteOffersCh: make(chan OfferAnswer), - remoteAnswerCh: make(chan OfferAnswer), - statusRecorder: statusRecorder, - wgProxyFactory: wgProxyFactory, - adapter: adapter, - iFaceDiscover: iFaceDiscover, - }, nil +// SetSignalOffer sets a handler function to be triggered by Conn when a new connection offer has to be signalled to the remote peer +func (conn *Conn) SetSignalOffer(handler func(offer OfferAnswer) error) { + conn.signalOffer = handler } -func (conn *Conn) reCreateAgent() error { +// SetOnConnected sets a handler function to be triggered by Conn when a new connection to a remote peer established +func (conn *Conn) SetOnConnected(handler func(remoteWireGuardKey string, remoteRosenpassPubKey []byte, wireGuardIP string, remoteRosenpassAddr string)) { + conn.onConnected = handler +} + +// SetOnDisconnected sets a handler function to be triggered by Conn when a connection to a remote disconnected +func (conn *Conn) SetOnDisconnected(handler func(remotePeer string, wgIP string)) { + conn.onDisconnected = handler +} + +// SetSignalAnswer sets a handler function to be triggered by Conn when a new connection answer has to be signalled to the remote peer +func (conn *Conn) SetSignalAnswer(handler func(answer OfferAnswer) error) { + conn.signalAnswer = handler +} + +// SetSignalCandidate sets a handler function to be triggered by Conn when a new ICE local connection candidate has to be signalled to the remote peer +func (conn *Conn) SetSignalCandidate(handler func(candidate ice.Candidate) error) { + conn.signalCandidate = handler +} + +// SetSendSignalMessage sets a handler function to be triggered by Conn when there is new message to send via signal +func (conn *Conn) SetSendSignalMessage(handler func(message *sProto.Message) error) { + conn.sendSignalMessage = handler +} + +// Close closes this peer Conn issuing a close event to the Conn closeCh +func (conn *Conn) Close() error { + conn.mu.Lock() + defer conn.mu.Unlock() + select { + case conn.closeCh <- struct{}{}: + return nil + default: + // probably could happen when peer has been added and removed right after not even starting to connect + // todo further investigate + // this really happens due to unordered messages coming from management + // more importantly it causes inconsistency -> 2 Conn objects for the same peer + // e.g. this flow: + // update from management has peers: [1,2,3,4] + // engine creates a Conn for peers: [1,2,3,4] and schedules Open in ~1sec + // before conn.Open() another update from management arrives with peers: [1,2,3] + // engine removes peer 4 and calls conn.Close() which does nothing (this default clause) + // before conn.Open() another update from management arrives with peers: [1,2,3,4,5] + // engine adds a new Conn for 4 and 5 + // therefore peer 4 has 2 Conn objects + log.Warnf("Connection has been already closed or attempted closing not started connection %s", conn.config.Key) + return NewConnectionAlreadyClosed(conn.config.Key) + } +} + +// Status returns current status of the Conn +func (conn *Conn) Status() ConnStatus { + conn.mu.Lock() + defer conn.mu.Unlock() + return conn.status +} + +// OnRemoteOffer handles an offer from the remote peer and returns true if the message was accepted, false otherwise +// doesn't block, discards the message if connection wasn't ready +func (conn *Conn) OnRemoteOffer(offer OfferAnswer) bool { + log.Debugf("OnRemoteOffer from peer %s on status %s", conn.config.Key, conn.status.String()) + + select { + case conn.remoteOffersCh <- offer: + return true + default: + log.Debugf("OnRemoteOffer skipping message from peer %s on status %s because is not ready", conn.config.Key, conn.status.String()) + // connection might not be ready yet to receive so we ignore the message + return false + } +} + +// OnRemoteAnswer handles an offer from the remote peer and returns true if the message was accepted, false otherwise +// doesn't block, discards the message if connection wasn't ready +func (conn *Conn) OnRemoteAnswer(answer OfferAnswer) bool { + log.Debugf("OnRemoteAnswer from peer %s on status %s", conn.config.Key, conn.status.String()) + + select { + case conn.remoteAnswerCh <- answer: + return true + default: + // connection might not be ready yet to receive so we ignore the message + log.Debugf("OnRemoteAnswer skipping message from peer %s on status %s because is not ready", conn.config.Key, conn.status.String()) + return false + } +} + +// OnRemoteCandidate Handles ICE connection Candidate provided by the remote peer. +func (conn *Conn) OnRemoteCandidate(candidate ice.Candidate, haRoutes route.HAMap) { + log.Debugf("OnRemoteCandidate from peer %s -> %s", conn.config.Key, candidate.String()) + go func() { + conn.mu.Lock() + defer conn.mu.Unlock() + + if conn.agent == nil { + return + } + + if candidateViaRoutes(candidate, haRoutes) { + return + } + + err := conn.agent.AddRemoteCandidate(candidate) + if err != nil { + log.Errorf("error while handling remote candidate from peer %s", conn.config.Key) + return + } + }() +} + +func (conn *Conn) GetKey() string { + return conn.config.Key +} + +func (conn *Conn) reCreateAgent(relaySupport []ice.CandidateType) error { conn.mu.Lock() defer conn.mu.Unlock() @@ -192,7 +404,7 @@ func (conn *Conn) reCreateAgent() error { MulticastDNSMode: ice.MulticastDNSModeDisabled, NetworkTypes: []ice.NetworkType{ice.NetworkTypeUDP4, ice.NetworkTypeUDP6}, Urls: conn.config.StunTurn, - CandidateTypes: conn.candidateTypes(), + CandidateTypes: candidateTypes(), FailedTimeout: &failedTimeout, InterfaceFilter: stdnet.InterfaceFilter(conn.config.InterfaceBlackList), UDPMux: conn.config.UDPMux, @@ -242,150 +454,72 @@ func (conn *Conn) reCreateAgent() error { return nil } -func (conn *Conn) candidateTypes() []ice.CandidateType { - if hasICEForceRelayConn() { - return []ice.CandidateType{ice.CandidateTypeRelay} - } - // TODO: remove this once we have refactored userspace proxy into the bind package - if runtime.GOOS == "ios" { - return []ice.CandidateType{ice.CandidateTypeHost, ice.CandidateTypeServerReflexive} - } - return []ice.CandidateType{ice.CandidateTypeHost, ice.CandidateTypeServerReflexive, ice.CandidateTypeRelay} -} +func (conn *Conn) configureWgConnectionForRelay(remoteConn net.Conn, remoteRosenpassPubKey []byte, remoteRosenpassAddr string) error { + conn.mu.Lock() + defer conn.mu.Unlock() -// Open opens connection to the remote peer starting ICE candidate gathering process. -// Blocks until connection has been closed or connection timeout. -// ConnStatus will be set accordingly -func (conn *Conn) Open(ctx context.Context) error { - log.Debugf("trying to connect to peer %s", conn.config.Key) + conn.wgProxy = conn.wgProxyFactory.GetProxy(conn.ctx) + endpoint, err := conn.wgProxy.AddTurnConn(remoteConn) + if err != nil { + return err + } + + endpointUdpAddr, _ := net.ResolveUDPAddr(endpoint.Network(), endpoint.String()) + log.Debugf("Conn resolved IP for %s: %s", endpoint, endpointUdpAddr.IP) + + conn.connID = nbnet.GenerateConnID() + for _, hook := range conn.beforeAddPeerHooks { + if err := hook(conn.connID, endpointUdpAddr.IP); err != nil { + log.Errorf("Before add peer hook failed: %v", err) + } + } + + err = conn.config.WgConfig.WgInterface.UpdatePeer(conn.config.WgConfig.RemoteKey, conn.config.WgConfig.AllowedIps, defaultWgKeepAlive, endpointUdpAddr, conn.config.WgConfig.PreSharedKey) + if err != nil { + if conn.wgProxy != nil { + if err := conn.wgProxy.CloseConn(); err != nil { + log.Warnf("Failed to close relay connection: %v", err) + } + } + // todo: is this nil correct? + return nil + } + + conn.status = StatusConnected peerState := State{ - PubKey: conn.config.Key, - IP: strings.Split(conn.config.WgConfig.AllowedIps, "/")[0], - ConnStatusUpdate: time.Now(), - ConnStatus: conn.status, - Mux: new(sync.RWMutex), - } - err := conn.statusRecorder.UpdatePeerState(peerState) - if err != nil { - log.Warnf("error while updating the state of peer %s,err: %v", conn.config.Key, err) + PubKey: conn.config.Key, + ConnStatus: StatusConnected, + ConnStatusUpdate: time.Now(), + LocalIceCandidateType: "", + RemoteIceCandidateType: "", + LocalIceCandidateEndpoint: "", + RemoteIceCandidateEndpoint: "", + Direct: false, + RosenpassEnabled: isRosenpassEnabled(remoteRosenpassPubKey), + Mux: new(sync.RWMutex), + Relayed: true, } - defer func() { - err := conn.cleanup() - if err != nil { - log.Warnf("error while cleaning up peer connection %s: %v", conn.config.Key, err) - return - } - }() - - err = conn.reCreateAgent() - if err != nil { - return err - } - - err = conn.sendOffer() - if err != nil { - return err - } - - log.Debugf("connection offer sent to peer %s, waiting for the confirmation", conn.config.Key) - - // Only continue once we got a connection confirmation from the remote peer. - // The connection timeout could have happened before a confirmation received from the remote. - // The connection could have also been closed externally (e.g. when we received an update from the management that peer shouldn't be connected) - var remoteOfferAnswer OfferAnswer - select { - case remoteOfferAnswer = <-conn.remoteOffersCh: - // received confirmation from the remote peer -> ready to proceed - err = conn.sendAnswer() - if err != nil { - return err - } - case remoteOfferAnswer = <-conn.remoteAnswerCh: - case <-time.After(conn.config.Timeout): - return NewConnectionTimeoutError(conn.config.Key, conn.config.Timeout) - case <-conn.closeCh: - // closed externally - return NewConnectionClosedError(conn.config.Key) - } - - log.Debugf("received connection confirmation from peer %s running version %s and with remote WireGuard listen port %d", - conn.config.Key, remoteOfferAnswer.Version, remoteOfferAnswer.WgListenPort) - - // at this point we received offer/answer and we are ready to gather candidates - conn.mu.Lock() - conn.status = StatusConnecting - conn.ctx, conn.notifyDisconnected = context.WithCancel(ctx) - defer conn.notifyDisconnected() - conn.mu.Unlock() - - peerState = State{ - PubKey: conn.config.Key, - ConnStatus: conn.status, - ConnStatusUpdate: time.Now(), - Mux: new(sync.RWMutex), - } err = conn.statusRecorder.UpdatePeerState(peerState) if err != nil { - log.Warnf("error while updating the state of peer %s,err: %v", conn.config.Key, err) + log.Warnf("unable to save peer's state, got error: %v", err) } - err = conn.agent.GatherCandidates() + _, ipNet, err := net.ParseCIDR(conn.config.WgConfig.AllowedIps) if err != nil { - return fmt.Errorf("gather candidates: %v", err) + return nil } - // will block until connection succeeded - // but it won't release if ICE Agent went into Disconnected or Failed state, - // so we have to cancel it with the provided context once agent detected a broken connection - isControlling := conn.config.LocalKey > conn.config.Key - var remoteConn *ice.Conn - if isControlling { - remoteConn, err = conn.agent.Dial(conn.ctx, remoteOfferAnswer.IceCredentials.UFrag, remoteOfferAnswer.IceCredentials.Pwd) - } else { - remoteConn, err = conn.agent.Accept(conn.ctx, remoteOfferAnswer.IceCredentials.UFrag, remoteOfferAnswer.IceCredentials.Pwd) - } - if err != nil { - return err + if runtime.GOOS == "ios" { + runtime.GC() } - // dynamically set remote WireGuard port if other side specified a different one from the default one - remoteWgPort := iface.DefaultWgPort - if remoteOfferAnswer.WgListenPort != 0 { - remoteWgPort = remoteOfferAnswer.WgListenPort + if conn.onConnected != nil { + conn.onConnected(conn.config.Key, remoteRosenpassPubKey, ipNet.IP.String(), remoteRosenpassAddr) } - // the ice connection has been established successfully so we are ready to start the proxy - remoteAddr, err := conn.configureConnection(remoteConn, remoteWgPort, remoteOfferAnswer.RosenpassPubKey, - remoteOfferAnswer.RosenpassAddr) - if err != nil { - return err - } - - log.Infof("connected to peer %s, endpoint address: %s", conn.config.Key, remoteAddr.String()) - - // wait until connection disconnected or has been closed externally (upper layer, e.g. engine) - select { - case <-conn.closeCh: - // closed externally - return NewConnectionClosedError(conn.config.Key) - case <-conn.ctx.Done(): - // disconnected from the remote peer - return NewConnectionDisconnectedError(conn.config.Key) - } -} - -func isRelayCandidate(candidate ice.Candidate) bool { - return candidate.Type() == ice.CandidateTypeRelay -} - -func (conn *Conn) AddBeforeAddPeerHook(hook BeforeAddPeerHookFunc) { - conn.beforeAddPeerHooks = append(conn.beforeAddPeerHooks, hook) -} - -func (conn *Conn) AddAfterRemovePeerHook(hook AfterRemovePeerHookFunc) { - conn.afterRemovePeerHooks = append(conn.afterRemovePeerHooks, hook) + return nil } // configureConnection starts proxying traffic from/to local Wireguard and sets connection status to StatusConnected @@ -495,6 +629,17 @@ func (conn *Conn) punchRemoteWGPort(pair *ice.CandidatePair, remoteWgPort int) { } } +func (conn *Conn) waitForDisconnection() error { + select { + case <-conn.closeCh: + // closed externally + return NewConnectionClosedError(conn.config.Key) + case <-conn.ctx.Done(): + // disconnected from the remote peer + return NewConnectionDisconnectedError(conn.config.Key) + } +} + // cleanup closes all open resources and sets status to StatusDisconnected func (conn *Conn) cleanup() error { log.Debugf("trying to cleanup %s", conn.config.Key) @@ -565,36 +710,6 @@ func (conn *Conn) cleanup() error { return err3 } -// SetSignalOffer sets a handler function to be triggered by Conn when a new connection offer has to be signalled to the remote peer -func (conn *Conn) SetSignalOffer(handler func(offer OfferAnswer) error) { - conn.signalOffer = handler -} - -// SetOnConnected sets a handler function to be triggered by Conn when a new connection to a remote peer established -func (conn *Conn) SetOnConnected(handler func(remoteWireGuardKey string, remoteRosenpassPubKey []byte, wireGuardIP string, remoteRosenpassAddr string)) { - conn.onConnected = handler -} - -// SetOnDisconnected sets a handler function to be triggered by Conn when a connection to a remote disconnected -func (conn *Conn) SetOnDisconnected(handler func(remotePeer string, wgIP string)) { - conn.onDisconnected = handler -} - -// SetSignalAnswer sets a handler function to be triggered by Conn when a new connection answer has to be signalled to the remote peer -func (conn *Conn) SetSignalAnswer(handler func(answer OfferAnswer) error) { - conn.signalAnswer = handler -} - -// SetSignalCandidate sets a handler function to be triggered by Conn when a new ICE local connection candidate has to be signalled to the remote peer -func (conn *Conn) SetSignalCandidate(handler func(candidate ice.Candidate) error) { - conn.signalCandidate = handler -} - -// SetSendSignalMessage sets a handler function to be triggered by Conn when there is new message to send via signal -func (conn *Conn) SetSendSignalMessage(handler func(message *sProto.Message) error) { - conn.sendSignalMessage = handler -} - // onICECandidate is a callback attached to an ICE Agent to receive new local connection candidates // and then signals them to the remote peer func (conn *Conn) onICECandidate(candidate ice.Candidate) { @@ -679,106 +794,20 @@ func (conn *Conn) sendOffer() error { if err != nil { return err } - err = conn.signalOffer(OfferAnswer{ + oa := OfferAnswer{ IceCredentials: IceCredentials{localUFrag, localPwd}, WgListenPort: conn.config.LocalWgPort, Version: version.NetbirdVersion(), RosenpassPubKey: conn.config.RosenpassPubKey, RosenpassAddr: conn.config.RosenpassAddr, - }) - if err != nil { - return err } - return nil -} -// Close closes this peer Conn issuing a close event to the Conn closeCh -func (conn *Conn) Close() error { - conn.mu.Lock() - defer conn.mu.Unlock() - select { - case conn.closeCh <- struct{}{}: - return nil - default: - // probably could happen when peer has been added and removed right after not even starting to connect - // todo further investigate - // this really happens due to unordered messages coming from management - // more importantly it causes inconsistency -> 2 Conn objects for the same peer - // e.g. this flow: - // update from management has peers: [1,2,3,4] - // engine creates a Conn for peers: [1,2,3,4] and schedules Open in ~1sec - // before conn.Open() another update from management arrives with peers: [1,2,3] - // engine removes peer 4 and calls conn.Close() which does nothing (this default clause) - // before conn.Open() another update from management arrives with peers: [1,2,3,4,5] - // engine adds a new Conn for 4 and 5 - // therefore peer 4 has 2 Conn objects - log.Warnf("Connection has been already closed or attempted closing not started connection %s", conn.config.Key) - return NewConnectionAlreadyClosed(conn.config.Key) + relayIPAddress, err := conn.relayManager.RelayAddress() + if err == nil { + oa.RelaySrvAddress = relayIPAddress.String() } -} -// Status returns current status of the Conn -func (conn *Conn) Status() ConnStatus { - conn.mu.Lock() - defer conn.mu.Unlock() - return conn.status -} - -// OnRemoteOffer handles an offer from the remote peer and returns true if the message was accepted, false otherwise -// doesn't block, discards the message if connection wasn't ready -func (conn *Conn) OnRemoteOffer(offer OfferAnswer) bool { - log.Debugf("OnRemoteOffer from peer %s on status %s", conn.config.Key, conn.status.String()) - - select { - case conn.remoteOffersCh <- offer: - return true - default: - log.Debugf("OnRemoteOffer skipping message from peer %s on status %s because is not ready", conn.config.Key, conn.status.String()) - // connection might not be ready yet to receive so we ignore the message - return false - } -} - -// OnRemoteAnswer handles an offer from the remote peer and returns true if the message was accepted, false otherwise -// doesn't block, discards the message if connection wasn't ready -func (conn *Conn) OnRemoteAnswer(answer OfferAnswer) bool { - log.Debugf("OnRemoteAnswer from peer %s on status %s", conn.config.Key, conn.status.String()) - - select { - case conn.remoteAnswerCh <- answer: - return true - default: - // connection might not be ready yet to receive so we ignore the message - log.Debugf("OnRemoteAnswer skipping message from peer %s on status %s because is not ready", conn.config.Key, conn.status.String()) - return false - } -} - -// OnRemoteCandidate Handles ICE connection Candidate provided by the remote peer. -func (conn *Conn) OnRemoteCandidate(candidate ice.Candidate, haRoutes route.HAMap) { - log.Debugf("OnRemoteCandidate from peer %s -> %s", conn.config.Key, candidate.String()) - go func() { - conn.mu.Lock() - defer conn.mu.Unlock() - - if conn.agent == nil { - return - } - - if candidateViaRoutes(candidate, haRoutes) { - return - } - - err := conn.agent.AddRemoteCandidate(candidate) - if err != nil { - log.Errorf("error while handling remote candidate from peer %s", conn.config.Key) - return - } - }() -} - -func (conn *Conn) GetKey() string { - return conn.config.Key + return conn.signalOffer(oa) } func (conn *Conn) shouldSendExtraSrflxCandidate(candidate ice.Candidate) bool { @@ -788,6 +817,109 @@ func (conn *Conn) shouldSendExtraSrflxCandidate(candidate ice.Candidate) bool { return false } +func (conn *Conn) waitForRemoteOfferConfirmation() (*OfferAnswer, error) { + var remoteOfferAnswer OfferAnswer + select { + case remoteOfferAnswer = <-conn.remoteOffersCh: + // received confirmation from the remote peer -> ready to proceed + err := conn.sendAnswer() + if err != nil { + return nil, err + } + case remoteOfferAnswer = <-conn.remoteAnswerCh: + case <-time.After(conn.config.Timeout): + return nil, NewConnectionTimeoutError(conn.config.Key, conn.config.Timeout) + case <-conn.closeCh: + // closed externally + return nil, NewConnectionClosedError(conn.config.Key) + } + + return &remoteOfferAnswer, nil +} + +func (conn *Conn) turnAgentDial(remoteOfferAnswer *OfferAnswer) (*ice.Conn, error) { + isControlling := conn.config.LocalKey > conn.config.Key + if isControlling { + return conn.agent.Dial(conn.ctx, remoteOfferAnswer.IceCredentials.UFrag, remoteOfferAnswer.IceCredentials.Pwd) + } else { + return conn.agent.Accept(conn.ctx, remoteOfferAnswer.IceCredentials.UFrag, remoteOfferAnswer.IceCredentials.Pwd) + } +} + +func (conn *Conn) setupRelayConnection(remoteOfferAnswer *OfferAnswer) bool { + if !isRelaySupported(remoteOfferAnswer) { + return false + } + + currentRelayAddress, err := conn.relayManager.RelayAddress() + if err != nil { + return false + } + + conn.preferredRelayServer(currentRelayAddress.String(), remoteOfferAnswer.RelaySrvAddress) + relayConn, err := conn.relayManager.OpenConn(remoteOfferAnswer.RelaySrvAddress, conn.config.Key) + if err != nil { + return false + } + + err = conn.configureWgConnectionForRelay(relayConn, remoteOfferAnswer.RosenpassPubKey, remoteOfferAnswer.RosenpassAddr) + if err != nil { + log.Errorf("failed to configure WireGuard connection for relay: %s", err) + return false + } + return true +} + +func (conn *Conn) preferredRelayServer(myRelayAddress, remoteRelayAddress string) string { + if conn.config.LocalKey > conn.config.Key { + return myRelayAddress + } + return remoteRelayAddress +} + +func (conn *Conn) setupICEConnection(remoteOfferAnswer *OfferAnswer, relayOperate bool) error { + var preferredCandidateTypes []ice.CandidateType + if relayOperate { + preferredCandidateTypes = candidateTypesP2P() + } else { + preferredCandidateTypes = candidateTypes() + } + + err := conn.reCreateAgent(preferredCandidateTypes) + if err != nil { + return err + } + + err = conn.agent.GatherCandidates() + if err != nil { + return fmt.Errorf("gather candidates: %v", err) + } + + // will block until connection succeeded + // but it won't release if ICE Agent went into Disconnected or Failed state, + // so we have to cancel it with the provided context once agent detected a broken connection + remoteConn, err := conn.turnAgentDial(remoteOfferAnswer) + if err != nil { + return err + } + + // dynamically set remote WireGuard port if other side specified a different one from the default one + remoteWgPort := iface.DefaultWgPort + if remoteOfferAnswer.WgListenPort != 0 { + remoteWgPort = remoteOfferAnswer.WgListenPort + } + + // the ice connection has been established successfully so we are ready to start the proxy + remoteAddr, err := conn.configureConnection(remoteConn, remoteWgPort, remoteOfferAnswer.RosenpassPubKey, + remoteOfferAnswer.RosenpassAddr) + if err != nil { + return err + } + + log.Infof("connected to peer %s, endpoint address: %s", conn.config.Key, remoteAddr.String()) + return nil +} + func extraSrflxCandidate(candidate ice.Candidate) (*ice.CandidateServerReflexive, error) { relatedAdd := candidate.RelatedAddress() return ice.NewCandidateServerReflexive(&ice.CandidateServerReflexiveConfig{ @@ -827,3 +959,31 @@ func candidateViaRoutes(candidate ice.Candidate, clientRoutes route.HAMap) bool } return false } + +func candidateTypes() []ice.CandidateType { + if hasICEForceRelayConn() { + return []ice.CandidateType{ice.CandidateTypeRelay} + } + // TODO: remove this once we have refactored userspace proxy into the bind package + if runtime.GOOS == "ios" { + return []ice.CandidateType{ice.CandidateTypeHost, ice.CandidateTypeServerReflexive} + } + return []ice.CandidateType{ice.CandidateTypeHost, ice.CandidateTypeServerReflexive, ice.CandidateTypeRelay} +} + +func candidateTypesP2P() []ice.CandidateType { + return []ice.CandidateType{ice.CandidateTypeHost, ice.CandidateTypeServerReflexive} +} + +func isRelayCandidate(candidate ice.Candidate) bool { + return candidate.Type() == ice.CandidateTypeRelay +} + +// todo check my side too +func isRelaySupported(answer *OfferAnswer) bool { + return answer.RelaySrvAddress != "" +} + +func isRosenpassEnabled(remoteRosenpassPubKey []byte) bool { + return remoteRosenpassPubKey != nil +} diff --git a/client/internal/wgproxy/factory_linux.go b/client/internal/wgproxy/factory_linux.go index 0262994d7..79f5cd548 100644 --- a/client/internal/wgproxy/factory_linux.go +++ b/client/internal/wgproxy/factory_linux.go @@ -4,20 +4,10 @@ package wgproxy import ( "context" - - log "github.com/sirupsen/logrus" ) func NewFactory(ctx context.Context, wgPort int) *Factory { f := &Factory{wgPort: wgPort} - ebpfProxy := NewWGEBPFProxy(ctx, wgPort) - err := ebpfProxy.listen() - if err != nil { - log.Warnf("failed to initialize ebpf proxy, fallback to user space proxy: %s", err) - return f - } - - f.ebpfProxy = ebpfProxy return f } diff --git a/management/proto/management.pb.go b/management/proto/management.pb.go index 18077ea89..f5dab4d81 100644 --- a/management/proto/management.pb.go +++ b/management/proto/management.pb.go @@ -1,25 +1,25 @@ // Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.26.0 -// protoc v4.24.3 // source: management.proto package proto import ( - protoreflect "google.golang.org/protobuf/reflect/protoreflect" - protoimpl "google.golang.org/protobuf/runtime/protoimpl" + fmt "fmt" + proto "github.com/golang/protobuf/proto" timestamppb "google.golang.org/protobuf/types/known/timestamppb" - reflect "reflect" - sync "sync" + math "math" ) -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) -) +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the proto package it is being compiled against. +// A compilation error at this line likely means your copy of the +// proto package needs to be updated. +const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type HostConfig_Protocol int32 @@ -31,49 +31,28 @@ const ( HostConfig_DTLS HostConfig_Protocol = 4 ) -// Enum value maps for HostConfig_Protocol. -var ( - HostConfig_Protocol_name = map[int32]string{ - 0: "UDP", - 1: "TCP", - 2: "HTTP", - 3: "HTTPS", - 4: "DTLS", - } - HostConfig_Protocol_value = map[string]int32{ - "UDP": 0, - "TCP": 1, - "HTTP": 2, - "HTTPS": 3, - "DTLS": 4, - } -) +var HostConfig_Protocol_name = map[int32]string{ + 0: "UDP", + 1: "TCP", + 2: "HTTP", + 3: "HTTPS", + 4: "DTLS", +} -func (x HostConfig_Protocol) Enum() *HostConfig_Protocol { - p := new(HostConfig_Protocol) - *p = x - return p +var HostConfig_Protocol_value = map[string]int32{ + "UDP": 0, + "TCP": 1, + "HTTP": 2, + "HTTPS": 3, + "DTLS": 4, } func (x HostConfig_Protocol) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(HostConfig_Protocol_name, int32(x)) } -func (HostConfig_Protocol) Descriptor() protoreflect.EnumDescriptor { - return file_management_proto_enumTypes[0].Descriptor() -} - -func (HostConfig_Protocol) Type() protoreflect.EnumType { - return &file_management_proto_enumTypes[0] -} - -func (x HostConfig_Protocol) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use HostConfig_Protocol.Descriptor instead. func (HostConfig_Protocol) EnumDescriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{11, 0} + return fileDescriptor_edc174f991dc0a25, []int{11, 0} } type DeviceAuthorizationFlowProvider int32 @@ -82,41 +61,20 @@ const ( DeviceAuthorizationFlow_HOSTED DeviceAuthorizationFlowProvider = 0 ) -// Enum value maps for DeviceAuthorizationFlowProvider. -var ( - DeviceAuthorizationFlowProvider_name = map[int32]string{ - 0: "HOSTED", - } - DeviceAuthorizationFlowProvider_value = map[string]int32{ - "HOSTED": 0, - } -) +var DeviceAuthorizationFlowProvider_name = map[int32]string{ + 0: "HOSTED", +} -func (x DeviceAuthorizationFlowProvider) Enum() *DeviceAuthorizationFlowProvider { - p := new(DeviceAuthorizationFlowProvider) - *p = x - return p +var DeviceAuthorizationFlowProvider_value = map[string]int32{ + "HOSTED": 0, } func (x DeviceAuthorizationFlowProvider) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(DeviceAuthorizationFlowProvider_name, int32(x)) } -func (DeviceAuthorizationFlowProvider) Descriptor() protoreflect.EnumDescriptor { - return file_management_proto_enumTypes[1].Descriptor() -} - -func (DeviceAuthorizationFlowProvider) Type() protoreflect.EnumType { - return &file_management_proto_enumTypes[1] -} - -func (x DeviceAuthorizationFlowProvider) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DeviceAuthorizationFlowProvider.Descriptor instead. func (DeviceAuthorizationFlowProvider) EnumDescriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{18, 0} + return fileDescriptor_edc174f991dc0a25, []int{18, 0} } type FirewallRuleDirection int32 @@ -126,43 +84,22 @@ const ( FirewallRule_OUT FirewallRuleDirection = 1 ) -// Enum value maps for FirewallRuleDirection. -var ( - FirewallRuleDirection_name = map[int32]string{ - 0: "IN", - 1: "OUT", - } - FirewallRuleDirection_value = map[string]int32{ - "IN": 0, - "OUT": 1, - } -) +var FirewallRuleDirection_name = map[int32]string{ + 0: "IN", + 1: "OUT", +} -func (x FirewallRuleDirection) Enum() *FirewallRuleDirection { - p := new(FirewallRuleDirection) - *p = x - return p +var FirewallRuleDirection_value = map[string]int32{ + "IN": 0, + "OUT": 1, } func (x FirewallRuleDirection) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(FirewallRuleDirection_name, int32(x)) } -func (FirewallRuleDirection) Descriptor() protoreflect.EnumDescriptor { - return file_management_proto_enumTypes[2].Descriptor() -} - -func (FirewallRuleDirection) Type() protoreflect.EnumType { - return &file_management_proto_enumTypes[2] -} - -func (x FirewallRuleDirection) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use FirewallRuleDirection.Descriptor instead. func (FirewallRuleDirection) EnumDescriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{28, 0} + return fileDescriptor_edc174f991dc0a25, []int{28, 0} } type FirewallRuleAction int32 @@ -172,43 +109,22 @@ const ( FirewallRule_DROP FirewallRuleAction = 1 ) -// Enum value maps for FirewallRuleAction. -var ( - FirewallRuleAction_name = map[int32]string{ - 0: "ACCEPT", - 1: "DROP", - } - FirewallRuleAction_value = map[string]int32{ - "ACCEPT": 0, - "DROP": 1, - } -) +var FirewallRuleAction_name = map[int32]string{ + 0: "ACCEPT", + 1: "DROP", +} -func (x FirewallRuleAction) Enum() *FirewallRuleAction { - p := new(FirewallRuleAction) - *p = x - return p +var FirewallRuleAction_value = map[string]int32{ + "ACCEPT": 0, + "DROP": 1, } func (x FirewallRuleAction) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(FirewallRuleAction_name, int32(x)) } -func (FirewallRuleAction) Descriptor() protoreflect.EnumDescriptor { - return file_management_proto_enumTypes[3].Descriptor() -} - -func (FirewallRuleAction) Type() protoreflect.EnumType { - return &file_management_proto_enumTypes[3] -} - -func (x FirewallRuleAction) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use FirewallRuleAction.Descriptor instead. func (FirewallRuleAction) EnumDescriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{28, 1} + return fileDescriptor_edc174f991dc0a25, []int{28, 1} } type FirewallRuleProtocol int32 @@ -221,161 +137,121 @@ const ( FirewallRule_ICMP FirewallRuleProtocol = 4 ) -// Enum value maps for FirewallRuleProtocol. -var ( - FirewallRuleProtocol_name = map[int32]string{ - 0: "UNKNOWN", - 1: "ALL", - 2: "TCP", - 3: "UDP", - 4: "ICMP", - } - FirewallRuleProtocol_value = map[string]int32{ - "UNKNOWN": 0, - "ALL": 1, - "TCP": 2, - "UDP": 3, - "ICMP": 4, - } -) +var FirewallRuleProtocol_name = map[int32]string{ + 0: "UNKNOWN", + 1: "ALL", + 2: "TCP", + 3: "UDP", + 4: "ICMP", +} -func (x FirewallRuleProtocol) Enum() *FirewallRuleProtocol { - p := new(FirewallRuleProtocol) - *p = x - return p +var FirewallRuleProtocol_value = map[string]int32{ + "UNKNOWN": 0, + "ALL": 1, + "TCP": 2, + "UDP": 3, + "ICMP": 4, } func (x FirewallRuleProtocol) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) + return proto.EnumName(FirewallRuleProtocol_name, int32(x)) } -func (FirewallRuleProtocol) Descriptor() protoreflect.EnumDescriptor { - return file_management_proto_enumTypes[4].Descriptor() -} - -func (FirewallRuleProtocol) Type() protoreflect.EnumType { - return &file_management_proto_enumTypes[4] -} - -func (x FirewallRuleProtocol) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use FirewallRuleProtocol.Descriptor instead. func (FirewallRuleProtocol) EnumDescriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{28, 2} + return fileDescriptor_edc174f991dc0a25, []int{28, 2} } type EncryptedMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Wireguard public key WgPubKey string `protobuf:"bytes,1,opt,name=wgPubKey,proto3" json:"wgPubKey,omitempty"` // encrypted message Body Body []byte `protobuf:"bytes,2,opt,name=body,proto3" json:"body,omitempty"` // Version of the Wiretrustee Management Service protocol - Version int32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"` + Version int32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *EncryptedMessage) Reset() { - *x = EncryptedMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EncryptedMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EncryptedMessage) ProtoMessage() {} - -func (x *EncryptedMessage) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[0] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use EncryptedMessage.ProtoReflect.Descriptor instead. +func (m *EncryptedMessage) Reset() { *m = EncryptedMessage{} } +func (m *EncryptedMessage) String() string { return proto.CompactTextString(m) } +func (*EncryptedMessage) ProtoMessage() {} func (*EncryptedMessage) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{0} + return fileDescriptor_edc174f991dc0a25, []int{0} } -func (x *EncryptedMessage) GetWgPubKey() string { - if x != nil { - return x.WgPubKey +func (m *EncryptedMessage) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_EncryptedMessage.Unmarshal(m, b) +} +func (m *EncryptedMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_EncryptedMessage.Marshal(b, m, deterministic) +} +func (m *EncryptedMessage) XXX_Merge(src proto.Message) { + xxx_messageInfo_EncryptedMessage.Merge(m, src) +} +func (m *EncryptedMessage) XXX_Size() int { + return xxx_messageInfo_EncryptedMessage.Size(m) +} +func (m *EncryptedMessage) XXX_DiscardUnknown() { + xxx_messageInfo_EncryptedMessage.DiscardUnknown(m) +} + +var xxx_messageInfo_EncryptedMessage proto.InternalMessageInfo + +func (m *EncryptedMessage) GetWgPubKey() string { + if m != nil { + return m.WgPubKey } return "" } -func (x *EncryptedMessage) GetBody() []byte { - if x != nil { - return x.Body +func (m *EncryptedMessage) GetBody() []byte { + if m != nil { + return m.Body } return nil } -func (x *EncryptedMessage) GetVersion() int32 { - if x != nil { - return x.Version +func (m *EncryptedMessage) GetVersion() int32 { + if m != nil { + return m.Version } return 0 } type SyncRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SyncRequest) Reset() { - *x = SyncRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SyncRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SyncRequest) ProtoMessage() {} - -func (x *SyncRequest) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SyncRequest.ProtoReflect.Descriptor instead. +func (m *SyncRequest) Reset() { *m = SyncRequest{} } +func (m *SyncRequest) String() string { return proto.CompactTextString(m) } +func (*SyncRequest) ProtoMessage() {} func (*SyncRequest) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{1} + return fileDescriptor_edc174f991dc0a25, []int{1} } +func (m *SyncRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SyncRequest.Unmarshal(m, b) +} +func (m *SyncRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SyncRequest.Marshal(b, m, deterministic) +} +func (m *SyncRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_SyncRequest.Merge(m, src) +} +func (m *SyncRequest) XXX_Size() int { + return xxx_messageInfo_SyncRequest.Size(m) +} +func (m *SyncRequest) XXX_DiscardUnknown() { + xxx_messageInfo_SyncRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_SyncRequest proto.InternalMessageInfo + // SyncResponse represents a state that should be applied to the local peer (e.g. Wiretrustee servers config as well as local peer and remote peers configs) type SyncResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Global config WiretrusteeConfig *WiretrusteeConfig `protobuf:"bytes,1,opt,name=wiretrusteeConfig,proto3" json:"wiretrusteeConfig,omitempty"` // Deprecated. Use NetworkMap.PeerConfig @@ -384,82 +260,74 @@ type SyncResponse struct { RemotePeers []*RemotePeerConfig `protobuf:"bytes,3,rep,name=remotePeers,proto3" json:"remotePeers,omitempty"` // Indicates whether remotePeers array is empty or not to bypass protobuf null and empty array equality. // Deprecated. Use NetworkMap.remotePeersIsEmpty - RemotePeersIsEmpty bool `protobuf:"varint,4,opt,name=remotePeersIsEmpty,proto3" json:"remotePeersIsEmpty,omitempty"` - NetworkMap *NetworkMap `protobuf:"bytes,5,opt,name=NetworkMap,proto3" json:"NetworkMap,omitempty"` + RemotePeersIsEmpty bool `protobuf:"varint,4,opt,name=remotePeersIsEmpty,proto3" json:"remotePeersIsEmpty,omitempty"` + NetworkMap *NetworkMap `protobuf:"bytes,5,opt,name=NetworkMap,proto3" json:"NetworkMap,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SyncResponse) Reset() { - *x = SyncResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SyncResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SyncResponse) ProtoMessage() {} - -func (x *SyncResponse) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[2] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SyncResponse.ProtoReflect.Descriptor instead. +func (m *SyncResponse) Reset() { *m = SyncResponse{} } +func (m *SyncResponse) String() string { return proto.CompactTextString(m) } +func (*SyncResponse) ProtoMessage() {} func (*SyncResponse) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{2} + return fileDescriptor_edc174f991dc0a25, []int{2} } -func (x *SyncResponse) GetWiretrusteeConfig() *WiretrusteeConfig { - if x != nil { - return x.WiretrusteeConfig +func (m *SyncResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SyncResponse.Unmarshal(m, b) +} +func (m *SyncResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SyncResponse.Marshal(b, m, deterministic) +} +func (m *SyncResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_SyncResponse.Merge(m, src) +} +func (m *SyncResponse) XXX_Size() int { + return xxx_messageInfo_SyncResponse.Size(m) +} +func (m *SyncResponse) XXX_DiscardUnknown() { + xxx_messageInfo_SyncResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_SyncResponse proto.InternalMessageInfo + +func (m *SyncResponse) GetWiretrusteeConfig() *WiretrusteeConfig { + if m != nil { + return m.WiretrusteeConfig } return nil } -func (x *SyncResponse) GetPeerConfig() *PeerConfig { - if x != nil { - return x.PeerConfig +func (m *SyncResponse) GetPeerConfig() *PeerConfig { + if m != nil { + return m.PeerConfig } return nil } -func (x *SyncResponse) GetRemotePeers() []*RemotePeerConfig { - if x != nil { - return x.RemotePeers +func (m *SyncResponse) GetRemotePeers() []*RemotePeerConfig { + if m != nil { + return m.RemotePeers } return nil } -func (x *SyncResponse) GetRemotePeersIsEmpty() bool { - if x != nil { - return x.RemotePeersIsEmpty +func (m *SyncResponse) GetRemotePeersIsEmpty() bool { + if m != nil { + return m.RemotePeersIsEmpty } return false } -func (x *SyncResponse) GetNetworkMap() *NetworkMap { - if x != nil { - return x.NetworkMap +func (m *SyncResponse) GetNetworkMap() *NetworkMap { + if m != nil { + return m.NetworkMap } return nil } type LoginRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Pre-authorized setup key (can be empty) SetupKey string `protobuf:"bytes,1,opt,name=setupKey,proto3" json:"setupKey,omitempty"` // Meta data of the peer (e.g. name, os_name, os_version, @@ -467,65 +335,61 @@ type LoginRequest struct { // SSO token (can be empty) JwtToken string `protobuf:"bytes,3,opt,name=jwtToken,proto3" json:"jwtToken,omitempty"` // Can be absent for now. - PeerKeys *PeerKeys `protobuf:"bytes,4,opt,name=peerKeys,proto3" json:"peerKeys,omitempty"` + PeerKeys *PeerKeys `protobuf:"bytes,4,opt,name=peerKeys,proto3" json:"peerKeys,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *LoginRequest) Reset() { - *x = LoginRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LoginRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LoginRequest) ProtoMessage() {} - -func (x *LoginRequest) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LoginRequest.ProtoReflect.Descriptor instead. +func (m *LoginRequest) Reset() { *m = LoginRequest{} } +func (m *LoginRequest) String() string { return proto.CompactTextString(m) } +func (*LoginRequest) ProtoMessage() {} func (*LoginRequest) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{3} + return fileDescriptor_edc174f991dc0a25, []int{3} } -func (x *LoginRequest) GetSetupKey() string { - if x != nil { - return x.SetupKey +func (m *LoginRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LoginRequest.Unmarshal(m, b) +} +func (m *LoginRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LoginRequest.Marshal(b, m, deterministic) +} +func (m *LoginRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_LoginRequest.Merge(m, src) +} +func (m *LoginRequest) XXX_Size() int { + return xxx_messageInfo_LoginRequest.Size(m) +} +func (m *LoginRequest) XXX_DiscardUnknown() { + xxx_messageInfo_LoginRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_LoginRequest proto.InternalMessageInfo + +func (m *LoginRequest) GetSetupKey() string { + if m != nil { + return m.SetupKey } return "" } -func (x *LoginRequest) GetMeta() *PeerSystemMeta { - if x != nil { - return x.Meta +func (m *LoginRequest) GetMeta() *PeerSystemMeta { + if m != nil { + return m.Meta } return nil } -func (x *LoginRequest) GetJwtToken() string { - if x != nil { - return x.JwtToken +func (m *LoginRequest) GetJwtToken() string { + if m != nil { + return m.JwtToken } return "" } -func (x *LoginRequest) GetPeerKeys() *PeerKeys { - if x != nil { - return x.PeerKeys +func (m *LoginRequest) GetPeerKeys() *PeerKeys { + if m != nil { + return m.PeerKeys } return nil } @@ -533,561 +397,506 @@ func (x *LoginRequest) GetPeerKeys() *PeerKeys { // PeerKeys is additional peer info like SSH pub key and WireGuard public key. // This message is sent on Login or register requests, or when a key rotation has to happen. type PeerKeys struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // sshPubKey represents a public SSH key of the peer. Can be absent. SshPubKey []byte `protobuf:"bytes,1,opt,name=sshPubKey,proto3" json:"sshPubKey,omitempty"` // wgPubKey represents a public WireGuard key of the peer. Can be absent. - WgPubKey []byte `protobuf:"bytes,2,opt,name=wgPubKey,proto3" json:"wgPubKey,omitempty"` + WgPubKey []byte `protobuf:"bytes,2,opt,name=wgPubKey,proto3" json:"wgPubKey,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PeerKeys) Reset() { - *x = PeerKeys{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PeerKeys) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PeerKeys) ProtoMessage() {} - -func (x *PeerKeys) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[4] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PeerKeys.ProtoReflect.Descriptor instead. +func (m *PeerKeys) Reset() { *m = PeerKeys{} } +func (m *PeerKeys) String() string { return proto.CompactTextString(m) } +func (*PeerKeys) ProtoMessage() {} func (*PeerKeys) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{4} + return fileDescriptor_edc174f991dc0a25, []int{4} } -func (x *PeerKeys) GetSshPubKey() []byte { - if x != nil { - return x.SshPubKey +func (m *PeerKeys) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PeerKeys.Unmarshal(m, b) +} +func (m *PeerKeys) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PeerKeys.Marshal(b, m, deterministic) +} +func (m *PeerKeys) XXX_Merge(src proto.Message) { + xxx_messageInfo_PeerKeys.Merge(m, src) +} +func (m *PeerKeys) XXX_Size() int { + return xxx_messageInfo_PeerKeys.Size(m) +} +func (m *PeerKeys) XXX_DiscardUnknown() { + xxx_messageInfo_PeerKeys.DiscardUnknown(m) +} + +var xxx_messageInfo_PeerKeys proto.InternalMessageInfo + +func (m *PeerKeys) GetSshPubKey() []byte { + if m != nil { + return m.SshPubKey } return nil } -func (x *PeerKeys) GetWgPubKey() []byte { - if x != nil { - return x.WgPubKey +func (m *PeerKeys) GetWgPubKey() []byte { + if m != nil { + return m.WgPubKey } return nil } // Environment is part of the PeerSystemMeta and describes the environment the agent is running in. type Environment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // cloud is the cloud provider the agent is running in if applicable. Cloud string `protobuf:"bytes,1,opt,name=cloud,proto3" json:"cloud,omitempty"` // platform is the platform the agent is running on if applicable. - Platform string `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform,omitempty"` + Platform string `protobuf:"bytes,2,opt,name=platform,proto3" json:"platform,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Environment) Reset() { - *x = Environment{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Environment) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Environment) ProtoMessage() {} - -func (x *Environment) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[5] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Environment.ProtoReflect.Descriptor instead. +func (m *Environment) Reset() { *m = Environment{} } +func (m *Environment) String() string { return proto.CompactTextString(m) } +func (*Environment) ProtoMessage() {} func (*Environment) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{5} + return fileDescriptor_edc174f991dc0a25, []int{5} } -func (x *Environment) GetCloud() string { - if x != nil { - return x.Cloud +func (m *Environment) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Environment.Unmarshal(m, b) +} +func (m *Environment) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Environment.Marshal(b, m, deterministic) +} +func (m *Environment) XXX_Merge(src proto.Message) { + xxx_messageInfo_Environment.Merge(m, src) +} +func (m *Environment) XXX_Size() int { + return xxx_messageInfo_Environment.Size(m) +} +func (m *Environment) XXX_DiscardUnknown() { + xxx_messageInfo_Environment.DiscardUnknown(m) +} + +var xxx_messageInfo_Environment proto.InternalMessageInfo + +func (m *Environment) GetCloud() string { + if m != nil { + return m.Cloud } return "" } -func (x *Environment) GetPlatform() string { - if x != nil { - return x.Platform +func (m *Environment) GetPlatform() string { + if m != nil { + return m.Platform } return "" } // PeerSystemMeta is machine meta data like OS and version. type PeerSystemMeta struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` - GoOS string `protobuf:"bytes,2,opt,name=goOS,proto3" json:"goOS,omitempty"` - Kernel string `protobuf:"bytes,3,opt,name=kernel,proto3" json:"kernel,omitempty"` - Core string `protobuf:"bytes,4,opt,name=core,proto3" json:"core,omitempty"` - Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform,omitempty"` - OS string `protobuf:"bytes,6,opt,name=OS,proto3" json:"OS,omitempty"` - WiretrusteeVersion string `protobuf:"bytes,7,opt,name=wiretrusteeVersion,proto3" json:"wiretrusteeVersion,omitempty"` - UiVersion string `protobuf:"bytes,8,opt,name=uiVersion,proto3" json:"uiVersion,omitempty"` - KernelVersion string `protobuf:"bytes,9,opt,name=kernelVersion,proto3" json:"kernelVersion,omitempty"` - OSVersion string `protobuf:"bytes,10,opt,name=OSVersion,proto3" json:"OSVersion,omitempty"` - NetworkAddresses []*NetworkAddress `protobuf:"bytes,11,rep,name=networkAddresses,proto3" json:"networkAddresses,omitempty"` - SysSerialNumber string `protobuf:"bytes,12,opt,name=sysSerialNumber,proto3" json:"sysSerialNumber,omitempty"` - SysProductName string `protobuf:"bytes,13,opt,name=sysProductName,proto3" json:"sysProductName,omitempty"` - SysManufacturer string `protobuf:"bytes,14,opt,name=sysManufacturer,proto3" json:"sysManufacturer,omitempty"` - Environment *Environment `protobuf:"bytes,15,opt,name=environment,proto3" json:"environment,omitempty"` + Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` + GoOS string `protobuf:"bytes,2,opt,name=goOS,proto3" json:"goOS,omitempty"` + Kernel string `protobuf:"bytes,3,opt,name=kernel,proto3" json:"kernel,omitempty"` + Core string `protobuf:"bytes,4,opt,name=core,proto3" json:"core,omitempty"` + Platform string `protobuf:"bytes,5,opt,name=platform,proto3" json:"platform,omitempty"` + OS string `protobuf:"bytes,6,opt,name=OS,proto3" json:"OS,omitempty"` + WiretrusteeVersion string `protobuf:"bytes,7,opt,name=wiretrusteeVersion,proto3" json:"wiretrusteeVersion,omitempty"` + UiVersion string `protobuf:"bytes,8,opt,name=uiVersion,proto3" json:"uiVersion,omitempty"` + KernelVersion string `protobuf:"bytes,9,opt,name=kernelVersion,proto3" json:"kernelVersion,omitempty"` + OSVersion string `protobuf:"bytes,10,opt,name=OSVersion,proto3" json:"OSVersion,omitempty"` + NetworkAddresses []*NetworkAddress `protobuf:"bytes,11,rep,name=networkAddresses,proto3" json:"networkAddresses,omitempty"` + SysSerialNumber string `protobuf:"bytes,12,opt,name=sysSerialNumber,proto3" json:"sysSerialNumber,omitempty"` + SysProductName string `protobuf:"bytes,13,opt,name=sysProductName,proto3" json:"sysProductName,omitempty"` + SysManufacturer string `protobuf:"bytes,14,opt,name=sysManufacturer,proto3" json:"sysManufacturer,omitempty"` + Environment *Environment `protobuf:"bytes,15,opt,name=environment,proto3" json:"environment,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PeerSystemMeta) Reset() { - *x = PeerSystemMeta{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PeerSystemMeta) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PeerSystemMeta) ProtoMessage() {} - -func (x *PeerSystemMeta) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[6] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PeerSystemMeta.ProtoReflect.Descriptor instead. +func (m *PeerSystemMeta) Reset() { *m = PeerSystemMeta{} } +func (m *PeerSystemMeta) String() string { return proto.CompactTextString(m) } +func (*PeerSystemMeta) ProtoMessage() {} func (*PeerSystemMeta) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{6} + return fileDescriptor_edc174f991dc0a25, []int{6} } -func (x *PeerSystemMeta) GetHostname() string { - if x != nil { - return x.Hostname +func (m *PeerSystemMeta) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PeerSystemMeta.Unmarshal(m, b) +} +func (m *PeerSystemMeta) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PeerSystemMeta.Marshal(b, m, deterministic) +} +func (m *PeerSystemMeta) XXX_Merge(src proto.Message) { + xxx_messageInfo_PeerSystemMeta.Merge(m, src) +} +func (m *PeerSystemMeta) XXX_Size() int { + return xxx_messageInfo_PeerSystemMeta.Size(m) +} +func (m *PeerSystemMeta) XXX_DiscardUnknown() { + xxx_messageInfo_PeerSystemMeta.DiscardUnknown(m) +} + +var xxx_messageInfo_PeerSystemMeta proto.InternalMessageInfo + +func (m *PeerSystemMeta) GetHostname() string { + if m != nil { + return m.Hostname } return "" } -func (x *PeerSystemMeta) GetGoOS() string { - if x != nil { - return x.GoOS +func (m *PeerSystemMeta) GetGoOS() string { + if m != nil { + return m.GoOS } return "" } -func (x *PeerSystemMeta) GetKernel() string { - if x != nil { - return x.Kernel +func (m *PeerSystemMeta) GetKernel() string { + if m != nil { + return m.Kernel } return "" } -func (x *PeerSystemMeta) GetCore() string { - if x != nil { - return x.Core +func (m *PeerSystemMeta) GetCore() string { + if m != nil { + return m.Core } return "" } -func (x *PeerSystemMeta) GetPlatform() string { - if x != nil { - return x.Platform +func (m *PeerSystemMeta) GetPlatform() string { + if m != nil { + return m.Platform } return "" } -func (x *PeerSystemMeta) GetOS() string { - if x != nil { - return x.OS +func (m *PeerSystemMeta) GetOS() string { + if m != nil { + return m.OS } return "" } -func (x *PeerSystemMeta) GetWiretrusteeVersion() string { - if x != nil { - return x.WiretrusteeVersion +func (m *PeerSystemMeta) GetWiretrusteeVersion() string { + if m != nil { + return m.WiretrusteeVersion } return "" } -func (x *PeerSystemMeta) GetUiVersion() string { - if x != nil { - return x.UiVersion +func (m *PeerSystemMeta) GetUiVersion() string { + if m != nil { + return m.UiVersion } return "" } -func (x *PeerSystemMeta) GetKernelVersion() string { - if x != nil { - return x.KernelVersion +func (m *PeerSystemMeta) GetKernelVersion() string { + if m != nil { + return m.KernelVersion } return "" } -func (x *PeerSystemMeta) GetOSVersion() string { - if x != nil { - return x.OSVersion +func (m *PeerSystemMeta) GetOSVersion() string { + if m != nil { + return m.OSVersion } return "" } -func (x *PeerSystemMeta) GetNetworkAddresses() []*NetworkAddress { - if x != nil { - return x.NetworkAddresses +func (m *PeerSystemMeta) GetNetworkAddresses() []*NetworkAddress { + if m != nil { + return m.NetworkAddresses } return nil } -func (x *PeerSystemMeta) GetSysSerialNumber() string { - if x != nil { - return x.SysSerialNumber +func (m *PeerSystemMeta) GetSysSerialNumber() string { + if m != nil { + return m.SysSerialNumber } return "" } -func (x *PeerSystemMeta) GetSysProductName() string { - if x != nil { - return x.SysProductName +func (m *PeerSystemMeta) GetSysProductName() string { + if m != nil { + return m.SysProductName } return "" } -func (x *PeerSystemMeta) GetSysManufacturer() string { - if x != nil { - return x.SysManufacturer +func (m *PeerSystemMeta) GetSysManufacturer() string { + if m != nil { + return m.SysManufacturer } return "" } -func (x *PeerSystemMeta) GetEnvironment() *Environment { - if x != nil { - return x.Environment +func (m *PeerSystemMeta) GetEnvironment() *Environment { + if m != nil { + return m.Environment } return nil } type LoginResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Global config WiretrusteeConfig *WiretrusteeConfig `protobuf:"bytes,1,opt,name=wiretrusteeConfig,proto3" json:"wiretrusteeConfig,omitempty"` // Peer local config - PeerConfig *PeerConfig `protobuf:"bytes,2,opt,name=peerConfig,proto3" json:"peerConfig,omitempty"` + PeerConfig *PeerConfig `protobuf:"bytes,2,opt,name=peerConfig,proto3" json:"peerConfig,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *LoginResponse) Reset() { - *x = LoginResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LoginResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LoginResponse) ProtoMessage() {} - -func (x *LoginResponse) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[7] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LoginResponse.ProtoReflect.Descriptor instead. +func (m *LoginResponse) Reset() { *m = LoginResponse{} } +func (m *LoginResponse) String() string { return proto.CompactTextString(m) } +func (*LoginResponse) ProtoMessage() {} func (*LoginResponse) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{7} + return fileDescriptor_edc174f991dc0a25, []int{7} } -func (x *LoginResponse) GetWiretrusteeConfig() *WiretrusteeConfig { - if x != nil { - return x.WiretrusteeConfig +func (m *LoginResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_LoginResponse.Unmarshal(m, b) +} +func (m *LoginResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_LoginResponse.Marshal(b, m, deterministic) +} +func (m *LoginResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_LoginResponse.Merge(m, src) +} +func (m *LoginResponse) XXX_Size() int { + return xxx_messageInfo_LoginResponse.Size(m) +} +func (m *LoginResponse) XXX_DiscardUnknown() { + xxx_messageInfo_LoginResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_LoginResponse proto.InternalMessageInfo + +func (m *LoginResponse) GetWiretrusteeConfig() *WiretrusteeConfig { + if m != nil { + return m.WiretrusteeConfig } return nil } -func (x *LoginResponse) GetPeerConfig() *PeerConfig { - if x != nil { - return x.PeerConfig +func (m *LoginResponse) GetPeerConfig() *PeerConfig { + if m != nil { + return m.PeerConfig } return nil } type ServerKeyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Server's Wireguard public key Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` // Key expiration timestamp after which the key should be fetched again by the client ExpiresAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=expiresAt,proto3" json:"expiresAt,omitempty"` // Version of the Wiretrustee Management Service protocol - Version int32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"` + Version int32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ServerKeyResponse) Reset() { - *x = ServerKeyResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ServerKeyResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServerKeyResponse) ProtoMessage() {} - -func (x *ServerKeyResponse) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[8] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ServerKeyResponse.ProtoReflect.Descriptor instead. +func (m *ServerKeyResponse) Reset() { *m = ServerKeyResponse{} } +func (m *ServerKeyResponse) String() string { return proto.CompactTextString(m) } +func (*ServerKeyResponse) ProtoMessage() {} func (*ServerKeyResponse) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{8} + return fileDescriptor_edc174f991dc0a25, []int{8} } -func (x *ServerKeyResponse) GetKey() string { - if x != nil { - return x.Key +func (m *ServerKeyResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ServerKeyResponse.Unmarshal(m, b) +} +func (m *ServerKeyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ServerKeyResponse.Marshal(b, m, deterministic) +} +func (m *ServerKeyResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_ServerKeyResponse.Merge(m, src) +} +func (m *ServerKeyResponse) XXX_Size() int { + return xxx_messageInfo_ServerKeyResponse.Size(m) +} +func (m *ServerKeyResponse) XXX_DiscardUnknown() { + xxx_messageInfo_ServerKeyResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_ServerKeyResponse proto.InternalMessageInfo + +func (m *ServerKeyResponse) GetKey() string { + if m != nil { + return m.Key } return "" } -func (x *ServerKeyResponse) GetExpiresAt() *timestamppb.Timestamp { - if x != nil { - return x.ExpiresAt +func (m *ServerKeyResponse) GetExpiresAt() *timestamppb.Timestamp { + if m != nil { + return m.ExpiresAt } return nil } -func (x *ServerKeyResponse) GetVersion() int32 { - if x != nil { - return x.Version +func (m *ServerKeyResponse) GetVersion() int32 { + if m != nil { + return m.Version } return 0 } type Empty struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Empty) Reset() { - *x = Empty{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Empty) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Empty) ProtoMessage() {} - -func (x *Empty) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[9] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (m *Empty) Reset() { *m = Empty{} } +func (m *Empty) String() string { return proto.CompactTextString(m) } +func (*Empty) ProtoMessage() {} func (*Empty) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{9} + return fileDescriptor_edc174f991dc0a25, []int{9} } +func (m *Empty) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Empty.Unmarshal(m, b) +} +func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Empty.Marshal(b, m, deterministic) +} +func (m *Empty) XXX_Merge(src proto.Message) { + xxx_messageInfo_Empty.Merge(m, src) +} +func (m *Empty) XXX_Size() int { + return xxx_messageInfo_Empty.Size(m) +} +func (m *Empty) XXX_DiscardUnknown() { + xxx_messageInfo_Empty.DiscardUnknown(m) +} + +var xxx_messageInfo_Empty proto.InternalMessageInfo + // WiretrusteeConfig is a common configuration of any Wiretrustee peer. It contains STUN, TURN, Signal and Management servers configurations type WiretrusteeConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // a list of STUN servers Stuns []*HostConfig `protobuf:"bytes,1,rep,name=stuns,proto3" json:"stuns,omitempty"` // a list of TURN servers Turns []*ProtectedHostConfig `protobuf:"bytes,2,rep,name=turns,proto3" json:"turns,omitempty"` // a Signal server config - Signal *HostConfig `protobuf:"bytes,3,opt,name=signal,proto3" json:"signal,omitempty"` + Signal *HostConfig `protobuf:"bytes,3,opt,name=signal,proto3" json:"signal,omitempty"` + RelayAddress string `protobuf:"bytes,4,opt,name=RelayAddress,proto3" json:"RelayAddress,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *WiretrusteeConfig) Reset() { - *x = WiretrusteeConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WiretrusteeConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WiretrusteeConfig) ProtoMessage() {} - -func (x *WiretrusteeConfig) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[10] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use WiretrusteeConfig.ProtoReflect.Descriptor instead. +func (m *WiretrusteeConfig) Reset() { *m = WiretrusteeConfig{} } +func (m *WiretrusteeConfig) String() string { return proto.CompactTextString(m) } +func (*WiretrusteeConfig) ProtoMessage() {} func (*WiretrusteeConfig) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{10} + return fileDescriptor_edc174f991dc0a25, []int{10} } -func (x *WiretrusteeConfig) GetStuns() []*HostConfig { - if x != nil { - return x.Stuns +func (m *WiretrusteeConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_WiretrusteeConfig.Unmarshal(m, b) +} +func (m *WiretrusteeConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_WiretrusteeConfig.Marshal(b, m, deterministic) +} +func (m *WiretrusteeConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_WiretrusteeConfig.Merge(m, src) +} +func (m *WiretrusteeConfig) XXX_Size() int { + return xxx_messageInfo_WiretrusteeConfig.Size(m) +} +func (m *WiretrusteeConfig) XXX_DiscardUnknown() { + xxx_messageInfo_WiretrusteeConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_WiretrusteeConfig proto.InternalMessageInfo + +func (m *WiretrusteeConfig) GetStuns() []*HostConfig { + if m != nil { + return m.Stuns } return nil } -func (x *WiretrusteeConfig) GetTurns() []*ProtectedHostConfig { - if x != nil { - return x.Turns +func (m *WiretrusteeConfig) GetTurns() []*ProtectedHostConfig { + if m != nil { + return m.Turns } return nil } -func (x *WiretrusteeConfig) GetSignal() *HostConfig { - if x != nil { - return x.Signal +func (m *WiretrusteeConfig) GetSignal() *HostConfig { + if m != nil { + return m.Signal } return nil } -// HostConfig describes connection properties of some server (e.g. STUN, Signal, Management) -type HostConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // URI of the resource e.g. turns://stun.wiretrustee.com:4430 or signal.wiretrustee.com:10000 - Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` - Protocol HostConfig_Protocol `protobuf:"varint,2,opt,name=protocol,proto3,enum=management.HostConfig_Protocol" json:"protocol,omitempty"` -} - -func (x *HostConfig) Reset() { - *x = HostConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HostConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HostConfig) ProtoMessage() {} - -func (x *HostConfig) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[11] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use HostConfig.ProtoReflect.Descriptor instead. -func (*HostConfig) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{11} -} - -func (x *HostConfig) GetUri() string { - if x != nil { - return x.Uri +func (m *WiretrusteeConfig) GetRelayAddress() string { + if m != nil { + return m.RelayAddress } return "" } -func (x *HostConfig) GetProtocol() HostConfig_Protocol { - if x != nil { - return x.Protocol +// HostConfig describes connection properties of some server (e.g. STUN, Signal, Management) +type HostConfig struct { + // URI of the resource e.g. turns://stun.wiretrustee.com:4430 or signal.wiretrustee.com:10000 + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + Protocol HostConfig_Protocol `protobuf:"varint,2,opt,name=protocol,proto3,enum=management.HostConfig_Protocol" json:"protocol,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *HostConfig) Reset() { *m = HostConfig{} } +func (m *HostConfig) String() string { return proto.CompactTextString(m) } +func (*HostConfig) ProtoMessage() {} +func (*HostConfig) Descriptor() ([]byte, []int) { + return fileDescriptor_edc174f991dc0a25, []int{11} +} + +func (m *HostConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_HostConfig.Unmarshal(m, b) +} +func (m *HostConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_HostConfig.Marshal(b, m, deterministic) +} +func (m *HostConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_HostConfig.Merge(m, src) +} +func (m *HostConfig) XXX_Size() int { + return xxx_messageInfo_HostConfig.Size(m) +} +func (m *HostConfig) XXX_DiscardUnknown() { + xxx_messageInfo_HostConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_HostConfig proto.InternalMessageInfo + +func (m *HostConfig) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *HostConfig) GetProtocol() HostConfig_Protocol { + if m != nil { + return m.Protocol } return HostConfig_UDP } @@ -1095,64 +904,56 @@ func (x *HostConfig) GetProtocol() HostConfig_Protocol { // ProtectedHostConfig is similar to HostConfig but has additional user and password // Mostly used for TURN servers type ProtectedHostConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HostConfig *HostConfig `protobuf:"bytes,1,opt,name=hostConfig,proto3" json:"hostConfig,omitempty"` - User string `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` - Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` + HostConfig *HostConfig `protobuf:"bytes,1,opt,name=hostConfig,proto3" json:"hostConfig,omitempty"` + User string `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` + Password string `protobuf:"bytes,3,opt,name=password,proto3" json:"password,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ProtectedHostConfig) Reset() { - *x = ProtectedHostConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProtectedHostConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProtectedHostConfig) ProtoMessage() {} - -func (x *ProtectedHostConfig) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[12] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProtectedHostConfig.ProtoReflect.Descriptor instead. +func (m *ProtectedHostConfig) Reset() { *m = ProtectedHostConfig{} } +func (m *ProtectedHostConfig) String() string { return proto.CompactTextString(m) } +func (*ProtectedHostConfig) ProtoMessage() {} func (*ProtectedHostConfig) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{12} + return fileDescriptor_edc174f991dc0a25, []int{12} } -func (x *ProtectedHostConfig) GetHostConfig() *HostConfig { - if x != nil { - return x.HostConfig +func (m *ProtectedHostConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ProtectedHostConfig.Unmarshal(m, b) +} +func (m *ProtectedHostConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ProtectedHostConfig.Marshal(b, m, deterministic) +} +func (m *ProtectedHostConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_ProtectedHostConfig.Merge(m, src) +} +func (m *ProtectedHostConfig) XXX_Size() int { + return xxx_messageInfo_ProtectedHostConfig.Size(m) +} +func (m *ProtectedHostConfig) XXX_DiscardUnknown() { + xxx_messageInfo_ProtectedHostConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_ProtectedHostConfig proto.InternalMessageInfo + +func (m *ProtectedHostConfig) GetHostConfig() *HostConfig { + if m != nil { + return m.HostConfig } return nil } -func (x *ProtectedHostConfig) GetUser() string { - if x != nil { - return x.User +func (m *ProtectedHostConfig) GetUser() string { + if m != nil { + return m.User } return "" } -func (x *ProtectedHostConfig) GetPassword() string { - if x != nil { - return x.Password +func (m *ProtectedHostConfig) GetPassword() string { + if m != nil { + return m.Password } return "" } @@ -1160,10 +961,6 @@ func (x *ProtectedHostConfig) GetPassword() string { // PeerConfig represents a configuration of a "our" peer. // The properties are used to configure local Wireguard type PeerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Peer's virtual IP address within the Wiretrustee VPN (a Wireguard address config) Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` // Wiretrustee DNS server (a Wireguard DNS config) @@ -1171,75 +968,67 @@ type PeerConfig struct { // SSHConfig of the peer. SshConfig *SSHConfig `protobuf:"bytes,3,opt,name=sshConfig,proto3" json:"sshConfig,omitempty"` // Peer fully qualified domain name - Fqdn string `protobuf:"bytes,4,opt,name=fqdn,proto3" json:"fqdn,omitempty"` + Fqdn string `protobuf:"bytes,4,opt,name=fqdn,proto3" json:"fqdn,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PeerConfig) Reset() { - *x = PeerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PeerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PeerConfig) ProtoMessage() {} - -func (x *PeerConfig) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[13] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PeerConfig.ProtoReflect.Descriptor instead. +func (m *PeerConfig) Reset() { *m = PeerConfig{} } +func (m *PeerConfig) String() string { return proto.CompactTextString(m) } +func (*PeerConfig) ProtoMessage() {} func (*PeerConfig) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{13} + return fileDescriptor_edc174f991dc0a25, []int{13} } -func (x *PeerConfig) GetAddress() string { - if x != nil { - return x.Address +func (m *PeerConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PeerConfig.Unmarshal(m, b) +} +func (m *PeerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PeerConfig.Marshal(b, m, deterministic) +} +func (m *PeerConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_PeerConfig.Merge(m, src) +} +func (m *PeerConfig) XXX_Size() int { + return xxx_messageInfo_PeerConfig.Size(m) +} +func (m *PeerConfig) XXX_DiscardUnknown() { + xxx_messageInfo_PeerConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_PeerConfig proto.InternalMessageInfo + +func (m *PeerConfig) GetAddress() string { + if m != nil { + return m.Address } return "" } -func (x *PeerConfig) GetDns() string { - if x != nil { - return x.Dns +func (m *PeerConfig) GetDns() string { + if m != nil { + return m.Dns } return "" } -func (x *PeerConfig) GetSshConfig() *SSHConfig { - if x != nil { - return x.SshConfig +func (m *PeerConfig) GetSshConfig() *SSHConfig { + if m != nil { + return m.SshConfig } return nil } -func (x *PeerConfig) GetFqdn() string { - if x != nil { - return x.Fqdn +func (m *PeerConfig) GetFqdn() string { + if m != nil { + return m.Fqdn } return "" } // NetworkMap represents a network state of the peer with the corresponding configuration parameters to establish peer-to-peer connections type NetworkMap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // Serial is an ID of the network state to be used by clients to order updates. // The larger the Serial the newer the configuration. // E.g. the client app should keep track of this id locally and discard all the configurations with a lower value @@ -1259,100 +1048,96 @@ type NetworkMap struct { // FirewallRule represents a list of firewall rules to be applied to peer FirewallRules []*FirewallRule `protobuf:"bytes,8,rep,name=FirewallRules,proto3" json:"FirewallRules,omitempty"` // firewallRulesIsEmpty indicates whether FirewallRule array is empty or not to bypass protobuf null and empty array equality. - FirewallRulesIsEmpty bool `protobuf:"varint,9,opt,name=firewallRulesIsEmpty,proto3" json:"firewallRulesIsEmpty,omitempty"` + FirewallRulesIsEmpty bool `protobuf:"varint,9,opt,name=firewallRulesIsEmpty,proto3" json:"firewallRulesIsEmpty,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *NetworkMap) Reset() { - *x = NetworkMap{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NetworkMap) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NetworkMap) ProtoMessage() {} - -func (x *NetworkMap) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NetworkMap.ProtoReflect.Descriptor instead. +func (m *NetworkMap) Reset() { *m = NetworkMap{} } +func (m *NetworkMap) String() string { return proto.CompactTextString(m) } +func (*NetworkMap) ProtoMessage() {} func (*NetworkMap) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{14} + return fileDescriptor_edc174f991dc0a25, []int{14} } -func (x *NetworkMap) GetSerial() uint64 { - if x != nil { - return x.Serial +func (m *NetworkMap) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NetworkMap.Unmarshal(m, b) +} +func (m *NetworkMap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NetworkMap.Marshal(b, m, deterministic) +} +func (m *NetworkMap) XXX_Merge(src proto.Message) { + xxx_messageInfo_NetworkMap.Merge(m, src) +} +func (m *NetworkMap) XXX_Size() int { + return xxx_messageInfo_NetworkMap.Size(m) +} +func (m *NetworkMap) XXX_DiscardUnknown() { + xxx_messageInfo_NetworkMap.DiscardUnknown(m) +} + +var xxx_messageInfo_NetworkMap proto.InternalMessageInfo + +func (m *NetworkMap) GetSerial() uint64 { + if m != nil { + return m.Serial } return 0 } -func (x *NetworkMap) GetPeerConfig() *PeerConfig { - if x != nil { - return x.PeerConfig +func (m *NetworkMap) GetPeerConfig() *PeerConfig { + if m != nil { + return m.PeerConfig } return nil } -func (x *NetworkMap) GetRemotePeers() []*RemotePeerConfig { - if x != nil { - return x.RemotePeers +func (m *NetworkMap) GetRemotePeers() []*RemotePeerConfig { + if m != nil { + return m.RemotePeers } return nil } -func (x *NetworkMap) GetRemotePeersIsEmpty() bool { - if x != nil { - return x.RemotePeersIsEmpty +func (m *NetworkMap) GetRemotePeersIsEmpty() bool { + if m != nil { + return m.RemotePeersIsEmpty } return false } -func (x *NetworkMap) GetRoutes() []*Route { - if x != nil { - return x.Routes +func (m *NetworkMap) GetRoutes() []*Route { + if m != nil { + return m.Routes } return nil } -func (x *NetworkMap) GetDNSConfig() *DNSConfig { - if x != nil { - return x.DNSConfig +func (m *NetworkMap) GetDNSConfig() *DNSConfig { + if m != nil { + return m.DNSConfig } return nil } -func (x *NetworkMap) GetOfflinePeers() []*RemotePeerConfig { - if x != nil { - return x.OfflinePeers +func (m *NetworkMap) GetOfflinePeers() []*RemotePeerConfig { + if m != nil { + return m.OfflinePeers } return nil } -func (x *NetworkMap) GetFirewallRules() []*FirewallRule { - if x != nil { - return x.FirewallRules +func (m *NetworkMap) GetFirewallRules() []*FirewallRule { + if m != nil { + return m.FirewallRules } return nil } -func (x *NetworkMap) GetFirewallRulesIsEmpty() bool { - if x != nil { - return x.FirewallRulesIsEmpty +func (m *NetworkMap) GetFirewallRulesIsEmpty() bool { + if m != nil { + return m.FirewallRulesIsEmpty } return false } @@ -1360,10 +1145,6 @@ func (x *NetworkMap) GetFirewallRulesIsEmpty() bool { // RemotePeerConfig represents a configuration of a remote peer. // The properties are used to configure WireGuard Peers sections type RemotePeerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // A WireGuard public key of a remote peer WgPubKey string `protobuf:"bytes,1,opt,name=wgPubKey,proto3" json:"wgPubKey,omitempty"` // WireGuard allowed IPs of a remote peer e.g. [10.30.30.1/32] @@ -1371,321 +1152,275 @@ type RemotePeerConfig struct { // SSHConfig is a SSH config of the remote peer. SSHConfig.sshPubKey should be ignored because peer knows it's SSH key. SshConfig *SSHConfig `protobuf:"bytes,3,opt,name=sshConfig,proto3" json:"sshConfig,omitempty"` // Peer fully qualified domain name - Fqdn string `protobuf:"bytes,4,opt,name=fqdn,proto3" json:"fqdn,omitempty"` + Fqdn string `protobuf:"bytes,4,opt,name=fqdn,proto3" json:"fqdn,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *RemotePeerConfig) Reset() { - *x = RemotePeerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemotePeerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemotePeerConfig) ProtoMessage() {} - -func (x *RemotePeerConfig) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use RemotePeerConfig.ProtoReflect.Descriptor instead. +func (m *RemotePeerConfig) Reset() { *m = RemotePeerConfig{} } +func (m *RemotePeerConfig) String() string { return proto.CompactTextString(m) } +func (*RemotePeerConfig) ProtoMessage() {} func (*RemotePeerConfig) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{15} + return fileDescriptor_edc174f991dc0a25, []int{15} } -func (x *RemotePeerConfig) GetWgPubKey() string { - if x != nil { - return x.WgPubKey +func (m *RemotePeerConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_RemotePeerConfig.Unmarshal(m, b) +} +func (m *RemotePeerConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_RemotePeerConfig.Marshal(b, m, deterministic) +} +func (m *RemotePeerConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_RemotePeerConfig.Merge(m, src) +} +func (m *RemotePeerConfig) XXX_Size() int { + return xxx_messageInfo_RemotePeerConfig.Size(m) +} +func (m *RemotePeerConfig) XXX_DiscardUnknown() { + xxx_messageInfo_RemotePeerConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_RemotePeerConfig proto.InternalMessageInfo + +func (m *RemotePeerConfig) GetWgPubKey() string { + if m != nil { + return m.WgPubKey } return "" } -func (x *RemotePeerConfig) GetAllowedIps() []string { - if x != nil { - return x.AllowedIps +func (m *RemotePeerConfig) GetAllowedIps() []string { + if m != nil { + return m.AllowedIps } return nil } -func (x *RemotePeerConfig) GetSshConfig() *SSHConfig { - if x != nil { - return x.SshConfig +func (m *RemotePeerConfig) GetSshConfig() *SSHConfig { + if m != nil { + return m.SshConfig } return nil } -func (x *RemotePeerConfig) GetFqdn() string { - if x != nil { - return x.Fqdn +func (m *RemotePeerConfig) GetFqdn() string { + if m != nil { + return m.Fqdn } return "" } // SSHConfig represents SSH configurations of a peer. type SSHConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // sshEnabled indicates whether a SSH server is enabled on this peer SshEnabled bool `protobuf:"varint,1,opt,name=sshEnabled,proto3" json:"sshEnabled,omitempty"` // sshPubKey is a SSH public key of a peer to be added to authorized_hosts. // This property should be ignore if SSHConfig comes from PeerConfig. - SshPubKey []byte `protobuf:"bytes,2,opt,name=sshPubKey,proto3" json:"sshPubKey,omitempty"` + SshPubKey []byte `protobuf:"bytes,2,opt,name=sshPubKey,proto3" json:"sshPubKey,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SSHConfig) Reset() { - *x = SSHConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[16] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SSHConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SSHConfig) ProtoMessage() {} - -func (x *SSHConfig) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[16] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SSHConfig.ProtoReflect.Descriptor instead. +func (m *SSHConfig) Reset() { *m = SSHConfig{} } +func (m *SSHConfig) String() string { return proto.CompactTextString(m) } +func (*SSHConfig) ProtoMessage() {} func (*SSHConfig) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{16} + return fileDescriptor_edc174f991dc0a25, []int{16} } -func (x *SSHConfig) GetSshEnabled() bool { - if x != nil { - return x.SshEnabled +func (m *SSHConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SSHConfig.Unmarshal(m, b) +} +func (m *SSHConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SSHConfig.Marshal(b, m, deterministic) +} +func (m *SSHConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_SSHConfig.Merge(m, src) +} +func (m *SSHConfig) XXX_Size() int { + return xxx_messageInfo_SSHConfig.Size(m) +} +func (m *SSHConfig) XXX_DiscardUnknown() { + xxx_messageInfo_SSHConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_SSHConfig proto.InternalMessageInfo + +func (m *SSHConfig) GetSshEnabled() bool { + if m != nil { + return m.SshEnabled } return false } -func (x *SSHConfig) GetSshPubKey() []byte { - if x != nil { - return x.SshPubKey +func (m *SSHConfig) GetSshPubKey() []byte { + if m != nil { + return m.SshPubKey } return nil } // DeviceAuthorizationFlowRequest empty struct for future expansion type DeviceAuthorizationFlowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *DeviceAuthorizationFlowRequest) Reset() { - *x = DeviceAuthorizationFlowRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[17] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeviceAuthorizationFlowRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeviceAuthorizationFlowRequest) ProtoMessage() {} - -func (x *DeviceAuthorizationFlowRequest) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[17] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeviceAuthorizationFlowRequest.ProtoReflect.Descriptor instead. +func (m *DeviceAuthorizationFlowRequest) Reset() { *m = DeviceAuthorizationFlowRequest{} } +func (m *DeviceAuthorizationFlowRequest) String() string { return proto.CompactTextString(m) } +func (*DeviceAuthorizationFlowRequest) ProtoMessage() {} func (*DeviceAuthorizationFlowRequest) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{17} + return fileDescriptor_edc174f991dc0a25, []int{17} } +func (m *DeviceAuthorizationFlowRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeviceAuthorizationFlowRequest.Unmarshal(m, b) +} +func (m *DeviceAuthorizationFlowRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeviceAuthorizationFlowRequest.Marshal(b, m, deterministic) +} +func (m *DeviceAuthorizationFlowRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeviceAuthorizationFlowRequest.Merge(m, src) +} +func (m *DeviceAuthorizationFlowRequest) XXX_Size() int { + return xxx_messageInfo_DeviceAuthorizationFlowRequest.Size(m) +} +func (m *DeviceAuthorizationFlowRequest) XXX_DiscardUnknown() { + xxx_messageInfo_DeviceAuthorizationFlowRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_DeviceAuthorizationFlowRequest proto.InternalMessageInfo + // DeviceAuthorizationFlow represents Device Authorization Flow information // that can be used by the client to login initiate a Oauth 2.0 device authorization grant flow // see https://datatracker.ietf.org/doc/html/rfc8628 type DeviceAuthorizationFlow struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // An IDP provider , (eg. Auth0) - Provider DeviceAuthorizationFlowProvider `protobuf:"varint,1,opt,name=Provider,proto3,enum=management.DeviceAuthorizationFlowProvider" json:"Provider,omitempty"` - ProviderConfig *ProviderConfig `protobuf:"bytes,2,opt,name=ProviderConfig,proto3" json:"ProviderConfig,omitempty"` + Provider DeviceAuthorizationFlowProvider `protobuf:"varint,1,opt,name=Provider,proto3,enum=management.DeviceAuthorizationFlowProvider" json:"Provider,omitempty"` + ProviderConfig *ProviderConfig `protobuf:"bytes,2,opt,name=ProviderConfig,proto3" json:"ProviderConfig,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *DeviceAuthorizationFlow) Reset() { - *x = DeviceAuthorizationFlow{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[18] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeviceAuthorizationFlow) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeviceAuthorizationFlow) ProtoMessage() {} - -func (x *DeviceAuthorizationFlow) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[18] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DeviceAuthorizationFlow.ProtoReflect.Descriptor instead. +func (m *DeviceAuthorizationFlow) Reset() { *m = DeviceAuthorizationFlow{} } +func (m *DeviceAuthorizationFlow) String() string { return proto.CompactTextString(m) } +func (*DeviceAuthorizationFlow) ProtoMessage() {} func (*DeviceAuthorizationFlow) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{18} + return fileDescriptor_edc174f991dc0a25, []int{18} } -func (x *DeviceAuthorizationFlow) GetProvider() DeviceAuthorizationFlowProvider { - if x != nil { - return x.Provider +func (m *DeviceAuthorizationFlow) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DeviceAuthorizationFlow.Unmarshal(m, b) +} +func (m *DeviceAuthorizationFlow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DeviceAuthorizationFlow.Marshal(b, m, deterministic) +} +func (m *DeviceAuthorizationFlow) XXX_Merge(src proto.Message) { + xxx_messageInfo_DeviceAuthorizationFlow.Merge(m, src) +} +func (m *DeviceAuthorizationFlow) XXX_Size() int { + return xxx_messageInfo_DeviceAuthorizationFlow.Size(m) +} +func (m *DeviceAuthorizationFlow) XXX_DiscardUnknown() { + xxx_messageInfo_DeviceAuthorizationFlow.DiscardUnknown(m) +} + +var xxx_messageInfo_DeviceAuthorizationFlow proto.InternalMessageInfo + +func (m *DeviceAuthorizationFlow) GetProvider() DeviceAuthorizationFlowProvider { + if m != nil { + return m.Provider } return DeviceAuthorizationFlow_HOSTED } -func (x *DeviceAuthorizationFlow) GetProviderConfig() *ProviderConfig { - if x != nil { - return x.ProviderConfig +func (m *DeviceAuthorizationFlow) GetProviderConfig() *ProviderConfig { + if m != nil { + return m.ProviderConfig } return nil } // PKCEAuthorizationFlowRequest empty struct for future expansion type PKCEAuthorizationFlowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PKCEAuthorizationFlowRequest) Reset() { - *x = PKCEAuthorizationFlowRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[19] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PKCEAuthorizationFlowRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PKCEAuthorizationFlowRequest) ProtoMessage() {} - -func (x *PKCEAuthorizationFlowRequest) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[19] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PKCEAuthorizationFlowRequest.ProtoReflect.Descriptor instead. +func (m *PKCEAuthorizationFlowRequest) Reset() { *m = PKCEAuthorizationFlowRequest{} } +func (m *PKCEAuthorizationFlowRequest) String() string { return proto.CompactTextString(m) } +func (*PKCEAuthorizationFlowRequest) ProtoMessage() {} func (*PKCEAuthorizationFlowRequest) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{19} + return fileDescriptor_edc174f991dc0a25, []int{19} } +func (m *PKCEAuthorizationFlowRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PKCEAuthorizationFlowRequest.Unmarshal(m, b) +} +func (m *PKCEAuthorizationFlowRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PKCEAuthorizationFlowRequest.Marshal(b, m, deterministic) +} +func (m *PKCEAuthorizationFlowRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_PKCEAuthorizationFlowRequest.Merge(m, src) +} +func (m *PKCEAuthorizationFlowRequest) XXX_Size() int { + return xxx_messageInfo_PKCEAuthorizationFlowRequest.Size(m) +} +func (m *PKCEAuthorizationFlowRequest) XXX_DiscardUnknown() { + xxx_messageInfo_PKCEAuthorizationFlowRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_PKCEAuthorizationFlowRequest proto.InternalMessageInfo + // PKCEAuthorizationFlow represents Authorization Code Flow information // that can be used by the client to login initiate a Oauth 2.0 authorization code grant flow // with Proof Key for Code Exchange (PKCE). See https://datatracker.ietf.org/doc/html/rfc7636 type PKCEAuthorizationFlow struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ProviderConfig *ProviderConfig `protobuf:"bytes,1,opt,name=ProviderConfig,proto3" json:"ProviderConfig,omitempty"` + ProviderConfig *ProviderConfig `protobuf:"bytes,1,opt,name=ProviderConfig,proto3" json:"ProviderConfig,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *PKCEAuthorizationFlow) Reset() { - *x = PKCEAuthorizationFlow{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[20] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PKCEAuthorizationFlow) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PKCEAuthorizationFlow) ProtoMessage() {} - -func (x *PKCEAuthorizationFlow) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[20] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use PKCEAuthorizationFlow.ProtoReflect.Descriptor instead. +func (m *PKCEAuthorizationFlow) Reset() { *m = PKCEAuthorizationFlow{} } +func (m *PKCEAuthorizationFlow) String() string { return proto.CompactTextString(m) } +func (*PKCEAuthorizationFlow) ProtoMessage() {} func (*PKCEAuthorizationFlow) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{20} + return fileDescriptor_edc174f991dc0a25, []int{20} } -func (x *PKCEAuthorizationFlow) GetProviderConfig() *ProviderConfig { - if x != nil { - return x.ProviderConfig +func (m *PKCEAuthorizationFlow) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PKCEAuthorizationFlow.Unmarshal(m, b) +} +func (m *PKCEAuthorizationFlow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PKCEAuthorizationFlow.Marshal(b, m, deterministic) +} +func (m *PKCEAuthorizationFlow) XXX_Merge(src proto.Message) { + xxx_messageInfo_PKCEAuthorizationFlow.Merge(m, src) +} +func (m *PKCEAuthorizationFlow) XXX_Size() int { + return xxx_messageInfo_PKCEAuthorizationFlow.Size(m) +} +func (m *PKCEAuthorizationFlow) XXX_DiscardUnknown() { + xxx_messageInfo_PKCEAuthorizationFlow.DiscardUnknown(m) +} + +var xxx_messageInfo_PKCEAuthorizationFlow proto.InternalMessageInfo + +func (m *PKCEAuthorizationFlow) GetProviderConfig() *ProviderConfig { + if m != nil { + return m.ProviderConfig } return nil } // ProviderConfig has all attributes needed to initiate a device/pkce authorization flow type ProviderConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - // An IDP application client id ClientID string `protobuf:"bytes,1,opt,name=ClientID,proto3" json:"ClientID,omitempty"` // An IDP application client secret @@ -1706,1511 +1441,773 @@ type ProviderConfig struct { // AuthorizationEndpoint is the endpoint of an IDP manager where clients can obtain authorization code. AuthorizationEndpoint string `protobuf:"bytes,9,opt,name=AuthorizationEndpoint,proto3" json:"AuthorizationEndpoint,omitempty"` // RedirectURLs handles authorization code from IDP manager - RedirectURLs []string `protobuf:"bytes,10,rep,name=RedirectURLs,proto3" json:"RedirectURLs,omitempty"` + RedirectURLs []string `protobuf:"bytes,10,rep,name=RedirectURLs,proto3" json:"RedirectURLs,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *ProviderConfig) Reset() { - *x = ProviderConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[21] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProviderConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProviderConfig) ProtoMessage() {} - -func (x *ProviderConfig) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[21] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ProviderConfig.ProtoReflect.Descriptor instead. +func (m *ProviderConfig) Reset() { *m = ProviderConfig{} } +func (m *ProviderConfig) String() string { return proto.CompactTextString(m) } +func (*ProviderConfig) ProtoMessage() {} func (*ProviderConfig) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{21} + return fileDescriptor_edc174f991dc0a25, []int{21} } -func (x *ProviderConfig) GetClientID() string { - if x != nil { - return x.ClientID +func (m *ProviderConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_ProviderConfig.Unmarshal(m, b) +} +func (m *ProviderConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_ProviderConfig.Marshal(b, m, deterministic) +} +func (m *ProviderConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_ProviderConfig.Merge(m, src) +} +func (m *ProviderConfig) XXX_Size() int { + return xxx_messageInfo_ProviderConfig.Size(m) +} +func (m *ProviderConfig) XXX_DiscardUnknown() { + xxx_messageInfo_ProviderConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_ProviderConfig proto.InternalMessageInfo + +func (m *ProviderConfig) GetClientID() string { + if m != nil { + return m.ClientID } return "" } -func (x *ProviderConfig) GetClientSecret() string { - if x != nil { - return x.ClientSecret +func (m *ProviderConfig) GetClientSecret() string { + if m != nil { + return m.ClientSecret } return "" } -func (x *ProviderConfig) GetDomain() string { - if x != nil { - return x.Domain +func (m *ProviderConfig) GetDomain() string { + if m != nil { + return m.Domain } return "" } -func (x *ProviderConfig) GetAudience() string { - if x != nil { - return x.Audience +func (m *ProviderConfig) GetAudience() string { + if m != nil { + return m.Audience } return "" } -func (x *ProviderConfig) GetDeviceAuthEndpoint() string { - if x != nil { - return x.DeviceAuthEndpoint +func (m *ProviderConfig) GetDeviceAuthEndpoint() string { + if m != nil { + return m.DeviceAuthEndpoint } return "" } -func (x *ProviderConfig) GetTokenEndpoint() string { - if x != nil { - return x.TokenEndpoint +func (m *ProviderConfig) GetTokenEndpoint() string { + if m != nil { + return m.TokenEndpoint } return "" } -func (x *ProviderConfig) GetScope() string { - if x != nil { - return x.Scope +func (m *ProviderConfig) GetScope() string { + if m != nil { + return m.Scope } return "" } -func (x *ProviderConfig) GetUseIDToken() bool { - if x != nil { - return x.UseIDToken +func (m *ProviderConfig) GetUseIDToken() bool { + if m != nil { + return m.UseIDToken } return false } -func (x *ProviderConfig) GetAuthorizationEndpoint() string { - if x != nil { - return x.AuthorizationEndpoint +func (m *ProviderConfig) GetAuthorizationEndpoint() string { + if m != nil { + return m.AuthorizationEndpoint } return "" } -func (x *ProviderConfig) GetRedirectURLs() []string { - if x != nil { - return x.RedirectURLs +func (m *ProviderConfig) GetRedirectURLs() []string { + if m != nil { + return m.RedirectURLs } return nil } // Route represents a route.Route object type Route struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` - Network string `protobuf:"bytes,2,opt,name=Network,proto3" json:"Network,omitempty"` - NetworkType int64 `protobuf:"varint,3,opt,name=NetworkType,proto3" json:"NetworkType,omitempty"` - Peer string `protobuf:"bytes,4,opt,name=Peer,proto3" json:"Peer,omitempty"` - Metric int64 `protobuf:"varint,5,opt,name=Metric,proto3" json:"Metric,omitempty"` - Masquerade bool `protobuf:"varint,6,opt,name=Masquerade,proto3" json:"Masquerade,omitempty"` - NetID string `protobuf:"bytes,7,opt,name=NetID,proto3" json:"NetID,omitempty"` + ID string `protobuf:"bytes,1,opt,name=ID,proto3" json:"ID,omitempty"` + Network string `protobuf:"bytes,2,opt,name=Network,proto3" json:"Network,omitempty"` + NetworkType int64 `protobuf:"varint,3,opt,name=NetworkType,proto3" json:"NetworkType,omitempty"` + Peer string `protobuf:"bytes,4,opt,name=Peer,proto3" json:"Peer,omitempty"` + Metric int64 `protobuf:"varint,5,opt,name=Metric,proto3" json:"Metric,omitempty"` + Masquerade bool `protobuf:"varint,6,opt,name=Masquerade,proto3" json:"Masquerade,omitempty"` + NetID string `protobuf:"bytes,7,opt,name=NetID,proto3" json:"NetID,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *Route) Reset() { - *x = Route{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[22] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Route) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Route) ProtoMessage() {} - -func (x *Route) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[22] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use Route.ProtoReflect.Descriptor instead. +func (m *Route) Reset() { *m = Route{} } +func (m *Route) String() string { return proto.CompactTextString(m) } +func (*Route) ProtoMessage() {} func (*Route) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{22} + return fileDescriptor_edc174f991dc0a25, []int{22} } -func (x *Route) GetID() string { - if x != nil { - return x.ID +func (m *Route) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_Route.Unmarshal(m, b) +} +func (m *Route) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_Route.Marshal(b, m, deterministic) +} +func (m *Route) XXX_Merge(src proto.Message) { + xxx_messageInfo_Route.Merge(m, src) +} +func (m *Route) XXX_Size() int { + return xxx_messageInfo_Route.Size(m) +} +func (m *Route) XXX_DiscardUnknown() { + xxx_messageInfo_Route.DiscardUnknown(m) +} + +var xxx_messageInfo_Route proto.InternalMessageInfo + +func (m *Route) GetID() string { + if m != nil { + return m.ID } return "" } -func (x *Route) GetNetwork() string { - if x != nil { - return x.Network +func (m *Route) GetNetwork() string { + if m != nil { + return m.Network } return "" } -func (x *Route) GetNetworkType() int64 { - if x != nil { - return x.NetworkType +func (m *Route) GetNetworkType() int64 { + if m != nil { + return m.NetworkType } return 0 } -func (x *Route) GetPeer() string { - if x != nil { - return x.Peer +func (m *Route) GetPeer() string { + if m != nil { + return m.Peer } return "" } -func (x *Route) GetMetric() int64 { - if x != nil { - return x.Metric +func (m *Route) GetMetric() int64 { + if m != nil { + return m.Metric } return 0 } -func (x *Route) GetMasquerade() bool { - if x != nil { - return x.Masquerade +func (m *Route) GetMasquerade() bool { + if m != nil { + return m.Masquerade } return false } -func (x *Route) GetNetID() string { - if x != nil { - return x.NetID +func (m *Route) GetNetID() string { + if m != nil { + return m.NetID } return "" } // DNSConfig represents a dns.Update type DNSConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ServiceEnable bool `protobuf:"varint,1,opt,name=ServiceEnable,proto3" json:"ServiceEnable,omitempty"` - NameServerGroups []*NameServerGroup `protobuf:"bytes,2,rep,name=NameServerGroups,proto3" json:"NameServerGroups,omitempty"` - CustomZones []*CustomZone `protobuf:"bytes,3,rep,name=CustomZones,proto3" json:"CustomZones,omitempty"` + ServiceEnable bool `protobuf:"varint,1,opt,name=ServiceEnable,proto3" json:"ServiceEnable,omitempty"` + NameServerGroups []*NameServerGroup `protobuf:"bytes,2,rep,name=NameServerGroups,proto3" json:"NameServerGroups,omitempty"` + CustomZones []*CustomZone `protobuf:"bytes,3,rep,name=CustomZones,proto3" json:"CustomZones,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *DNSConfig) Reset() { - *x = DNSConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[23] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DNSConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DNSConfig) ProtoMessage() {} - -func (x *DNSConfig) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[23] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use DNSConfig.ProtoReflect.Descriptor instead. +func (m *DNSConfig) Reset() { *m = DNSConfig{} } +func (m *DNSConfig) String() string { return proto.CompactTextString(m) } +func (*DNSConfig) ProtoMessage() {} func (*DNSConfig) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{23} + return fileDescriptor_edc174f991dc0a25, []int{23} } -func (x *DNSConfig) GetServiceEnable() bool { - if x != nil { - return x.ServiceEnable +func (m *DNSConfig) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_DNSConfig.Unmarshal(m, b) +} +func (m *DNSConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_DNSConfig.Marshal(b, m, deterministic) +} +func (m *DNSConfig) XXX_Merge(src proto.Message) { + xxx_messageInfo_DNSConfig.Merge(m, src) +} +func (m *DNSConfig) XXX_Size() int { + return xxx_messageInfo_DNSConfig.Size(m) +} +func (m *DNSConfig) XXX_DiscardUnknown() { + xxx_messageInfo_DNSConfig.DiscardUnknown(m) +} + +var xxx_messageInfo_DNSConfig proto.InternalMessageInfo + +func (m *DNSConfig) GetServiceEnable() bool { + if m != nil { + return m.ServiceEnable } return false } -func (x *DNSConfig) GetNameServerGroups() []*NameServerGroup { - if x != nil { - return x.NameServerGroups +func (m *DNSConfig) GetNameServerGroups() []*NameServerGroup { + if m != nil { + return m.NameServerGroups } return nil } -func (x *DNSConfig) GetCustomZones() []*CustomZone { - if x != nil { - return x.CustomZones +func (m *DNSConfig) GetCustomZones() []*CustomZone { + if m != nil { + return m.CustomZones } return nil } // CustomZone represents a dns.CustomZone type CustomZone struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Domain string `protobuf:"bytes,1,opt,name=Domain,proto3" json:"Domain,omitempty"` - Records []*SimpleRecord `protobuf:"bytes,2,rep,name=Records,proto3" json:"Records,omitempty"` + Domain string `protobuf:"bytes,1,opt,name=Domain,proto3" json:"Domain,omitempty"` + Records []*SimpleRecord `protobuf:"bytes,2,rep,name=Records,proto3" json:"Records,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *CustomZone) Reset() { - *x = CustomZone{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[24] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CustomZone) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CustomZone) ProtoMessage() {} - -func (x *CustomZone) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[24] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use CustomZone.ProtoReflect.Descriptor instead. +func (m *CustomZone) Reset() { *m = CustomZone{} } +func (m *CustomZone) String() string { return proto.CompactTextString(m) } +func (*CustomZone) ProtoMessage() {} func (*CustomZone) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{24} + return fileDescriptor_edc174f991dc0a25, []int{24} } -func (x *CustomZone) GetDomain() string { - if x != nil { - return x.Domain +func (m *CustomZone) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_CustomZone.Unmarshal(m, b) +} +func (m *CustomZone) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_CustomZone.Marshal(b, m, deterministic) +} +func (m *CustomZone) XXX_Merge(src proto.Message) { + xxx_messageInfo_CustomZone.Merge(m, src) +} +func (m *CustomZone) XXX_Size() int { + return xxx_messageInfo_CustomZone.Size(m) +} +func (m *CustomZone) XXX_DiscardUnknown() { + xxx_messageInfo_CustomZone.DiscardUnknown(m) +} + +var xxx_messageInfo_CustomZone proto.InternalMessageInfo + +func (m *CustomZone) GetDomain() string { + if m != nil { + return m.Domain } return "" } -func (x *CustomZone) GetRecords() []*SimpleRecord { - if x != nil { - return x.Records +func (m *CustomZone) GetRecords() []*SimpleRecord { + if m != nil { + return m.Records } return nil } // SimpleRecord represents a dns.SimpleRecord type SimpleRecord struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"` - Type int64 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"` - Class string `protobuf:"bytes,3,opt,name=Class,proto3" json:"Class,omitempty"` - TTL int64 `protobuf:"varint,4,opt,name=TTL,proto3" json:"TTL,omitempty"` - RData string `protobuf:"bytes,5,opt,name=RData,proto3" json:"RData,omitempty"` + Name string `protobuf:"bytes,1,opt,name=Name,proto3" json:"Name,omitempty"` + Type int64 `protobuf:"varint,2,opt,name=Type,proto3" json:"Type,omitempty"` + Class string `protobuf:"bytes,3,opt,name=Class,proto3" json:"Class,omitempty"` + TTL int64 `protobuf:"varint,4,opt,name=TTL,proto3" json:"TTL,omitempty"` + RData string `protobuf:"bytes,5,opt,name=RData,proto3" json:"RData,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *SimpleRecord) Reset() { - *x = SimpleRecord{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[25] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SimpleRecord) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SimpleRecord) ProtoMessage() {} - -func (x *SimpleRecord) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[25] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use SimpleRecord.ProtoReflect.Descriptor instead. +func (m *SimpleRecord) Reset() { *m = SimpleRecord{} } +func (m *SimpleRecord) String() string { return proto.CompactTextString(m) } +func (*SimpleRecord) ProtoMessage() {} func (*SimpleRecord) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{25} + return fileDescriptor_edc174f991dc0a25, []int{25} } -func (x *SimpleRecord) GetName() string { - if x != nil { - return x.Name +func (m *SimpleRecord) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SimpleRecord.Unmarshal(m, b) +} +func (m *SimpleRecord) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SimpleRecord.Marshal(b, m, deterministic) +} +func (m *SimpleRecord) XXX_Merge(src proto.Message) { + xxx_messageInfo_SimpleRecord.Merge(m, src) +} +func (m *SimpleRecord) XXX_Size() int { + return xxx_messageInfo_SimpleRecord.Size(m) +} +func (m *SimpleRecord) XXX_DiscardUnknown() { + xxx_messageInfo_SimpleRecord.DiscardUnknown(m) +} + +var xxx_messageInfo_SimpleRecord proto.InternalMessageInfo + +func (m *SimpleRecord) GetName() string { + if m != nil { + return m.Name } return "" } -func (x *SimpleRecord) GetType() int64 { - if x != nil { - return x.Type +func (m *SimpleRecord) GetType() int64 { + if m != nil { + return m.Type } return 0 } -func (x *SimpleRecord) GetClass() string { - if x != nil { - return x.Class +func (m *SimpleRecord) GetClass() string { + if m != nil { + return m.Class } return "" } -func (x *SimpleRecord) GetTTL() int64 { - if x != nil { - return x.TTL +func (m *SimpleRecord) GetTTL() int64 { + if m != nil { + return m.TTL } return 0 } -func (x *SimpleRecord) GetRData() string { - if x != nil { - return x.RData +func (m *SimpleRecord) GetRData() string { + if m != nil { + return m.RData } return "" } // NameServerGroup represents a dns.NameServerGroup type NameServerGroup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - NameServers []*NameServer `protobuf:"bytes,1,rep,name=NameServers,proto3" json:"NameServers,omitempty"` Primary bool `protobuf:"varint,2,opt,name=Primary,proto3" json:"Primary,omitempty"` Domains []string `protobuf:"bytes,3,rep,name=Domains,proto3" json:"Domains,omitempty"` SearchDomainsEnabled bool `protobuf:"varint,4,opt,name=SearchDomainsEnabled,proto3" json:"SearchDomainsEnabled,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *NameServerGroup) Reset() { - *x = NameServerGroup{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NameServerGroup) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NameServerGroup) ProtoMessage() {} - -func (x *NameServerGroup) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NameServerGroup.ProtoReflect.Descriptor instead. +func (m *NameServerGroup) Reset() { *m = NameServerGroup{} } +func (m *NameServerGroup) String() string { return proto.CompactTextString(m) } +func (*NameServerGroup) ProtoMessage() {} func (*NameServerGroup) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{26} + return fileDescriptor_edc174f991dc0a25, []int{26} } -func (x *NameServerGroup) GetNameServers() []*NameServer { - if x != nil { - return x.NameServers +func (m *NameServerGroup) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NameServerGroup.Unmarshal(m, b) +} +func (m *NameServerGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NameServerGroup.Marshal(b, m, deterministic) +} +func (m *NameServerGroup) XXX_Merge(src proto.Message) { + xxx_messageInfo_NameServerGroup.Merge(m, src) +} +func (m *NameServerGroup) XXX_Size() int { + return xxx_messageInfo_NameServerGroup.Size(m) +} +func (m *NameServerGroup) XXX_DiscardUnknown() { + xxx_messageInfo_NameServerGroup.DiscardUnknown(m) +} + +var xxx_messageInfo_NameServerGroup proto.InternalMessageInfo + +func (m *NameServerGroup) GetNameServers() []*NameServer { + if m != nil { + return m.NameServers } return nil } -func (x *NameServerGroup) GetPrimary() bool { - if x != nil { - return x.Primary +func (m *NameServerGroup) GetPrimary() bool { + if m != nil { + return m.Primary } return false } -func (x *NameServerGroup) GetDomains() []string { - if x != nil { - return x.Domains +func (m *NameServerGroup) GetDomains() []string { + if m != nil { + return m.Domains } return nil } -func (x *NameServerGroup) GetSearchDomainsEnabled() bool { - if x != nil { - return x.SearchDomainsEnabled +func (m *NameServerGroup) GetSearchDomainsEnabled() bool { + if m != nil { + return m.SearchDomainsEnabled } return false } // NameServer represents a dns.NameServer type NameServer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IP string `protobuf:"bytes,1,opt,name=IP,proto3" json:"IP,omitempty"` - NSType int64 `protobuf:"varint,2,opt,name=NSType,proto3" json:"NSType,omitempty"` - Port int64 `protobuf:"varint,3,opt,name=Port,proto3" json:"Port,omitempty"` + IP string `protobuf:"bytes,1,opt,name=IP,proto3" json:"IP,omitempty"` + NSType int64 `protobuf:"varint,2,opt,name=NSType,proto3" json:"NSType,omitempty"` + Port int64 `protobuf:"varint,3,opt,name=Port,proto3" json:"Port,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *NameServer) Reset() { - *x = NameServer{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[27] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NameServer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NameServer) ProtoMessage() {} - -func (x *NameServer) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[27] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NameServer.ProtoReflect.Descriptor instead. +func (m *NameServer) Reset() { *m = NameServer{} } +func (m *NameServer) String() string { return proto.CompactTextString(m) } +func (*NameServer) ProtoMessage() {} func (*NameServer) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{27} + return fileDescriptor_edc174f991dc0a25, []int{27} } -func (x *NameServer) GetIP() string { - if x != nil { - return x.IP +func (m *NameServer) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NameServer.Unmarshal(m, b) +} +func (m *NameServer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NameServer.Marshal(b, m, deterministic) +} +func (m *NameServer) XXX_Merge(src proto.Message) { + xxx_messageInfo_NameServer.Merge(m, src) +} +func (m *NameServer) XXX_Size() int { + return xxx_messageInfo_NameServer.Size(m) +} +func (m *NameServer) XXX_DiscardUnknown() { + xxx_messageInfo_NameServer.DiscardUnknown(m) +} + +var xxx_messageInfo_NameServer proto.InternalMessageInfo + +func (m *NameServer) GetIP() string { + if m != nil { + return m.IP } return "" } -func (x *NameServer) GetNSType() int64 { - if x != nil { - return x.NSType +func (m *NameServer) GetNSType() int64 { + if m != nil { + return m.NSType } return 0 } -func (x *NameServer) GetPort() int64 { - if x != nil { - return x.Port +func (m *NameServer) GetPort() int64 { + if m != nil { + return m.Port } return 0 } // FirewallRule represents a firewall rule type FirewallRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PeerIP string `protobuf:"bytes,1,opt,name=PeerIP,proto3" json:"PeerIP,omitempty"` - Direction FirewallRuleDirection `protobuf:"varint,2,opt,name=Direction,proto3,enum=management.FirewallRuleDirection" json:"Direction,omitempty"` - Action FirewallRuleAction `protobuf:"varint,3,opt,name=Action,proto3,enum=management.FirewallRuleAction" json:"Action,omitempty"` - Protocol FirewallRuleProtocol `protobuf:"varint,4,opt,name=Protocol,proto3,enum=management.FirewallRuleProtocol" json:"Protocol,omitempty"` - Port string `protobuf:"bytes,5,opt,name=Port,proto3" json:"Port,omitempty"` + PeerIP string `protobuf:"bytes,1,opt,name=PeerIP,proto3" json:"PeerIP,omitempty"` + Direction FirewallRuleDirection `protobuf:"varint,2,opt,name=Direction,proto3,enum=management.FirewallRuleDirection" json:"Direction,omitempty"` + Action FirewallRuleAction `protobuf:"varint,3,opt,name=Action,proto3,enum=management.FirewallRuleAction" json:"Action,omitempty"` + Protocol FirewallRuleProtocol `protobuf:"varint,4,opt,name=Protocol,proto3,enum=management.FirewallRuleProtocol" json:"Protocol,omitempty"` + Port string `protobuf:"bytes,5,opt,name=Port,proto3" json:"Port,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *FirewallRule) Reset() { - *x = FirewallRule{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FirewallRule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FirewallRule) ProtoMessage() {} - -func (x *FirewallRule) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use FirewallRule.ProtoReflect.Descriptor instead. +func (m *FirewallRule) Reset() { *m = FirewallRule{} } +func (m *FirewallRule) String() string { return proto.CompactTextString(m) } +func (*FirewallRule) ProtoMessage() {} func (*FirewallRule) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{28} + return fileDescriptor_edc174f991dc0a25, []int{28} } -func (x *FirewallRule) GetPeerIP() string { - if x != nil { - return x.PeerIP +func (m *FirewallRule) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_FirewallRule.Unmarshal(m, b) +} +func (m *FirewallRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_FirewallRule.Marshal(b, m, deterministic) +} +func (m *FirewallRule) XXX_Merge(src proto.Message) { + xxx_messageInfo_FirewallRule.Merge(m, src) +} +func (m *FirewallRule) XXX_Size() int { + return xxx_messageInfo_FirewallRule.Size(m) +} +func (m *FirewallRule) XXX_DiscardUnknown() { + xxx_messageInfo_FirewallRule.DiscardUnknown(m) +} + +var xxx_messageInfo_FirewallRule proto.InternalMessageInfo + +func (m *FirewallRule) GetPeerIP() string { + if m != nil { + return m.PeerIP } return "" } -func (x *FirewallRule) GetDirection() FirewallRuleDirection { - if x != nil { - return x.Direction +func (m *FirewallRule) GetDirection() FirewallRuleDirection { + if m != nil { + return m.Direction } return FirewallRule_IN } -func (x *FirewallRule) GetAction() FirewallRuleAction { - if x != nil { - return x.Action +func (m *FirewallRule) GetAction() FirewallRuleAction { + if m != nil { + return m.Action } return FirewallRule_ACCEPT } -func (x *FirewallRule) GetProtocol() FirewallRuleProtocol { - if x != nil { - return x.Protocol +func (m *FirewallRule) GetProtocol() FirewallRuleProtocol { + if m != nil { + return m.Protocol } return FirewallRule_UNKNOWN } -func (x *FirewallRule) GetPort() string { - if x != nil { - return x.Port +func (m *FirewallRule) GetPort() string { + if m != nil { + return m.Port } return "" } type NetworkAddress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NetIP string `protobuf:"bytes,1,opt,name=netIP,proto3" json:"netIP,omitempty"` - Mac string `protobuf:"bytes,2,opt,name=mac,proto3" json:"mac,omitempty"` + NetIP string `protobuf:"bytes,1,opt,name=netIP,proto3" json:"netIP,omitempty"` + Mac string `protobuf:"bytes,2,opt,name=mac,proto3" json:"mac,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } -func (x *NetworkAddress) Reset() { - *x = NetworkAddress{} - if protoimpl.UnsafeEnabled { - mi := &file_management_proto_msgTypes[29] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NetworkAddress) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NetworkAddress) ProtoMessage() {} - -func (x *NetworkAddress) ProtoReflect() protoreflect.Message { - mi := &file_management_proto_msgTypes[29] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NetworkAddress.ProtoReflect.Descriptor instead. +func (m *NetworkAddress) Reset() { *m = NetworkAddress{} } +func (m *NetworkAddress) String() string { return proto.CompactTextString(m) } +func (*NetworkAddress) ProtoMessage() {} func (*NetworkAddress) Descriptor() ([]byte, []int) { - return file_management_proto_rawDescGZIP(), []int{29} + return fileDescriptor_edc174f991dc0a25, []int{29} } -func (x *NetworkAddress) GetNetIP() string { - if x != nil { - return x.NetIP +func (m *NetworkAddress) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_NetworkAddress.Unmarshal(m, b) +} +func (m *NetworkAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_NetworkAddress.Marshal(b, m, deterministic) +} +func (m *NetworkAddress) XXX_Merge(src proto.Message) { + xxx_messageInfo_NetworkAddress.Merge(m, src) +} +func (m *NetworkAddress) XXX_Size() int { + return xxx_messageInfo_NetworkAddress.Size(m) +} +func (m *NetworkAddress) XXX_DiscardUnknown() { + xxx_messageInfo_NetworkAddress.DiscardUnknown(m) +} + +var xxx_messageInfo_NetworkAddress proto.InternalMessageInfo + +func (m *NetworkAddress) GetNetIP() string { + if m != nil { + return m.NetIP } return "" } -func (x *NetworkAddress) GetMac() string { - if x != nil { - return x.Mac +func (m *NetworkAddress) GetMac() string { + if m != nil { + return m.Mac } return "" } -var File_management_proto protoreflect.FileDescriptor - -var file_management_proto_rawDesc = []byte{ - 0x0a, 0x10, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x1a, 0x1f, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x5c, 0x0a, 0x10, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x67, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x67, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, - 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x62, - 0x6f, 0x64, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x0d, 0x0a, - 0x0b, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xbb, 0x02, 0x0a, - 0x0c, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, - 0x11, 0x77, 0x69, 0x72, 0x65, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x72, 0x65, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x77, 0x69, 0x72, 0x65, 0x74, 0x72, 0x75, - 0x73, 0x74, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x65, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, - 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x73, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x49, 0x73, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x12, 0x36, 0x0a, 0x0a, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x52, 0x0a, - 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x22, 0xa8, 0x01, 0x0a, 0x0c, 0x4c, - 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x73, - 0x65, 0x74, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, - 0x65, 0x74, 0x75, 0x70, 0x4b, 0x65, 0x79, 0x12, 0x2e, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, - 0x61, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x6a, 0x77, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6a, 0x77, 0x74, 0x54, 0x6f, - 0x6b, 0x65, 0x6e, 0x12, 0x30, 0x0a, 0x08, 0x70, 0x65, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x73, 0x52, 0x08, 0x70, 0x65, 0x65, - 0x72, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x44, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, 0x4b, 0x65, 0x79, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x73, 0x68, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x73, 0x68, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x12, - 0x1a, 0x0a, 0x08, 0x77, 0x67, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x08, 0x77, 0x67, 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x22, 0x3f, 0x0a, 0x0b, 0x45, - 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, - 0x6f, 0x75, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x22, 0xa9, 0x04, 0x0a, - 0x0e, 0x50, 0x65, 0x65, 0x72, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x4d, 0x65, 0x74, 0x61, 0x12, - 0x1a, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x67, - 0x6f, 0x4f, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x6f, 0x4f, 0x53, 0x12, - 0x16, 0x0a, 0x06, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x72, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x53, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x4f, 0x53, 0x12, 0x2e, 0x0a, 0x12, 0x77, 0x69, 0x72, 0x65, 0x74, - 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x12, 0x77, 0x69, 0x72, 0x65, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, - 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x75, 0x69, 0x56, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x69, 0x56, 0x65, - 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6b, 0x65, - 0x72, 0x6e, 0x65, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x4f, - 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x4f, 0x53, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x10, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x0b, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, - 0x10, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, - 0x73, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, - 0x6d, 0x62, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x79, 0x73, 0x53, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0e, 0x73, - 0x79, 0x73, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0d, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x79, 0x73, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x73, 0x79, 0x73, 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, - 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x79, - 0x73, 0x4d, 0x61, 0x6e, 0x75, 0x66, 0x61, 0x63, 0x74, 0x75, 0x72, 0x65, 0x72, 0x12, 0x39, 0x0a, - 0x0b, 0x65, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x45, 0x6e, 0x76, 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, 0x76, - 0x69, 0x72, 0x6f, 0x6e, 0x6d, 0x65, 0x6e, 0x74, 0x22, 0x94, 0x01, 0x0a, 0x0d, 0x4c, 0x6f, 0x67, - 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x11, 0x77, 0x69, - 0x72, 0x65, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x57, 0x69, 0x72, 0x65, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x77, 0x69, 0x72, 0x65, 0x74, 0x72, 0x75, 0x73, 0x74, 0x65, - 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0x79, 0x0a, 0x11, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x38, 0x0a, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, - 0x73, 0x41, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x73, 0x41, 0x74, - 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x22, 0xa8, 0x01, 0x0a, 0x11, 0x57, 0x69, 0x72, 0x65, 0x74, 0x72, 0x75, 0x73, - 0x74, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2c, 0x0a, 0x05, 0x73, 0x74, 0x75, - 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x05, 0x73, 0x74, 0x75, 0x6e, 0x73, 0x12, 0x35, 0x0a, 0x05, 0x74, 0x75, 0x72, 0x6e, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x48, 0x6f, 0x73, - 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x05, 0x74, 0x75, 0x72, 0x6e, 0x73, 0x12, 0x2e, - 0x0a, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x6f, 0x73, 0x74, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x22, 0x98, - 0x01, 0x0a, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, - 0x3b, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x48, - 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x3b, 0x0a, 0x08, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, - 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, - 0x54, 0x50, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x48, 0x54, 0x54, 0x50, 0x53, 0x10, 0x03, 0x12, - 0x08, 0x0a, 0x04, 0x44, 0x54, 0x4c, 0x53, 0x10, 0x04, 0x22, 0x7d, 0x0a, 0x13, 0x50, 0x72, 0x6f, - 0x74, 0x65, 0x63, 0x74, 0x65, 0x64, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x36, 0x0a, 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0a, 0x68, 0x6f, - 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x81, 0x01, 0x0a, 0x0a, 0x50, 0x65, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x64, 0x6e, 0x73, 0x12, 0x33, 0x0a, 0x09, 0x73, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x53, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, - 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, 0x64, 0x6e, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x22, 0xe2, 0x03, 0x0a, - 0x0a, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4d, 0x61, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x53, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x53, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x12, 0x36, 0x0a, 0x0a, 0x70, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, - 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x0a, 0x70, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x0b, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0b, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x12, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, - 0x65, 0x65, 0x72, 0x73, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x06, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x06, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x09, 0x44, 0x4e, 0x53, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x4e, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x09, 0x44, 0x4e, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a, 0x0c, 0x6f, - 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x0c, 0x6f, 0x66, 0x66, 0x6c, 0x69, 0x6e, 0x65, 0x50, 0x65, 0x65, 0x72, 0x73, 0x12, 0x3e, 0x0a, - 0x0d, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x18, 0x08, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0d, - 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x32, 0x0a, - 0x14, 0x66, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x49, 0x73, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x66, 0x69, 0x72, - 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x49, 0x73, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x22, 0x97, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x50, 0x65, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x77, 0x67, 0x50, 0x75, 0x62, 0x4b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x77, 0x67, 0x50, 0x75, 0x62, 0x4b, - 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x49, 0x70, 0x73, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x49, - 0x70, 0x73, 0x12, 0x33, 0x0a, 0x09, 0x73, 0x73, 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x53, 0x53, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x09, 0x73, 0x73, - 0x68, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x71, 0x64, 0x6e, 0x22, 0x49, 0x0a, 0x09, 0x53, - 0x53, 0x48, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x73, 0x68, 0x45, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x73, 0x73, - 0x68, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x73, 0x68, 0x50, - 0x75, 0x62, 0x4b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x73, 0x73, 0x68, - 0x50, 0x75, 0x62, 0x4b, 0x65, 0x79, 0x22, 0x20, 0x0a, 0x1e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, - 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x6f, - 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xbf, 0x01, 0x0a, 0x17, 0x44, 0x65, 0x76, - 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x48, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x2e, 0x70, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x42, - 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0x16, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x0a, - 0x0a, 0x06, 0x48, 0x4f, 0x53, 0x54, 0x45, 0x44, 0x10, 0x00, 0x22, 0x1e, 0x0a, 0x1c, 0x50, 0x4b, - 0x43, 0x45, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x5b, 0x0a, 0x15, 0x50, 0x4b, - 0x43, 0x45, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, - 0x6c, 0x6f, 0x77, 0x12, 0x42, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xea, 0x02, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x43, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x63, 0x72, 0x65, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x2e, - 0x0a, 0x12, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x44, 0x65, 0x76, 0x69, - 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x24, - 0x0a, 0x0d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x45, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x73, - 0x65, 0x49, 0x44, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, - 0x55, 0x73, 0x65, 0x49, 0x44, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x34, 0x0a, 0x15, 0x41, 0x75, - 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x52, 0x4c, 0x73, - 0x18, 0x0a, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x55, 0x52, 0x4c, 0x73, 0x22, 0xb5, 0x01, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x0e, - 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x44, 0x12, 0x18, - 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x20, 0x0a, 0x0b, 0x4e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x65, - 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x65, 0x65, 0x72, 0x12, 0x16, - 0x0a, 0x06, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61, 0x73, 0x71, 0x75, 0x65, - 0x72, 0x61, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x4d, 0x61, 0x73, 0x71, - 0x75, 0x65, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x65, 0x74, 0x49, 0x44, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x4e, 0x65, 0x74, 0x49, 0x44, 0x22, 0xb4, 0x01, 0x0a, - 0x09, 0x44, 0x4e, 0x53, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x24, 0x0a, 0x0d, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x47, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x47, 0x72, - 0x6f, 0x75, 0x70, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x38, 0x0a, 0x0b, 0x43, 0x75, 0x73, - 0x74, 0x6f, 0x6d, 0x5a, 0x6f, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x5a, 0x6f, 0x6e, 0x65, 0x52, 0x0b, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5a, 0x6f, - 0x6e, 0x65, 0x73, 0x22, 0x58, 0x0a, 0x0a, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5a, 0x6f, 0x6e, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x32, 0x0a, 0x07, 0x52, 0x65, 0x63, - 0x6f, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x52, 0x07, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x22, 0x74, 0x0a, - 0x0c, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x54, - 0x54, 0x4c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x54, 0x54, 0x4c, 0x12, 0x14, 0x0a, - 0x05, 0x52, 0x44, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x52, 0x44, - 0x61, 0x74, 0x61, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x38, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x52, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x73, 0x12, 0x18, 0x0a, 0x07, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x14, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x44, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x48, 0x0a, 0x0a, 0x4e, 0x61, 0x6d, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x50, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x49, 0x50, 0x12, 0x16, 0x0a, 0x06, 0x4e, 0x53, 0x54, 0x79, 0x70, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x4e, 0x53, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x50, - 0x6f, 0x72, 0x74, 0x22, 0xf0, 0x02, 0x0a, 0x0c, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, - 0x52, 0x75, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x65, 0x65, 0x72, 0x49, 0x50, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x50, 0x65, 0x65, 0x72, 0x49, 0x50, 0x12, 0x40, 0x0a, 0x09, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x72, - 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x37, - 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, - 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x72, 0x65, - 0x77, 0x61, 0x6c, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x06, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3d, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x69, 0x72, 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x52, - 0x75, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x52, 0x08, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x1c, 0x0a, 0x09, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x06, 0x0a, 0x02, 0x49, 0x4e, 0x10, 0x00, 0x12, - 0x07, 0x0a, 0x03, 0x4f, 0x55, 0x54, 0x10, 0x01, 0x22, 0x1e, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x10, 0x00, 0x12, 0x08, - 0x0a, 0x04, 0x44, 0x52, 0x4f, 0x50, 0x10, 0x01, 0x22, 0x3c, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, - 0x00, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x4c, 0x4c, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, - 0x50, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, - 0x49, 0x43, 0x4d, 0x50, 0x10, 0x04, 0x22, 0x38, 0x0a, 0x0e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x65, 0x74, 0x49, - 0x50, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6e, 0x65, 0x74, 0x49, 0x50, 0x12, 0x10, - 0x0a, 0x03, 0x6d, 0x61, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x61, 0x63, - 0x32, 0xd1, 0x03, 0x0a, 0x11, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x45, 0x0a, 0x05, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, - 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x63, - 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x1c, 0x2e, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, - 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, - 0x04, 0x53, 0x79, 0x6e, 0x63, 0x12, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x1a, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, - 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x22, 0x00, 0x30, 0x01, 0x12, 0x42, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x4b, 0x65, 0x79, 0x12, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, - 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x33, 0x0a, 0x09, 0x69, 0x73, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x79, 0x12, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x5a, - 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x41, 0x75, 0x74, 0x68, 0x6f, - 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x1c, 0x2e, 0x6d, - 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, - 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x50, 0x4b, 0x43, 0x45, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, - 0x65, 0x6e, 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x1a, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x22, 0x00, 0x42, 0x08, 0x5a, 0x06, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +func init() { + proto.RegisterEnum("management.HostConfig_Protocol", HostConfig_Protocol_name, HostConfig_Protocol_value) + proto.RegisterEnum("management.DeviceAuthorizationFlowProvider", DeviceAuthorizationFlowProvider_name, DeviceAuthorizationFlowProvider_value) + proto.RegisterEnum("management.FirewallRuleDirection", FirewallRuleDirection_name, FirewallRuleDirection_value) + proto.RegisterEnum("management.FirewallRuleAction", FirewallRuleAction_name, FirewallRuleAction_value) + proto.RegisterEnum("management.FirewallRuleProtocol", FirewallRuleProtocol_name, FirewallRuleProtocol_value) + proto.RegisterType((*EncryptedMessage)(nil), "management.EncryptedMessage") + proto.RegisterType((*SyncRequest)(nil), "management.SyncRequest") + proto.RegisterType((*SyncResponse)(nil), "management.SyncResponse") + proto.RegisterType((*LoginRequest)(nil), "management.LoginRequest") + proto.RegisterType((*PeerKeys)(nil), "management.PeerKeys") + proto.RegisterType((*Environment)(nil), "management.Environment") + proto.RegisterType((*PeerSystemMeta)(nil), "management.PeerSystemMeta") + proto.RegisterType((*LoginResponse)(nil), "management.LoginResponse") + proto.RegisterType((*ServerKeyResponse)(nil), "management.ServerKeyResponse") + proto.RegisterType((*Empty)(nil), "management.Empty") + proto.RegisterType((*WiretrusteeConfig)(nil), "management.WiretrusteeConfig") + proto.RegisterType((*HostConfig)(nil), "management.HostConfig") + proto.RegisterType((*ProtectedHostConfig)(nil), "management.ProtectedHostConfig") + proto.RegisterType((*PeerConfig)(nil), "management.PeerConfig") + proto.RegisterType((*NetworkMap)(nil), "management.NetworkMap") + proto.RegisterType((*RemotePeerConfig)(nil), "management.RemotePeerConfig") + proto.RegisterType((*SSHConfig)(nil), "management.SSHConfig") + proto.RegisterType((*DeviceAuthorizationFlowRequest)(nil), "management.DeviceAuthorizationFlowRequest") + proto.RegisterType((*DeviceAuthorizationFlow)(nil), "management.DeviceAuthorizationFlow") + proto.RegisterType((*PKCEAuthorizationFlowRequest)(nil), "management.PKCEAuthorizationFlowRequest") + proto.RegisterType((*PKCEAuthorizationFlow)(nil), "management.PKCEAuthorizationFlow") + proto.RegisterType((*ProviderConfig)(nil), "management.ProviderConfig") + proto.RegisterType((*Route)(nil), "management.Route") + proto.RegisterType((*DNSConfig)(nil), "management.DNSConfig") + proto.RegisterType((*CustomZone)(nil), "management.CustomZone") + proto.RegisterType((*SimpleRecord)(nil), "management.SimpleRecord") + proto.RegisterType((*NameServerGroup)(nil), "management.NameServerGroup") + proto.RegisterType((*NameServer)(nil), "management.NameServer") + proto.RegisterType((*FirewallRule)(nil), "management.FirewallRule") + proto.RegisterType((*NetworkAddress)(nil), "management.NetworkAddress") } -var ( - file_management_proto_rawDescOnce sync.Once - file_management_proto_rawDescData = file_management_proto_rawDesc -) - -func file_management_proto_rawDescGZIP() []byte { - file_management_proto_rawDescOnce.Do(func() { - file_management_proto_rawDescData = protoimpl.X.CompressGZIP(file_management_proto_rawDescData) - }) - return file_management_proto_rawDescData +func init() { + proto.RegisterFile("management.proto", fileDescriptor_edc174f991dc0a25) } -var file_management_proto_enumTypes = make([]protoimpl.EnumInfo, 5) -var file_management_proto_msgTypes = make([]protoimpl.MessageInfo, 30) -var file_management_proto_goTypes = []interface{}{ - (HostConfig_Protocol)(0), // 0: management.HostConfig.Protocol - (DeviceAuthorizationFlowProvider)(0), // 1: management.DeviceAuthorizationFlow.provider - (FirewallRuleDirection)(0), // 2: management.FirewallRule.direction - (FirewallRuleAction)(0), // 3: management.FirewallRule.action - (FirewallRuleProtocol)(0), // 4: management.FirewallRule.protocol - (*EncryptedMessage)(nil), // 5: management.EncryptedMessage - (*SyncRequest)(nil), // 6: management.SyncRequest - (*SyncResponse)(nil), // 7: management.SyncResponse - (*LoginRequest)(nil), // 8: management.LoginRequest - (*PeerKeys)(nil), // 9: management.PeerKeys - (*Environment)(nil), // 10: management.Environment - (*PeerSystemMeta)(nil), // 11: management.PeerSystemMeta - (*LoginResponse)(nil), // 12: management.LoginResponse - (*ServerKeyResponse)(nil), // 13: management.ServerKeyResponse - (*Empty)(nil), // 14: management.Empty - (*WiretrusteeConfig)(nil), // 15: management.WiretrusteeConfig - (*HostConfig)(nil), // 16: management.HostConfig - (*ProtectedHostConfig)(nil), // 17: management.ProtectedHostConfig - (*PeerConfig)(nil), // 18: management.PeerConfig - (*NetworkMap)(nil), // 19: management.NetworkMap - (*RemotePeerConfig)(nil), // 20: management.RemotePeerConfig - (*SSHConfig)(nil), // 21: management.SSHConfig - (*DeviceAuthorizationFlowRequest)(nil), // 22: management.DeviceAuthorizationFlowRequest - (*DeviceAuthorizationFlow)(nil), // 23: management.DeviceAuthorizationFlow - (*PKCEAuthorizationFlowRequest)(nil), // 24: management.PKCEAuthorizationFlowRequest - (*PKCEAuthorizationFlow)(nil), // 25: management.PKCEAuthorizationFlow - (*ProviderConfig)(nil), // 26: management.ProviderConfig - (*Route)(nil), // 27: management.Route - (*DNSConfig)(nil), // 28: management.DNSConfig - (*CustomZone)(nil), // 29: management.CustomZone - (*SimpleRecord)(nil), // 30: management.SimpleRecord - (*NameServerGroup)(nil), // 31: management.NameServerGroup - (*NameServer)(nil), // 32: management.NameServer - (*FirewallRule)(nil), // 33: management.FirewallRule - (*NetworkAddress)(nil), // 34: management.NetworkAddress - (*timestamppb.Timestamp)(nil), // 35: google.protobuf.Timestamp -} -var file_management_proto_depIdxs = []int32{ - 15, // 0: management.SyncResponse.wiretrusteeConfig:type_name -> management.WiretrusteeConfig - 18, // 1: management.SyncResponse.peerConfig:type_name -> management.PeerConfig - 20, // 2: management.SyncResponse.remotePeers:type_name -> management.RemotePeerConfig - 19, // 3: management.SyncResponse.NetworkMap:type_name -> management.NetworkMap - 11, // 4: management.LoginRequest.meta:type_name -> management.PeerSystemMeta - 9, // 5: management.LoginRequest.peerKeys:type_name -> management.PeerKeys - 34, // 6: management.PeerSystemMeta.networkAddresses:type_name -> management.NetworkAddress - 10, // 7: management.PeerSystemMeta.environment:type_name -> management.Environment - 15, // 8: management.LoginResponse.wiretrusteeConfig:type_name -> management.WiretrusteeConfig - 18, // 9: management.LoginResponse.peerConfig:type_name -> management.PeerConfig - 35, // 10: management.ServerKeyResponse.expiresAt:type_name -> google.protobuf.Timestamp - 16, // 11: management.WiretrusteeConfig.stuns:type_name -> management.HostConfig - 17, // 12: management.WiretrusteeConfig.turns:type_name -> management.ProtectedHostConfig - 16, // 13: management.WiretrusteeConfig.signal:type_name -> management.HostConfig - 0, // 14: management.HostConfig.protocol:type_name -> management.HostConfig.Protocol - 16, // 15: management.ProtectedHostConfig.hostConfig:type_name -> management.HostConfig - 21, // 16: management.PeerConfig.sshConfig:type_name -> management.SSHConfig - 18, // 17: management.NetworkMap.peerConfig:type_name -> management.PeerConfig - 20, // 18: management.NetworkMap.remotePeers:type_name -> management.RemotePeerConfig - 27, // 19: management.NetworkMap.Routes:type_name -> management.Route - 28, // 20: management.NetworkMap.DNSConfig:type_name -> management.DNSConfig - 20, // 21: management.NetworkMap.offlinePeers:type_name -> management.RemotePeerConfig - 33, // 22: management.NetworkMap.FirewallRules:type_name -> management.FirewallRule - 21, // 23: management.RemotePeerConfig.sshConfig:type_name -> management.SSHConfig - 1, // 24: management.DeviceAuthorizationFlow.Provider:type_name -> management.DeviceAuthorizationFlow.provider - 26, // 25: management.DeviceAuthorizationFlow.ProviderConfig:type_name -> management.ProviderConfig - 26, // 26: management.PKCEAuthorizationFlow.ProviderConfig:type_name -> management.ProviderConfig - 31, // 27: management.DNSConfig.NameServerGroups:type_name -> management.NameServerGroup - 29, // 28: management.DNSConfig.CustomZones:type_name -> management.CustomZone - 30, // 29: management.CustomZone.Records:type_name -> management.SimpleRecord - 32, // 30: management.NameServerGroup.NameServers:type_name -> management.NameServer - 2, // 31: management.FirewallRule.Direction:type_name -> management.FirewallRule.direction - 3, // 32: management.FirewallRule.Action:type_name -> management.FirewallRule.action - 4, // 33: management.FirewallRule.Protocol:type_name -> management.FirewallRule.protocol - 5, // 34: management.ManagementService.Login:input_type -> management.EncryptedMessage - 5, // 35: management.ManagementService.Sync:input_type -> management.EncryptedMessage - 14, // 36: management.ManagementService.GetServerKey:input_type -> management.Empty - 14, // 37: management.ManagementService.isHealthy:input_type -> management.Empty - 5, // 38: management.ManagementService.GetDeviceAuthorizationFlow:input_type -> management.EncryptedMessage - 5, // 39: management.ManagementService.GetPKCEAuthorizationFlow:input_type -> management.EncryptedMessage - 5, // 40: management.ManagementService.Login:output_type -> management.EncryptedMessage - 5, // 41: management.ManagementService.Sync:output_type -> management.EncryptedMessage - 13, // 42: management.ManagementService.GetServerKey:output_type -> management.ServerKeyResponse - 14, // 43: management.ManagementService.isHealthy:output_type -> management.Empty - 5, // 44: management.ManagementService.GetDeviceAuthorizationFlow:output_type -> management.EncryptedMessage - 5, // 45: management.ManagementService.GetPKCEAuthorizationFlow:output_type -> management.EncryptedMessage - 40, // [40:46] is the sub-list for method output_type - 34, // [34:40] is the sub-list for method input_type - 34, // [34:34] is the sub-list for extension type_name - 34, // [34:34] is the sub-list for extension extendee - 0, // [0:34] is the sub-list for field type_name -} - -func init() { file_management_proto_init() } -func file_management_proto_init() { - if File_management_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_management_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EncryptedMessage); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PeerKeys); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Environment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PeerSystemMeta); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LoginResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerKeyResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Empty); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WiretrusteeConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HostConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProtectedHostConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PeerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NetworkMap); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemotePeerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SSHConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceAuthorizationFlowRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceAuthorizationFlow); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PKCEAuthorizationFlowRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PKCEAuthorizationFlow); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProviderConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Route); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DNSConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CustomZone); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SimpleRecord); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NameServerGroup); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NameServer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FirewallRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_management_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NetworkAddress); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_management_proto_rawDesc, - NumEnums: 5, - NumMessages: 30, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_management_proto_goTypes, - DependencyIndexes: file_management_proto_depIdxs, - EnumInfos: file_management_proto_enumTypes, - MessageInfos: file_management_proto_msgTypes, - }.Build() - File_management_proto = out.File - file_management_proto_rawDesc = nil - file_management_proto_goTypes = nil - file_management_proto_depIdxs = nil +var fileDescriptor_edc174f991dc0a25 = []byte{ + // 1923 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4d, 0x6f, 0x23, 0x49, + 0x19, 0x4e, 0xdb, 0xb1, 0x63, 0xbf, 0x76, 0x32, 0x4e, 0x31, 0x33, 0xdb, 0x0a, 0x61, 0x36, 0xb4, + 0x10, 0x0a, 0xd2, 0x2a, 0xbb, 0xca, 0xf2, 0x31, 0x68, 0x61, 0xd9, 0x4c, 0x9c, 0x49, 0xa2, 0x24, + 0x8e, 0x55, 0xed, 0xb0, 0xa3, 0x81, 0x4b, 0xa7, 0xbb, 0xe2, 0x34, 0xd3, 0xee, 0xf2, 0x54, 0x55, + 0x27, 0x18, 0x89, 0x03, 0xff, 0x01, 0x09, 0x7e, 0x02, 0x9c, 0x81, 0x13, 0x07, 0xfe, 0x00, 0x17, + 0xfe, 0x02, 0x47, 0x4e, 0xfc, 0x04, 0x54, 0x5f, 0xfd, 0x61, 0x3b, 0x23, 0xd0, 0x70, 0x80, 0x53, + 0xea, 0xfd, 0xec, 0xb7, 0x9e, 0x7a, 0xeb, 0xad, 0xc7, 0x81, 0xde, 0x24, 0x48, 0x83, 0x31, 0x99, + 0x90, 0x54, 0xec, 0x4d, 0x19, 0x15, 0x14, 0x41, 0xa1, 0xd9, 0xfa, 0x70, 0x4c, 0xe9, 0x38, 0x21, + 0x1f, 0x2b, 0xcb, 0x75, 0x76, 0xf3, 0xb1, 0x88, 0x27, 0x84, 0x8b, 0x60, 0x32, 0xd5, 0xce, 0xde, + 0x4f, 0xa1, 0x77, 0x94, 0x86, 0x6c, 0x36, 0x15, 0x24, 0xba, 0x20, 0x9c, 0x07, 0x63, 0x82, 0xb6, + 0xa0, 0x75, 0x3f, 0x1e, 0x66, 0xd7, 0x67, 0x64, 0xe6, 0x3a, 0x3b, 0xce, 0x6e, 0x1b, 0xe7, 0x32, + 0x42, 0xb0, 0x7a, 0x4d, 0xa3, 0x99, 0x5b, 0xdb, 0x71, 0x76, 0xbb, 0x58, 0xad, 0x91, 0x0b, 0x6b, + 0x77, 0x84, 0xf1, 0x98, 0xa6, 0x6e, 0x7d, 0xc7, 0xd9, 0x6d, 0x60, 0x2b, 0x7a, 0xeb, 0xd0, 0xf1, + 0x67, 0x69, 0x88, 0xc9, 0xdb, 0x8c, 0x70, 0xe1, 0xfd, 0xb9, 0x06, 0x5d, 0x2d, 0xf3, 0x29, 0x4d, + 0x39, 0x41, 0x67, 0xb0, 0x79, 0x1f, 0x33, 0x22, 0x58, 0xc6, 0x05, 0x21, 0x87, 0x34, 0xbd, 0x89, + 0xc7, 0xea, 0x93, 0x9d, 0xfd, 0xaf, 0xed, 0x95, 0x36, 0xf6, 0xe5, 0xbc, 0x13, 0x5e, 0x8c, 0x43, + 0xdf, 0x05, 0x98, 0x12, 0xc2, 0x4c, 0x96, 0x9a, 0xca, 0xf2, 0xb4, 0x9c, 0x65, 0x98, 0x5b, 0x71, + 0xc9, 0x13, 0x7d, 0x0e, 0x1d, 0x46, 0x26, 0x54, 0x10, 0x69, 0xe7, 0x6e, 0x7d, 0xa7, 0xbe, 0xdb, + 0xd9, 0xdf, 0x2e, 0x07, 0xe2, 0xdc, 0x6c, 0xc2, 0xcb, 0x01, 0x68, 0x0f, 0x50, 0x49, 0x3c, 0xe5, + 0x47, 0x93, 0xa9, 0x98, 0xb9, 0xab, 0x3b, 0xce, 0x6e, 0x0b, 0x2f, 0xb1, 0xc8, 0x3a, 0x07, 0x44, + 0xdc, 0x53, 0xf6, 0xe6, 0x22, 0x98, 0xba, 0x8d, 0xc5, 0x3a, 0x0b, 0x2b, 0x2e, 0x79, 0x7a, 0xbf, + 0x73, 0xa0, 0x7b, 0x4e, 0xc7, 0x71, 0x6a, 0xe0, 0x94, 0xe7, 0xc4, 0x89, 0xc8, 0xa6, 0xa5, 0x73, + 0xb2, 0x32, 0xda, 0x83, 0xd5, 0x09, 0x11, 0x81, 0x81, 0x61, 0x6b, 0x1e, 0x06, 0x7f, 0xc6, 0x05, + 0x99, 0x5c, 0x10, 0x11, 0x60, 0xe5, 0x27, 0x73, 0xfd, 0xec, 0x5e, 0x8c, 0xe8, 0x1b, 0xa2, 0x0f, + 0xb1, 0x8d, 0x73, 0x19, 0x7d, 0x02, 0x2d, 0x09, 0xd7, 0x19, 0x99, 0x71, 0xb5, 0xad, 0xce, 0xfe, + 0xe3, 0xf9, 0x7c, 0xd2, 0x86, 0x73, 0x2f, 0xaf, 0x0f, 0x2d, 0xab, 0x45, 0xdb, 0xd0, 0xe6, 0xfc, + 0xb6, 0xd4, 0x4e, 0x5d, 0x5c, 0x28, 0x2a, 0xbd, 0xa6, 0x7b, 0x2a, 0x97, 0xbd, 0x1f, 0x41, 0xe7, + 0x28, 0xbd, 0x8b, 0x19, 0x4d, 0xe5, 0x77, 0xd0, 0x63, 0x68, 0x84, 0x09, 0xcd, 0x22, 0xb3, 0x57, + 0x2d, 0xc8, 0x04, 0xd3, 0x24, 0x10, 0x37, 0x94, 0x4d, 0x54, 0x82, 0x36, 0xce, 0x65, 0xef, 0xf7, + 0xab, 0xb0, 0x51, 0xdd, 0xad, 0x74, 0xbf, 0xa5, 0x5c, 0xa4, 0xc1, 0x84, 0x58, 0xcc, 0xac, 0x2c, + 0x7b, 0x7b, 0x4c, 0x2f, 0x7d, 0x93, 0x46, 0xad, 0xd1, 0x53, 0x68, 0xbe, 0x21, 0x2c, 0x25, 0x89, + 0x41, 0xc5, 0x48, 0xd2, 0x37, 0xa4, 0x8c, 0x28, 0x3c, 0xda, 0x58, 0xad, 0x2b, 0xa5, 0x34, 0xaa, + 0xa5, 0xa0, 0x0d, 0xa8, 0x5d, 0xfa, 0x6e, 0x53, 0x69, 0x6b, 0x97, 0xbe, 0x6c, 0x9a, 0x52, 0x07, + 0xff, 0xd8, 0x5c, 0x9f, 0x35, 0x65, 0x5f, 0x62, 0x91, 0x28, 0x66, 0xb1, 0x75, 0x6b, 0x29, 0xb7, + 0x42, 0x81, 0xbe, 0x01, 0xeb, 0xba, 0x2e, 0xeb, 0xd1, 0x56, 0x1e, 0x55, 0xa5, 0xcc, 0x71, 0xe9, + 0x5b, 0x0f, 0xd0, 0x39, 0x72, 0x05, 0x7a, 0x09, 0xbd, 0x54, 0x37, 0xdb, 0x41, 0x14, 0x31, 0xc2, + 0x39, 0xe1, 0x6e, 0x47, 0xdd, 0x85, 0xad, 0x25, 0xcd, 0x69, 0x7c, 0xf0, 0x42, 0x0c, 0xda, 0x85, + 0x47, 0x7c, 0xc6, 0x7d, 0xc2, 0xe2, 0x20, 0x19, 0x64, 0x93, 0x6b, 0xc2, 0xdc, 0xae, 0xfa, 0xd6, + 0xbc, 0x1a, 0x7d, 0x13, 0x36, 0xf8, 0x8c, 0x0f, 0x19, 0x8d, 0xb2, 0x50, 0x0c, 0xe4, 0x89, 0xac, + 0x2b, 0xc7, 0x39, 0xad, 0xc9, 0x78, 0x11, 0xa4, 0xd9, 0x4d, 0x10, 0x8a, 0x8c, 0x11, 0xe6, 0x6e, + 0xe4, 0x19, 0xcb, 0x6a, 0xf4, 0x7d, 0xe8, 0x90, 0xa2, 0x63, 0xdc, 0x47, 0xaa, 0x59, 0x3f, 0x28, + 0x97, 0x5f, 0x6a, 0x28, 0x5c, 0xf6, 0xf5, 0x7e, 0xed, 0xc0, 0xba, 0xb9, 0x5d, 0xff, 0x43, 0xc3, + 0xc9, 0x9b, 0xc1, 0xa6, 0x4f, 0xd8, 0x9d, 0xba, 0x4b, 0x79, 0x65, 0x3d, 0xa8, 0xbf, 0xc9, 0xef, + 0xbc, 0x5c, 0xa2, 0xe7, 0xd0, 0x26, 0x3f, 0x9f, 0xc6, 0x8c, 0xf0, 0x03, 0x91, 0xdf, 0x79, 0x3d, + 0xfb, 0xf7, 0xec, 0xec, 0xdf, 0x1b, 0xd9, 0xd9, 0x8f, 0x0b, 0xe7, 0x77, 0x0c, 0xef, 0x35, 0x68, + 0xa8, 0x81, 0xe5, 0xfd, 0xd5, 0x81, 0xcd, 0x85, 0x4d, 0xa2, 0x8f, 0xa0, 0xc1, 0x45, 0x96, 0x72, + 0xd7, 0x51, 0x4d, 0x52, 0xd9, 0xcc, 0x09, 0xe5, 0xc2, 0x6c, 0x46, 0x3b, 0xa1, 0xef, 0x40, 0x43, + 0x64, 0x2c, 0xe5, 0x6e, 0x4d, 0x79, 0x7f, 0x58, 0xd9, 0x3a, 0xa3, 0x82, 0x84, 0x82, 0x44, 0xe5, + 0x30, 0xe5, 0x8d, 0xf6, 0xa0, 0xc9, 0xe3, 0x71, 0x1a, 0xe8, 0xeb, 0xf7, 0xf0, 0x57, 0x8c, 0x17, + 0xf2, 0xa0, 0x8b, 0x49, 0x12, 0xcc, 0x4c, 0x3b, 0x9a, 0xeb, 0x59, 0xd1, 0x79, 0xbf, 0x75, 0x00, + 0x8a, 0x50, 0x09, 0x66, 0xc6, 0x62, 0x0b, 0x66, 0xc6, 0x62, 0xf4, 0x19, 0xb4, 0x14, 0x66, 0x21, + 0x4d, 0x14, 0x96, 0x1b, 0xd5, 0x72, 0x8b, 0x58, 0x55, 0xb9, 0x74, 0xc3, 0x79, 0x80, 0xf7, 0x19, + 0xb4, 0xac, 0x16, 0xad, 0x41, 0xfd, 0xaa, 0x3f, 0xec, 0xad, 0xc8, 0xc5, 0xe8, 0x70, 0xd8, 0x73, + 0x50, 0x0b, 0x56, 0x4f, 0x46, 0xa3, 0x61, 0xaf, 0x86, 0xda, 0xd0, 0x90, 0x2b, 0xbf, 0x57, 0x97, + 0xca, 0xfe, 0xe8, 0xdc, 0xef, 0xad, 0x7a, 0xbf, 0x84, 0xaf, 0x2c, 0x01, 0x43, 0x36, 0xcf, 0x6d, + 0x2e, 0x99, 0x16, 0x7c, 0x08, 0x89, 0x92, 0xa7, 0x1c, 0x52, 0x19, 0x27, 0xcc, 0x0e, 0x34, 0xb9, + 0x56, 0x43, 0x2a, 0xe0, 0xfc, 0x9e, 0xb2, 0xc8, 0x0e, 0x7a, 0x2b, 0x7b, 0xbf, 0x72, 0x00, 0x8a, + 0x3e, 0x94, 0xad, 0x11, 0x18, 0x1c, 0x35, 0x3a, 0x56, 0x94, 0x98, 0x45, 0xea, 0x2c, 0x15, 0x66, + 0x51, 0xca, 0xd1, 0xa7, 0x6a, 0xca, 0x9b, 0x0a, 0xf5, 0x59, 0x3d, 0x29, 0x57, 0xe8, 0xfb, 0x27, + 0xa6, 0xc0, 0xc2, 0x4f, 0xd6, 0x77, 0xf3, 0x36, 0x4a, 0xed, 0x10, 0x95, 0x6b, 0xef, 0xef, 0xf5, + 0xf2, 0xf3, 0x28, 0xe7, 0xaf, 0x9e, 0x19, 0xaa, 0x84, 0x55, 0x6c, 0xa4, 0xff, 0x9b, 0xc7, 0xfe, + 0x5b, 0xd0, 0xc4, 0x34, 0x13, 0x84, 0xbb, 0x0d, 0xf5, 0xa9, 0xcd, 0xca, 0xa7, 0xa4, 0x05, 0x1b, + 0x07, 0x09, 0x61, 0x7f, 0xe0, 0x9b, 0x1d, 0x35, 0x17, 0x21, 0xcc, 0x8d, 0xb8, 0xf0, 0x43, 0x5f, + 0x40, 0x97, 0xde, 0xdc, 0x24, 0x71, 0x6a, 0x36, 0xb4, 0xf6, 0x6f, 0x6c, 0xa8, 0x12, 0x81, 0x3e, + 0x87, 0xf5, 0x97, 0x31, 0x23, 0xf7, 0x41, 0x92, 0xe0, 0x2c, 0x21, 0xdc, 0x6d, 0xa9, 0x14, 0x6e, + 0x39, 0x45, 0xd9, 0x01, 0x57, 0xdd, 0xd1, 0x3e, 0x3c, 0xbe, 0x29, 0x2b, 0x2c, 0x26, 0x6d, 0x85, + 0xc9, 0x52, 0x9b, 0xf7, 0x1b, 0x07, 0x7a, 0xf3, 0x65, 0xbd, 0x93, 0x76, 0x3e, 0x03, 0x08, 0x92, + 0x84, 0xde, 0x93, 0xe8, 0x74, 0xaa, 0x67, 0x48, 0x1b, 0x97, 0x34, 0xff, 0xbd, 0xf6, 0x3b, 0x85, + 0x76, 0xee, 0x2b, 0xbf, 0xca, 0xf9, 0xed, 0x51, 0x1a, 0x5c, 0x27, 0x44, 0xd3, 0x8e, 0x16, 0x2e, + 0x69, 0xaa, 0xd4, 0xa6, 0x36, 0x47, 0x6d, 0xbc, 0x1d, 0x78, 0xd6, 0x27, 0x77, 0x71, 0x48, 0x0e, + 0x32, 0x71, 0x4b, 0x59, 0xfc, 0x8b, 0x40, 0xc4, 0x34, 0x7d, 0x99, 0xd0, 0x7b, 0xcb, 0x87, 0xff, + 0xe2, 0xc0, 0x07, 0x0f, 0xb8, 0xa0, 0x13, 0x35, 0x47, 0xee, 0xe2, 0x88, 0x30, 0xf5, 0xe5, 0x8d, + 0xfd, 0x8f, 0x2a, 0xcd, 0xb0, 0x3c, 0x4c, 0x0e, 0x7b, 0x15, 0x83, 0xf3, 0x68, 0xf4, 0x02, 0x36, + 0xec, 0xba, 0x72, 0x5d, 0xb6, 0xe6, 0x66, 0x70, 0xc9, 0x03, 0xcf, 0x45, 0x78, 0x4f, 0xd5, 0x48, + 0xd4, 0xf9, 0x00, 0x9a, 0x27, 0x97, 0xfe, 0xe8, 0xa8, 0xdf, 0x5b, 0xf1, 0x9e, 0xc1, 0xf6, 0xf0, + 0xec, 0xf0, 0xe8, 0xc1, 0x1d, 0xfe, 0x04, 0x9e, 0x2c, 0xb5, 0x2f, 0x29, 0xca, 0xf9, 0x8f, 0x8b, + 0xfa, 0x47, 0x6d, 0x3e, 0x89, 0xec, 0xa1, 0xc3, 0x24, 0x26, 0xa9, 0x38, 0xed, 0xdb, 0x1e, 0xb2, + 0xb2, 0x7c, 0x1b, 0xf4, 0xda, 0x27, 0x21, 0x23, 0xc2, 0x4c, 0xaf, 0x8a, 0x4e, 0x8e, 0x9b, 0x3e, + 0x9d, 0x04, 0xb1, 0x25, 0xc1, 0x46, 0x92, 0x79, 0x0f, 0xb2, 0x28, 0x26, 0x69, 0x68, 0x29, 0x5f, + 0x2e, 0xcb, 0x91, 0x50, 0x9c, 0xc6, 0x51, 0x1a, 0x4d, 0x69, 0x9c, 0x0a, 0x43, 0x00, 0x97, 0x58, + 0x24, 0x59, 0x53, 0xbc, 0x3a, 0x77, 0xd5, 0xac, 0xb0, 0xaa, 0x94, 0x6c, 0xd7, 0x0f, 0xe9, 0x94, + 0x18, 0x4e, 0xa8, 0x05, 0xd9, 0x91, 0x57, 0x9c, 0x9c, 0xf6, 0x35, 0x51, 0x6f, 0xe9, 0x8e, 0x2c, + 0x34, 0xe8, 0xdb, 0xf0, 0xa4, 0x82, 0x75, 0xfe, 0x0d, 0x4d, 0x08, 0x97, 0x1b, 0xf5, 0xab, 0x19, + 0xc5, 0x8c, 0x84, 0xe2, 0x0a, 0x9f, 0x73, 0x17, 0xd4, 0xfd, 0xaa, 0xe8, 0xbc, 0x3f, 0x39, 0xd0, + 0x50, 0x83, 0x4a, 0x52, 0xd9, 0x1c, 0xdd, 0xda, 0x69, 0x5f, 0x3e, 0x13, 0x66, 0x60, 0x1b, 0x48, + 0xad, 0x88, 0x76, 0xa0, 0x63, 0x96, 0xa3, 0xd9, 0x94, 0x28, 0x48, 0xeb, 0xb8, 0xac, 0x92, 0x57, + 0x50, 0x4e, 0x00, 0x7b, 0x05, 0xe5, 0x5a, 0x9e, 0xc1, 0x05, 0x11, 0x2c, 0x0e, 0x15, 0x86, 0x75, + 0x6c, 0x24, 0xb9, 0xf7, 0x8b, 0x80, 0xbf, 0xcd, 0x08, 0x0b, 0x22, 0xa2, 0x40, 0x6b, 0xe1, 0x92, + 0x46, 0x22, 0x36, 0x20, 0xf2, 0xe0, 0x0d, 0x62, 0x4a, 0xf0, 0xfe, 0xe8, 0x94, 0xc6, 0xaa, 0xc4, + 0x5e, 0xd2, 0xa9, 0x38, 0x24, 0xfa, 0x0e, 0x9b, 0x4b, 0x5d, 0x55, 0xa2, 0x63, 0xe8, 0x49, 0xe2, + 0xa9, 0x89, 0xd7, 0x31, 0xa3, 0xd9, 0xd4, 0xf2, 0x96, 0xaf, 0x56, 0xa8, 0x70, 0xd5, 0x07, 0x2f, + 0x04, 0xa1, 0xe7, 0xd0, 0x39, 0xcc, 0xb8, 0xa0, 0x93, 0xd7, 0x34, 0x25, 0xf6, 0xb5, 0xa9, 0x3c, + 0x53, 0x85, 0x19, 0x97, 0x5d, 0xbd, 0x57, 0x00, 0x85, 0x58, 0x6a, 0x4b, 0xa7, 0xd2, 0x96, 0xfb, + 0xb0, 0x86, 0x49, 0x48, 0x59, 0x64, 0xeb, 0xab, 0x4c, 0x6d, 0x3f, 0x9e, 0x4c, 0x13, 0xa2, 0x1d, + 0xb0, 0x75, 0xf4, 0x04, 0x74, 0xcb, 0x06, 0x79, 0x04, 0x83, 0xe2, 0xd7, 0x90, 0x5a, 0x4b, 0x9d, + 0x3a, 0xb1, 0x9a, 0x3a, 0x00, 0xb5, 0x96, 0xf0, 0x1e, 0x26, 0x01, 0xe7, 0xe6, 0x66, 0x68, 0x41, + 0x32, 0x81, 0xd1, 0xe8, 0x5c, 0x9d, 0x5f, 0x1d, 0xcb, 0xa5, 0xf4, 0xc3, 0xfd, 0x40, 0x04, 0xe6, + 0x06, 0x68, 0xc1, 0xfb, 0x83, 0x03, 0x8f, 0xe6, 0xe0, 0x91, 0xe8, 0x14, 0xaa, 0xa5, 0x3c, 0xb2, + 0x30, 0xe3, 0xb2, 0xab, 0x6c, 0xb9, 0x21, 0x8b, 0x27, 0x01, 0xd3, 0x63, 0xb7, 0x85, 0xad, 0x28, + 0x2d, 0x1a, 0x1b, 0x8d, 0x76, 0x1b, 0x5b, 0x51, 0xbe, 0x53, 0x3e, 0x09, 0x58, 0x78, 0x6b, 0x14, + 0x76, 0xac, 0xeb, 0xb7, 0x7b, 0xa9, 0xcd, 0x3b, 0x01, 0x28, 0x3e, 0xab, 0x1a, 0x7f, 0x98, 0x37, + 0xfe, 0x50, 0x9e, 0xca, 0xc0, 0x2f, 0xe1, 0x64, 0x24, 0xd5, 0xd4, 0x94, 0x09, 0xd3, 0xef, 0x6a, + 0xed, 0xfd, 0xb3, 0x06, 0xdd, 0xf2, 0xbb, 0x29, 0x83, 0x65, 0xb7, 0xe7, 0x09, 0x8d, 0x84, 0xbe, + 0x80, 0x76, 0x5f, 0xdd, 0x3a, 0xc9, 0xc8, 0x35, 0xfb, 0xf4, 0x1e, 0x7a, 0x8a, 0xf7, 0x22, 0xeb, + 0x89, 0x8b, 0x20, 0xf4, 0x3d, 0x68, 0x1e, 0xe8, 0xf0, 0xfa, 0x22, 0x79, 0xad, 0x84, 0x07, 0x3a, + 0xd6, 0xb8, 0xa3, 0x1f, 0x16, 0xd4, 0x55, 0xa1, 0xb2, 0xb1, 0xff, 0xf5, 0x07, 0x43, 0xa7, 0x39, + 0xf3, 0xcd, 0xd9, 0xae, 0xdd, 0x76, 0xc3, 0xdc, 0x65, 0xb9, 0xed, 0x6d, 0x68, 0xe7, 0x35, 0xa2, + 0x26, 0xd4, 0x4e, 0x07, 0x9a, 0x0d, 0x5f, 0x5e, 0x8d, 0x7a, 0x8e, 0xf7, 0x0c, 0x9a, 0xba, 0x04, + 0xf9, 0xa6, 0x1c, 0x1c, 0x1e, 0x1e, 0x0d, 0x47, 0xbd, 0x15, 0x45, 0x87, 0xf1, 0xe5, 0xb0, 0xe7, + 0x78, 0x3f, 0x28, 0x88, 0x38, 0xea, 0xc0, 0xda, 0xd5, 0xe0, 0x6c, 0x70, 0xf9, 0xa5, 0xc9, 0x70, + 0x70, 0x7e, 0xde, 0x73, 0x2c, 0xb1, 0xae, 0x59, 0xaa, 0xad, 0xc8, 0xf4, 0xe9, 0xe1, 0xc5, 0xb0, + 0xb7, 0xea, 0x3d, 0x87, 0x8d, 0xea, 0x8f, 0x55, 0xd9, 0x9a, 0x29, 0x11, 0x39, 0xe4, 0x5a, 0x90, + 0x2d, 0x3c, 0x09, 0x42, 0x4b, 0x66, 0x27, 0x41, 0xb8, 0xff, 0xb7, 0x3a, 0x6c, 0x5e, 0xe4, 0x1b, + 0x37, 0xb3, 0x01, 0x1d, 0x41, 0x43, 0xfd, 0x40, 0x44, 0xdb, 0xd5, 0x1f, 0x94, 0xd5, 0xff, 0x9e, + 0x6d, 0xbd, 0xd3, 0xea, 0xad, 0xa0, 0x97, 0xb0, 0xea, 0xcf, 0xd2, 0xf0, 0xfd, 0xb2, 0x7c, 0xe2, + 0xa0, 0x17, 0xd0, 0x3d, 0x26, 0x22, 0xff, 0x71, 0x88, 0x2a, 0xcc, 0x52, 0xd1, 0xac, 0xad, 0xca, + 0xcf, 0xd4, 0x85, 0x9f, 0x91, 0xde, 0x8a, 0xa4, 0x4d, 0x31, 0x3f, 0x21, 0x41, 0x22, 0x6e, 0x97, + 0x26, 0x58, 0x54, 0x79, 0x2b, 0xe8, 0x35, 0x6c, 0x1d, 0x13, 0xf1, 0x10, 0x6f, 0x79, 0x3f, 0x70, + 0x5e, 0x81, 0x7b, 0x4c, 0xc4, 0x72, 0xca, 0xf0, 0x5e, 0x99, 0x5f, 0xb4, 0x5e, 0x37, 0xcd, 0x7f, + 0x41, 0x9b, 0xea, 0xcf, 0xa7, 0xff, 0x0a, 0x00, 0x00, 0xff, 0xff, 0xcb, 0xde, 0x32, 0x7a, 0x3a, + 0x15, 0x00, 0x00, } diff --git a/management/proto/management.proto b/management/proto/management.proto index 2cc0efa22..61304c8c4 100644 --- a/management/proto/management.proto +++ b/management/proto/management.proto @@ -146,6 +146,8 @@ message WiretrusteeConfig { // a Signal server config HostConfig signal = 3; + + string RelayAddress = 4; } // HostConfig describes connection properties of some server (e.g. STUN, Signal, Management) diff --git a/management/server/config.go b/management/server/config.go index 3e5ff1eaf..cbc8a4e72 100644 --- a/management/server/config.go +++ b/management/server/config.go @@ -32,9 +32,10 @@ const ( // Config of the Management service type Config struct { - Stuns []*Host - TURNConfig *TURNConfig - Signal *Host + Stuns []*Host + TURNConfig *TURNConfig + RelayAddress string + Signal *Host Datadir string DataStoreEncryptionKey string diff --git a/management/server/grpcserver.go b/management/server/grpcserver.go index 32989df7d..8c8b8354f 100644 --- a/management/server/grpcserver.go +++ b/management/server/grpcserver.go @@ -450,6 +450,7 @@ func toWiretrusteeConfig(config *Config, turnCredentials *TURNCredentials) *prot Uri: config.Signal.URI, Protocol: ToResponseProto(config.Signal.Proto), }, + RelayAddress: config.RelayAddress, } } diff --git a/relay/client/manager.go b/relay/client/manager.go index 911561403..0223c98ab 100644 --- a/relay/client/manager.go +++ b/relay/client/manager.go @@ -55,19 +55,24 @@ func NewManager(ctx context.Context, serverAddress string, peerID string) *Manag // Serve starts the manager. It will establish a connection to the relay server and start the relay cleanup loop. // todo: consider to return an error if the initial connection to the relay server is not established. -func (m *Manager) Serve() { +func (m *Manager) Serve() error { + if m.relayClient != nil { + return fmt.Errorf("manager already serving") + } + m.relayClient = NewClient(m.ctx, m.srvAddress, m.peerID) - m.reconnectGuard = NewGuard(m.ctx, m.relayClient) - m.relayClient.SetOnDisconnectListener(m.reconnectGuard.OnDisconnected) err := m.relayClient.Connect() if err != nil { - log.Errorf("failed to connect to relay server, keep try to reconnect: %s", err) - return + log.Errorf("failed to connect to relay server: %s", err) + return err } + m.reconnectGuard = NewGuard(m.ctx, m.relayClient) + m.relayClient.SetOnDisconnectListener(m.reconnectGuard.OnDisconnected) + m.startCleanupLoop() - return + return nil } // OpenConn opens a connection to the given peer key. If the peer is on the same relay server, the connection will be diff --git a/signal/client/client.go b/signal/client/client.go index 9d99b3677..7c54178e2 100644 --- a/signal/client/client.go +++ b/signal/client/client.go @@ -51,8 +51,7 @@ func UnMarshalCredential(msg *proto.Message) (*Credential, error) { } // MarshalCredential marshal a Credential instance and returns a Message object -func MarshalCredential(myKey wgtypes.Key, myPort int, remoteKey wgtypes.Key, credential *Credential, t proto.Body_Type, - rosenpassPubKey []byte, rosenpassAddr string) (*proto.Message, error) { +func MarshalCredential(myKey wgtypes.Key, myPort int, remoteKey wgtypes.Key, credential *Credential, t proto.Body_Type, rosenpassPubKey []byte, rosenpassAddr string, relaySrvAddress string) (*proto.Message, error) { return &proto.Message{ Key: myKey.PublicKey().String(), RemoteKey: remoteKey.String(), @@ -65,6 +64,7 @@ func MarshalCredential(myKey wgtypes.Key, myPort int, remoteKey wgtypes.Key, cre RosenpassPubKey: rosenpassPubKey, RosenpassServerAddr: rosenpassAddr, }, + RelayServerAddress: relaySrvAddress, }, }, nil } diff --git a/signal/proto/signalexchange.pb.go b/signal/proto/signalexchange.pb.go index 782c45da1..30f704c6f 100644 --- a/signal/proto/signalexchange.pb.go +++ b/signal/proto/signalexchange.pb.go @@ -1,15 +1,15 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.26.0 -// protoc v3.12.4 +// protoc v3.21.12 // source: signalexchange.proto package proto import ( - _ "github.com/golang/protobuf/protoc-gen-go/descriptor" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" reflect "reflect" sync "sync" ) @@ -225,6 +225,8 @@ type Body struct { FeaturesSupported []uint32 `protobuf:"varint,6,rep,packed,name=featuresSupported,proto3" json:"featuresSupported,omitempty"` // RosenpassConfig is a Rosenpass config of the remote peer our peer tries to connect to RosenpassConfig *RosenpassConfig `protobuf:"bytes,7,opt,name=rosenpassConfig,proto3" json:"rosenpassConfig,omitempty"` + // relayServerAddress is an IP:port of the relay server + RelayServerAddress string `protobuf:"bytes,8,opt,name=relayServerAddress,proto3" json:"relayServerAddress,omitempty"` } func (x *Body) Reset() { @@ -308,6 +310,13 @@ func (x *Body) GetRosenpassConfig() *RosenpassConfig { return nil } +func (x *Body) GetRelayServerAddress() string { + if x != nil { + return x.RelayServerAddress + } + return "" +} + // Mode indicates a connection mode type Mode struct { state protoimpl.MessageState @@ -431,7 +440,7 @@ var file_signalexchange_proto_rawDesc = []byte{ 0x52, 0x09, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x28, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x52, - 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xf6, 0x02, 0x0a, 0x04, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x2d, + 0x04, 0x62, 0x6f, 0x64, 0x79, 0x22, 0xa6, 0x03, 0x0a, 0x04, 0x42, 0x6f, 0x64, 0x79, 0x12, 0x2d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x42, 0x6f, 0x64, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, @@ -451,7 +460,10 @@ var file_signalexchange_proto_rawDesc = []byte{ 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x65, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x2e, 0x52, 0x6f, 0x73, 0x65, 0x6e, 0x70, 0x61, 0x73, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0f, 0x72, 0x6f, 0x73, 0x65, 0x6e, 0x70, 0x61, 0x73, 0x73, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x36, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x12, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x12, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x22, 0x36, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x46, 0x46, 0x45, 0x52, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x41, 0x4e, 0x44, 0x49, 0x44, 0x41, 0x54, 0x45, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x4d, 0x4f, 0x44, 0x45, 0x10, 0x04, 0x22, 0x2e, diff --git a/signal/proto/signalexchange.proto b/signal/proto/signalexchange.proto index a8c4c309c..5aa24d893 100644 --- a/signal/proto/signalexchange.proto +++ b/signal/proto/signalexchange.proto @@ -60,6 +60,9 @@ message Body { // RosenpassConfig is a Rosenpass config of the remote peer our peer tries to connect to RosenpassConfig rosenpassConfig = 7; + + // relayServerAddress is an IP:port of the relay server + string relayServerAddress = 8; } // Mode indicates a connection mode