Thanks to visit codestin.com
Credit goes to pkg.go.dev

vpn

package
v2.21.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 29, 2025 License: AGPL-3.0 Imports: 37 Imported by: 0

Documentation

Index

Constants

View Source
const MaxLength = 0x1000000 // 16MiB

MaxLength is the largest possible CoderVPN Protocol message size. This is set so that a misbehaving peer can't cause us to allocate a huge amount of memory.

Variables

View Source
var (
	Log_Level_name = map[int32]string{
		0: "DEBUG",
		1: "INFO",
		2: "WARN",
		3: "ERROR",
		4: "CRITICAL",
		5: "FATAL",
	}
	Log_Level_value = map[string]int32{
		"DEBUG":    0,
		"INFO":     1,
		"WARN":     2,
		"ERROR":    3,
		"CRITICAL": 4,
		"FATAL":    5,
	}
)

Enum value maps for Log_Level.

View Source
var (
	Workspace_Status_name = map[int32]string{
		0:  "UNKNOWN",
		1:  "PENDING",
		2:  "STARTING",
		3:  "RUNNING",
		4:  "STOPPING",
		5:  "STOPPED",
		6:  "FAILED",
		7:  "CANCELING",
		8:  "CANCELED",
		9:  "DELETING",
		10: "DELETED",
	}
	Workspace_Status_value = map[string]int32{
		"UNKNOWN":   0,
		"PENDING":   1,
		"STARTING":  2,
		"RUNNING":   3,
		"STOPPING":  4,
		"STOPPED":   5,
		"FAILED":    6,
		"CANCELING": 7,
		"CANCELED":  8,
		"DELETING":  9,
		"DELETED":   10,
	}
)

Enum value maps for Workspace_Status.

View Source
var CurrentSupportedVersions = RPCVersionList{
	Versions: []RPCVersion{

		{Major: 1, Minor: 1},
	},
}

CurrentSupportedVersions is the list of versions supported by this implementation of the VPN RPC protocol.

View Source
var File_vpn_vpn_proto protoreflect.FileDescriptor

Functions

func NewDNSConfigurator added in v2.18.0

func NewDNSConfigurator(t *Tunnel) dns.OSConfigurator

func NewRouter added in v2.18.0

func NewRouter(t *Tunnel) router.Router

Types

type Agent

type Agent struct {
	Id          []byte   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // UUID
	Name        string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	WorkspaceId []byte   `protobuf:"bytes,3,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` // UUID
	Fqdn        []string `protobuf:"bytes,4,rep,name=fqdn,proto3" json:"fqdn,omitempty"`
	IpAddrs     []string `protobuf:"bytes,5,rep,name=ip_addrs,json=ipAddrs,proto3" json:"ip_addrs,omitempty"`
	// last_handshake is the primary indicator of whether we are connected to a peer. Zero value or
	// anything longer than 5 minutes ago means there is a problem.
	LastHandshake *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=last_handshake,json=lastHandshake,proto3" json:"last_handshake,omitempty"`
	// contains filtered or unexported fields
}

func (*Agent) Descriptor deprecated

func (*Agent) Descriptor() ([]byte, []int)

Deprecated: Use Agent.ProtoReflect.Descriptor instead.

func (*Agent) GetFqdn

func (x *Agent) GetFqdn() []string

func (*Agent) GetId

func (x *Agent) GetId() []byte

func (*Agent) GetIpAddrs

func (x *Agent) GetIpAddrs() []string

func (*Agent) GetLastHandshake

func (x *Agent) GetLastHandshake() *timestamppb.Timestamp

func (*Agent) GetName

func (x *Agent) GetName() string

func (*Agent) GetWorkspaceId

func (x *Agent) GetWorkspaceId() []byte

func (*Agent) ProtoMessage

func (*Agent) ProtoMessage()

func (*Agent) ProtoReflect

func (x *Agent) ProtoReflect() protoreflect.Message

func (*Agent) Reset

func (x *Agent) Reset()

func (*Agent) String

func (x *Agent) String() string

type BidirectionalPipe added in v2.18.0

type BidirectionalPipe struct {
	// contains filtered or unexported fields
}

BidirectionalPipe combines a pair of files that can be used for bidirectional communication.

func NewBidirectionalPipe added in v2.18.0

func NewBidirectionalPipe(readFd, writeFd uintptr) (BidirectionalPipe, error)

NewBidirectionalPipe creates a new BidirectionalPipe from the given file descriptors.

func (BidirectionalPipe) Close added in v2.18.0

func (b BidirectionalPipe) Close() error

Close implements io.Closer. Both the read and write pipes are closed.

func (BidirectionalPipe) Read added in v2.18.0

func (b BidirectionalPipe) Read(p []byte) (int, error)

Read implements io.Reader. Data is read from the read pipe.

func (BidirectionalPipe) Write added in v2.18.0

func (b BidirectionalPipe) Write(p []byte) (n int, err error)

Write implements io.Writer. Data is written to the write pipe.

type Client added in v2.19.0

type Client interface {
	NewConn(ctx context.Context, serverURL *url.URL, token string, options *Options) (Conn, error)
}

func NewClient added in v2.19.0

func NewClient() Client

type Conn added in v2.19.0

type Conn interface {
	CurrentWorkspaceState() (tailnet.WorkspaceUpdate, error)
	GetPeerDiagnostics(peerID uuid.UUID) tailnet.PeerDiagnostics
	Close() error
}

type GetPeerUpdate

type GetPeerUpdate struct {
	// contains filtered or unexported fields
}

