diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/geth/consolecmd_test.go | 6 | ||||
-rw-r--r-- | cmd/geth/main.go | 35 | ||||
-rw-r--r-- | cmd/geth/usage.go | 1 | ||||
-rw-r--r-- | cmd/utils/flags.go | 32 | ||||
-rw-r--r-- | cmd/utils/version.go | 64 |
5 files changed, 59 insertions, 79 deletions
diff --git a/cmd/geth/consolecmd_test.go b/cmd/geth/consolecmd_test.go index 3f09c0414..820e9d082 100644 --- a/cmd/geth/consolecmd_test.go +++ b/cmd/geth/consolecmd_test.go @@ -28,7 +28,7 @@ import ( "testing" "time" - "github.com/ethereum/go-ethereum/cmd/utils" + "github.com/ethereum/go-ethereum/params" "github.com/ethereum/go-ethereum/rpc" ) @@ -46,7 +46,7 @@ func TestConsoleWelcome(t *testing.T) { // Gather all the infos the welcome message needs to contain geth.setTemplateFunc("goos", func() string { return runtime.GOOS }) geth.setTemplateFunc("gover", runtime.Version) - geth.setTemplateFunc("gethver", func() string { return utils.Version }) + geth.setTemplateFunc("gethver", func() string { return params.Version }) geth.setTemplateFunc("niltime", func() string { return time.Unix(0, 0).Format(time.RFC1123) }) geth.setTemplateFunc("apis", func() []string { apis := append(strings.Split(rpc.DefaultIPCApis, ","), rpc.MetadataApi) @@ -132,7 +132,7 @@ func testAttachWelcome(t *testing.T, geth *testgeth, endpoint string) { // Gather all the infos the welcome message needs to contain attach.setTemplateFunc("goos", func() string { return runtime.GOOS }) attach.setTemplateFunc("gover", runtime.Version) - attach.setTemplateFunc("gethver", func() string { return utils.Version }) + attach.setTemplateFunc("gethver", func() string { return params.Version }) attach.setTemplateFunc("etherbase", func() string { return geth.Etherbase }) attach.setTemplateFunc("niltime", func() string { return time.Unix(0, 0).Format(time.RFC1123) }) attach.setTemplateFunc("ipc", func() bool { return strings.HasPrefix(endpoint, "ipc") }) diff --git a/cmd/geth/main.go b/cmd/geth/main.go index a275d8aa5..bcf9edbf0 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -40,6 +40,8 @@ import ( "github.com/ethereum/go-ethereum/logger/glog" "github.com/ethereum/go-ethereum/metrics" "github.com/ethereum/go-ethereum/node" + "github.com/ethereum/go-ethereum/params" + "github.com/ethereum/go-ethereum/rlp" "gopkg.in/urfave/cli.v1" ) @@ -173,6 +175,7 @@ participating. utils.VMEnableJitFlag, utils.NetworkIdFlag, utils.RPCCORSDomainFlag, + utils.EthStatsURLFlag, utils.MetricsEnabledFlag, utils.FakePoWFlag, utils.SolcPathFlag, @@ -254,8 +257,24 @@ func initGenesis(ctx *cli.Context) error { } func makeFullNode(ctx *cli.Context) *node.Node { + // Create the default extradata and construct the base node + var clientInfo = struct { + Version uint + Name string + GoVersion string + Os string + }{uint(params.VersionMajor<<16 | params.VersionMinor<<8 | params.VersionPatch), clientIdentifier, runtime.Version(), runtime.GOOS} + extra, err := rlp.EncodeToBytes(clientInfo) + if err != nil { + glog.V(logger.Warn).Infoln("error setting canonical miner information:", err) + } + if uint64(len(extra)) > params.MaximumExtraDataSize.Uint64() { + glog.V(logger.Warn).Infoln("error setting canonical miner information: extra exceeds", params.MaximumExtraDataSize) + glog.V(logger.Debug).Infof("extra: %x\n", extra) + extra = nil + } stack := utils.MakeNode(ctx, clientIdentifier, gitCommit) - utils.RegisterEthService(ctx, stack, utils.MakeDefaultExtraData(clientIdentifier)) + utils.RegisterEthService(ctx, stack, extra) // Whisper must be explicitly enabled, but is auto-enabled in --dev mode. shhEnabled := ctx.GlobalBool(utils.WhisperEnabledFlag.Name) @@ -263,14 +282,17 @@ func makeFullNode(ctx *cli.Context) *node.Node { if shhEnabled || shhAutoEnabled { utils.RegisterShhService(stack) } - + // Add the Ethereum Stats daemon if requested + if url := ctx.GlobalString(utils.EthStatsURLFlag.Name); url != "" { + utils.RegisterEthStatsService(stack, url) + } // Add the release oracle service so it boots along with node. if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) { config := release.Config{ Oracle: relOracle, - Major: uint32(utils.VersionMajor), - Minor: uint32(utils.VersionMinor), - Patch: uint32(utils.VersionPatch), + Major: uint32(params.VersionMajor), + Minor: uint32(params.VersionMinor), + Patch: uint32(params.VersionPatch), } commit, _ := hex.DecodeString(gitCommit) copy(config.Commit[:], commit) @@ -278,7 +300,6 @@ func makeFullNode(ctx *cli.Context) *node.Node { }); err != nil { utils.Fatalf("Failed to register the Geth release oracle service: %v", err) } - return stack } @@ -342,7 +363,7 @@ func makedag(ctx *cli.Context) error { func version(ctx *cli.Context) error { fmt.Println(strings.Title(clientIdentifier)) - fmt.Println("Version:", utils.Version) + fmt.Println("Version:", params.Version) if gitCommit != "" { fmt.Println("Git Commit:", gitCommit) } diff --git a/cmd/geth/usage.go b/cmd/geth/usage.go index e4abf6b30..50c742e7c 100644 --- a/cmd/geth/usage.go +++ b/cmd/geth/usage.go @@ -161,6 +161,7 @@ var AppHelpFlagGroups = []flagGroup{ { Name: "LOGGING AND DEBUGGING", Flags: append([]cli.Flag{ + utils.EthStatsURLFlag, utils.MetricsEnabledFlag, utils.FakePoWFlag, }, debug.Flags...), diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index 5c09e44ec..cb91f4539 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -14,6 +14,7 @@ // You should have received a copy of the GNU General Public License // along with go-ethereum. If not, see <http://www.gnu.org/licenses/>. +// Package utils contains internal helper functions for go-ethereum commands. package utils import ( @@ -36,6 +37,7 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/eth" "github.com/ethereum/go-ethereum/ethdb" + "github.com/ethereum/go-ethereum/ethstats" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/les" "github.com/ethereum/go-ethereum/logger" @@ -86,7 +88,7 @@ func NewApp(gitCommit, usage string) *cli.App { app.Author = "" //app.Authors = nil app.Email = "" - app.Version = Version + app.Version = params.Version if gitCommit != "" { app.Version += "-" + gitCommit[:8] } @@ -242,8 +244,11 @@ var ( Name: "jitvm", Usage: "Enable the JIT VM", } - - // logging and debug settings + // Logging and debug settings + EthStatsURLFlag = cli.StringFlag{ + Name: "ethstats", + Usage: "Reporting URL of a ethstats service (nodename:secret@host:port)", + } MetricsEnabledFlag = cli.BoolFlag{ Name: metrics.MetricsEnabledFlag, Usage: "Enable metrics collection and reporting", @@ -660,7 +665,7 @@ func MakePasswordList(ctx *cli.Context) []string { // MakeNode configures a node with no services from command line flags. func MakeNode(ctx *cli.Context, name, gitCommit string) *node.Node { - vsn := Version + vsn := params.Version if gitCommit != "" { vsn += "-" + gitCommit[:8] } @@ -801,13 +806,30 @@ func RegisterEthService(ctx *cli.Context, stack *node.Node, extra []byte) { } } -// RegisterShhService configures whisper and adds it to the given node. +// RegisterShhService configures Whisper and adds it to the given node. func RegisterShhService(stack *node.Node) { if err := stack.Register(func(*node.ServiceContext) (node.Service, error) { return whisper.New(), nil }); err != nil { Fatalf("Failed to register the Whisper service: %v", err) } } +// RegisterEthStatsService configures the Ethereum Stats daemon and adds it to +// th egiven node. +func RegisterEthStatsService(stack *node.Node, url string) { + if err := stack.Register(func(ctx *node.ServiceContext) (node.Service, error) { + // Retrieve both eth and les services + var ethServ *eth.Ethereum + ctx.Service(ðServ) + + var lesServ *les.LightEthereum + ctx.Service(&lesServ) + + return ethstats.New(url, ethServ, lesServ) + }); err != nil { + Fatalf("Failed to register the Ethereum Stats service: %v", err) + } +} + // SetupNetwork configures the system for either the main net or some test network. func SetupNetwork(ctx *cli.Context) { switch { diff --git a/cmd/utils/version.go b/cmd/utils/version.go deleted file mode 100644 index 3070d10b5..000000000 --- a/cmd/utils/version.go +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright 2016 The go-ethereum Authors -// This file is part of go-ethereum. -// -// go-ethereum is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// go-ethereum is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with go-ethereum. If not, see <http://www.gnu.org/licenses/>. - -// Package utils contains internal helper functions for go-ethereum commands. -package utils - -import ( - "fmt" - "runtime" - - "github.com/ethereum/go-ethereum/logger" - "github.com/ethereum/go-ethereum/logger/glog" - "github.com/ethereum/go-ethereum/params" - "github.com/ethereum/go-ethereum/rlp" -) - -const ( - VersionMajor = 1 // Major version component of the current release - VersionMinor = 5 // Minor version component of the current release - VersionPatch = 4 // Patch version component of the current release - VersionMeta = "unstable" // Version metadata to append to the version string -) - -// Version holds the textual version string. -var Version = func() string { - v := fmt.Sprintf("%d.%d.%d", VersionMajor, VersionMinor, VersionPatch) - if VersionMeta != "" { - v += "-" + VersionMeta - } - return v -}() - -// MakeDefaultExtraData returns the default Ethereum block extra data blob. -func MakeDefaultExtraData(clientIdentifier string) []byte { - var clientInfo = struct { - Version uint - Name string - GoVersion string - Os string - }{uint(VersionMajor<<16 | VersionMinor<<8 | VersionPatch), clientIdentifier, runtime.Version(), runtime.GOOS} - extra, err := rlp.EncodeToBytes(clientInfo) - if err != nil { - glog.V(logger.Warn).Infoln("error setting canonical miner information:", err) - } - if uint64(len(extra)) > params.MaximumExtraDataSize.Uint64() { - glog.V(logger.Warn).Infoln("error setting canonical miner information: extra exceeds", params.MaximumExtraDataSize) - glog.V(logger.Debug).Infof("extra: %x\n", extra) - return nil - } - return extra -} |