Jonathan Nobels 2948fe1136 swift: add NWConnection-inspired Swift 6 compatible Tailscale.framework
updates tailscale/tailscale#13937

Builds a TailscaleKit.framework which wraps libtailscale.a in an actor,
providing IncomingConnection, Listener, and OutgoingConnection
types which are more usable in pure async Swift code.  The
method signatures are intended to be similar in form to NWConnection.

We also provide an extension to URLSession so you can make URL
requests via the user-space proxy.

Adds a static library mirroring much of the test control utilities in go, minus
the dependency on testing, so that we can export the signatures and
link it to tests that cannot run in go.

Added functionality to get both the local interface IPs as well as
the remote IP of  incoming connections accepted by a listener.

Fixed a bug in the log writer so we append a newline.

This also updates to the latest go toolchain and tailscale version.

Signed-off-by: Jonathan Nobels <jonathan@tailscale.com>
2025-01-02 14:35:20 -05:00

libtailscale

libtailscale is a C library that embeds Tailscale into a process.

Use this library to compile Tailscale into your program and get an IP address on a tailnet, entirely from userspace.

Building

With the latest version of Go, run:

go build -buildmode=c-archive

This will produce a libtailscale.a file. Link it into your binary, and use the tailscale.h header to reference it.

It is also possible to build a shared library using

go build -buildmode=c-shared

Bugs

Please file any issues about this code or the hosted service on the issue tracker.

License

BSD 3-Clause for this repository, see LICENSE.

S
Description
Tailscale C bindings used for drop-app
Readme BSD-3-Clause 204 KiB
Languages
Swift 50.9%
Go 15%
Ruby 9.1%
C 8.8%
Python 4.9%
Other 11.3%