GetPeerUpdate asks for a PeerUpdate with a full set of data.

func (*GetPeerUpdate) Descriptor deprecated

func (*GetPeerUpdate) Descriptor() ([]byte, []int)

Deprecated: Use GetPeerUpdate.ProtoReflect.Descriptor instead.

func (*GetPeerUpdate) ProtoMessage

func (*GetPeerUpdate) ProtoMessage()

func (*GetPeerUpdate) ProtoReflect

func (x *GetPeerUpdate) ProtoReflect() protoreflect.Message

func (*GetPeerUpdate) Reset

func (x *GetPeerUpdate) Reset()

func (*GetPeerUpdate) String

func (x *GetPeerUpdate) String() string

type Log

type Log struct {
	Level       Log_Level    `protobuf:"varint,1,opt,name=level,proto3,enum=vpn.Log_Level" json:"level,omitempty"`
	Message     string       `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
	LoggerNames []string     `protobuf:"bytes,3,rep,name=logger_names,json=loggerNames,proto3" json:"logger_names,omitempty"`
	Fields      []*Log_Field `protobuf:"bytes,4,rep,name=fields,proto3" json:"fields,omitempty"`
	// contains filtered or unexported fields
}

Log is a log message generated by the tunnel. The manager should log it to the system log. It is one-way tunnel -> manager with no response.

func (*Log) Descriptor deprecated

func (*Log) Descriptor() ([]byte, []int)

Deprecated: Use Log.ProtoReflect.Descriptor instead.

func (*Log) GetFields

func (x *Log) GetFields() []*Log_Field

func (*Log) GetLevel

func (x *Log) GetLevel() Log_Level

func (*Log) GetLoggerNames

func (x *Log) GetLoggerNames() []string

func (*Log) GetMessage

func (x *Log) GetMessage() string

func (*Log) ProtoMessage

func (*Log) ProtoMessage()

func (*Log) ProtoReflect

func (x *Log) ProtoReflect() protoreflect.Message

func (*Log) Reset

func (x *Log) Reset()

func (*Log) String

func (x *Log) String() string

type Log_Field

type Log_Field struct {
	Name  string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// contains filtered or unexported fields
}

func (*Log_Field) Descriptor deprecated

func (*Log_Field) Descriptor() ([]byte, []int)

Deprecated: Use Log_Field.ProtoReflect.Descriptor instead.

func (*Log_Field) GetName

func (x *Log_Field) GetName() string

func (*Log_Field) GetValue

func (x *Log_Field) GetValue() string

func (*Log_Field) ProtoMessage

func (*Log_Field) ProtoMessage()

func (*Log_Field) ProtoReflect

func (x *Log_Field) ProtoReflect() protoreflect.Message

func (*Log_Field) Reset

func (x *Log_Field) Reset()

func (*Log_Field) String

func (x *Log_Field) String() string

type Log_Level

type Log_Level int32
const (
	// these are designed to match slog levels
	Log_DEBUG    Log_Level = 0
	Log_INFO     Log_Level = 1
	Log_WARN     Log_Level = 2
	Log_ERROR    Log_Level = 3
	Log_CRITICAL Log_Level = 4
	Log_FATAL    Log_Level = 5
)

func (Log_Level) Descriptor

func (Log_Level) Descriptor() protoreflect.EnumDescriptor

func (Log_Level) Enum

func (x Log_Level) Enum() *Log_Level

func (Log_Level) EnumDescriptor deprecated

func (Log_Level) EnumDescriptor() ([]byte, []int)

Deprecated: Use Log_Level.Descriptor instead.

func (Log_Level) Number

func (x Log_Level) Number() protoreflect.EnumNumber

func (Log_Level) String

func (x Log_Level) String() string

func (Log_Level) Type

type ManagerMessage

type ManagerMessage struct {
	Rpc *RPC `protobuf:"bytes,1,opt,name=rpc,proto3" json:"rpc,omitempty"`
	// Types that are assignable to Msg:
	//
	//	*ManagerMessage_GetPeerUpdate
	//	*ManagerMessage_NetworkSettings
	//	*ManagerMessage_Start
	//	*ManagerMessage_Stop
	Msg isManagerMessage_Msg `protobuf_oneof:"msg"`
	// contains filtered or unexported fields
}

ManagerMessage is a message from the manager (to the tunnel).

func (*ManagerMessage) Descriptor deprecated

func (*ManagerMessage) Descriptor() ([]byte, []int)

Deprecated: Use ManagerMessage.ProtoReflect.Descriptor instead.

func (*ManagerMessage) EnsureRPC

func (m *ManagerMessage) EnsureRPC() *RPC

func (*ManagerMessage) GetGetPeerUpdate

func (x *ManagerMessage) GetGetPeerUpdate() *GetPeerUpdate

func (*ManagerMessage) GetMsg

func (m *ManagerMessage) GetMsg() isManagerMessage_Msg

func (*ManagerMessage) GetNetworkSettings

func (x *ManagerMessage) GetNetworkSettings() *NetworkSettingsResponse

func (*ManagerMessage) GetRpc

func (x *ManagerMessage) GetRpc() *RPC

func (*ManagerMessage) GetStart

func (x *ManagerMessage) GetStart() *StartRequest

func (*ManagerMessage) GetStop

func (x *ManagerMessage) GetStop() *StopRequest

func (*ManagerMessage) ProtoMessage

func (*ManagerMessage) ProtoMessage()

func (*ManagerMessage) ProtoReflect

func (x *ManagerMessage) ProtoReflect() protoreflect.Message

func (*ManagerMessage) Reset

func (x *ManagerMessage) Reset()

func (*ManagerMessage) String

func (x *ManagerMessage) String() string

type ManagerMessage_GetPeerUpdate

type ManagerMessage_GetPeerUpdate struct {
	GetPeerUpdate *GetPeerUpdate `protobuf:"bytes,2,opt,name=get_peer_update,json=getPeerUpdate,proto3,oneof"`
}

type ManagerMessage_NetworkSettings

type ManagerMessage_NetworkSettings struct {
	NetworkSettings *NetworkSettingsResponse `protobuf:"bytes,3,opt,name=network_settings,json=networkSettings,proto3,oneof"`
}

type ManagerMessage_Start

type ManagerMessage_Start struct {
	Start *StartRequest `protobuf:"bytes,4,opt,name=start,proto3,oneof"`
}

type ManagerMessage_Stop

type ManagerMessage_Stop struct {
	Stop *StopRequest `protobuf:"bytes,5,opt,name=stop,proto3,oneof"`
}

type NetworkSettingsRequest

type NetworkSettingsRequest struct {
	TunnelOverheadBytes uint32                               `protobuf:"varint,1,opt,name=tunnel_overhead_bytes,json=tunnelOverheadBytes,proto3" json:"tunnel_overhead_bytes,omitempty"`
	Mtu                 uint32                               `protobuf:"varint,2,opt,name=mtu,proto3" json:"mtu,omitempty"`
	DnsSettings         *NetworkSettingsRequest_DNSSettings  `protobuf:"bytes,3,opt,name=dns_settings,json=dnsSettings,proto3" json:"dns_settings,omitempty"`
	TunnelRemoteAddress string                               `protobuf:"bytes,4,opt,name=tunnel_remote_address,json=tunnelRemoteAddress,proto3" json:"tunnel_remote_address,omitempty"`
	Ipv4Settings        *NetworkSettingsRequest_IPv4Settings `protobuf:"bytes,5,opt,name=ipv4_settings,json=ipv4Settings,proto3" json:"ipv4_settings,omitempty"`
	Ipv6Settings        *NetworkSettingsRequest_IPv6Settings `protobuf:"bytes,6,opt,name=ipv6_settings,json=ipv6Settings,proto3" json:"ipv6_settings,omitempty"`
	// contains filtered or unexported fields
}

NetworkSettingsRequest is based on https://developer.apple.com/documentation/networkextension/nepackettunnelnetworksettings for macOS. It is a request/response message with response NetworkSettingsResponse

func (*NetworkSettingsRequest) Descriptor deprecated

func (*NetworkSettingsRequest) Descriptor() ([]byte, []int)

Deprecated: Use NetworkSettingsRequest.ProtoReflect.Descriptor instead.

func (*NetworkSettingsRequest) GetDnsSettings

func (*NetworkSettingsRequest) GetIpv4Settings

func (*NetworkSettingsRequest) GetIpv6Settings

func (*NetworkSettingsRequest) GetMtu

func (x *NetworkSettingsRequest) GetMtu() uint32

func (*NetworkSettingsRequest) GetTunnelOverheadBytes

func (x *NetworkSettingsRequest) GetTunnelOverheadBytes() uint32

func (*NetworkSettingsRequest) GetTunnelRemoteAddress

func (x *NetworkSettingsRequest) GetTunnelRemoteAddress() string

func (*NetworkSettingsRequest) ProtoMessage

func (*NetworkSettingsRequest) ProtoMessage()

func (*NetworkSettingsRequest) ProtoReflect

func (x *NetworkSettingsRequest) ProtoReflect() protoreflect.Message

func (*NetworkSettingsRequest) Reset

func (x *NetworkSettingsRequest) Reset()

func (*NetworkSettingsRequest) String

func (x *NetworkSettingsRequest) String() string

type NetworkSettingsRequest_DNSSettings

type NetworkSettingsRequest_DNSSettings struct {
	Servers       []string `protobuf:"bytes,1,rep,name=servers,proto3" json:"servers,omitempty"`
	SearchDomains []string `protobuf:"bytes,2,rep,name=search_domains,json=searchDomains,proto3" json:"search_domains,omitempty"`
	// domain_name is the primary domain name of the tunnel
	DomainName   string   `protobuf:"bytes,3,opt,name=domain_name,json=domainName,proto3" json:"domain_name,omitempty"`
	MatchDomains []string `protobuf:"bytes,4,rep,name=match_domains,json=matchDomains,proto3" json:"match_domains,omitempty"`
	// match_domains_no_search specifies if the domains in the matchDomains list should not be
	// appended to the resolver’s list of search domains.
	MatchDomainsNoSearch bool `` /* 126-byte string literal not displayed */
	// contains filtered or unexported fields
}

func (*NetworkSettingsRequest_DNSSettings) Descriptor deprecated

func (*NetworkSettingsRequest_DNSSettings) Descriptor() ([]byte, []int)

Deprecated: Use NetworkSettingsRequest_DNSSettings.ProtoReflect.Descriptor instead.

func (*NetworkSettingsRequest_DNSSettings) GetDomainName

func (x *NetworkSettingsRequest_DNSSettings) GetDomainName() string

func (*NetworkSettingsRequest_DNSSettings) GetMatchDomains

func (x *NetworkSettingsRequest_DNSSettings) GetMatchDomains() []string

func (*NetworkSettingsRequest_DNSSettings) GetMatchDomainsNoSearch

func (x *NetworkSettingsRequest_DNSSettings) GetMatchDomainsNoSearch() bool

func (*NetworkSettingsRequest_DNSSettings) GetSearchDomains

func (x *NetworkSettingsRequest_DNSSettings) GetSearchDomains() []string

func (*NetworkSettingsRequest_DNSSettings) GetServers

func (x *NetworkSettingsRequest_DNSSettings) GetServers() []string

func (*NetworkSettingsRequest_DNSSettings) ProtoMessage

func (*NetworkSettingsRequest_DNSSettings) ProtoMessage()

func (*NetworkSettingsRequest_DNSSettings) ProtoReflect

func (*NetworkSettingsRequest_DNSSettings) Reset

func (*NetworkSettingsRequest_DNSSettings) String

type NetworkSettingsRequest_IPv4Settings

type NetworkSettingsRequest_IPv4Settings struct {
	Addrs       []string `protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"`
	SubnetMasks []string `protobuf:"bytes,2,rep,name=subnet_masks,json=subnetMasks,proto3" json:"subnet_masks,omitempty"`
	// router is the next-hop router in dotted-decimal format
	Router         string                                           `protobuf:"bytes,3,opt,name=router,proto3" json:"router,omitempty"`
	IncludedRoutes []*NetworkSettingsRequest_IPv4Settings_IPv4Route `protobuf:"bytes,4,rep,name=included_routes,json=includedRoutes,proto3" json:"included_routes,omitempty"`
	ExcludedRoutes []*NetworkSettingsRequest_IPv4Settings_IPv4Route `protobuf:"bytes,5,rep,name=excluded_routes,json=excludedRoutes,proto3" json:"excluded_routes,omitempty"`
	// contains filtered or unexported fields
}

