Implement -generate (fixes #459)

This commit is contained in:
Jakob Borg
2014-08-03 09:41:08 +02:00
parent 56afba6606
commit 06208a703a
2 changed files with 32 additions and 7 deletions

View File

@@ -135,12 +135,14 @@ func main() {
var showVersion bool
var doUpgrade bool
var doUpgradeCheck bool
var generateDir string
flag.StringVar(&confDir, "home", getDefaultConfDir(), "Set configuration directory")
flag.BoolVar(&reset, "reset", false, "Prepare to resync from cluster")
flag.BoolVar(&showVersion, "version", false, "Show version")
flag.BoolVar(&doUpgrade, "upgrade", false, "Perform upgrade")
flag.BoolVar(&doUpgradeCheck, "upgrade-check", false, "Check for available upgrade")
flag.IntVar(&logFlags, "logflags", logFlags, "Set log flags")
flag.StringVar(&generateDir, "generate", "", "Generate key in specified dir")
flag.Usage = usageFor(flag.CommandLine, usage, extraUsage)
flag.Parse()
@@ -151,10 +153,29 @@ func main() {
l.SetFlags(logFlags)
var err error
lockPort, err = getLockPort()
if err != nil {
l.Fatalln("Opening lock port:", err)
if generateDir != "" {
dir := expandTilde(generateDir)
info, err := os.Stat(dir)
l.FatalErr(err)
if !info.IsDir() {
l.Fatalln(dir, "is not a directory")
}
cert, err := loadCert(dir, "")
if err == nil {
l.Warnln("Key exists; will not overwrite.")
l.Infoln("Node ID:", protocol.NewNodeID(cert.Certificate[0]))
return
}
newCertificate(dir, "")
cert, err = loadCert(dir, "")
l.FatalErr(err)
if err == nil {
l.Infoln("Node ID:", protocol.NewNodeID(cert.Certificate[0]))
}
return
}
if doUpgrade || doUpgradeCheck {
@@ -182,6 +203,12 @@ func main() {
}
}
var err error
lockPort, err = getLockPort()
if err != nil {
l.Fatalln("Opening lock port:", err)
}
if len(os.Getenv("GOGC")) == 0 {
debug.SetGCPercent(25)
}