mirror of
https://github.com/ZeroTier/ZeroTierOne
synced 2025-08-14 10:37:33 -07:00
.
This commit is contained in:
parent
e3d47e588a
commit
e5bd230fb0
15 changed files with 197 additions and 42 deletions
|
@ -16,15 +16,18 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"runtime"
|
||||
"strings"
|
||||
"zerotier/cmd/zerotier/cli"
|
||||
"zerotier/pkg/zerotier"
|
||||
)
|
||||
|
||||
var copyrightText = fmt.Sprintf(`ZeroTier Network Virtualization Service Version %d.%d.%d
|
||||
(c)2019 ZeroTier, Inc.
|
||||
Licensed under the ZeroTier BSL (see LICENSE.txt)`,
|
||||
zerotier.CoreVersionMajor, zerotier.CoreVersionMinor, zerotier.CoreVersionRevision)
|
||||
Licensed under the ZeroTier BSL (see LICENSE.txt)`, zerotier.CoreVersionMajor, zerotier.CoreVersionMinor, zerotier.CoreVersionRevision)
|
||||
|
||||
func printHelp() {
|
||||
fmt.Println(copyrightText + `
|
||||
|
@ -78,20 +81,41 @@ used to explicitly specify a location.
|
|||
`)
|
||||
}
|
||||
|
||||
/*
|
||||
func nodeStart() {
|
||||
osSignalChannel := make(chan os.Signal, 2)
|
||||
signal.Notify(osSignalChannel, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGINT, syscall.SIGBUS)
|
||||
signal.Ignore(syscall.SIGUSR1, syscall.SIGUSR2)
|
||||
go func() {
|
||||
<-osSignalChannel
|
||||
}()
|
||||
func readAuthToken(basePath string) string {
|
||||
data, _ := ioutil.ReadFile(path.Join(basePath, "authtoken.secret"))
|
||||
if len(data) > 0 {
|
||||
return string(data)
|
||||
}
|
||||
userHome, _ := os.UserHomeDir()
|
||||
if len(userHome) > 0 {
|
||||
if runtime.GOOS == "darwin" {
|
||||
data, _ = ioutil.ReadFile(userHome + "/Library/Application Support/ZeroTier/authtoken.secret")
|
||||
if len(data) > 0 {
|
||||
return string(data)
|
||||
}
|
||||
data, _ = ioutil.ReadFile(userHome + "/Library/Application Support/ZeroTier/One/authtoken.secret")
|
||||
if len(data) > 0 {
|
||||
return string(data)
|
||||
}
|
||||
}
|
||||
data, _ = ioutil.ReadFile(path.Join(userHome, ".zerotierauth"))
|
||||
if len(data) > 0 {
|
||||
return string(data)
|
||||
}
|
||||
data, _ = ioutil.ReadFile(path.Join(userHome, ".zeroTierOneAuthToken"))
|
||||
if len(data) > 0 {
|
||||
return string(data)
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
*/
|
||||
|
||||
func main() {
|
||||
globalOpts := flag.NewFlagSet("global", flag.ContinueOnError)
|
||||
hflag := globalOpts.Bool("h", false, "") // support -h to be canonical with other Unix utilities
|
||||
jflag := globalOpts.Bool("j", false, "")
|
||||
pflag := globalOpts.String("p", "", "")
|
||||
tflag := globalOpts.String("t", "", "")
|
||||
err := globalOpts.Parse(os.Args[1:])
|
||||
if err != nil {
|
||||
printHelp()
|
||||
|
@ -109,6 +133,22 @@ func main() {
|
|||
cmdArgs = args[1:]
|
||||
}
|
||||
|
||||
basePath := zerotier.PlatformDefaultHomePath
|
||||
if len(*pflag) > 0 {
|
||||
basePath = *pflag
|
||||
}
|
||||
var authToken string
|
||||
if len(*tflag) > 0 {
|
||||
authToken = *tflag
|
||||
} else {
|
||||
authToken = readAuthToken(basePath)
|
||||
}
|
||||
if len(authToken) == 0 {
|
||||
fmt.Println("FATAL: unable to read API authorization token from service path or user home ('sudo' may be needed)")
|
||||
os.Exit(1)
|
||||
}
|
||||
authToken = strings.TrimSpace(authToken)
|
||||
|
||||
switch args[0] {
|
||||
case "help":
|
||||
printHelp()
|
||||
|
@ -117,27 +157,27 @@ func main() {
|
|||
fmt.Printf("%d.%d.%d\n", zerotier.CoreVersionMajor, zerotier.CoreVersionMinor, zerotier.CoreVersionRevision)
|
||||
os.Exit(0)
|
||||
case "service":
|
||||
cli.Service(cmdArgs)
|
||||
cli.Service(basePath, authToken, cmdArgs)
|
||||
case "status":
|
||||
cli.Status(cmdArgs)
|
||||
cli.Status(basePath, authToken, cmdArgs, *jflag)
|
||||
case "peers":
|
||||
cli.Peers(cmdArgs)
|
||||
cli.Peers(basePath, authToken, cmdArgs)
|
||||
case "roots":
|
||||
cli.Roots(cmdArgs)
|
||||
cli.Roots(basePath, authToken, cmdArgs)
|
||||
case "addroot":
|
||||
cli.AddRoot(cmdArgs)
|
||||
cli.AddRoot(basePath, authToken, cmdArgs)
|
||||
case "removeroot":
|
||||
cli.RemoveRoot(cmdArgs)
|
||||
cli.RemoveRoot(basePath, authToken, cmdArgs)
|
||||
case "networks":
|
||||
cli.Networks(cmdArgs)
|
||||
cli.Networks(basePath, authToken, cmdArgs)
|
||||
case "join":
|
||||
cli.Join(cmdArgs)
|
||||
cli.Join(basePath, authToken, cmdArgs)
|
||||
case "leave":
|
||||
cli.Leave(cmdArgs)
|
||||
cli.Leave(basePath, authToken, cmdArgs)
|
||||
case "show":
|
||||
cli.Show(cmdArgs)
|
||||
cli.Show(basePath, authToken, cmdArgs)
|
||||
case "set":
|
||||
cli.Set(cmdArgs)
|
||||
cli.Set(basePath, authToken, cmdArgs)
|
||||
}
|
||||
|
||||
printHelp()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue