From a56e853b727b741d843a76ceb950bf84b4510ad2 Mon Sep 17 00:00:00 2001 From: Avery Pennarun Date: Wed, 25 Mar 2020 03:32:01 -0400 Subject: [PATCH] cmd/relaynode: delete it! tailscale+tailscaled now completely obsoletes relaynode, so let's let it finally go away. --- cmd/relaynode/.gitignore | 14 -- cmd/relaynode/clean.do | 1 - cmd/relaynode/clean.od | 13 - cmd/relaynode/deb.od | 10 - cmd/relaynode/debian/README.Debian | 1 - cmd/relaynode/debian/changelog.do | 5 - cmd/relaynode/debian/clean | 0 cmd/relaynode/debian/compat | 1 - cmd/relaynode/debian/control | 14 -- cmd/relaynode/debian/copyright | 11 - cmd/relaynode/debian/gen-changelog | 25 -- cmd/relaynode/debian/install | 3 - cmd/relaynode/debian/postinst | 8 - cmd/relaynode/debian/rules | 10 - cmd/relaynode/debian/tailscale-relay.service | 12 - cmd/relaynode/default.deb.od | 21 -- cmd/relaynode/default.dir.od | 20 -- cmd/relaynode/default.rpm.od | 15 -- cmd/relaynode/default.spec.od | 7 - cmd/relaynode/default.tar.gz.od | 8 - cmd/relaynode/dist.od | 15 -- cmd/relaynode/docker/.gitignore | 1 - cmd/relaynode/docker/Dockerfile | 17 -- cmd/relaynode/docker/all.do | 1 - cmd/relaynode/docker/build.do | 3 - cmd/relaynode/docker/relaynode.do | 2 - cmd/relaynode/docker/run.sh | 10 - cmd/relaynode/package | 1 - cmd/relaynode/relaynode.go | 236 ------------------- cmd/relaynode/relaynode.od | 1 + cmd/relaynode/rpm.od | 9 - cmd/relaynode/tailscale-login | 4 - cmd/relaynode/tailscale-relay.defaults | 8 - cmd/relaynode/tailscale-relay.spec.in | 40 ---- cmd/relaynode/tarball.od | 7 - control/controlclient/netmap.go | 51 ---- 36 files changed, 1 insertion(+), 604 deletions(-) delete mode 100644 cmd/relaynode/.gitignore delete mode 100644 cmd/relaynode/clean.do delete mode 100644 cmd/relaynode/clean.od delete mode 100644 cmd/relaynode/deb.od delete mode 100644 cmd/relaynode/debian/README.Debian delete mode 100644 cmd/relaynode/debian/changelog.do delete mode 100644 cmd/relaynode/debian/clean delete mode 100644 cmd/relaynode/debian/compat delete mode 100644 cmd/relaynode/debian/control delete mode 100644 cmd/relaynode/debian/copyright delete mode 100755 cmd/relaynode/debian/gen-changelog delete mode 100644 cmd/relaynode/debian/install delete mode 100644 cmd/relaynode/debian/postinst delete mode 100755 cmd/relaynode/debian/rules delete mode 100644 cmd/relaynode/debian/tailscale-relay.service delete mode 100644 cmd/relaynode/default.deb.od delete mode 100644 cmd/relaynode/default.dir.od delete mode 100644 cmd/relaynode/default.rpm.od delete mode 100644 cmd/relaynode/default.spec.od delete mode 100644 cmd/relaynode/default.tar.gz.od delete mode 100644 cmd/relaynode/dist.od delete mode 100644 cmd/relaynode/docker/.gitignore delete mode 100644 cmd/relaynode/docker/Dockerfile delete mode 100644 cmd/relaynode/docker/all.do delete mode 100644 cmd/relaynode/docker/build.do delete mode 100644 cmd/relaynode/docker/relaynode.do delete mode 100755 cmd/relaynode/docker/run.sh delete mode 100644 cmd/relaynode/package delete mode 100644 cmd/relaynode/relaynode.go create mode 100644 cmd/relaynode/relaynode.od delete mode 100644 cmd/relaynode/rpm.od delete mode 100755 cmd/relaynode/tailscale-login delete mode 100644 cmd/relaynode/tailscale-relay.defaults delete mode 100644 cmd/relaynode/tailscale-relay.spec.in delete mode 100644 cmd/relaynode/tarball.od diff --git a/cmd/relaynode/.gitignore b/cmd/relaynode/.gitignore deleted file mode 100644 index d1e727f82..000000000 --- a/cmd/relaynode/.gitignore +++ /dev/null @@ -1,14 +0,0 @@ -/*.tar.gz -/*.deb -/*.rpm -/*.spec -/pkgver -debian/changelog -debian/debhelper-build-stamp -debian/files -debian/*.log -debian/*.substvars -debian/*.debhelper -debian/tailscale-relay -/tailscale-relay/ -/tailscale-relay-* diff --git a/cmd/relaynode/clean.do b/cmd/relaynode/clean.do deleted file mode 100644 index e2d5edc3c..000000000 --- a/cmd/relaynode/clean.do +++ /dev/null @@ -1 +0,0 @@ -rm -f debian/changelog *~ debian/*~ diff --git a/cmd/relaynode/clean.od b/cmd/relaynode/clean.od deleted file mode 100644 index 2caeabc60..000000000 --- a/cmd/relaynode/clean.od +++ /dev/null @@ -1,13 +0,0 @@ -exec >&2 -read -r package &2 -dir=${1%/*} -redo-ifchange "$S/$dir/package" "$S/oss/version/short.txt" -read -r package <"$S/$dir/package" -read -r version <"$S/oss/version/short.txt" -arch=$(dpkg --print-architecture) - -redo-ifchange "$dir/${package}_$arch.deb" -rm -f "$dir/${package}"_*_"$arch.deb" -ln -sf "${package}_$arch.deb" "$dir/${package}_${version}_$arch.deb" diff --git a/cmd/relaynode/debian/README.Debian b/cmd/relaynode/debian/README.Debian deleted file mode 100644 index f8ac2950c..000000000 --- a/cmd/relaynode/debian/README.Debian +++ /dev/null @@ -1 +0,0 @@ -Tailscale IPN relay daemon. diff --git a/cmd/relaynode/debian/changelog.do b/cmd/relaynode/debian/changelog.do deleted file mode 100644 index 40d871b2d..000000000 --- a/cmd/relaynode/debian/changelog.do +++ /dev/null @@ -1,5 +0,0 @@ -redo-ifchange ../../../version/short.txt gen-changelog -( - cd .. - debian/gen-changelog -) >$3 diff --git a/cmd/relaynode/debian/clean b/cmd/relaynode/debian/clean deleted file mode 100644 index e69de29bb..000000000 diff --git a/cmd/relaynode/debian/compat b/cmd/relaynode/debian/compat deleted file mode 100644 index ec635144f..000000000 --- a/cmd/relaynode/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/cmd/relaynode/debian/control b/cmd/relaynode/debian/control deleted file mode 100644 index 8d7054f66..000000000 --- a/cmd/relaynode/debian/control +++ /dev/null @@ -1,14 +0,0 @@ -Source: tailscale-relay -Section: net -Priority: extra -Maintainer: Avery Pennarun -Build-Depends: debhelper (>= 10.2.5), dh-systemd (>= 1.5) -Standards-Version: 3.9.2 -Homepage: https://tailscale.com/ -Vcs-Git: https://github.com/tailscale/tailscale -Vcs-Browser: https://github.com/tailscale/tailscale - -Package: tailscale-relay -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: Traffic relay node for Tailscale IPN diff --git a/cmd/relaynode/debian/copyright b/cmd/relaynode/debian/copyright deleted file mode 100644 index dfae96f4c..000000000 --- a/cmd/relaynode/debian/copyright +++ /dev/null @@ -1,11 +0,0 @@ -Format: http://svn.debian.org/wsvn/dep/web/deps/dep5.mdwn?op=file&rev=173 -Upstream-Name: tailscale-relay -Upstream-Contact: Avery Pennarun -Source: https://github.com/tailscale/tailscale/ - -Files: * -Copyright: © 2019 Tailscale Inc. -License: Proprietary - * - * Copyright 2019 Tailscale Inc. All rights reserved. - * diff --git a/cmd/relaynode/debian/gen-changelog b/cmd/relaynode/debian/gen-changelog deleted file mode 100755 index 5b17d6f8a..000000000 --- a/cmd/relaynode/debian/gen-changelog +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh -read junk pkgname %aD -' . | -python -Sc ' -import os, re, subprocess, sys - -first = True -def Describe(g): - global first - if first: - s = sys.argv[1] - first = False - else: - sha = g.group(1) - s = subprocess.check_output(["git", "describe", "--always", "--", sha]).strip().decode("utf-8") - return re.sub(r"^\D*", "", s) - -print(re.sub(r"SHA:([0-9a-f]+)", Describe, sys.stdin.read())) -' "$shortver" diff --git a/cmd/relaynode/debian/install b/cmd/relaynode/debian/install deleted file mode 100644 index a00adff00..000000000 --- a/cmd/relaynode/debian/install +++ /dev/null @@ -1,3 +0,0 @@ -relaynode /usr/sbin -tailscale-login /usr/sbin -taillogin /usr/sbin diff --git a/cmd/relaynode/debian/postinst b/cmd/relaynode/debian/postinst deleted file mode 100644 index 2042f4b4e..000000000 --- a/cmd/relaynode/debian/postinst +++ /dev/null @@ -1,8 +0,0 @@ -#DEBHELPER# - -f=/var/lib/tailscale/relay.conf -if ! [ -e "$f" ]; then - echo - echo "Note: Run tailscale-login to configure $f." >&2 - echo -fi diff --git a/cmd/relaynode/debian/rules b/cmd/relaynode/debian/rules deleted file mode 100755 index cb8a4dfc0..000000000 --- a/cmd/relaynode/debian/rules +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/make -f -DESTDIR=debian/tailscale-relay - -override_dh_auto_test: -override_dh_auto_install: - mkdir -p "${DESTDIR}/etc/default" - cp tailscale-relay.defaults "${DESTDIR}/etc/default/tailscale-relay" - -%: - dh $@ --with=systemd diff --git a/cmd/relaynode/debian/tailscale-relay.service b/cmd/relaynode/debian/tailscale-relay.service deleted file mode 100644 index a1226d7f0..000000000 --- a/cmd/relaynode/debian/tailscale-relay.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=Traffic relay node for Tailscale IPN -After=network.target -ConditionPathExists=/var/lib/tailscale/relay.conf - -[Service] -EnvironmentFile=/etc/default/tailscale-relay -ExecStart=/usr/sbin/relaynode --config=/var/lib/tailscale/relay.conf --tun=wg0 $PORT $FLAGS -Restart=on-failure - -[Install] -WantedBy=multi-user.target diff --git a/cmd/relaynode/default.deb.od b/cmd/relaynode/default.deb.od deleted file mode 100644 index fddf0d7ab..000000000 --- a/cmd/relaynode/default.deb.od +++ /dev/null @@ -1,21 +0,0 @@ -exec >&2 -dir=${1%/*} -redo-ifchange "$S/oss/version/short.txt" "$S/$dir/package" "$dir/debtmp.dir" -read -r package <"$S/$dir/package" -read -r version <"$S/oss/version/short.txt" -arch=$(dpkg --print-architecture) - -( - cd "$S/$dir" - git ls-files debian | xargs redo-ifchange debian/changelog -) -cp -a "$S/$dir/debian" "$dir/debtmp/" -rm -f "$dir/debtmp/debian/$package.debhelper.log" -rm -f "$dir/${package}_${version}_${arch}.deb" -( - cd "$dir/debtmp" && - debian/rules build && - fakeroot debian/rules binary -) - -mv "$dir/${package}_${version}_${arch}.deb" "$3" diff --git a/cmd/relaynode/default.dir.od b/cmd/relaynode/default.dir.od deleted file mode 100644 index c7b1efd09..000000000 --- a/cmd/relaynode/default.dir.od +++ /dev/null @@ -1,20 +0,0 @@ -# Generate a directory tree suitable for forming a tarball of -# this package. -exec >&2 -dir=${1%/*} -outdir=$PWD/${1%.dir} -rm -rf "$outdir" -mkdir "$outdir" -touch $outdir/.stamp -sfiles=" - tailscale-login - debian/*.service - *.defaults -" -ofiles=" - relaynode - ../taillogin/taillogin -" -redo-ifchange "$outdir/.stamp" -(cd "$S/$dir" && redo-ifchange $sfiles && cp $sfiles "$outdir/") -(cd "$dir" && redo-ifchange $ofiles && cp $ofiles "$outdir/") diff --git a/cmd/relaynode/default.rpm.od b/cmd/relaynode/default.rpm.od deleted file mode 100644 index c2e2df350..000000000 --- a/cmd/relaynode/default.rpm.od +++ /dev/null @@ -1,15 +0,0 @@ -exec >&2 -dir=${1%/*} -pkg=${1##*/} -pkg=${pkg%.rpm} -redo-ifchange "$S/oss/version/short.txt" "$dir/$pkg.tar.gz" "$dir/$pkg.spec" -read -r pkgver junk <"$S/oss/version/short.txt" - -machine=$(uname -m) -rpmbase=$HOME/rpmbuild - -mkdir -p "$rpmbase/SOURCES/" -cp "$dir/$pkg.tar.gz" "$rpmbase/SOURCES/" -rm -f "$rpmbase/RPMS/$machine/$pkg-$pkgver.$machine.rpm" -rpmbuild -bb "$dir/$pkg.spec" -mv "$rpmbase/RPMS/$machine/$pkg-$pkgver.$machine.rpm" $3 diff --git a/cmd/relaynode/default.spec.od b/cmd/relaynode/default.spec.od deleted file mode 100644 index 30f2be2fa..000000000 --- a/cmd/relaynode/default.spec.od +++ /dev/null @@ -1,7 +0,0 @@ -redo-ifchange "$S/$1.in" "$S/oss/version/short.txt" -read -r pkgver junk <"$S/oss/version/short.txt" -basever=${pkgver%-*} -subver=${pkgver#*-} -sed -e "s/Version: 0.00$/Version: $basever/" \ - -e "s/Release: 0$/Release: $subver/" \ - <"$S/$1.in" >"$3" diff --git a/cmd/relaynode/default.tar.gz.od b/cmd/relaynode/default.tar.gz.od deleted file mode 100644 index aabe90ef9..000000000 --- a/cmd/relaynode/default.tar.gz.od +++ /dev/null @@ -1,8 +0,0 @@ -exec >&2 -xdir=${1%.tar.gz} -base=${xdir##*/} -updir=${xdir%/*} -redo-ifchange "$xdir.dir" -OUT="$PWD/$3" - -cd "$updir" && tar -czvf "$OUT" --exclude "$base/.stamp" "$base" diff --git a/cmd/relaynode/dist.od b/cmd/relaynode/dist.od deleted file mode 100644 index ef258d44a..000000000 --- a/cmd/relaynode/dist.od +++ /dev/null @@ -1,15 +0,0 @@ -# Build packages for customer distribution. -dir=${1%/*} -cd "$dir" -targets="tarball" -if which dh_clean fakeroot dpkg >/dev/null; then - targets="$targets deb" -else - echo "Skipping debian packages: debhelper and/or dpkg build tools missing." >&2 -fi -if which rpm >/dev/null; then - targets="$targets rpm" -else - echo "Skipping rpm packages: rpm build tools missing." >&2 -fi -redo-ifchange $targets diff --git a/cmd/relaynode/docker/.gitignore b/cmd/relaynode/docker/.gitignore deleted file mode 100644 index 09a5bf85a..000000000 --- a/cmd/relaynode/docker/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/relaynode diff --git a/cmd/relaynode/docker/Dockerfile b/cmd/relaynode/docker/Dockerfile deleted file mode 100644 index 714abc216..000000000 --- a/cmd/relaynode/docker/Dockerfile +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -# Build with: docker build -t tailcontrol-alpine . -# Run with: docker run --cap-add=NET_ADMIN --device=/dev/net/tun:/dev/net/tun -it tailcontrol-alpine - -FROM debian:stretch-slim - -RUN apt-get update && apt-get -y install iproute2 iptables -RUN apt-get -y install ca-certificates -RUN apt-get -y install nginx-light - -COPY relaynode / - -# tailcontrol -tun=wg0 -dbdir=$HOME/taildb >> tailcontrol.log 2>&1 & -CMD ["/relaynode", "-R", "--config", "relay.conf"] diff --git a/cmd/relaynode/docker/all.do b/cmd/relaynode/docker/all.do deleted file mode 100644 index 941435df8..000000000 --- a/cmd/relaynode/docker/all.do +++ /dev/null @@ -1 +0,0 @@ -redo-ifchange build diff --git a/cmd/relaynode/docker/build.do b/cmd/relaynode/docker/build.do deleted file mode 100644 index 29cb0e6bc..000000000 --- a/cmd/relaynode/docker/build.do +++ /dev/null @@ -1,3 +0,0 @@ -exec >&2 -redo-ifchange Dockerfile relaynode -docker build -t tailscale . diff --git a/cmd/relaynode/docker/relaynode.do b/cmd/relaynode/docker/relaynode.do deleted file mode 100644 index 11adac7f4..000000000 --- a/cmd/relaynode/docker/relaynode.do +++ /dev/null @@ -1,2 +0,0 @@ -redo-ifchange ../relaynode -cp ../relaynode $3 diff --git a/cmd/relaynode/docker/run.sh b/cmd/relaynode/docker/run.sh deleted file mode 100755 index 97a528fa2..000000000 --- a/cmd/relaynode/docker/run.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -# Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved. -# Use of this source code is governed by a BSD-style -# license that can be found in the LICENSE file. - -set -e -redo-ifchange build -docker run --cap-add=NET_ADMIN \ - --device=/dev/net/tun:/dev/net/tun \ - -it tailscale diff --git a/cmd/relaynode/package b/cmd/relaynode/package deleted file mode 100644 index ecdb13319..000000000 --- a/cmd/relaynode/package +++ /dev/null @@ -1 +0,0 @@ -tailscale-relay diff --git a/cmd/relaynode/relaynode.go b/cmd/relaynode/relaynode.go deleted file mode 100644 index 26ce77b13..000000000 --- a/cmd/relaynode/relaynode.go +++ /dev/null @@ -1,236 +0,0 @@ -// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// Relaynode is the old Linux Tailscale daemon. -// -// Deprecated: this program will be soon deleted. The replacement is -// cmd/tailscaled. -package main // import "tailscale.com/cmd/relaynode" - -import ( - "context" - "encoding/json" - "fmt" - "io/ioutil" - "log" - "net/http" - "net/http/pprof" - "os" - "os/signal" - "strings" - "syscall" - "time" - - "github.com/apenwarr/fixconsole" - "github.com/klauspost/compress/zstd" - "github.com/pborman/getopt/v2" - "github.com/tailscale/wireguard-go/wgcfg" - "tailscale.com/atomicfile" - "tailscale.com/control/controlclient" - "tailscale.com/logpolicy" - "tailscale.com/version" - "tailscale.com/wgengine" - "tailscale.com/wgengine/filter" - "tailscale.com/wgengine/magicsock" -) - -func main() { - err := fixconsole.FixConsoleIfNeeded() - if err != nil { - log.Printf("fixConsoleOutput: %v\n", err) - } - config := getopt.StringLong("config", 'f', "", "path to config file") - server := getopt.StringLong("server", 's', "https://login.tailscale.com", "URL to tailcontrol server") - listenport := getopt.Uint16Long("port", 'p', magicsock.DefaultPort, "WireGuard port (0=autoselect)") - tunname := getopt.StringLong("tun", 0, "wg0", "tunnel interface name") - alwaysrefresh := getopt.BoolLong("always-refresh", 0, "force key refresh at startup") - fake := getopt.BoolLong("fake", 0, "fake tunnel+routing instead of tuntap") - nuroutes := getopt.BoolLong("no-single-routes", 'N', "disallow (non-subnet) routes to single nodes") - rroutes := getopt.BoolLong("remote-routes", 'R', "allow routing subnets to remote nodes") - droutes := getopt.BoolLong("default-routes", 'D', "allow default route on remote node") - routes := getopt.StringLong("routes", 0, "", "list of IP ranges this node can relay") - debug := getopt.StringLong("debug", 0, "", "Address of debug server") - getopt.Parse() - if len(getopt.Args()) > 0 { - log.Fatalf("too many non-flag arguments: %#v", getopt.Args()[0]) - } - uflags := controlclient.UFlagsHelper(!*nuroutes, *rroutes, *droutes) - if *config == "" { - log.Fatal("no --config file specified") - } - if *tunname == "" { - log.Printf("Warning: no --tun device specified; routing disabled.\n") - } - - pol := logpolicy.New("tailnode.log.tailscale.io") - - logf := wgengine.RusagePrefixLog(log.Printf) - - // The wgengine takes a wireguard configuration produced by the - // controlclient, and runs the actual tunnels and packets. - var e wgengine.Engine - if *fake { - e, err = wgengine.NewFakeUserspaceEngine(logf, *listenport) - } else { - e, err = wgengine.NewUserspaceEngine(logf, *tunname, *listenport) - } - if err != nil { - log.Fatalf("Error starting wireguard engine: %v\n", err) - } - - e = wgengine.NewWatchdog(e) - - // Default filter blocks everything, until Start() is called. - e.SetFilter(filter.NewAllowNone()) - - var lastNetMap *controlclient.NetworkMap - statusFunc := func(new controlclient.Status) { - if new.URL != "" { - fmt.Fprintf(os.Stderr, "To authenticate, visit:\n\n\t%s\n\n", new.URL) - return - } - if new.Err != "" { - log.Print(new.Err) - return - } - if new.Persist != nil { - if err := saveConfig(*config, *new.Persist); err != nil { - log.Println(err) - } - } - - if m := new.NetMap; m != nil { - if lastNetMap != nil { - logf("netmap diff:\n%v\n", new.NetMap.ConciseDiffFrom(lastNetMap)) - } - lastNetMap = m - - if m.Equal(&controlclient.NetworkMap{}) { - return - } - - log.Printf("packet filter: %v\n", m.PacketFilter) - e.SetFilter(filter.New(m.PacketFilter)) - - wgcfg, err := m.WGCfg(uflags, m.DNS) - if err != nil { - log.Fatalf("Error getting wg config: %v\n", err) - } - err = e.Reconfig(wgcfg, m.DNSDomains) - if err != nil { - log.Fatalf("Error reconfiguring engine: %v\n", err) - } - } - } - - cfg, err := loadConfig(*config) - if err != nil { - log.Fatal(err) - } - - hi := controlclient.NewHostinfo() - hi.FrontendLogID = pol.PublicID.String() - hi.BackendLogID = pol.PublicID.String() - if *routes != "" { - for _, routeStr := range strings.Split(*routes, ",") { - cidr, err := wgcfg.ParseCIDR(routeStr) - if err != nil { - log.Fatalf("--routes: not an IP range: %s", routeStr) - } - hi.RoutableIPs = append(hi.RoutableIPs, cidr) - } - } - - c, err := controlclient.New(controlclient.Options{ - Persist: cfg, - ServerURL: *server, - Hostinfo: hi, - NewDecompressor: func() (controlclient.Decompressor, error) { - return zstd.NewReader(nil) - }, - KeepAlive: true, - }) - c.SetStatusFunc(statusFunc) - if err != nil { - log.Fatal(err) - } - lf := controlclient.LoginDefault - if *alwaysrefresh { - lf |= controlclient.LoginInteractive - } - c.Login(nil, lf) - - // Print the wireguard status when we get an update. - e.SetStatusCallback(func(s *wgengine.Status, err error) { - if err != nil { - log.Fatalf("Wireguard engine status error: %v\n", err) - } - var ss []string - for _, p := range s.Peers { - if p.LastHandshake.IsZero() { - ss = append(ss, "x") - } else { - ss = append(ss, fmt.Sprintf("%d/%d", p.RxBytes, p.TxBytes)) - } - } - logf("v%v peers: %v\n", version.LONG, strings.Join(ss, " ")) - c.UpdateEndpoints(0, s.LocalAddrs) - }) - - if *debug != "" { - go runDebugServer(*debug) - } - - sigCh := make(chan os.Signal, 1) - signal.Notify(sigCh, os.Interrupt) - signal.Notify(sigCh, syscall.SIGTERM) - - <-sigCh - logf("signal received, exiting") - - ctx, cancel := context.WithTimeout(context.Background(), 1*time.Second) - defer cancel() - - e.Close() - pol.Shutdown(ctx) -} - -func loadConfig(path string) (cfg controlclient.Persist, err error) { - b, err := ioutil.ReadFile(path) - if os.IsNotExist(err) { - log.Printf("config %s does not exist", path) - return controlclient.Persist{}, nil - } - if err := json.Unmarshal(b, &cfg); err != nil { - return controlclient.Persist{}, fmt.Errorf("load config: %v", err) - } - return cfg, nil -} - -func saveConfig(path string, cfg controlclient.Persist) error { - b, err := json.MarshalIndent(cfg, "", "\t") - if err != nil { - return fmt.Errorf("save config: %v", err) - } - if err := atomicfile.WriteFile(path, b, 0666); err != nil { - return fmt.Errorf("save config: %v", err) - } - return nil -} - -func runDebugServer(addr string) { - mux := http.NewServeMux() - mux.HandleFunc("/debug/pprof/", pprof.Index) - mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline) - mux.HandleFunc("/debug/pprof/profile", pprof.Profile) - mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol) - mux.HandleFunc("/debug/pprof/trace", pprof.Trace) - srv := http.Server{ - Addr: addr, - Handler: mux, - } - if err := srv.ListenAndServe(); err != nil { - log.Fatal(err) - } -} diff --git a/cmd/relaynode/relaynode.od b/cmd/relaynode/relaynode.od new file mode 100644 index 000000000..f3e4828ae --- /dev/null +++ b/cmd/relaynode/relaynode.od @@ -0,0 +1 @@ +# placeholder to work around redo bug diff --git a/cmd/relaynode/rpm.od b/cmd/relaynode/rpm.od deleted file mode 100644 index 1594bb796..000000000 --- a/cmd/relaynode/rpm.od +++ /dev/null @@ -1,9 +0,0 @@ -exec >&2 -dir=${2%/*} -redo-ifchange "$S/$dir/package" "$S/oss/version/short.txt" -read -r package <"$S/$dir/package" -read -r pkgver <"$S/oss/version/short.txt" -machine=$(uname -m) -redo-ifchange "$dir/$package.rpm" -rm -f "$dir/${package}"-*."$machine.rpm" -ln -sf "$package.rpm" "$dir/$package-$pkgver.$machine.rpm" diff --git a/cmd/relaynode/tailscale-login b/cmd/relaynode/tailscale-login deleted file mode 100755 index f4ec4e816..000000000 --- a/cmd/relaynode/tailscale-login +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -cfg=/var/lib/tailscale/relay.conf -dir=$(dirname "$0") -"$dir/taillogin" --config="$cfg" diff --git a/cmd/relaynode/tailscale-relay.defaults b/cmd/relaynode/tailscale-relay.defaults deleted file mode 100644 index e638270a9..000000000 --- a/cmd/relaynode/tailscale-relay.defaults +++ /dev/null @@ -1,8 +0,0 @@ -# Set the port to listen on for incoming VPN packets. -# Remote nodes will automatically be informed about the new port number, -# but you might want to configure this in order to set external firewall -# settings. -PORT="--port=41641" - -# Extra flags you might want to pass to relaynode. -FLAGS="" diff --git a/cmd/relaynode/tailscale-relay.spec.in b/cmd/relaynode/tailscale-relay.spec.in deleted file mode 100644 index a0e62153b..000000000 --- a/cmd/relaynode/tailscale-relay.spec.in +++ /dev/null @@ -1,40 +0,0 @@ -Name: tailscale-relay -Version: 0.00 -Release: 0 -Summary: Traffic relay node for Tailscale -Group: Network -License: Proprietary -URL: https://tailscale.com/ -Vendor: Tailscale Inc. -#Source: https://github.com/tailscale/tailscale -Source0: tailscale-relay.tar.gz -#Prefix: %{_prefix} -Packager: Avery Pennarun -BuildRoot: %{_tmppath}/%{name}-root - -%description -Traffic relay node for Tailscale. - -%prep -%setup -n tailscale-relay - -%build - -%install -D=$RPM_BUILD_ROOT -[ "$D" = "/" -o -z "$D" ] && exit 99 -rm -rf "$D" -mkdir -p $D/usr/sbin $D/lib/systemd/system $D/etc/default $D/etc/tailscale -cp taillogin tailscale-login relaynode $D/usr/sbin -cp tailscale-relay.service $D/lib/systemd/system/ -cp tailscale-relay.defaults $D/etc/default/tailscale-relay - -%clean - -%files -%defattr(-,root,root) -%config(noreplace) /etc/default/tailscale-relay -/lib/systemd/system/tailscale-relay.service -/usr/sbin/taillogin -/usr/sbin/tailscale-login -/usr/sbin/relaynode diff --git a/cmd/relaynode/tarball.od b/cmd/relaynode/tarball.od deleted file mode 100644 index 290fc5480..000000000 --- a/cmd/relaynode/tarball.od +++ /dev/null @@ -1,7 +0,0 @@ -dir=${1%/*} -redo-ifchange "$S/$dir/package" "$S/oss/version/short.txt" -read -r package <"$S/$dir/package" -read -r version <"$S/oss/version/short.txt" -redo-ifchange "$dir/$package.tar.gz" -rm -f "$dir/$package"-*.tar.gz -ln -sf "$package.tar.gz" "$dir/$package-$version.tar.gz" diff --git a/control/controlclient/netmap.go b/control/controlclient/netmap.go index c29f7a073..b78dd6afe 100644 --- a/control/controlclient/netmap.go +++ b/control/controlclient/netmap.go @@ -10,7 +10,6 @@ import ( "encoding/json" "fmt" "log" - "net" "strings" "time" @@ -142,56 +141,6 @@ func (nm *NetworkMap) JSON() string { return string(b) } -// TODO(apenwarr): delete me once relaynode doesn't need this anymore. -// control.go:userMap() supercedes it. This does not belong in the client. -func (nm *NetworkMap) UserMap() map[string][]filter.IP { - // Make a lookup table of roles - log.Printf("roles list is: %v\n", nm.Roles) - roles := make(map[tailcfg.RoleID]tailcfg.Role) - for _, role := range nm.Roles { - roles[role.ID] = role - } - - // First, go through each node's addresses and make a lookup table - // of IP->User. - fwd := make(map[wgcfg.IP]string) - for _, node := range nm.Peers { - for _, addr := range node.Addresses { - if addr.Mask == 32 && addr.IP.Is4() { - user, ok := nm.UserProfiles[node.User] - if ok { - fwd[addr.IP] = user.LoginName - } - } - } - } - - // Next, reverse the mapping into User->IP. - rev := make(map[string][]filter.IP) - for ip, username := range fwd { - ip4 := ip.To4() - if ip4 != nil { - fip := filter.NewIP(net.IP(ip4)) - rev[username] = append(rev[username], fip) - } - } - - // Now add roles, which are lists of users, and therefore lists - // of those users' IP addresses. - for _, user := range nm.UserProfiles { - for _, roleid := range user.Roles { - role, ok := roles[roleid] - if ok { - rolename := "role:" + role.Name - rev[rolename] = append(rev[rolename], rev[user.LoginName]...) - } - } - } - - //log.Printf("Usermap is: %v\n", rev) - return rev -} - const ( UAllowSingleHosts = 1 << iota UAllowSubnetRoutes