| 123456789101112131415161718192021222324252627282930313233343536373839 |
- // 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
- }
|