 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- Variables
- func SetRoutingMetadata(md metadata.MD, agentKey api.AgentKey) metadata.MD
- type AgentFinder
- type AggregatingQuerier
- type Handler
- type MultiURL
- func (*MultiURL) Descriptor() ([]byte, []int)deprecated
- func (x *MultiURL) GetHost() string
- func (x *MultiURL) GetIp() [][]byte
- func (x *MultiURL) GetPort() uint32
- func (x *MultiURL) GetScheme() string
- func (x *MultiURL) GetTlsHost() string
- func (*MultiURL) ProtoMessage()
- func (x *MultiURL) ProtoReflect() protoreflect.Message
- func (x *MultiURL) Reset()
- func (x *MultiURL) String() string
 
- type Plugin
- func (p *Plugin) FindReadyGateway(ctx context.Context, method string) (tunserver.ReadyGateway[nettool.MultiURL], *slog.Logger, api.AgentKey, error)
- func (p *Plugin) FindTunnel(stream grpc.ServerStream) (bool, *slog.Logger, tunserver.FindHandle, error)
- func (p *Plugin) PrepareStreamForForwarding(stream grpc.ServerStream) (grpc.ServerStream, error)
 
- type Querier
- type RedisTracker
- type Registerer
- type RegistrationBuilder
- type Registry
- func (r *Registry) FindTunnel(ctx context.Context, agentKey api.AgentKey, service, method string) (bool, tunserver.FindHandle)
- func (r *Registry) HandleTunnel(ageCtx context.Context, agentKey api.AgentKey, ...) error
- func (r *Registry) KASURLsByAgentKey(ctx context.Context, agentKey api.AgentKey) ([]nettool.MultiURL, error)
- func (r *Registry) Run(ctx context.Context) error
 
- type Tracker
- type TunnelFinder
Constants ¶
This section is empty.
Variables ¶
      View Source
      
  
var File_internal_module_agent2kas_tunnel_router_router_proto protoreflect.FileDescriptor
    Functions ¶
Types ¶
type AgentFinder ¶
type AggregatingQuerier ¶
type AggregatingQuerier struct {
	// contains filtered or unexported fields
}
    AggregatingQuerier groups polling requests.
func NewAggregatingQuerier ¶
func (*AggregatingQuerier) CachedGatewayURLs ¶
func (q *AggregatingQuerier) CachedGatewayURLs(agentKey api.AgentKey) []nettool.MultiURL
func (*AggregatingQuerier) PollGatewayURLs ¶
func (q *AggregatingQuerier) PollGatewayURLs(ctx context.Context, agentKey api.AgentKey, cb tunserver.PollGatewayURLsCallback[nettool.MultiURL])
type Handler ¶
type Handler interface {
	// HandleTunnel is called with server-side interface of the reverse tunnel.
	// It registers the tunnel and blocks, waiting for a request to proxy through the tunnel.
	// The method returns the error value to return to gRPC framework.
	// ageCtx can be used to unblock the method if the tunnel is not being used already.
	HandleTunnel(ageCtx context.Context, agentKey api.AgentKey, server grpc.BidiStreamingServer[rpc.ConnectRequest, rpc.ConnectResponse]) error
}
    type MultiURL ¶
type MultiURL struct {
	Scheme  string   `protobuf:"bytes,1,opt,name=scheme" json:"scheme,omitempty"`
	Ip      [][]byte `protobuf:"bytes,2,rep,name=ip" json:"ip,omitempty"`
	Host    string   `protobuf:"bytes,3,opt,name=host" json:"host,omitempty"`
	TlsHost string   `protobuf:"bytes,4,opt,name=tls_host,json=tlsHost" json:"tls_host,omitempty"`
	Port    uint32   `protobuf:"varint,5,opt,name=port" json:"port,omitempty"`
	// contains filtered or unexported fields
}
    
        
          
            func (*MultiURL) Descriptor
            deprecated
            
          
  
    
  
      
      
    func (*MultiURL) GetTlsHost ¶
func (*MultiURL) ProtoMessage ¶
func (*MultiURL) ProtoMessage()
func (*MultiURL) ProtoReflect ¶
func (x *MultiURL) ProtoReflect() protoreflect.Message
type Plugin ¶
type Plugin struct {
	// contains filtered or unexported fields
}
    func NewPlugin ¶
func NewPlugin( log *slog.Logger, modAPI modshared.API, kasPool grpctool.PoolInterface[nettool.MultiURL], gatewayQuerier tunserver.PollingGatewayURLQuerier[nettool.MultiURL, api.AgentKey], agentFinder AgentFinder, tunnelRegistry TunnelFinder, tracer trace.Tracer, meter otelmetric.Meter, ownPrivateAPIURL nettool.MultiURL, pollConfig retry.PollConfigFactory, tryNewGatewayInterval time.Duration, tunnelFindTimeout time.Duration, ) (*Plugin, error)
func (*Plugin) FindReadyGateway ¶
func (*Plugin) FindTunnel ¶
func (p *Plugin) FindTunnel(stream grpc.ServerStream) (bool, *slog.Logger, tunserver.FindHandle, error)
func (*Plugin) PrepareStreamForForwarding ¶
func (p *Plugin) PrepareStreamForForwarding(stream grpc.ServerStream) (grpc.ServerStream, error)
type RedisTracker ¶
type RedisTracker struct {
	// contains filtered or unexported fields
}
    func NewRedisTracker ¶
func NewRedisTracker(client rueidis.Client, validator protovalidate.Validator, agentKeyPrefix string, ownPrivateAPIURL nettool.MultiURL, m otelmetric.Meter) (*RedisTracker, error)
func (*RedisTracker) KASURLsByAgentKey ¶
func (*RedisTracker) RegistrationBuilder ¶
func (t *RedisTracker) RegistrationBuilder() RegistrationBuilder
type Registerer ¶
type Registerer interface {
	RegistrationBuilder() RegistrationBuilder
	// GC deletes expired tunnels from the underlying storage.
	GC(ctx context.Context, agentKeys []api.AgentKey) (int, error)
}
    Registerer allows to register and unregister tunnels. Caller is responsible for periodically calling GC() and Refresh(). Not safe for concurrent use.
type RegistrationBuilder ¶
type RegistrationBuilder interface {
	// Register registers tunnels for the given agent ids with the tracker.
	Register(ttl time.Duration, agentKeys ...api.AgentKey)
	// Unregister unregisters tunnels for the given agent ids with the tracker.
	Unregister(agentKeys ...api.AgentKey)
	// Refresh refreshes registered tunnels in the underlying storage.
	Refresh(ttl time.Duration, agentKeys ...api.AgentKey)
	// Do executes the enqueued operations.
	Do(context.Context) error
}
    RegistrationBuilder allows batching tunnel (un)registrations. Can be reused after Do is called.
type Registry ¶
type Registry struct {
	// contains filtered or unexported fields
}
    func NewRegistry ¶
func (*Registry) FindTunnel ¶
func (*Registry) HandleTunnel ¶
func (r *Registry) HandleTunnel(ageCtx context.Context, agentKey api.AgentKey, server grpc.BidiStreamingServer[rpc.ConnectRequest, rpc.ConnectResponse]) error
func (*Registry) KASURLsByAgentKey ¶
type Tracker ¶
type Tracker interface {
	Registerer
	Querier
}
    type TunnelFinder ¶
 Click to show internal directories. 
   Click to hide internal directories.