|
@@ -19,15 +19,12 @@ package main
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
"crypto/ecdsa"
|
|
"crypto/ecdsa"
|
|
|
- "encoding/hex"
|
|
|
|
|
"flag"
|
|
"flag"
|
|
|
- "fmt"
|
|
|
|
|
- "io/ioutil"
|
|
|
|
|
- "log"
|
|
|
|
|
"os"
|
|
"os"
|
|
|
|
|
|
|
|
|
|
+ "github.com/ethereum/go-ethereum/cmd/utils"
|
|
|
"github.com/ethereum/go-ethereum/crypto"
|
|
"github.com/ethereum/go-ethereum/crypto"
|
|
|
- "github.com/ethereum/go-ethereum/logger"
|
|
|
|
|
|
|
+ "github.com/ethereum/go-ethereum/logger/glog"
|
|
|
"github.com/ethereum/go-ethereum/p2p/discover"
|
|
"github.com/ethereum/go-ethereum/p2p/discover"
|
|
|
"github.com/ethereum/go-ethereum/p2p/nat"
|
|
"github.com/ethereum/go-ethereum/p2p/nat"
|
|
|
)
|
|
)
|
|
@@ -43,50 +40,43 @@ func main() {
|
|
|
nodeKey *ecdsa.PrivateKey
|
|
nodeKey *ecdsa.PrivateKey
|
|
|
err error
|
|
err error
|
|
|
)
|
|
)
|
|
|
|
|
+ flag.Var(glog.GetVerbosity(), "verbosity", "log verbosity (0-9)")
|
|
|
|
|
+ flag.Var(glog.GetVModule(), "vmodule", "log verbosity pattern")
|
|
|
|
|
+ glog.SetToStderr(true)
|
|
|
flag.Parse()
|
|
flag.Parse()
|
|
|
- logger.AddLogSystem(logger.NewStdLogSystem(os.Stdout, log.LstdFlags, logger.DebugLevel))
|
|
|
|
|
|
|
|
|
|
if *genKey != "" {
|
|
if *genKey != "" {
|
|
|
- writeKey(*genKey)
|
|
|
|
|
|
|
+ key, err := crypto.GenerateKey()
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ utils.Fatalf("could not generate key: %v", err)
|
|
|
|
|
+ }
|
|
|
|
|
+ if err := crypto.SaveECDSA(*genKey, key); err != nil {
|
|
|
|
|
+ utils.Fatalf("%v", err)
|
|
|
|
|
+ }
|
|
|
os.Exit(0)
|
|
os.Exit(0)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
natm, err := nat.Parse(*natdesc)
|
|
natm, err := nat.Parse(*natdesc)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- log.Fatalf("-nat: %v", err)
|
|
|
|
|
|
|
+ utils.Fatalf("-nat: %v", err)
|
|
|
}
|
|
}
|
|
|
switch {
|
|
switch {
|
|
|
case *nodeKeyFile == "" && *nodeKeyHex == "":
|
|
case *nodeKeyFile == "" && *nodeKeyHex == "":
|
|
|
- log.Fatal("Use -nodekey or -nodekeyhex to specify a private key")
|
|
|
|
|
|
|
+ utils.Fatalf("Use -nodekey or -nodekeyhex to specify a private key")
|
|
|
case *nodeKeyFile != "" && *nodeKeyHex != "":
|
|
case *nodeKeyFile != "" && *nodeKeyHex != "":
|
|
|
- log.Fatal("Options -nodekey and -nodekeyhex are mutually exclusive")
|
|
|
|
|
|
|
+ utils.Fatalf("Options -nodekey and -nodekeyhex are mutually exclusive")
|
|
|
case *nodeKeyFile != "":
|
|
case *nodeKeyFile != "":
|
|
|
if nodeKey, err = crypto.LoadECDSA(*nodeKeyFile); err != nil {
|
|
if nodeKey, err = crypto.LoadECDSA(*nodeKeyFile); err != nil {
|
|
|
- log.Fatalf("-nodekey: %v", err)
|
|
|
|
|
|
|
+ utils.Fatalf("-nodekey: %v", err)
|
|
|
}
|
|
}
|
|
|
case *nodeKeyHex != "":
|
|
case *nodeKeyHex != "":
|
|
|
if nodeKey, err = crypto.HexToECDSA(*nodeKeyHex); err != nil {
|
|
if nodeKey, err = crypto.HexToECDSA(*nodeKeyHex); err != nil {
|
|
|
- log.Fatalf("-nodekeyhex: %v", err)
|
|
|
|
|
|
|
+ utils.Fatalf("-nodekeyhex: %v", err)
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if _, err := discover.ListenUDP(nodeKey, *listenAddr, natm, ""); err != nil {
|
|
if _, err := discover.ListenUDP(nodeKey, *listenAddr, natm, ""); err != nil {
|
|
|
- log.Fatal(err)
|
|
|
|
|
|
|
+ utils.Fatalf("%v", err)
|
|
|
}
|
|
}
|
|
|
select {}
|
|
select {}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-func writeKey(target string) {
|
|
|
|
|
- key, err := crypto.GenerateKey()
|
|
|
|
|
- if err != nil {
|
|
|
|
|
- log.Fatalf("could not generate key: %v", err)
|
|
|
|
|
- }
|
|
|
|
|
- b := crypto.FromECDSA(key)
|
|
|
|
|
- if target == "-" {
|
|
|
|
|
- fmt.Println(hex.EncodeToString(b))
|
|
|
|
|
- } else {
|
|
|
|
|
- if err := ioutil.WriteFile(target, b, 0600); err != nil {
|
|
|
|
|
- log.Fatal("write error: ", err)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|