net/interfaces: remove IsTailscaleIP, make callers use tsaddr.
Signed-off-by: David Anderson <danderson@tailscale.com>pull/1210/head
parent
e970ed0995
commit
692a011b54
|
@ -32,7 +32,9 @@ import (
|
||||||
"github.com/gliderlabs/ssh"
|
"github.com/gliderlabs/ssh"
|
||||||
"github.com/kr/pty"
|
"github.com/kr/pty"
|
||||||
gossh "golang.org/x/crypto/ssh"
|
gossh "golang.org/x/crypto/ssh"
|
||||||
|
"inet.af/netaddr"
|
||||||
"tailscale.com/net/interfaces"
|
"tailscale.com/net/interfaces"
|
||||||
|
"tailscale.com/net/tsaddr"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -96,7 +98,13 @@ func handleSSH(s ssh.Session) {
|
||||||
s.Exit(1)
|
s.Exit(1)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if !interfaces.IsTailscaleIP(ta.IP) {
|
tanetaddr, ok := netaddr.FromStdIP(ta.IP)
|
||||||
|
if !ok {
|
||||||
|
log.Printf("tsshd: rejecting unparseable addr %v", ta.IP)
|
||||||
|
s.Exit(1)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !tsaddr.IsTailscaleIP(tanetaddr) {
|
||||||
log.Printf("tsshd: rejecting non-Tailscale addr %v", ta.IP)
|
log.Printf("tsshd: rejecting non-Tailscale addr %v", ta.IP)
|
||||||
s.Exit(1)
|
s.Exit(1)
|
||||||
return
|
return
|
||||||
|
|
|
@ -39,8 +39,11 @@ func Tailscale() (net.IP, *net.Interface, error) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for _, a := range addrs {
|
for _, a := range addrs {
|
||||||
if ipnet, ok := a.(*net.IPNet); ok && IsTailscaleIP(ipnet.IP) {
|
if ipnet, ok := a.(*net.IPNet); ok {
|
||||||
return ipnet.IP, &iface, nil
|
nip, ok := netaddr.FromStdIP(ipnet.IP)
|
||||||
|
if ok && tsaddr.IsTailscaleIP(nip) {
|
||||||
|
return ipnet.IP, &iface, nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,13 +60,6 @@ func maybeTailscaleInterfaceName(s string) bool {
|
||||||
strings.HasPrefix(s, "utun")
|
strings.HasPrefix(s, "utun")
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsTailscaleIP reports whether ip is an IP in a range used by
|
|
||||||
// Tailscale virtual network interfaces.
|
|
||||||
func IsTailscaleIP(ip net.IP) bool {
|
|
||||||
nip, _ := netaddr.FromStdIP(ip) // TODO: push this up to caller, change func signature
|
|
||||||
return tsaddr.IsTailscaleIP(nip)
|
|
||||||
}
|
|
||||||
|
|
||||||
func isUp(nif *net.Interface) bool { return nif.Flags&net.FlagUp != 0 }
|
func isUp(nif *net.Interface) bool { return nif.Flags&net.FlagUp != 0 }
|
||||||
func isLoopback(nif *net.Interface) bool { return nif.Flags&net.FlagLoopback != 0 }
|
func isLoopback(nif *net.Interface) bool { return nif.Flags&net.FlagLoopback != 0 }
|
||||||
|
|
||||||
|
|
|
@ -5,30 +5,9 @@
|
||||||
package interfaces
|
package interfaces
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net"
|
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestIsTailscaleIP(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
ip string
|
|
||||||
want bool
|
|
||||||
}{
|
|
||||||
{"100.81.251.94", true},
|
|
||||||
{"8.8.8.8", false},
|
|
||||||
}
|
|
||||||
for _, tt := range tests {
|
|
||||||
ip := net.ParseIP(tt.ip)
|
|
||||||
if ip == nil {
|
|
||||||
t.Fatalf("failed to parse IP %q", tt.ip)
|
|
||||||
}
|
|
||||||
got := IsTailscaleIP(ip)
|
|
||||||
if got != tt.want {
|
|
||||||
t.Errorf("F(%q) = %v; want %v", tt.ip, got, tt.want)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestGetState(t *testing.T) {
|
func TestGetState(t *testing.T) {
|
||||||
st, err := GetState()
|
st, err := GetState()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -23,8 +23,9 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"inet.af/netaddr"
|
||||||
"tailscale.com/metrics"
|
"tailscale.com/metrics"
|
||||||
"tailscale.com/net/interfaces"
|
"tailscale.com/net/tsaddr"
|
||||||
"tailscale.com/types/logger"
|
"tailscale.com/types/logger"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -81,8 +82,11 @@ func AllowDebugAccess(r *http.Request) bool {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
ip := net.ParseIP(ipStr)
|
ip, err := netaddr.ParseIP(ipStr)
|
||||||
if interfaces.IsTailscaleIP(ip) || ip.IsLoopback() || ipStr == os.Getenv("TS_ALLOW_DEBUG_IP") {
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if tsaddr.IsTailscaleIP(ip) || ip.IsLoopback() || ipStr == os.Getenv("TS_ALLOW_DEBUG_IP") {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if r.Method == "GET" {
|
if r.Method == "GET" {
|
||||||
|
|
Loading…
Reference in New Issue