api

package
v1.4.3 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2026 License: AGPL-3.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type API

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

API represents the HTTP server and its state

func NewAPI

func NewAPI(addr string) *API

NewAPI creates a new HTTP server that listens on a TCP address

func NewAPISocket

func NewAPISocket(socketPath string) *API

NewAPISocket creates a new HTTP server that listens on a Unix socket or Windows named pipe

func NewAPIStub added in v1.4.0

func NewAPIStub() *API

func (*API) AddPeerStatus

func (s *API) AddPeerStatus(siteID int, siteName string, connected bool, rtt time.Duration, endpoint string, isRelay bool)

func (*API) ClearOlmError added in v1.4.0

func (s *API) ClearOlmError()

ClearOlmError clears any registration error

func (*API) ClearPeerStatuses

func (s *API) ClearPeerStatuses()

ClearPeerStatuses clears all peer statuses

func (*API) GetStatus

func (s *API) GetStatus() StatusResponse

func (*API) RemovePeerStatus

func (s *API) RemovePeerStatus(siteID int)

func (*API) SetAgent

func (s *API) SetAgent(agent string)

SetAgent sets the olm agent

func (*API) SetConnectionStatus

func (s *API) SetConnectionStatus(isConnected bool)

SetConnectionStatus sets the overall connection status

func (*API) SetHandlers

func (s *API) SetHandlers(
	onConnect func(ConnectionRequest) error,
	onSwitchOrg func(SwitchOrgRequest) error,
	onMetadataChange func(MetadataChangeRequest) error,
	onDisconnect func() error,
	onExit func() error,
	onRebind func() error,
	onPowerMode func(PowerModeRequest) error,
)

SetHandlers sets the callback functions for handling API requests

func (*API) SetOlmError added in v1.4.0

func (s *API) SetOlmError(code string, message string)

SetOlmError sets the registration error

func (*API) SetOrgID

func (s *API) SetOrgID(orgID string)

SetOrgID sets the organization ID

func (*API) SetRegistered

func (s *API) SetRegistered(registered bool)

func (*API) SetTerminated

func (s *API) SetTerminated(terminated bool)

func (*API) SetVersion

func (s *API) SetVersion(version string)

SetVersion sets the olm version

func (*API) Start

func (s *API) Start() error

Start starts the HTTP server

func (*API) Stop

func (s *API) Stop() error

Stop stops the HTTP server

func (*API) UpdatePeerHolepunchStatus

func (s *API) UpdatePeerHolepunchStatus(siteID int, holepunchConnected bool)

UpdatePeerHolepunchStatus updates the holepunch connection status of a peer

func (*API) UpdatePeerRelayStatus

func (s *API) UpdatePeerRelayStatus(siteID int, endpoint string, isRelay bool)

UpdatePeerRelayStatus updates only the relay status of a peer

func (*API) UpdatePeerStatus

func (s *API) UpdatePeerStatus(siteID int, connected bool, rtt time.Duration, endpoint string, isRelay bool)

UpdatePeerStatus updates the status of a peer including endpoint and relay info

type ConnectionRequest

type ConnectionRequest struct {
	ID            string   `json:"id"`
	Secret        string   `json:"secret"`
	Endpoint      string   `json:"endpoint"`
	UserToken     string   `json:"userToken,omitempty"`
	MTU           int      `json:"mtu,omitempty"`
	DNS           string   `json:"dns,omitempty"`
	DNSProxyIP    string   `json:"dnsProxyIP,omitempty"`
	UpstreamDNS   []string `json:"upstreamDNS,omitempty"`
	InterfaceName string   `json:"interfaceName,omitempty"`
	Holepunch     bool     `json:"holepunch,omitempty"`
	TlsClientCert string   `json:"tlsClientCert,omitempty"`
	PingInterval  string   `json:"pingInterval,omitempty"`
	PingTimeout   string   `json:"pingTimeout,omitempty"`
	OrgID         string   `json:"orgId,omitempty"`
}

ConnectionRequest defines the structure for an incoming connection request

type MetadataChangeRequest added in v1.4.0

type MetadataChangeRequest struct {
	Fingerprint map[string]any `json:"fingerprint"`
	Postures    map[string]any `json:"postures"`
}

type OlmError added in v1.4.0

type OlmError struct {
	Code    string `json:"code"`
	Message string `json:"message"`
}

OlmError holds error information from registration failures

type PeerStatus

type PeerStatus struct {
	SiteID             int           `json:"siteId"`
	Name               string        `json:"name"`
	Connected          bool          `json:"connected"`
	RTT                time.Duration `json:"rtt"`
	LastSeen           time.Time     `json:"lastSeen"`
	Endpoint           string        `json:"endpoint,omitempty"`
	IsRelay            bool          `json:"isRelay"`
	PeerIP             string        `json:"peerAddress,omitempty"`
	HolepunchConnected bool          `json:"holepunchConnected"`
}

PeerStatus represents the status of a peer connection

type PowerModeRequest added in v1.4.0

type PowerModeRequest struct {
	Mode string `json:"mode"` // "normal" or "low"
}

PowerModeRequest represents a request to change power mode

type StatusResponse

type StatusResponse struct {
	Connected       bool                    `json:"connected"`
	Registered      bool                    `json:"registered"`
	Terminated      bool                    `json:"terminated"`
	OlmError        *OlmError               `json:"error,omitempty"`
	Version         string                  `json:"version,omitempty"`
	Agent           string                  `json:"agent,omitempty"`
	OrgID           string                  `json:"orgId,omitempty"`
	PeerStatuses    map[int]*PeerStatus     `json:"peers,omitempty"`
	NetworkSettings network.NetworkSettings `json:"networkSettings,omitempty"`
}

StatusResponse is returned by the status endpoint

type SwitchOrgRequest

type SwitchOrgRequest struct {
	OrgID string `json:"org_id"`
}

SwitchOrgRequest defines the structure for switching organizations

Jump to

Keyboard shortcuts

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