func (*NetworkSettingsRequest_IPv4Settings) Descriptor deprecated

func (*NetworkSettingsRequest_IPv4Settings) Descriptor() ([]byte, []int)

Deprecated: Use NetworkSettingsRequest_IPv4Settings.ProtoReflect.Descriptor instead.

func (*NetworkSettingsRequest_IPv4Settings) GetAddrs

func (*NetworkSettingsRequest_IPv4Settings) GetExcludedRoutes

func (*NetworkSettingsRequest_IPv4Settings) GetIncludedRoutes

func (*NetworkSettingsRequest_IPv4Settings) GetRouter

func (*NetworkSettingsRequest_IPv4Settings) GetSubnetMasks

func (x *NetworkSettingsRequest_IPv4Settings) GetSubnetMasks() []string

func (*NetworkSettingsRequest_IPv4Settings) ProtoMessage

func (*NetworkSettingsRequest_IPv4Settings) ProtoMessage()

func (*NetworkSettingsRequest_IPv4Settings) ProtoReflect

func (*NetworkSettingsRequest_IPv4Settings) Reset

func (*NetworkSettingsRequest_IPv4Settings) String

type NetworkSettingsRequest_IPv4Settings_IPv4Route

type NetworkSettingsRequest_IPv4Settings_IPv4Route struct {
	Destination string `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"`
	Mask        string `protobuf:"bytes,2,opt,name=mask,proto3" json:"mask,omitempty"`
	// router is the next-hop router in dotted-decimal format
	Router string `protobuf:"bytes,3,opt,name=router,proto3" json:"router,omitempty"`
	// contains filtered or unexported fields
}

