Hiding/disabling UI features when not available on the running client. Updates #10261 Signed-off-by: Sonia Appasamy <sonia@tailscale.com>main
parent
7d61b827e8
commit
7a4ba609d9
@ -0,0 +1,10 @@ |
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
/** |
||||
* assertNever ensures a branch of code can never be reached, |
||||
* resulting in a Typescript error if it can. |
||||
*/ |
||||
export function assertNever(a: never): never { |
||||
return a |
||||
} |
||||
@ -0,0 +1,39 @@ |
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package envknob |
||||
|
||||
import ( |
||||
"errors" |
||||
"runtime" |
||||
|
||||
"tailscale.com/version" |
||||
"tailscale.com/version/distro" |
||||
) |
||||
|
||||
// CanRunTailscaleSSH reports whether serving a Tailscale SSH server is
|
||||
// supported for the current os/distro.
|
||||
func CanRunTailscaleSSH() error { |
||||
switch runtime.GOOS { |
||||
case "linux": |
||||
if distro.Get() == distro.Synology && !UseWIPCode() { |
||||
return errors.New("The Tailscale SSH server does not run on Synology.") |
||||
} |
||||
if distro.Get() == distro.QNAP && !UseWIPCode() { |
||||
return errors.New("The Tailscale SSH server does not run on QNAP.") |
||||
} |
||||
// otherwise okay
|
||||
case "darwin": |
||||
// okay only in tailscaled mode for now.
|
||||
if version.IsSandboxedMacOS() { |
||||
return errors.New("The Tailscale SSH server does not run in sandboxed Tailscale GUI builds.") |
||||
} |
||||
case "freebsd", "openbsd": |
||||
default: |
||||
return errors.New("The Tailscale SSH server is not supported on " + runtime.GOOS) |
||||
} |
||||
if !CanSSHD() { |
||||
return errors.New("The Tailscale SSH server has been administratively disabled.") |
||||
} |
||||
return nil |
||||
} |
||||
Loading…
Reference in new issue