|
|
|
@ -110,6 +110,7 @@ func main() { |
|
|
|
|
processArgs() |
|
|
|
|
initialize() |
|
|
|
|
run() |
|
|
|
|
shutdown() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func processArgs() { |
|
|
|
@ -209,21 +210,6 @@ func initialize() { |
|
|
|
|
MinimumAcceptedPOW: *argPoW, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if *mailServerMode { |
|
|
|
|
if len(msPassword) == 0 { |
|
|
|
|
msPassword, err = console.Stdin.PromptPassword("Please enter the Mail Server password: ") |
|
|
|
|
if err != nil { |
|
|
|
|
utils.Fatalf("Failed to read Mail Server password: %s", err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
shh = whisper.New(cfg) |
|
|
|
|
shh.RegisterServer(&mailServer) |
|
|
|
|
mailServer.Init(shh, *argDBPath, msPassword, *argServerPoW) |
|
|
|
|
} else { |
|
|
|
|
shh = whisper.New(cfg) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if *argPoW != whisper.DefaultMinimumPoW { |
|
|
|
|
err := shh.SetMinimumPoW(*argPoW) |
|
|
|
|
if err != nil { |
|
|
|
@ -265,6 +251,26 @@ func initialize() { |
|
|
|
|
maxPeers = 800 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_, err = crand.Read(entropy[:]) |
|
|
|
|
if err != nil { |
|
|
|
|
utils.Fatalf("crypto/rand failed: %s", err) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if *mailServerMode { |
|
|
|
|
if len(msPassword) == 0 { |
|
|
|
|
msPassword, err = console.Stdin.PromptPassword("Please enter the Mail Server password: ") |
|
|
|
|
if err != nil { |
|
|
|
|
utils.Fatalf("Failed to read Mail Server password: %s", err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
shh = whisper.New(cfg) |
|
|
|
|
shh.RegisterServer(&mailServer) |
|
|
|
|
mailServer.Init(shh, *argDBPath, msPassword, *argServerPoW) |
|
|
|
|
} else { |
|
|
|
|
shh = whisper.New(cfg) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
server = &p2p.Server{ |
|
|
|
|
Config: p2p.Config{ |
|
|
|
|
PrivateKey: nodeid, |
|
|
|
@ -278,17 +284,13 @@ func initialize() { |
|
|
|
|
TrustedNodes: peers, |
|
|
|
|
}, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
_, err = crand.Read(entropy[:]) |
|
|
|
|
if err != nil { |
|
|
|
|
utils.Fatalf("crypto/rand failed: %s", err) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func startServer() { |
|
|
|
|
func startServer() error { |
|
|
|
|
err := server.Start() |
|
|
|
|
if err != nil { |
|
|
|
|
utils.Fatalf("Failed to start Whisper peer: %s.", err) |
|
|
|
|
fmt.Printf("Failed to start Whisper peer: %s.", err) |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fmt.Printf("my public key: %s \n", common.ToHex(crypto.FromECDSAPub(&asymKey.PublicKey))) |
|
|
|
@ -307,6 +309,7 @@ func startServer() { |
|
|
|
|
if !*forwarderMode { |
|
|
|
|
fmt.Printf("Please type the message. To quit type: '%s'\n", quitCommand) |
|
|
|
|
} |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func isKeyValid(k *ecdsa.PublicKey) bool { |
|
|
|
@ -420,8 +423,10 @@ func waitForConnection(timeout bool) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func run() { |
|
|
|
|
defer mailServer.Close() |
|
|
|
|
startServer() |
|
|
|
|
err := startServer() |
|
|
|
|
if err != nil { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
defer server.Stop() |
|
|
|
|
shh.Start(nil) |
|
|
|
|
defer shh.Stop() |
|
|
|
@ -439,8 +444,11 @@ func run() { |
|
|
|
|
} else { |
|
|
|
|
sendLoop() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func shutdown() { |
|
|
|
|
close(done) |
|
|
|
|
mailServer.Close() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func sendLoop() { |
|
|
|
|