func (*NetworkSettingsRequest_IPv4Settings_IPv4Route) Descriptor deprecated

Deprecated: Use NetworkSettingsRequest_IPv4Settings_IPv4Route.ProtoReflect.Descriptor instead.

func (*NetworkSettingsRequest_IPv4Settings_IPv4Route) GetDestination

func (*NetworkSettingsRequest_IPv4Settings_IPv4Route) GetMask

func (*NetworkSettingsRequest_IPv4Settings_IPv4Route) GetRouter

func (*NetworkSettingsRequest_IPv4Settings_IPv4Route) ProtoMessage

func (*NetworkSettingsRequest_IPv4Settings_IPv4Route) ProtoReflect

func (*NetworkSettingsRequest_IPv4Settings_IPv4Route) Reset

func (*NetworkSettingsRequest_IPv4Settings_IPv4Route) String

type NetworkSettingsRequest_IPv6Settings

type NetworkSettingsRequest_IPv6Settings struct {
	Addrs          []string                                         `protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"`
	PrefixLengths  []uint32                                         `protobuf:"varint,2,rep,packed,name=prefix_lengths,json=prefixLengths,proto3" json:"prefix_lengths,omitempty"`
	IncludedRoutes []*NetworkSettingsRequest_IPv6Settings_IPv6Route `protobuf:"bytes,3,rep,name=included_routes,json=includedRoutes,proto3" json:"included_routes,omitempty"`
	ExcludedRoutes []*NetworkSettingsRequest_IPv6Settings_IPv6Route `protobuf:"bytes,4,rep,name=excluded_routes,json=excludedRoutes,proto3" json:"excluded_routes,omitempty"`
	// contains filtered or unexported fields
}

func (*NetworkSettingsRequest_IPv6Settings) Descriptor deprecated

func (*NetworkSettingsRequest_IPv6Settings) Descriptor() ([]byte, []int)

Deprecated: Use NetworkSettingsRequest_IPv6Settings.ProtoReflect.Descriptor instead.

func (*NetworkSettingsRequest_IPv6Settings) GetAddrs

func (*NetworkSettingsRequest_IPv6Settings) GetExcludedRoutes

func (*NetworkSettingsRequest_IPv6Settings) GetIncludedRoutes

func (*NetworkSettingsRequest_IPv6Settings) GetPrefixLengths

