overlay

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Dec 13, 2024 License: CC0-1.0 Imports: 32 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RtcMetadataTypeFileMetadata = "file_metadata"
	RtcMetadataTypeFileComplete = "file_complete"
	RtcMetadataTypeFileAck      = "file_ack"
)

Variables

View Source
var TailscaleServicePrefix6 = [6]byte{0xfd, 0x7a, 0x11, 0x5c, 0xa1, 0xe0}

Functions

This section is empty.

Types

type ClientAuth

type ClientAuth struct {
	Web bool
	// OverlayPrivateKey is the main auth mechanism used to secure the overlay.
	// Peers are sent this private key to encrypt node communication to the
	// receiver. Leaking this private key would allow anyone to connect.
	OverlayPrivateKey key.NodePrivate
	// ReceiverPublicKey is the public key of the receiver. Node messages are
	// encrypted to this public key.
	ReceiverPublicKey key.NodePublic
	// ReceiverStunAddr is the address that the receiver is reachable over UDP
	// when the overlay is running in P2P mode.
	ReceiverStunAddr netip.AddrPort
	// ReceiverDERPRegionID is the region id that the receiver is reachable over
	// DERP when the overlay is running in DERP mode.
	ReceiverDERPRegionID uint16
}

func (*ClientAuth) AuthKey

func (ca *ClientAuth) AuthKey() string

func (*ClientAuth) Parse

func (ca *ClientAuth) Parse(authKey string) error

func (*ClientAuth) PrintDebug added in v0.0.6

func (ca *ClientAuth) PrintDebug(logf func(str string, args ...any), dm *tailcfg.DERPMap)

type HostInfo added in v0.1.1

type HostInfo struct {
	Username string
	Hostname string
}

type Logf added in v0.2.0

type Logf func(format string, args ...any)

type Overlay

type Overlay interface {
	// listenOverlay(ctx context.Context, kind string) error
	Recv() <-chan *tailcfg.Node
	SendTailscaleNodeUpdate(node *tailcfg.Node)
	IPs() []netip.Addr
}

Overlay specifies the mechanism by which senders and receivers exchange Tailscale nodes over a sidechannel.

type Receive

type Receive struct {
	Logger    *slog.Logger
	HumanLogf Logf
	DerpMap   *tailcfg.DERPMap
	// SelfPriv is the private key that peers will encrypt overlay messages to.
	// The public key of this is sent in the auth key.
	SelfPriv key.NodePrivate
	// PeerPriv is the main auth mechanism used to secure the overlay. Peers are
	// sent this private key to encrypt node communication. Leaking this private
	// key would allow anyone to connect.
	PeerPriv key.NodePrivate
	// contains filtered or unexported fields
}

func NewReceiveOverlay

func NewReceiveOverlay(logger *slog.Logger, hlog Logf, dm *tailcfg.DERPMap) *Receive

func (*Receive) ClientAuth

func (r *Receive) ClientAuth() *ClientAuth

func (*Receive) IPs added in v0.4.0

func (r *Receive) IPs() []netip.Addr

func (*Receive) ListenOverlayDERP

func (r *Receive) ListenOverlayDERP(ctx context.Context) error

func (*Receive) ListenOverlaySTUN

func (r *Receive) ListenOverlaySTUN(ctx context.Context) (<-chan struct{}, error)

func (*Receive) PickDERPHome

func (r *Receive) PickDERPHome(ctx context.Context) error

func (*Receive) Recv

func (r *Receive) Recv() <-chan *tailcfg.Node

func (*Receive) SendTailscaleNodeUpdate added in v0.4.0

func (r *Receive) SendTailscaleNodeUpdate(node *tailcfg.Node)

type RtcFileMetadata added in v0.4.0

type RtcFileMetadata struct {
	FileName string `json:"fileName"`
	FileSize int    `json:"fileSize"`
}

type RtcMetadata added in v0.4.0

type RtcMetadata struct {
	Type         string          `json:"type"`
	FileMetadata RtcFileMetadata `json:"fileMetadata"`
}

type Send

type Send struct {
	Logger         *slog.Logger
	STUNIPOverride netip.Addr

	SelfIP netip.Addr

	Auth ClientAuth

	RtcConn *webrtc.PeerConnection
	RtcDc   *webrtc.DataChannel

	WaitTransferDone chan struct{}
	// contains filtered or unexported fields
}

func NewSendOverlay

func NewSendOverlay(logger *slog.Logger, dm *tailcfg.DERPMap) *Send

func (*Send) IPs added in v0.4.0

func (s *Send) IPs() []netip.Addr

func (*Send) ListenOverlayDERP

func (s *Send) ListenOverlayDERP(ctx context.Context) error

func (*Send) ListenOverlaySTUN

func (s *Send) ListenOverlaySTUN(ctx context.Context) error

func (*Send) Recv

func (s *Send) Recv() <-chan *tailcfg.Node

func (*Send) SendTailscaleNodeUpdate added in v0.4.0

func (s *Send) SendTailscaleNodeUpdate(node *tailcfg.Node)

Jump to

Keyboard shortcuts

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