safesocket: refactor macOS auth code, pull out separate LocalTCPPortAndToken

This commit is contained in:
Brad Fitzpatrick
2021-01-29 14:32:56 -08:00
parent 60e189f699
commit 914a486af6
5 changed files with 96 additions and 31 deletions
+20
View File
@@ -7,7 +7,9 @@
package safesocket
import (
"errors"
"net"
"runtime"
)
type closeable interface {
@@ -43,3 +45,21 @@ func Connect(path string, port uint16) (net.Conn, error) {
func Listen(path string, port uint16) (_ net.Listener, gotPort uint16, _ error) {
return listen(path, port)
}
var (
ErrTokenNotFound = errors.New("no token found")
ErrNoTokenOnOS = errors.New("no token on " + runtime.GOOS)
)
var localTCPPortAndToken func() (port int, token string, err error)
// LocalTCPPortAndToken returns the port number and auth token to connect to
// the local Tailscale daemon. It's currently only applicable on macOS
// when tailscaled is being run in the Mac Sandbox from the App Store version
// of Tailscale.
func LocalTCPPortAndToken() (port int, token string, err error) {
if localTCPPortAndToken == nil {
return 0, "", ErrNoTokenOnOS
}
return localTCPPortAndToken()
}