func (x *NetworkSettingsRequest_IPv6Settings) GetPrefixLengths() []uint32

func (*NetworkSettingsRequest_IPv6Settings) ProtoMessage

func (*NetworkSettingsRequest_IPv6Settings) ProtoMessage()

func (*NetworkSettingsRequest_IPv6Settings) ProtoReflect

func (*NetworkSettingsRequest_IPv6Settings) Reset

func (*NetworkSettingsRequest_IPv6Settings) String

type NetworkSettingsRequest_IPv6Settings_IPv6Route

type NetworkSettingsRequest_IPv6Settings_IPv6Route struct {
	Destination  string `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"`
	PrefixLength uint32 `protobuf:"varint,2,opt,name=prefix_length,json=prefixLength,proto3" json:"prefix_length,omitempty"`
	// router is the address of the next-hop
	Router string `protobuf:"bytes,3,opt,name=router,proto3" json:"router,omitempty"`
	// contains filtered or unexported fields
}

func (*NetworkSettingsRequest_IPv6Settings_IPv6Route) Descriptor deprecated

Deprecated: Use NetworkSettingsRequest_IPv6Settings_IPv6Route.ProtoReflect.Descriptor instead.

func (*NetworkSettingsRequest_IPv6Settings_IPv6Route) GetDestination

func (*NetworkSettingsRequest_IPv6Settings_IPv6Route) GetPrefixLength

func (*NetworkSettingsRequest_IPv6Settings_IPv6Route) GetRouter

func (*NetworkSettingsRequest_IPv6Settings_IPv6Route) ProtoMessage

func (*NetworkSettingsRequest_IPv6Settings_IPv6Route) ProtoReflect

func (*NetworkSettingsRequest_IPv6Settings_IPv6Route) Reset

func (*NetworkSettingsRequest_IPv6Settings_IPv6Route) String

type NetworkSettingsResponse

type NetworkSettingsResponse struct {
	Success      bool   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	// contains filtered or unexported fields
}

NetworkSettingsResponse is the response from the manager to the tunnel for a NetworkSettingsRequest

func (*NetworkSettingsResponse) Descriptor deprecated

func (*NetworkSettingsResponse) Descriptor() ([]byte, []int)

Deprecated: Use NetworkSettingsResponse.ProtoReflect.Descriptor instead.

func (*NetworkSettingsResponse) GetErrorMessage

func (x *NetworkSettingsResponse) GetErrorMessage() string

func (*NetworkSettingsResponse) GetSuccess

func (x *NetworkSettingsResponse) GetSuccess() bool

func (*NetworkSettingsResponse) ProtoMessage

func (*NetworkSettingsResponse) ProtoMessage()

func (*NetworkSettingsResponse) ProtoReflect

func (x *NetworkSettingsResponse) ProtoReflect() protoreflect.Message

func (*NetworkSettingsResponse) Reset

func (x *NetworkSettingsResponse) Reset()

func (*NetworkSettingsResponse) String

func (x *NetworkSettingsResponse) String() string

type NetworkStack added in v2.20.0

type NetworkStack struct {
	WireguardMonitor *netmon.Monitor
	TUNDevice        tun.Device
	Router           router.Router
	DNSConfigurator  dns.OSConfigurator
}

func GetNetworkingStack added in v2.20.0

func GetNetworkingStack(_ *Tunnel, _ *StartRequest, _ slog.Logger) (NetworkStack, error)

This is a no-op on every platform except Darwin and Windows.

type Options added in v2.19.0

type Options struct {
	Headers          http.Header
	Logger           slog.Logger
	DNSConfigurator  dns.OSConfigurator
	Router           router.Router
	TUNDevice        tun.Device
	WireguardMonitor *netmon.Monitor
	UpdateHandler    tailnet.UpdatesHandler
}

type PeerUpdate

type PeerUpdate struct {
	UpsertedWorkspaces []*Workspace `protobuf:"bytes,1,rep,name=upserted_workspaces,json=upsertedWorkspaces,proto3" json:"upserted_workspaces,omitempty"`
	UpsertedAgents     []*Agent     `protobuf:"bytes,2,rep,name=upserted_agents,json=upsertedAgents,proto3" json:"upserted_agents,omitempty"`
	DeletedWorkspaces  []*Workspace `protobuf:"bytes,3,rep,name=deleted_workspaces,json=deletedWorkspaces,proto3" json:"deleted_workspaces,omitempty"`
	DeletedAgents      []*Agent     `protobuf:"bytes,4,rep,name=deleted_agents,json=deletedAgents,proto3" json:"deleted_agents,omitempty"`
	// contains filtered or unexported fields
}

PeerUpdate is an update about workspaces and agents connected via the tunnel. It is generated in response to GetPeerUpdate (which dumps the full set). It is also generated on any changes (not in response to any request).

func (*PeerUpdate) Descriptor deprecated

func (*PeerUpdate) Descriptor() ([]byte, []int)

Deprecated: Use PeerUpdate.ProtoReflect.Descriptor instead.

func (*PeerUpdate) GetDeletedAgents

func (x *PeerUpdate) GetDeletedAgents() []*Agent

func (*PeerUpdate) GetDeletedWorkspaces

func (x *PeerUpdate) GetDeletedWorkspaces() []*Workspace

func (*PeerUpdate) GetUpsertedAgents

func (x *PeerUpdate) GetUpsertedAgents() []*Agent

func (*PeerUpdate) GetUpsertedWorkspaces

func (x *PeerUpdate) GetUpsertedWorkspaces() []*Workspace

