From a1f0ee7b9f3e13fa648eced9d12fcb4fd4a6601d Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Fri, 20 Apr 2018 14:12:11 -0700 Subject: [PATCH 1/3] autogen private_key in unavailable --- server/server.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/server/server.go b/server/server.go index dd0e199..f616826 100644 --- a/server/server.go +++ b/server/server.go @@ -10,7 +10,8 @@ import ( "github.com/s-rah/go-ricochet/channels" "github.com/s-rah/go-ricochet/utils" "log" - //"time" + + "io/ioutil" ) type Server struct { @@ -21,7 +22,14 @@ func (s *Server) Run(privateKeyFile string) { pk, err := utils.LoadPrivateKeyFromFile(privateKeyFile) if err != nil { - log.Fatalf("error reading private key file: %v", err) + log.Printf("no private key found!") + log.Printf("generating new private key...") + var pk_err error = nil + pk, pk_err = utils.GeneratePrivateKey() + if pk_err != nil { + log.Fatalf("error generating new private key: %v", err) + } + ioutil.WriteFile(privateKeyFile, []byte(utils.PrivateKeyToString(pk)), 0400) } l, err := application.SetupOnion("127.0.0.1:9051", "tcp4", "", pk, 9878) From 4b27e95c269496a5b575f6f25f11dd423c6d0fce Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Mon, 30 Apr 2018 10:01:08 -0700 Subject: [PATCH 2/3] only generate private key if keyfile is missing, not on other errors: possible corrupt and loss --- server/server.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/server/server.go b/server/server.go index f616826..a814b4c 100644 --- a/server/server.go +++ b/server/server.go @@ -1,7 +1,6 @@ package server import ( - //"crypto/rsa" "git.mascherari.press/cwtch/server/fetch" "git.mascherari.press/cwtch/server/listen" "git.mascherari.press/cwtch/server/send" @@ -11,6 +10,7 @@ import ( "github.com/s-rah/go-ricochet/utils" "log" + "os" "io/ioutil" ) @@ -19,19 +19,23 @@ type Server struct { func (s *Server) Run(privateKeyFile string) { cwtchserver := new(application.RicochetApplication) - pk, err := utils.LoadPrivateKeyFromFile(privateKeyFile) - if err != nil { + if _, err := os.Stat(privateKeyFile); os.IsNotExist(err) { log.Printf("no private key found!") log.Printf("generating new private key...") - var pk_err error = nil - pk, pk_err = utils.GeneratePrivateKey() + pk, pk_err := utils.GeneratePrivateKey() if pk_err != nil { log.Fatalf("error generating new private key: %v", err) } ioutil.WriteFile(privateKeyFile, []byte(utils.PrivateKeyToString(pk)), 0400) } + pk, err := utils.LoadPrivateKeyFromFile(privateKeyFile) + + if err != nil { + log.Fatalf("error reading private key file: %v", err) + } + l, err := application.SetupOnion("127.0.0.1:9051", "tcp4", "", pk, 9878) if err != nil { From aab59969711746b77d7d160eafd8ddee7e72397a Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Thu, 3 May 2018 15:45:50 -0700 Subject: [PATCH 3/3] move server auto keygen to app/main --- server/app/main.go | 24 +++++++++++++++++++++++- server/server.go | 12 ------------ 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/server/app/main.go b/server/app/main.go index 8687e5e..e02464a 100644 --- a/server/app/main.go +++ b/server/app/main.go @@ -3,11 +3,33 @@ package main import ( cwtchserver "git.mascherari.press/cwtch/server" "log" + "os" + "github.com/s-rah/go-ricochet/utils" + "io/ioutil" ) +const privateKeyFile = "./private_key" + +func checkAndGenPrivateKey(privateKeyFile string) { + if _, err := os.Stat(privateKeyFile); os.IsNotExist(err) { + log.Printf("no private key found!") + log.Printf("generating new private key...") + pk, pk_err := utils.GeneratePrivateKey() + if pk_err != nil { + log.Fatalf("error generating new private key: %v\n", err) + } + err := ioutil.WriteFile(privateKeyFile, []byte(utils.PrivateKeyToString(pk)), 0400) + if err != nil { + log.Fatalf("error writing new private key to file %s: %v\n", privateKeyFile, err) + } + } +} + func main() { + checkAndGenPrivateKey(privateKeyFile) + server := new(cwtchserver.Server) log.Printf("starting cwtch server...") - server.Run("./private_key") + server.Run(privateKeyFile) } diff --git a/server/server.go b/server/server.go index a814b4c..233ffab 100644 --- a/server/server.go +++ b/server/server.go @@ -10,8 +10,6 @@ import ( "github.com/s-rah/go-ricochet/utils" "log" - "os" - "io/ioutil" ) type Server struct { @@ -20,16 +18,6 @@ type Server struct { func (s *Server) Run(privateKeyFile string) { cwtchserver := new(application.RicochetApplication) - if _, err := os.Stat(privateKeyFile); os.IsNotExist(err) { - log.Printf("no private key found!") - log.Printf("generating new private key...") - pk, pk_err := utils.GeneratePrivateKey() - if pk_err != nil { - log.Fatalf("error generating new private key: %v", err) - } - ioutil.WriteFile(privateKeyFile, []byte(utils.PrivateKeyToString(pk)), 0400) - } - pk, err := utils.LoadPrivateKeyFromFile(privateKeyFile) if err != nil {