mirror of
https://github.com/octoleo/syncthing.git
synced 2025-02-02 11:58:28 +00:00
Implement -generate (fixes #459)
This commit is contained in:
parent
56afba6606
commit
06208a703a
@ -135,12 +135,14 @@ func main() {
|
|||||||
var showVersion bool
|
var showVersion bool
|
||||||
var doUpgrade bool
|
var doUpgrade bool
|
||||||
var doUpgradeCheck bool
|
var doUpgradeCheck bool
|
||||||
|
var generateDir string
|
||||||
flag.StringVar(&confDir, "home", getDefaultConfDir(), "Set configuration directory")
|
flag.StringVar(&confDir, "home", getDefaultConfDir(), "Set configuration directory")
|
||||||
flag.BoolVar(&reset, "reset", false, "Prepare to resync from cluster")
|
flag.BoolVar(&reset, "reset", false, "Prepare to resync from cluster")
|
||||||
flag.BoolVar(&showVersion, "version", false, "Show version")
|
flag.BoolVar(&showVersion, "version", false, "Show version")
|
||||||
flag.BoolVar(&doUpgrade, "upgrade", false, "Perform upgrade")
|
flag.BoolVar(&doUpgrade, "upgrade", false, "Perform upgrade")
|
||||||
flag.BoolVar(&doUpgradeCheck, "upgrade-check", false, "Check for available upgrade")
|
flag.BoolVar(&doUpgradeCheck, "upgrade-check", false, "Check for available upgrade")
|
||||||
flag.IntVar(&logFlags, "logflags", logFlags, "Set log flags")
|
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.Usage = usageFor(flag.CommandLine, usage, extraUsage)
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
@ -151,10 +153,29 @@ func main() {
|
|||||||
|
|
||||||
l.SetFlags(logFlags)
|
l.SetFlags(logFlags)
|
||||||
|
|
||||||
var err error
|
if generateDir != "" {
|
||||||
lockPort, err = getLockPort()
|
dir := expandTilde(generateDir)
|
||||||
if err != nil {
|
|
||||||
l.Fatalln("Opening lock port:", err)
|
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 {
|
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 {
|
if len(os.Getenv("GOGC")) == 0 {
|
||||||
debug.SetGCPercent(25)
|
debug.SetGCPercent(25)
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ func certSeed(bs []byte) int64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func newCertificate(dir string, prefix string) {
|
func newCertificate(dir string, prefix string) {
|
||||||
l.Infoln("Generating RSA certificate and key...")
|
l.Infoln("Generating RSA key and certificate...")
|
||||||
|
|
||||||
priv, err := rsa.GenerateKey(rand.Reader, tlsRSABits)
|
priv, err := rsa.GenerateKey(rand.Reader, tlsRSABits)
|
||||||
l.FatalErr(err)
|
l.FatalErr(err)
|
||||||
@ -67,11 +67,9 @@ func newCertificate(dir string, prefix string) {
|
|||||||
l.FatalErr(err)
|
l.FatalErr(err)
|
||||||
pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes})
|
pem.Encode(certOut, &pem.Block{Type: "CERTIFICATE", Bytes: derBytes})
|
||||||
certOut.Close()
|
certOut.Close()
|
||||||
l.Okln("Created RSA certificate file")
|
|
||||||
|
|
||||||
keyOut, err := os.OpenFile(filepath.Join(dir, prefix+"key.pem"), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
keyOut, err := os.OpenFile(filepath.Join(dir, prefix+"key.pem"), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||||
l.FatalErr(err)
|
l.FatalErr(err)
|
||||||
pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)})
|
pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(priv)})
|
||||||
keyOut.Close()
|
keyOut.Close()
|
||||||
l.Okln("Created RSA key file")
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user