func (*PeerUpdate) ProtoMessage

func (*PeerUpdate) ProtoMessage()

func (*PeerUpdate) ProtoReflect

func (x *PeerUpdate) ProtoReflect() protoreflect.Message

func (*PeerUpdate) Reset

func (x *PeerUpdate) Reset()

func (*PeerUpdate) String

func (x *PeerUpdate) String() string

type RPC

type RPC struct {
	MsgId      uint64 `protobuf:"varint,1,opt,name=msg_id,json=msgId,proto3" json:"msg_id,omitempty"`
	ResponseTo uint64 `protobuf:"varint,2,opt,name=response_to,json=responseTo,proto3" json:"response_to,omitempty"`
	// contains filtered or unexported fields
}

RPC allows a very simple unary request/response RPC mechanism. The requester generates a unique msg_id which it sets on the request, the responder sets response_to that msg_id on the response message

func (*RPC) Descriptor deprecated

func (*RPC) Descriptor() ([]byte, []int)

Deprecated: Use RPC.ProtoReflect.Descriptor instead.

func (*RPC) GetMsgId

func (x *RPC) GetMsgId() uint64

func (*RPC) GetResponseTo

func (x *RPC) GetResponseTo() uint64

func (*RPC) ProtoMessage

func (*RPC) ProtoMessage()

func (*RPC) ProtoReflect

func (x *RPC) ProtoReflect() protoreflect.Message

func (*RPC) Reset

func (x *RPC) Reset()

func (*RPC) String

func (x *RPC) String() string

type RPCVersion added in v2.19.0

type RPCVersion struct {
	Major uint64 `json:"major"`
	Minor uint64 `json:"minor"`
}

RPCVersion represents a single version of the RPC protocol. Any given version is expected to be backwards compatible with all previous minor versions on the same major version.

e.g. RPCVersion{2, 3} is backwards compatible with RPCVersion{2, 2} but is not backwards compatible with RPCVersion{1, 2}.

func ParseRPCVersion added in v2.19.0

func ParseRPCVersion(str string) (RPCVersion, error)

ParseRPCVersion parses a version string in the format "major.minor" into a RPCVersion.

func (RPCVersion) IsCompatibleWith added in v2.19.0

func (v RPCVersion) IsCompatibleWith(other RPCVersion) (RPCVersion, bool)

IsCompatibleWith returns the lowest version that is compatible with both versions. If the versions are not compatible, the second return value will be false.

func (RPCVersion) String added in v2.19.0

func (v RPCVersion) String() string

type RPCVersionList added in v2.19.0

type RPCVersionList struct {
	Versions []RPCVersion `json:"versions"`
}

RPCVersionList represents a list of RPC versions supported by a RPC peer. An

func ParseRPCVersionList added in v2.19.0

func ParseRPCVersionList(str string) (RPCVersionList, error)

ParseRPCVersionList parses a version string in the format "major.minor,major.minor" into a RPCVersionList.

func (RPCVersionList) IsCompatibleWith added in v2.19.0

func (vl RPCVersionList) IsCompatibleWith(other RPCVersionList) (RPCVersion, bool)

IsCompatibleWith returns the lowest version that is compatible with both version lists. If the versions are not compatible, the second return value will be false.

func (RPCVersionList) String added in v2.19.0

func (vl RPCVersionList) String() string

func (RPCVersionList) Validate added in v2.19.0

func (vl RPCVersionList) Validate() error

Validate returns an error if the version list is not sorted or contains duplicate major versions.

type SpeakerRole

type SpeakerRole string
const (
	SpeakerRoleManager SpeakerRole = "manager"
	SpeakerRoleTunnel  SpeakerRole = "tunnel"
)

type StartRequest

