mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-19 19:38:40 +00:00
all: replace /kb/ links with /s/ equivalents
Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
parent
558735bc63
commit
5e8a80b845
@ -103,7 +103,7 @@ func (c *Client) ACL(ctx context.Context) (acl *ACL, err error) {
|
|||||||
// it as a string.
|
// it as a string.
|
||||||
// HuJSON is JSON with a few modifications to make it more human-friendly. The primary
|
// HuJSON is JSON with a few modifications to make it more human-friendly. The primary
|
||||||
// changes are allowing comments and trailing comments. See the following links for more info:
|
// changes are allowing comments and trailing comments. See the following links for more info:
|
||||||
// https://tailscale.com/kb/1018/acls?q=acl#tailscale-acl-policy-format
|
// https://tailscale.com/s/acl-format
|
||||||
// https://github.com/tailscale/hujson
|
// https://github.com/tailscale/hujson
|
||||||
func (c *Client) ACLHuJSON(ctx context.Context) (acl *ACLHuJSON, err error) {
|
func (c *Client) ACLHuJSON(ctx context.Context) (acl *ACLHuJSON, err error) {
|
||||||
// Format return errors to be descriptive.
|
// Format return errors to be descriptive.
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// SPDX-License-Identifier: BSD-3-Clause
|
// SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
// get-authkey allocates an authkey using an OAuth API client
|
// get-authkey allocates an authkey using an OAuth API client
|
||||||
// https://tailscale.com/kb/1215/oauth-clients/ and prints it
|
// https://tailscale.com/s/oauth-clients and prints it
|
||||||
// to stdout for scripts to capture and use.
|
// to stdout for scripts to capture and use.
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
@ -41,7 +41,7 @@ This command is intended to run at boot as root on a Synology device to
|
|||||||
create the /dev/net/tun device and give the tailscaled binary permission
|
create the /dev/net/tun device and give the tailscaled binary permission
|
||||||
to use it.
|
to use it.
|
||||||
|
|
||||||
See: https://tailscale.com/kb/1152/synology-outbound/
|
See: https://tailscale.com/s/synology-outbound
|
||||||
`),
|
`),
|
||||||
FlagSet: (func() *flag.FlagSet {
|
FlagSet: (func() *flag.FlagSet {
|
||||||
fs := newFlagSet("synology")
|
fs := newFlagSet("synology")
|
||||||
|
@ -145,11 +145,11 @@ func newUpdater() (*updater, error) {
|
|||||||
case strings.HasSuffix(os.Getenv("HOME"), "/io.tailscale.ipn.macsys/Data"):
|
case strings.HasSuffix(os.Getenv("HOME"), "/io.tailscale.ipn.macsys/Data"):
|
||||||
up.update = up.updateMacSys
|
up.update = up.updateMacSys
|
||||||
default:
|
default:
|
||||||
return nil, errors.New("This is the macOS App Store version of Tailscale; update in the App Store, or see https://tailscale.com/kb/1083/install-unstable/ to use TestFlight or to install the non-App Store version")
|
return nil, errors.New("This is the macOS App Store version of Tailscale; update in the App Store, or see https://tailscale.com/s/unstable-clients to use TestFlight or to install the non-App Store version")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if up.update == nil {
|
if up.update == nil {
|
||||||
return nil, errors.New("The 'update' command is not supported on this platform; see https://tailscale.com/kb/1067/update/")
|
return nil, errors.New("The 'update' command is not supported on this platform; see https://tailscale.com/s/client-updates")
|
||||||
}
|
}
|
||||||
return up, nil
|
return up, nil
|
||||||
}
|
}
|
||||||
|
@ -190,13 +190,13 @@ func (sc *ServeConfig) IsFunnelOn() bool {
|
|||||||
// Funnel.
|
// Funnel.
|
||||||
func CheckFunnelAccess(port uint16, nodeAttrs []string) error {
|
func CheckFunnelAccess(port uint16, nodeAttrs []string) error {
|
||||||
if slices.Contains(nodeAttrs, tailcfg.CapabilityWarnFunnelNoInvite) {
|
if slices.Contains(nodeAttrs, tailcfg.CapabilityWarnFunnelNoInvite) {
|
||||||
return errors.New("Funnel not available; an invite is required to join the alpha. See https://tailscale.com/kb/1223/tailscale-funnel/.")
|
return errors.New("Funnel not available; an invite is required to join the alpha. See https://tailscale.com/s/no-funnel.")
|
||||||
}
|
}
|
||||||
if slices.Contains(nodeAttrs, tailcfg.CapabilityWarnFunnelNoHTTPS) {
|
if slices.Contains(nodeAttrs, tailcfg.CapabilityWarnFunnelNoHTTPS) {
|
||||||
return errors.New("Funnel not available; HTTPS must be enabled. See https://tailscale.com/kb/1153/enabling-https/.")
|
return errors.New("Funnel not available; HTTPS must be enabled. See https://tailscale.com/s/https.")
|
||||||
}
|
}
|
||||||
if !slices.Contains(nodeAttrs, tailcfg.NodeAttrFunnel) {
|
if !slices.Contains(nodeAttrs, tailcfg.NodeAttrFunnel) {
|
||||||
return errors.New("Funnel not available; \"funnel\" node attribute not set. See https://tailscale.com/kb/1223/tailscale-funnel/.")
|
return errors.New("Funnel not available; \"funnel\" node attribute not set. See https://tailscale.com/s/no-funnel.")
|
||||||
}
|
}
|
||||||
return checkFunnelPort(port, nodeAttrs)
|
return checkFunnelPort(port, nodeAttrs)
|
||||||
}
|
}
|
||||||
|
@ -65,7 +65,7 @@ func CheckIPForwarding(routes []netip.Prefix, state *interfaces.State) (warn, er
|
|||||||
}
|
}
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
const kbLink = "\nSee https://tailscale.com/kb/1104/enable-ip-forwarding/"
|
const kbLink = "\nSee https://tailscale.com/s/ip-forwarding"
|
||||||
if state == nil {
|
if state == nil {
|
||||||
var err error
|
var err error
|
||||||
state, err = interfaces.GetState()
|
state, err = interfaces.GetState()
|
||||||
|
@ -26,7 +26,7 @@ var chromeOSRange oncePrefix
|
|||||||
|
|
||||||
// CGNATRange returns the Carrier Grade NAT address range that
|
// CGNATRange returns the Carrier Grade NAT address range that
|
||||||
// is the superset range that Tailscale assigns out of.
|
// is the superset range that Tailscale assigns out of.
|
||||||
// See https://tailscale.com/kb/1015/100.x-addresses.
|
// See https://tailscale.com/s/cgnat
|
||||||
// Note that Tailscale does not assign out of the ChromeOSVMRange.
|
// Note that Tailscale does not assign out of the ChromeOSVMRange.
|
||||||
func CGNATRange() netip.Prefix {
|
func CGNATRange() netip.Prefix {
|
||||||
cgnatRange.Do(func() { mustPrefix(&cgnatRange.v, "100.64.0.0/10") })
|
cgnatRange.Do(func() { mustPrefix(&cgnatRange.v, "100.64.0.0/10") })
|
||||||
|
@ -83,7 +83,7 @@ type Server struct {
|
|||||||
Logf logger.Logf
|
Logf logger.Logf
|
||||||
|
|
||||||
// Ephemeral, if true, specifies that the instance should register
|
// Ephemeral, if true, specifies that the instance should register
|
||||||
// as an Ephemeral node (https://tailscale.com/kb/1111/ephemeral-nodes/).
|
// as an Ephemeral node (https://tailscale.com/s/ephemeral-nodes).
|
||||||
Ephemeral bool
|
Ephemeral bool
|
||||||
|
|
||||||
// AuthKey, if non-empty, is the auth key to create the node
|
// AuthKey, if non-empty, is the auth key to create the node
|
||||||
@ -822,7 +822,7 @@ func (s *Server) ListenTLS(network, addr string) (net.Listener, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(st.CertDomains) == 0 {
|
if len(st.CertDomains) == 0 {
|
||||||
return nil, errors.New("tsnet: you must enable HTTPS in the admin panel to proceed. See https://tailscale.com/kb/1153/enabling-https/")
|
return nil, errors.New("tsnet: you must enable HTTPS in the admin panel to proceed. See https://tailscale.com/s/https")
|
||||||
}
|
}
|
||||||
|
|
||||||
lc, err := s.LocalClient() // do local client first before listening.
|
lc, err := s.LocalClient() // do local client first before listening.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user