aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
Diffstat (limited to 'cmd')
-rw-r--r--cmd/geth/consolecmd_test.go6
-rw-r--r--cmd/geth/main.go35
-rw-r--r--cmd/geth/usage.go1
-rw-r--r--cmd/utils/flags.go32
-rw-r--r--cmd/utils/version.go64
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(&ethServ)
+
+ 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
-}