Documentation ¶
Index ¶
- type CurlOption
- type Option
- func WithDockerEntrypoint(args []string) Option
- func WithDockerWorkdir(dir string) Option
- func WithExtraHosts(hosts []string) Option
- func WithHeadscaleName(hsName string) Option
- func WithHeadscaleTLS(cert []byte) Option
- func WithNetfilter(state string) Option
- func WithOrCreateNetwork(network *dockertest.Network) Option
- func WithSSH() Option
- func WithTags(tags []string) Option
- type PingOption
- type TailscaleInContainer
- func (t *TailscaleInContainer) Curl(url string, opts ...CurlOption) (string, error)
- func (t *TailscaleInContainer) Down() error
- func (t *TailscaleInContainer) Execute(command []string, options ...dockertestutil.ExecuteCommandOption) (string, string, error)
- func (t *TailscaleInContainer) FQDN() (string, error)
- func (t *TailscaleInContainer) FailingPeersAsString() (string, bool, error)
- func (t *TailscaleInContainer) Hostname() string
- func (t *TailscaleInContainer) ID() string
- func (t *TailscaleInContainer) IPs() ([]netip.Addr, error)
- func (t *TailscaleInContainer) Login(loginServer, authKey string) error
- func (t *TailscaleInContainer) LoginWithURL(loginServer string) (*url.URL, error)
- func (t *TailscaleInContainer) Logout() error
- func (t *TailscaleInContainer) Netcheck() (*netcheck.Report, error)
- func (t *TailscaleInContainer) Netmap() (*netmap.NetworkMap, error)
- func (t *TailscaleInContainer) Ping(hostnameOrIP string, opts ...PingOption) error
- func (t *TailscaleInContainer) ReadFile(path string) ([]byte, error)
- func (t *TailscaleInContainer) SaveLog(path string) error
- func (t *TailscaleInContainer) Shutdown() error
- func (t *TailscaleInContainer) Status(save ...bool) (*ipnstate.Status, error)
- func (t *TailscaleInContainer) Up() error
- func (t *TailscaleInContainer) Version() string
- func (t *TailscaleInContainer) WaitForNeedsLogin() error
- func (t *TailscaleInContainer) WaitForPeers(expected int) error
- func (t *TailscaleInContainer) WaitForRunning() error
- func (t *TailscaleInContainer) WriteFile(path string, data []byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CurlOption ¶ added in v0.21.0
type CurlOption = func(args *curlArgs)
CurlOption repreent optional settings that can be given to curl another host.
func WithCurlConnectionTimeout ¶ added in v0.21.0
func WithCurlConnectionTimeout(timeout time.Duration) CurlOption
WithCurlConnectionTimeout sets the timeout for each connection started by curl.
func WithCurlMaxTime ¶ added in v0.21.0
func WithCurlMaxTime(t time.Duration) CurlOption
WithCurlMaxTime sets the max time for a transfer for each connection started by curl.
func WithCurlRetry ¶ added in v0.21.0
func WithCurlRetry(ret int) CurlOption
WithCurlRetry sets the number of retries a connection is attempted by curl.
type Option ¶
type Option = func(c *TailscaleInContainer)
Option represent optional settings that can be given to a Tailscale instance.
func WithDockerEntrypoint ¶ added in v0.21.0
WithDockerEntrypoint allows the docker entrypoint of the container to be overridden. This is a dangerous option which can make the container not work as intended as a typo might prevent tailscaled and other processes from starting. Use with caution.
func WithDockerWorkdir ¶ added in v0.21.0
WithDockerWorkdir allows the docker working directory to be set.
func WithExtraHosts ¶ added in v0.22.2
func WithHeadscaleName ¶
WithHeadscaleName set the name of the headscale instance, mostly useful in combination with TLS and WithHeadscaleTLS.
func WithHeadscaleTLS ¶
WithHeadscaleTLS takes the certificate of the Headscale instance and adds it to the trusted surtificate of the Tailscale container.
func WithNetfilter ¶ added in v0.23.0
WithNetfilter configures Tailscales parameter --netfilter-mode allowing us to turn of modifying ip[6]tables/nftables. It takes: "on", "off", "nodivert".
func WithOrCreateNetwork ¶
func WithOrCreateNetwork(network *dockertest.Network) Option
WithOrCreateNetwork sets the Docker container network to use with the Tailscale instance, if the parameter is nil, a new network, isolating the TailscaleClient, will be created. If a network is passed, the Tailscale instance will join the given network.
type PingOption ¶ added in v0.21.0
type PingOption = func(args *pingArgs)
PingOption represent optional settings that can be given to ping another host.
func WithPingCount ¶ added in v0.21.0
func WithPingCount(count int) PingOption
WithPingCount sets the count of pings to attempt.
func WithPingTimeout ¶ added in v0.21.0
func WithPingTimeout(timeout time.Duration) PingOption
WithPingTimeout sets the timeout for the ping command.
func WithPingUntilDirect ¶ added in v0.21.0
func WithPingUntilDirect(direct bool) PingOption
WithPingUntilDirect decides if the ping should only succeed if a direct connection is established or if successful DERP ping is sufficient.
type TailscaleInContainer ¶
type TailscaleInContainer struct {
// contains filtered or unexported fields
}
TailscaleInContainer is an implementation of TailscaleClient which sets up a Tailscale instance inside a container.
func New ¶
func New( pool *dockertest.Pool, version string, network *dockertest.Network, opts ...Option, ) (*TailscaleInContainer, error)
New returns a new TailscaleInContainer instance.
func (*TailscaleInContainer) Curl ¶ added in v0.21.0
func (t *TailscaleInContainer) Curl(url string, opts ...CurlOption) (string, error)
Curl executes the Tailscale curl command and curls a hostname or IP. It accepts a series of CurlOption.
func (*TailscaleInContainer) Down ¶ added in v0.23.0
func (t *TailscaleInContainer) Down() error
Helper that runs `tailscale down` with no arguments.
func (*TailscaleInContainer) Execute ¶
func (t *TailscaleInContainer) Execute( command []string, options ...dockertestutil.ExecuteCommandOption, ) (string, string, error)
Execute runs a command inside the Tailscale container and returns the result of stdout as a string.
func (*TailscaleInContainer) FQDN ¶
func (t *TailscaleInContainer) FQDN() (string, error)
FQDN returns the FQDN as a string of the Tailscale instance.
func (*TailscaleInContainer) FailingPeersAsString ¶ added in v0.23.0
func (t *TailscaleInContainer) FailingPeersAsString() (string, bool, error)
FailingPeersAsString returns a formatted-ish multi-line-string of peers in the client and a bool indicating if the clients online count and peer count is equal.
func (*TailscaleInContainer) Hostname ¶
func (t *TailscaleInContainer) Hostname() string
Hostname returns the hostname of the Tailscale instance.
func (*TailscaleInContainer) ID ¶
func (t *TailscaleInContainer) ID() string
ID returns the Docker container ID of the TailscaleInContainer instance.
func (*TailscaleInContainer) IPs ¶
func (t *TailscaleInContainer) IPs() ([]netip.Addr, error)
IPs returns the netip.Addr of the Tailscale instance.
func (*TailscaleInContainer) Login ¶ added in v0.23.0
func (t *TailscaleInContainer) Login( loginServer, authKey string, ) error
Up runs the login routine on the given Tailscale instance. This login mechanism uses the authorised key for authentication.
func (*TailscaleInContainer) LoginWithURL ¶ added in v0.23.0
func (t *TailscaleInContainer) LoginWithURL( loginServer string, ) (*url.URL, error)
Up runs the login routine on the given Tailscale instance. This login mechanism uses web + command line flow for authentication.
func (*TailscaleInContainer) Logout ¶ added in v0.18.0
func (t *TailscaleInContainer) Logout() error
Logout runs the logout routine on the given Tailscale instance.
func (*TailscaleInContainer) Netcheck ¶ added in v0.23.0
func (t *TailscaleInContainer) Netcheck() (*netcheck.Report, error)
Netcheck returns the current Netcheck Report (netcheck.Report) of the Tailscale instance.
func (*TailscaleInContainer) Netmap ¶ added in v0.23.0
func (t *TailscaleInContainer) Netmap() (*netmap.NetworkMap, error)
Netmap returns the current Netmap (netmap.NetworkMap) of the Tailscale instance. Only works with Tailscale 1.56 and newer. Panics if version is lower then minimum.
func (*TailscaleInContainer) Ping ¶
func (t *TailscaleInContainer) Ping(hostnameOrIP string, opts ...PingOption) error
Ping executes the Tailscale ping command and pings a hostname or IP. It accepts a series of PingOption. TODO(kradalby): Make multiping, go routine magic.
func (*TailscaleInContainer) ReadFile ¶ added in v0.23.0
func (t *TailscaleInContainer) ReadFile(path string) ([]byte, error)
ReadFile reads a file from the Tailscale container. It returns the content of the file as a byte slice.
func (*TailscaleInContainer) SaveLog ¶ added in v0.23.0
func (t *TailscaleInContainer) SaveLog(path string) error
SaveLog saves the current stdout log of the container to a path on the host system.
func (*TailscaleInContainer) Shutdown ¶
func (t *TailscaleInContainer) Shutdown() error
Shutdown stops and cleans up the Tailscale container.
func (*TailscaleInContainer) Status ¶
func (t *TailscaleInContainer) Status(save ...bool) (*ipnstate.Status, error)
Status returns the ipnstate.Status of the Tailscale instance.
func (*TailscaleInContainer) Up ¶
func (t *TailscaleInContainer) Up() error
Helper that runs `tailscale up` with no arguments.
func (*TailscaleInContainer) Version ¶
func (t *TailscaleInContainer) Version() string
Version returns the running Tailscale version of the instance.
func (*TailscaleInContainer) WaitForNeedsLogin ¶ added in v0.23.0
func (t *TailscaleInContainer) WaitForNeedsLogin() error
WaitForNeedsLogin blocks until the Tailscale (tailscaled) instance has started and needs to be logged into.
func (*TailscaleInContainer) WaitForPeers ¶
func (t *TailscaleInContainer) WaitForPeers(expected int) error
WaitForPeers blocks until N number of peers is present in the Peer list of the Tailscale instance and is reporting Online.
func (*TailscaleInContainer) WaitForRunning ¶ added in v0.23.0
func (t *TailscaleInContainer) WaitForRunning() error
WaitForRunning blocks until the Tailscale (tailscaled) instance is logged in and ready to be used.