Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
a3cd2187
Commit
a3cd2187
authored
10 years ago
by
Felix Lange
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cmd/mist, cmd/ethereum: add CLI arguments for node key
parent
0c7df373
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
72 additions
and
16 deletions
+72
-16
flags.go
cmd/ethereum/flags.go
+32
-7
main.go
cmd/ethereum/main.go
+1
-0
flags.go
cmd/mist/flags.go
+28
-6
main.go
cmd/mist/main.go
+1
-0
backend.go
eth/backend.go
+10
-3
No files found.
cmd/ethereum/flags.go
View file @
a3cd2187
...
...
@@ -21,6 +21,7 @@
package
main
import
(
"crypto/ecdsa"
"flag"
"fmt"
"log"
...
...
@@ -28,6 +29,7 @@ import (
"os/user"
"path"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/vm"
)
...
...
@@ -50,6 +52,7 @@ var (
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
SecretFile
string
ExportDir
string
NonInteractive
bool
...
...
@@ -83,6 +86,7 @@ func defaultDataDir() string {
var
defaultConfigFile
=
path
.
Join
(
defaultDataDir
(),
"conf.ini"
)
func
Init
()
{
// TODO: move common flag processing to cmd/util
flag
.
Usage
=
func
()
{
fmt
.
Fprintf
(
os
.
Stderr
,
"%s [options] [filename]:
\n
options precedence: default < config file < environment variables < command line
\n
"
,
os
.
Args
[
0
])
flag
.
PrintDefaults
()
...
...
@@ -92,18 +96,12 @@ func Init() {
flag
.
StringVar
(
&
Identifier
,
"id"
,
""
,
"Custom client identifier"
)
flag
.
StringVar
(
&
KeyRing
,
"keyring"
,
""
,
"identifier for keyring to use"
)
flag
.
StringVar
(
&
KeyStore
,
"keystore"
,
"db"
,
"system to store keyrings: db|file (db)"
)
flag
.
StringVar
(
&
OutboundPort
,
"port"
,
"30303"
,
"listening port"
)
flag
.
StringVar
(
&
NatType
,
"nat"
,
""
,
"NAT support (UPNP|PMP) (none)"
)
flag
.
StringVar
(
&
PMPGateway
,
"pmp"
,
""
,
"Gateway IP for PMP"
)
flag
.
IntVar
(
&
MaxPeer
,
"maxpeer"
,
30
,
"maximum desired peers"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8545
,
"port to start json-rpc server on"
)
flag
.
IntVar
(
&
WsPort
,
"wsport"
,
40404
,
"port to start websocket rpc server on"
)
flag
.
BoolVar
(
&
StartRpc
,
"rpc"
,
false
,
"start rpc server"
)
flag
.
BoolVar
(
&
StartWebSockets
,
"ws"
,
false
,
"start websocket server"
)
flag
.
BoolVar
(
&
NonInteractive
,
"y"
,
false
,
"non-interactive mode (say yes to confirmations)"
)
flag
.
StringVar
(
&
BootNodes
,
"bootnodes"
,
""
,
"space-separated node URLs for discovery bootstrap"
)
flag
.
BoolVar
(
&
SHH
,
"shh"
,
true
,
"whisper protocol (on)"
)
flag
.
BoolVar
(
&
Dial
,
"dial"
,
true
,
"dial out connections (on)"
)
flag
.
BoolVar
(
&
GenAddr
,
"genaddr"
,
false
,
"create a new priv/pub key"
)
flag
.
StringVar
(
&
SecretFile
,
"import"
,
""
,
"imports the file given (hex or mnemonic formats)"
)
flag
.
StringVar
(
&
ExportDir
,
"export"
,
""
,
"exports the session keyring to files in the directory given"
)
...
...
@@ -125,8 +123,35 @@ func Init() {
flag
.
BoolVar
(
&
StartJsConsole
,
"js"
,
false
,
"launches javascript console"
)
flag
.
BoolVar
(
&
PrintVersion
,
"version"
,
false
,
"prints version number"
)
// Network stuff
var
(
nodeKeyFile
=
flag
.
String
(
"nodekey"
,
""
,
"network private key file"
)
nodeKeyHex
=
flag
.
String
(
"nodekeyhex"
,
""
,
"network private key (for testing)"
)
)
flag
.
BoolVar
(
&
Dial
,
"dial"
,
true
,
"dial out connections (default on)"
)
flag
.
BoolVar
(
&
SHH
,
"shh"
,
true
,
"run whisper protocol (default on)"
)
flag
.
StringVar
(
&
OutboundPort
,
"port"
,
"30303"
,
"listening port"
)
flag
.
StringVar
(
&
NatType
,
"nat"
,
""
,
"NAT support (UPNP|PMP) (none)"
)
flag
.
StringVar
(
&
PMPGateway
,
"pmp"
,
""
,
"Gateway IP for NAT-PMP"
)
flag
.
StringVar
(
&
BootNodes
,
"bootnodes"
,
""
,
"space-separated node URLs for discovery bootstrap"
)
flag
.
IntVar
(
&
MaxPeer
,
"maxpeer"
,
30
,
"maximum desired peers"
)
flag
.
Parse
()
var
err
error
switch
{
case
*
nodeKeyFile
!=
""
&&
*
nodeKeyHex
!=
""
:
log
.
Fatal
(
"Options -nodekey and -nodekeyhex are mutually exclusive"
)
case
*
nodeKeyFile
!=
""
:
if
NodeKey
,
err
=
crypto
.
LoadECDSA
(
*
nodeKeyFile
);
err
!=
nil
{
log
.
Fatalf
(
"-nodekey: %v"
,
err
)
}
case
*
nodeKeyHex
!=
""
:
if
NodeKey
,
err
=
crypto
.
HexToECDSA
(
*
nodeKeyHex
);
err
!=
nil
{
log
.
Fatalf
(
"-nodekeyhex: %v"
,
err
)
}
}
if
VmType
>=
int
(
vm
.
MaxVmTy
)
{
log
.
Fatal
(
"Invalid VM type "
,
VmType
)
}
...
...
This diff is collapsed.
Click to expand it.
cmd/ethereum/main.go
View file @
a3cd2187
...
...
@@ -75,6 +75,7 @@ func main() {
Shh
:
SHH
,
Dial
:
Dial
,
BootNodes
:
BootNodes
,
NodeKey
:
NodeKey
,
})
if
err
!=
nil
{
...
...
This diff is collapsed.
Click to expand it.
cmd/mist/flags.go
View file @
a3cd2187
...
...
@@ -21,6 +21,7 @@
package
main
import
(
"crypto/ecdsa"
"flag"
"fmt"
"log"
...
...
@@ -31,6 +32,7 @@ import (
"runtime"
"bitbucket.org/kardianos/osext"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/logger"
"github.com/ethereum/go-ethereum/vm"
)
...
...
@@ -44,7 +46,6 @@ var (
StartWebSockets
bool
RpcPort
int
WsPort
int
UseUPnP
bool
NatType
string
OutboundPort
string
ShowGenesis
bool
...
...
@@ -52,6 +53,7 @@ var (
MaxPeer
int
GenAddr
bool
BootNodes
string
NodeKey
*
ecdsa
.
PrivateKey
SecretFile
string
ExportDir
string
NonInteractive
bool
...
...
@@ -99,6 +101,7 @@ func defaultDataDir() string {
var
defaultConfigFile
=
path
.
Join
(
defaultDataDir
(),
"conf.ini"
)
func
Init
()
{
// TODO: move common flag processing to cmd/utils
flag
.
Usage
=
func
()
{
fmt
.
Fprintf
(
os
.
Stderr
,
"%s [options] [filename]:
\n
options precedence: default < config file < environment variables < command line
\n
"
,
os
.
Args
[
0
])
flag
.
PrintDefaults
()
...
...
@@ -108,30 +111,49 @@ func Init() {
flag
.
StringVar
(
&
Identifier
,
"id"
,
""
,
"Custom client identifier"
)
flag
.
StringVar
(
&
KeyRing
,
"keyring"
,
""
,
"identifier for keyring to use"
)
flag
.
StringVar
(
&
KeyStore
,
"keystore"
,
"db"
,
"system to store keyrings: db|file (db)"
)
flag
.
StringVar
(
&
OutboundPort
,
"port"
,
"30303"
,
"listening port"
)
flag
.
BoolVar
(
&
UseUPnP
,
"upnp"
,
true
,
"enable UPnP support"
)
flag
.
IntVar
(
&
MaxPeer
,
"maxpeer"
,
30
,
"maximum desired peers"
)
flag
.
IntVar
(
&
RpcPort
,
"rpcport"
,
8545
,
"port to start json-rpc server on"
)
flag
.
IntVar
(
&
WsPort
,
"wsport"
,
40404
,
"port to start websocket rpc server on"
)
flag
.
BoolVar
(
&
StartRpc
,
"rpc"
,
true
,
"start rpc server"
)
flag
.
BoolVar
(
&
StartWebSockets
,
"ws"
,
false
,
"start websocket server"
)
flag
.
BoolVar
(
&
NonInteractive
,
"y"
,
false
,
"non-interactive mode (say yes to confirmations)"
)
flag
.
StringVar
(
&
BootNodes
,
"bootnodes"
,
""
,
"space-separated node URLs for discovery bootstrap"
)
flag
.
BoolVar
(
&
GenAddr
,
"genaddr"
,
false
,
"create a new priv/pub key"
)
flag
.
StringVar
(
&
NatType
,
"nat"
,
""
,
"NAT support (UPNP|PMP) (none)"
)
flag
.
StringVar
(
&
SecretFile
,
"import"
,
""
,
"imports the file given (hex or mnemonic formats)"
)
flag
.
StringVar
(
&
ExportDir
,
"export"
,
""
,
"exports the session keyring to files in the directory given"
)
flag
.
StringVar
(
&
LogFile
,
"logfile"
,
""
,
"log file (defaults to standard output)"
)
flag
.
StringVar
(
&
Datadir
,
"datadir"
,
defaultDataDir
(),
"specifies the datadir to use"
)
flag
.
StringVar
(
&
PMPGateway
,
"pmp"
,
""
,
"Gateway IP for PMP"
)
flag
.
StringVar
(
&
ConfigFile
,
"conf"
,
defaultConfigFile
,
"config file"
)
flag
.
StringVar
(
&
DebugFile
,
"debug"
,
""
,
"debug file (no debugging if not set)"
)
flag
.
IntVar
(
&
LogLevel
,
"loglevel"
,
int
(
logger
.
InfoLevel
),
"loglevel: 0-5: silent,error,warn,info,debug,debug detail)"
)
flag
.
StringVar
(
&
AssetPath
,
"asset_path"
,
defaultAssetPath
(),
"absolute path to GUI assets directory"
)
// Network stuff
var
(
nodeKeyFile
=
flag
.
String
(
"nodekey"
,
""
,
"network private key file"
)
nodeKeyHex
=
flag
.
String
(
"nodekeyhex"
,
""
,
"network private key (for testing)"
)
)
flag
.
StringVar
(
&
OutboundPort
,
"port"
,
"30303"
,
"listening port"
)
flag
.
StringVar
(
&
PMPGateway
,
"pmp"
,
""
,
"Gateway IP for NAT-PMP"
)
flag
.
StringVar
(
&
BootNodes
,
"bootnodes"
,
""
,
"space-separated node URLs for discovery bootstrap"
)
flag
.
IntVar
(
&
MaxPeer
,
"maxpeer"
,
30
,
"maximum desired peers"
)
flag
.
Parse
()
var
err
error
switch
{
case
*
nodeKeyFile
!=
""
&&
*
nodeKeyHex
!=
""
:
log
.
Fatal
(
"Options -nodekey and -nodekeyhex are mutually exclusive"
)
case
*
nodeKeyFile
!=
""
:
if
NodeKey
,
err
=
crypto
.
LoadECDSA
(
*
nodeKeyFile
);
err
!=
nil
{
log
.
Fatalf
(
"-nodekey: %v"
,
err
)
}
case
*
nodeKeyHex
!=
""
:
if
NodeKey
,
err
=
crypto
.
HexToECDSA
(
*
nodeKeyHex
);
err
!=
nil
{
log
.
Fatalf
(
"-nodekeyhex: %v"
,
err
)
}
}
if
VmType
>=
int
(
vm
.
MaxVmTy
)
{
log
.
Fatal
(
"Invalid VM type "
,
VmType
)
}
...
...
This diff is collapsed.
Click to expand it.
cmd/mist/main.go
View file @
a3cd2187
...
...
@@ -62,6 +62,7 @@ func run() error {
NATType
:
NatType
,
PMPGateway
:
PMPGateway
,
BootNodes
:
BootNodes
,
NodeKey
:
NodeKey
,
KeyRing
:
KeyRing
,
Dial
:
true
,
})
...
...
This diff is collapsed.
Click to expand it.
eth/backend.go
View file @
a3cd2187
package
eth
import
(
"crypto/ecdsa"
"fmt"
"strings"
"sync"
...
...
@@ -37,6 +38,10 @@ type Config struct {
// discovery node URLs.
BootNodes
string
// This key is used to identify the node on the network.
// If nil, an ephemeral key is used.
NodeKey
*
ecdsa
.
PrivateKey
Shh
bool
Dial
bool
...
...
@@ -150,9 +155,11 @@ func New(config *Config) (*Ethereum, error) {
if
err
!=
nil
{
return
nil
,
err
}
netprv
,
err
:=
crypto
.
GenerateKey
()
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"could not generate server key: %v"
,
err
)
netprv
:=
config
.
NodeKey
if
netprv
==
nil
{
if
netprv
,
err
=
crypto
.
GenerateKey
();
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"could not generate server key: %v"
,
err
)
}
}
eth
.
net
=
&
p2p
.
Server
{
PrivateKey
:
netprv
,
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment