diff --git a/cmd/zerotier/cli/cert.go b/cmd/zerotier/cli/cert.go index 0673b0354..178e2b313 100644 --- a/cmd/zerotier/cli/cert.go +++ b/cmd/zerotier/cli/cert.go @@ -122,7 +122,7 @@ func Cert(basePath string, authTokenGenerator func() string, args []string, json return 1 } - signingIdentity := readIdentity(args[2]) + signingIdentity := cliGetIdentityOrFatal(args[2]) if signingIdentity == nil { pErr("unable to read identity from %s", args[2]) return 1 diff --git a/cmd/zerotier/cli/identity.go b/cmd/zerotier/cli/identity.go index 9df75cf24..c05421d9f 100644 --- a/cmd/zerotier/cli/identity.go +++ b/cmd/zerotier/cli/identity.go @@ -55,7 +55,7 @@ func Identity(args []string) int { case "getpublic": if len(args) == 2 { - fmt.Println(readIdentity(args[1]).String()) + fmt.Println(cliGetIdentityOrFatal(args[1]).String()) return 0 } pErr("no identity specified") @@ -63,7 +63,7 @@ func Identity(args []string) int { case "fingerprint": if len(args) == 2 { - fmt.Println(readIdentity(args[1]).Fingerprint().String()) + fmt.Println(cliGetIdentityOrFatal(args[1]).Fingerprint().String()) return 0 } pErr("no identity specified") @@ -71,7 +71,7 @@ func Identity(args []string) int { case "validate": if len(args) == 2 { - if readIdentity(args[1]).LocallyValidate() { + if cliGetIdentityOrFatal(args[1]).LocallyValidate() { fmt.Println("VALID") return 0 } @@ -81,7 +81,7 @@ func Identity(args []string) int { case "sign", "verify": if len(args) > 2 { - id := readIdentity(args[1]) + id := cliGetIdentityOrFatal(args[1]) msg, err := ioutil.ReadFile(args[2]) if err != nil { pErr("unable to read input file: %s", err.Error()) diff --git a/cmd/zerotier/cli/locator.go b/cmd/zerotier/cli/locator.go index ac4627739..b924b12a3 100644 --- a/cmd/zerotier/cli/locator.go +++ b/cmd/zerotier/cli/locator.go @@ -13,6 +13,11 @@ package cli +import ( + "fmt" + "zerotier/pkg/zerotier" +) + func Locator(args []string) int { if len(args) < 1 { Help() @@ -22,10 +27,54 @@ func Locator(args []string) int { switch args[0] { case "new": + if len(args) < 3 { + Help() + return 1 + } + id := cliGetIdentityOrFatal(args[1]) + if !id.HasPrivate() { + pErr("identity must include secret key to sign locator") + return 1 + } + var eps []*zerotier.Endpoint + for i:=2;i