localapi

package
v1.92.4-sing-box-1.13-... Latest Latest
Warning

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

Go to latest
Published: Jan 8, 2026 License: BSD-3-Clause Imports: 65 Imported by: 0

Documentation

Overview

Package localapi contains the HTTP server handlers for tailscaled's API server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func InUseOtherUserIPNStream

func InUseOtherUserIPNStream(w http.ResponseWriter, r *http.Request, err error) (handled bool)

InUseOtherUserIPNStream reports whether r is a request for the watch-ipn-bus handler. If so, it writes an ipn.Notify InUseOtherUser message to the user and returns true. Otherwise it returns false, in which case it doesn't write to w.

Unlike the regular watch-ipn-bus handler, this one doesn't block. The caller (in ipnserver.Server) provides the blocking until the connection is no longer in use.

func Register

func Register(name string, fn LocalAPIHandler)

Register registers a new LocalAPI handler for the given name.

func WriteErrorJSON

func WriteErrorJSON(w http.ResponseWriter, err error)

WriteErrorJSON writes a JSON object (with a single "error" string field) to w with the given error. If err is nil, "unexpected nil error" is used for the stringification instead.

Types

type Handler

type Handler struct {
	// RequiredPassword, if non-empty, forces all HTTP
	// requests to have HTTP basic auth with this password.
	// It's used by the sandboxed macOS sameuserproof GUI auth mechanism.
	RequiredPassword string

	// PermitRead is whether read-only HTTP handlers are allowed.
	PermitRead bool

	// PermitWrite is whether mutating HTTP handlers are allowed.
	// If PermitWrite is true, everything is allowed.
	// It effectively means that the user is root or the admin
	// (operator user).
	PermitWrite bool

	// PermitCert is whether the client is additionally granted
	// cert fetching access.
	PermitCert bool

	// Actor is the identity of the client connected to the Handler.
	Actor ipnauth.Actor
	// contains filtered or unexported fields
}

func NewHandler

func NewHandler(cfg HandlerConfig) *Handler

NewHandler creates a new LocalAPI HTTP handler from the given config.

func (*Handler) LocalBackend

func (h *Handler) LocalBackend() *ipnlocal.LocalBackend

func (*Handler) Logf

func (h *Handler) Logf(format string, args ...any)

func (*Handler) ServeHTTP

func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request)

type HandlerConfig

type HandlerConfig struct {
	Actor    ipnauth.Actor
	Backend  *ipnlocal.LocalBackend
	Logf     logger.Logf
	LogID    logid.PublicID
	EventBus *eventbus.Bus
	Dialer   N.Dialer
}

HandlerConfig carries the settings for a local API handler. All fields are required.

type LocalAPIHandler

type LocalAPIHandler func(*Handler, http.ResponseWriter, *http.Request)

type Shutdown

type Shutdown struct{}

Shutdown is an eventbus value published when tailscaled shutdown is requested via LocalAPI. Its only consumer is [ipnserver.Server].

Jump to

Keyboard shortcuts

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