Documentation
¶
Index ¶
- func DefaultSocketPath() string
- type Conn
- func (c *Conn) Close() error
- func (c *Conn) LocalAddr() net.Addr
- func (c *Conn) Read(b []byte) (int, error)
- func (c *Conn) RemoteAddr() net.Addr
- func (c *Conn) SetDeadline(t time.Time) error
- func (c *Conn) SetReadDeadline(t time.Time) error
- func (c *Conn) SetWriteDeadline(t time.Time) error
- func (c *Conn) Write(b []byte) (int, error)
- type Datagram
- type Driver
- func (d *Driver) ApproveHandshake(nodeID uint32) (map[string]interface{}, error)
- func (d *Driver) Broadcast(netID uint16, port uint16, data []byte, adminToken string) error
- func (d *Driver) Close() error
- func (d *Driver) Deregister() (map[string]interface{}, error)
- func (d *Driver) Dial(addr string) (*Conn, error)
- func (d *Driver) DialAddr(dst protocol.Addr, port uint16) (*Conn, error)
- func (d *Driver) DialAddrTimeout(dst protocol.Addr, port uint16, timeout time.Duration) (*Conn, error)
- func (d *Driver) Disconnect(connID uint32) error
- func (d *Driver) EnrollRecovery(enrollment, enrollmentSig string) (map[string]interface{}, error)
- func (d *Driver) Handshake(nodeID uint32, justification string) (map[string]interface{}, error)
- func (d *Driver) Health() (map[string]interface{}, error)
- func (d *Driver) Info() (map[string]interface{}, error)
- func (d *Driver) Listen(port uint16) (*Listener, error)
- func (d *Driver) ManagedForceCycle(networkID uint16) (map[string]interface{}, error)
- func (d *Driver) ManagedReconcile(networkID uint16) (map[string]interface{}, error)
- func (d *Driver) ManagedStatus(networkID uint16) (map[string]interface{}, error)
- func (d *Driver) MemberTagsGet(networkID uint16, nodeID uint32) (map[string]interface{}, error)
- func (d *Driver) MemberTagsSet(networkID uint16, nodeID uint32, tags []string) (map[string]interface{}, error)
- func (d *Driver) NetworkInvite(networkID uint16, targetNodeID uint32) (map[string]interface{}, error)
- func (d *Driver) NetworkJoin(networkID uint16, token string) (map[string]interface{}, error)
- func (d *Driver) NetworkLeave(networkID uint16) (map[string]interface{}, error)
- func (d *Driver) NetworkList() (map[string]interface{}, error)
- func (d *Driver) NetworkMembers(networkID uint16) (map[string]interface{}, error)
- func (d *Driver) NetworkPollInvites() (map[string]interface{}, error)
- func (d *Driver) NetworkRespondInvite(networkID uint16, accept bool) (map[string]interface{}, error)
- func (d *Driver) PendingHandshakes() (map[string]interface{}, error)
- func (d *Driver) PolicyGet(networkID uint16) (map[string]interface{}, error)
- func (d *Driver) PolicySet(networkID uint16, policyJSON []byte, adminToken string) (map[string]interface{}, error)
- func (d *Driver) PreferDirect(nodeID uint32) (map[string]interface{}, error)
- func (d *Driver) RecvFrom() (*Datagram, error)
- func (d *Driver) RejectHandshake(nodeID uint32, reason string) (map[string]interface{}, error)
- func (d *Driver) ResolveHostname(hostname string) (map[string]interface{}, error)
- func (d *Driver) RevokeTrust(nodeID uint32) (map[string]interface{}, error)
- func (d *Driver) RotateKey() (map[string]interface{}, error)
- func (d *Driver) SendTo(dst protocol.Addr, port uint16, data []byte) error
- func (d *Driver) SetHostname(hostname string) (map[string]interface{}, error)
- func (d *Driver) SetTags(tags []string) (map[string]interface{}, error)
- func (d *Driver) SetVisibility(public bool) (map[string]interface{}, error)
- func (d *Driver) SetWebhook(url string) (map[string]interface{}, error)
- func (d *Driver) SubmitBadge(badge, badgeSig string) (map[string]interface{}, error)
- func (d *Driver) TrustedPeers() (map[string]interface{}, error)
- func (d *Driver) WaitForTrust(nodeID uint32, timeoutMs uint32) (map[string]interface{}, error)
- type Listener
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DefaultSocketPath ¶
func DefaultSocketPath() string
DefaultSocketPath returns the default Unix socket path for IPC. On Linux it prefers $XDG_RUNTIME_DIR (typically /run/user/<uid>, which is private to the user); falls back to /tmp/pilot.sock. On macOS /tmp is already per-user via SIP, so /tmp/pilot.sock is safe.
Types ¶
type Conn ¶
type Conn struct {
// contains filtered or unexported fields
}
Conn implements net.Conn over a Pilot Protocol stream.
func (*Conn) RemoteAddr ¶
type Driver ¶
type Driver struct {
// contains filtered or unexported fields
}
Driver is the main entry point for the Pilot Protocol SDK.
func (*Driver) ApproveHandshake ¶
ApproveHandshake approves a pending trust handshake request.
func (*Driver) Broadcast ¶
Broadcast fans an unreliable datagram out to every member of a network. The admin token must match the daemon's configured Config.AdminToken; an empty token or mismatched token is rejected. Permitted on every network including network 0 (backbone). Sender membership is not required.
func (*Driver) Deregister ¶
Deregister removes the daemon from the registry.
func (*Driver) Dial ¶
Dial opens a stream connection to a remote address:port. addr format: "N:XXXX.YYYY.YYYY:PORT"
func (*Driver) DialAddrTimeout ¶
func (d *Driver) DialAddrTimeout(dst protocol.Addr, port uint16, timeout time.Duration) (*Conn, error)
DialAddrTimeout opens a stream connection with a client-side timeout. If the daemon does not respond within the timeout, the dial is cancelled.
func (*Driver) Disconnect ¶
Disconnect closes a connection by ID. Used by administrative tools. Fire-and-forget: the daemon always responds CmdCloseOK regardless of whether the connID exists, so there is no error to propagate. Using sendAndWait here would corrupt a concurrent sendAndWait for a different command if a server-pushed cmdCloseOK (remote FIN) arrived simultaneously.
func (*Driver) EnrollRecovery ¶ added in v0.5.2
EnrollRecovery records this node's opaque recovery commitment so the address can later be recovered if the current key is lost. enrollment and enrollmentSig come from the verifier sidecar; the daemon signs proof of the current key over the commitment before forwarding to the registry. The raw external identity never leaves the verifier — only the commitment.
func (*Driver) ManagedForceCycle ¶
ManagedForceCycle forces a prune/fill cycle in a managed network.
func (*Driver) ManagedReconcile ¶
ManagedReconcile asks the daemon's policy runner for networkID to poll the registry and refresh its peer set — without running a policy cycle. Returns {network_id, peers}.
func (*Driver) ManagedStatus ¶
ManagedStatus returns the status of a managed network engine.
func (*Driver) MemberTagsGet ¶
MemberTagsGet retrieves admin-assigned member tags for a node in a network.
func (*Driver) MemberTagsSet ¶
func (d *Driver) MemberTagsSet(networkID uint16, nodeID uint32, tags []string) (map[string]interface{}, error)
MemberTagsSet sets admin-assigned member tags for a node in a network.
func (*Driver) NetworkInvite ¶
func (d *Driver) NetworkInvite(networkID uint16, targetNodeID uint32) (map[string]interface{}, error)
NetworkInvite invites a target node to a network (requires admin token on daemon).
func (*Driver) NetworkJoin ¶
NetworkJoin joins a network by ID, optionally using a token for token-gated networks.
func (*Driver) NetworkLeave ¶
NetworkLeave leaves a network by ID.
func (*Driver) NetworkList ¶
NetworkList returns all networks known to the registry.
func (*Driver) NetworkMembers ¶
NetworkMembers lists all members of a network.
func (*Driver) NetworkPollInvites ¶
NetworkPollInvites returns pending network invites for this node.
func (*Driver) NetworkRespondInvite ¶
func (d *Driver) NetworkRespondInvite(networkID uint16, accept bool) (map[string]interface{}, error)
NetworkRespondInvite accepts or rejects a pending network invite.
func (*Driver) PendingHandshakes ¶
PendingHandshakes returns pending trust handshake requests.
func (*Driver) PolicySet ¶
func (d *Driver) PolicySet(networkID uint16, policyJSON []byte, adminToken string) (map[string]interface{}, error)
PolicySet sends a policy document to the daemon for immediate application. adminToken authenticates the caller as a network administrator — pilot-daemon's managed.policy.set IPC handler validates this against its configured AdminToken before applying the policy. Empty token is accepted by the daemon iff it has no AdminToken configured (default solo-mode daemons); managed-mode daemons reject empty tokens. (PILOT-233)
func (*Driver) PreferDirect ¶ added in v0.5.0
PreferDirect asks the daemon to drop the existing tunnel to the peer and any sticky routing state (cached endpoint, cached resolve, unpinned relay flag), then re-resolve from the registry and prefer a direct UDP path on the next dial. Returns the new routing state the daemon arrived at — typically {"node_id": N, "relay_active": false, "pinned": false, "real_addr": "..."} when a direct path was found, or relay_active=true when the registry's relay_only flag is authoritative or the punch failed.
Useful when stream traffic (pilotctl send-file) is failing on a relay path while small UDP (pilotctl ping) still works — typical symptom of a beacon-mediated tunnel that established once and then stuck.
Backward compatibility: an old daemon (no CmdPreferDirect) returns an "unknown command" error — callers should treat that as "best-effort hint" and proceed with the normal dial, not abort the operation.
func (*Driver) RejectHandshake ¶
RejectHandshake rejects a pending trust handshake request.
func (*Driver) ResolveHostname ¶
ResolveHostname resolves a hostname to node info via the daemon.
func (*Driver) RevokeTrust ¶
RevokeTrust removes a peer from the trusted set and notifies the registry.
func (*Driver) RotateKey ¶
RotateKey asks the daemon to rotate its Ed25519 identity at the registry. The daemon generates a new keypair, signs proof of the current key, calls registry.RotateKey, then atomically swaps and persists the new identity.
func (*Driver) SendTo ¶
SendTo sends an unreliable unicast datagram to the given address:port. Broadcast addresses (Node=0xFFFFFFFF) are not accepted on this path; use Broadcast, which requires the daemon's admin token.
func (*Driver) SetHostname ¶
SetHostname sets or clears the daemon's hostname via the registry.
func (*Driver) SetVisibility ¶
SetVisibility sets the daemon's visibility on the registry.
func (*Driver) SetWebhook ¶
SetWebhook sets or clears the daemon's webhook URL at runtime. An empty URL disables the webhook.
func (*Driver) SubmitBadge ¶ added in v0.5.2
SubmitBadge attaches a verified-address badge to this node's registry entry. badge and badgeSig are produced out-of-band by the verifier sidecar; the daemon signs proof of the current key over the badge before forwarding to the registry, which also verifies the badge offline against the pinned issuer key. Verification is optional — nodes without a badge keep working unchanged.
func (*Driver) TrustedPeers ¶
TrustedPeers returns all trusted peers from the handshake protocol.
func (*Driver) WaitForTrust ¶
WaitForTrust blocks (in the daemon) until the peer transitions to trusted or the timeout elapses. Single IPC roundtrip — the daemon-side HandshakeService.WaitForTrust waits on a per-node channel that is closed the moment trust is granted, so wakeup latency is sub-millisecond.
Backward compatibility: an old daemon (no SubHandshakeWait) returns an "unknown sub-command" error; callers should treat that as "wait skipped" and proceed.