type StartRequest struct {
	TunnelFileDescriptor int32                  `protobuf:"varint,1,opt,name=tunnel_file_descriptor,json=tunnelFileDescriptor,proto3" json:"tunnel_file_descriptor,omitempty"`
	CoderUrl             string                 `protobuf:"bytes,2,opt,name=coder_url,json=coderUrl,proto3" json:"coder_url,omitempty"`
	ApiToken             string                 `protobuf:"bytes,3,opt,name=api_token,json=apiToken,proto3" json:"api_token,omitempty"`
	Headers              []*StartRequest_Header `protobuf:"bytes,4,rep,name=headers,proto3" json:"headers,omitempty"`
	// Device ID from Coder Desktop
	DeviceId string `protobuf:"bytes,5,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
	// Device OS from Coder Desktop
	DeviceOs string `protobuf:"bytes,6,opt,name=device_os,json=deviceOs,proto3" json:"device_os,omitempty"`
	// Coder Desktop version
	CoderDesktopVersion string `protobuf:"bytes,7,opt,name=coder_desktop_version,json=coderDesktopVersion,proto3" json:"coder_desktop_version,omitempty"`
	// contains filtered or unexported fields
}

StartRequest is a request from the manager to start the tunnel. The tunnel replies with a StartResponse.

func (*StartRequest) Descriptor deprecated

func (*StartRequest) Descriptor() ([]byte, []int)

Deprecated: Use StartRequest.ProtoReflect.Descriptor instead.

func (*StartRequest) GetApiToken

func (x *StartRequest) GetApiToken() string

func (*StartRequest) GetCoderDesktopVersion added in v2.21.0

func (x *StartRequest) GetCoderDesktopVersion() string

func (*StartRequest) GetCoderUrl

func (x *StartRequest) GetCoderUrl() string

func (*StartRequest) GetDeviceId added in v2.21.0

func (x *StartRequest) GetDeviceId() string

func (*StartRequest) GetDeviceOs added in v2.21.0

func (x *StartRequest) GetDeviceOs() string

func (*StartRequest) GetHeaders added in v2.19.0

func (x *StartRequest) GetHeaders() []*StartRequest_Header

func (*StartRequest) GetTunnelFileDescriptor

func (x *StartRequest) GetTunnelFileDescriptor() int32

func (*StartRequest) ProtoMessage

func (*StartRequest) ProtoMessage()

func (*StartRequest) ProtoReflect

func (x *StartRequest) ProtoReflect() protoreflect.Message

func (*StartRequest) Reset

func (x *StartRequest) Reset()

func (*StartRequest) String

func (x *StartRequest) String() string

type StartRequest_Header added in v2.19.0

type StartRequest_Header struct {
	Name  string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	// contains filtered or unexported fields
}

Additional HTTP headers added to all requests

func (*StartRequest_Header) Descriptor deprecated added in v2.19.0

func (*StartRequest_Header) Descriptor() ([]byte, []int)

Deprecated: Use StartRequest_Header.ProtoReflect.Descriptor instead.

func (*StartRequest_Header) GetName added in v2.19.0

func (x *StartRequest_Header) GetName() string

func (*StartRequest_Header) GetValue added in v2.19.0

func (x *StartRequest_Header) GetValue() string

func (*StartRequest_Header) ProtoMessage added in v2.19.0

func (*StartRequest_Header) ProtoMessage()

func (*StartRequest_Header) ProtoReflect added in v2.19.0

func (x *StartRequest_Header) ProtoReflect() protoreflect.Message

func (*StartRequest_Header) Reset added in v2.19.0

func (x *StartRequest_Header) Reset()

func (*StartRequest_Header) String added in v2.19.0

func (x *StartRequest_Header) String() string

type StartResponse

type StartResponse struct {
	Success      bool   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	// contains filtered or unexported fields
}

func (*StartResponse) Descriptor deprecated

func (*StartResponse) Descriptor() ([]byte, []int)

Deprecated: Use StartResponse.ProtoReflect.Descriptor instead.

func (*StartResponse) GetErrorMessage

func (x *StartResponse) GetErrorMessage() string

func (*StartResponse) GetSuccess

func (x *StartResponse) GetSuccess() bool

func (*StartResponse) ProtoMessage

func (*StartResponse) ProtoMessage()

func (*StartResponse) ProtoReflect

func (x *StartResponse) ProtoReflect() protoreflect.Message

func (*StartResponse) Reset

func (x *StartResponse) Reset()

func (*StartResponse) String

func (x *StartResponse) String() string

type StopRequest

type StopRequest struct {
	// contains filtered or unexported fields
}

StopRequest is a request from the manager to stop the tunnel. The tunnel replies with a StopResponse.

func (*StopRequest) Descriptor deprecated

func (*StopRequest) Descriptor() ([]byte, []int)

Deprecated: Use StopRequest.ProtoReflect.Descriptor instead.

func (*StopRequest) ProtoMessage

func (*StopRequest) ProtoMessage()

func (*StopRequest) ProtoReflect

func (x *StopRequest) ProtoReflect() protoreflect.Message

func (*StopRequest) Reset

func (x *StopRequest) Reset()

func (*StopRequest) String

func (x *StopRequest) String() string

type StopResponse

type StopResponse struct {
	Success      bool   `protobuf:"varint,1,opt,name=success,proto3" json:"success,omitempty"`
	ErrorMessage string `protobuf:"bytes,2,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"`
	// contains filtered or unexported fields
}

StopResponse is a response to stopping the tunnel. After sending this response, the tunnel closes its side of the bidirectional stream for writing.

func (*StopResponse) Descriptor deprecated

func (*StopResponse) Descriptor() ([]byte, []int)

Deprecated: Use StopResponse.ProtoReflect.Descriptor instead.

func (*StopResponse) GetErrorMessage

func (x *StopResponse) GetErrorMessage() string

func (*StopResponse) GetSuccess

func (x *StopResponse) GetSuccess() bool

func (*StopResponse) ProtoMessage

func (*StopResponse) ProtoMessage()

func (*StopResponse) ProtoReflect

func (x *StopResponse) ProtoReflect() protoreflect.Message

func (*StopResponse) Reset

func (x *StopResponse) Reset()

func (*StopResponse) String

func (x *StopResponse) String() string

type Tunnel

type Tunnel struct {
	// contains filtered or unexported fields
}

func NewTunnel

func NewTunnel(
	ctx context.Context,
	logger slog.Logger,
	mgrConn io.ReadWriteCloser,
	client Client,
	opts ...TunnelOption,
) (*Tunnel, error)

func (*Tunnel) ApplyNetworkSettings

func (t *Tunnel) ApplyNetworkSettings(ctx context.Context, ns *NetworkSettingsRequest) error

ApplyNetworkSettings sends a request to the manager to apply the given network settings

func (*Tunnel) Close

func (s *Tunnel) Close() error

Close closes the speaker nolint: revive

func (*Tunnel) LogEntry

func (t *Tunnel) LogEntry(_ context.Context, e slog.SinkEntry)

func (*Tunnel) Sync

func (t *Tunnel) Sync()

func (*Tunnel) Update added in v2.19.0

func (u *Tunnel) Update(update tailnet.WorkspaceUpdate) error

Update pushes a workspace update to the manager

type TunnelMessage

type TunnelMessage struct {
	Rpc *RPC `protobuf:"bytes,1,opt,name=rpc,proto3" json:"rpc,omitempty"`
	// Types that are assignable to Msg:
	//
	//	*TunnelMessage_Log
	//	*TunnelMessage_PeerUpdate
	//	*TunnelMessage_NetworkSettings
	//	*TunnelMessage_Start
	//	*TunnelMessage_Stop
	Msg isTunnelMessage_Msg `protobuf_oneof:"msg"`
	// contains filtered or unexported fields
}

TunnelMessage is a message from the tunnel (to the manager).

func (*TunnelMessage) Descriptor deprecated

func (*TunnelMessage) Descriptor() ([]byte, []int)

Deprecated: Use TunnelMessage.ProtoReflect.Descriptor instead.

func (*TunnelMessage) EnsureRPC

func (t *TunnelMessage) EnsureRPC() *RPC

func (*TunnelMessage) GetLog

func (x *TunnelMessage) GetLog() *Log

func (*TunnelMessage) GetMsg

func (m *TunnelMessage) GetMsg() isTunnelMessage_Msg

func (*TunnelMessage) GetNetworkSettings

func (x *TunnelMessage) GetNetworkSettings() *NetworkSettingsRequest

func (*TunnelMessage) GetPeerUpdate

func (x *TunnelMessage) GetPeerUpdate() *PeerUpdate

func (*TunnelMessage) GetRpc

func (x *TunnelMessage) GetRpc() *RPC

func (*TunnelMessage) GetStart

func (x *TunnelMessage) GetStart() *StartResponse

func (*TunnelMessage) GetStop

func (x *TunnelMessage) GetStop() *StopResponse

func (*TunnelMessage) ProtoMessage

func (*TunnelMessage) ProtoMessage()

func (*TunnelMessage) ProtoReflect

func (x *TunnelMessage) ProtoReflect() protoreflect.Message

func (*TunnelMessage) Reset

func (x *TunnelMessage) Reset()

func (*TunnelMessage) String

func (x *TunnelMessage) String() string

type TunnelMessage_Log

type TunnelMessage_Log struct {
	Log *Log `protobuf:"bytes,2,opt,name=log,proto3,oneof"`
}

type TunnelMessage_NetworkSettings

type TunnelMessage_NetworkSettings struct {
	NetworkSettings *NetworkSettingsRequest `protobuf:"bytes,4,opt,name=network_settings,json=networkSettings,proto3,oneof"`
}

type TunnelMessage_PeerUpdate

type TunnelMessage_PeerUpdate struct {
	PeerUpdate *PeerUpdate `protobuf:"bytes,3,opt,name=peer_update,json=peerUpdate,proto3,oneof"`
}

type TunnelMessage_Start

type TunnelMessage_Start struct {
	Start *StartResponse `protobuf:"bytes,5,opt,name=start,proto3,oneof"`
}

type TunnelMessage_Stop

type TunnelMessage_Stop struct {
	Stop *StopResponse `protobuf:"bytes,6,opt,name=stop,proto3,oneof"`
}

type TunnelOption added in v2.19.0

type TunnelOption func(t *Tunnel)

func UseAsLogger added in v2.19.0

func UseAsLogger() TunnelOption

func UseCustomLogSinks added in v2.20.0

func UseCustomLogSinks(sinks ...slog.Sink) TunnelOption

func UseOSNetworkingStack added in v2.20.0

func UseOSNetworkingStack() TunnelOption

func WithClock added in v2.19.0

func WithClock(clock quartz.Clock) TunnelOption

type Workspace

type Workspace struct {
	Id     []byte           `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // UUID
	Name   string           `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Status Workspace_Status `protobuf:"varint,3,opt,name=status,proto3,enum=vpn.Workspace_Status" json:"status,omitempty"`
	// contains filtered or unexported fields
}

func (*Workspace) Descriptor deprecated

func (*Workspace) Descriptor() ([]byte, []int)

Deprecated: Use Workspace.ProtoReflect.Descriptor instead.

func (*Workspace) GetId

func (x *Workspace) GetId() []byte

func (*Workspace) GetName

func (x *Workspace) GetName() string

func (*Workspace) GetStatus

func (x *Workspace) GetStatus() Workspace_Status

func (*Workspace) ProtoMessage

func (*Workspace) ProtoMessage()

func (*Workspace) ProtoReflect

func (x *Workspace) ProtoReflect() protoreflect.Message

func (*Workspace) Reset

func (x *Workspace) Reset()

func (*Workspace) String

func (x *Workspace) String() string

type Workspace_Status

type Workspace_Status int32
const (
	Workspace_UNKNOWN   Workspace_Status = 0
	Workspace_PENDING   Workspace_Status = 1
	Workspace_STARTING  Workspace_Status = 2
	Workspace_RUNNING   Workspace_Status = 3
	Workspace_STOPPING  Workspace_Status = 4
	Workspace_STOPPED   Workspace_Status = 5
	Workspace_FAILED    Workspace_Status = 6
	Workspace_CANCELING Workspace_Status = 7
	Workspace_CANCELED  Workspace_Status = 8
	Workspace_DELETING  Workspace_Status = 9
	Workspace_DELETED   Workspace_Status = 10
)

func (Workspace_Status) Descriptor

func (Workspace_Status) Enum

func (Workspace_Status) EnumDescriptor deprecated

func (Workspace_Status) EnumDescriptor() ([]byte, []int)

Deprecated: Use Workspace_Status.Descriptor instead.

func (Workspace_Status) Number

func (Workspace_Status) String

func (x Workspace_Status) String() string

func (Workspace_Status) Type

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL