safesocket

package
v1.33.0 Latest Latest
Warning

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

Go to latest
Published: Aug 7, 2022 License: BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Overview

Package safesocket creates either a Unix socket, if possible, or otherwise a localhost TCP connection.

Index

Constants

View Source
const WindowsLocalPort = 41112

WindowsLocalPort is the default localhost TCP port used by safesocket on Windows.

Variables

View Source
var (
	ErrTokenNotFound = errors.New("no token found")
	ErrNoTokenOnOS   = errors.New("no token on " + runtime.GOOS)
)

Functions

func ConnCloseRead

func ConnCloseRead(c net.Conn) error

ConnCloseRead calls c's CloseRead method. c is expected to be either a UnixConn or TCPConn as returned from this package.

func ConnCloseWrite

func ConnCloseWrite(c net.Conn) error

ConnCloseWrite calls c's CloseWrite method. c is expected to be either a UnixConn or TCPConn as returned from this package.

func Connect

func Connect(s *ConnectionStrategy) (net.Conn, error)

Connect connects to tailscaled using s

func GOOSUsesPeerCreds

func GOOSUsesPeerCreds(goos string) bool

GOOSUsesPeerCreds is like PlatformUsesPeerCreds but takes a runtime.GOOS value instead of using the current one.

func Listen

func Listen(path string, port uint16) (_ net.Listener, gotPort uint16, _ error)

Listen returns a listener either on Unix socket path (on Unix), or the localhost port (on Windows). If port is 0, the returned gotPort says which port was selected on Windows.

func LocalTCPPortAndToken

func LocalTCPPortAndToken() (port int, token string, err error)

LocalTCPPortAndToken returns the port number and auth token to connect to the local Tailscale daemon. It's currently only applicable on macOS when tailscaled is being run in the Mac Sandbox from the App Store version of Tailscale.

func PlatformUsesPeerCreds

func PlatformUsesPeerCreds() bool

PlatformUsesPeerCreds reports whether the current platform uses peer credentials to authenticate connections.

Types

type ConnectionStrategy

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

A ConnectionStrategy is a plan for how to connect to tailscaled or equivalent (e.g. IPNExtension on macOS).

func DefaultConnectionStrategy

func DefaultConnectionStrategy(path string) *ConnectionStrategy

DefaultConnectionStrategy returns a default connection strategy. The default strategy is to attempt to connect in as many ways as possible. It uses path as the unix socket path, when applicable, and defaults to WindowsLocalPort for the TCP port when applicable. It falls back to auto-discovery across sandbox boundaries on macOS. TODO: maybe take no arguments, since path is irrelevant on Windows? Discussion in PR 3499.

func ExactPath

func ExactPath(path string) *ConnectionStrategy

ExactPath returns a connection strategy that only attempts to connect via path.

func (*ConnectionStrategy) UseFallback

func (s *ConnectionStrategy) UseFallback(b bool)

UseFallback modifies s to set whether it should fall back to connecting to the macOS GUI's tailscaled if the Unix socket path wasn't reachable.

func (*ConnectionStrategy) UsePort

func (s *ConnectionStrategy) UsePort(port uint16)

UsePort modifies s to use port for the TCP port when applicable. UsePort is only applicable on Windows, and only then when not using the default for Windows.

Jump to

Keyboard shortcuts

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