From 65c5a20e1c04c996f96f81cd959ab986b8482b6a Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 30 May 2014 16:56:56 +0200 Subject: Added config file setup. Fixes #59 * Also fixes asset path problems --- ethereum/config.go | 18 ++++++++---------- ethereum/ethereum.go | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) (limited to 'ethereum') diff --git a/ethereum/config.go b/ethereum/config.go index 5da910f2b..39dc11727 100644 --- a/ethereum/config.go +++ b/ethereum/config.go @@ -20,7 +20,6 @@ var UseSeed bool var ImportKey string var ExportKey bool var LogFile string -var DataDir string var NonInteractive bool var StartJsConsole bool var InputFile string @@ -31,22 +30,21 @@ func Init() { flag.PrintDefaults() } - flag.StringVar(&Identifier, "i", "", "custom client identifier") - flag.BoolVar(&StartMining, "m", false, "start dagger mining") - flag.BoolVar(&ShowGenesis, "g", false, "prints genesis header and exits") - flag.BoolVar(&StartRpc, "r", false, "start rpc server") + flag.StringVar(&Identifier, "id", "", "Custom client identifier") + flag.StringVar(&OutboundPort, "port", "30303", "listening port") + flag.BoolVar(&UseUPnP, "upnp", false, "enable UPnP support") + flag.IntVar(&MaxPeer, "maxpeer", 10, "maximum desired peers") flag.IntVar(&RpcPort, "rpcport", 8080, "port to start json-rpc server on") + flag.BoolVar(&StartRpc, "rpc", false, "start rpc server") + flag.BoolVar(&StartJsConsole, "js", false, "exp") + + flag.BoolVar(&StartMining, "mine", false, "start dagger mining") flag.BoolVar(&NonInteractive, "y", false, "non-interactive mode (say yes to confirmations)") - flag.BoolVar(&UseUPnP, "upnp", false, "enable UPnP support") flag.BoolVar(&UseSeed, "seed", true, "seed peers") flag.BoolVar(&GenAddr, "genaddr", false, "create a new priv/pub key") flag.BoolVar(&ExportKey, "export", false, "export private key") - flag.StringVar(&OutboundPort, "p", "30303", "listening port") flag.StringVar(&LogFile, "logfile", "", "log file (defaults to standard output)") - flag.StringVar(&DataDir, "dir", ".ethereum", "ethereum data directory") flag.StringVar(&ImportKey, "import", "", "imports the given private key (hex)") - flag.IntVar(&MaxPeer, "x", 10, "maximum desired peers") - flag.BoolVar(&StartJsConsole, "js", false, "exp") flag.Parse() diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 34bacb7b9..7bb668235 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -59,7 +59,7 @@ func main() { lt = ethutil.LogFile | ethutil.LogStd } - ethutil.ReadConfig(DataDir, lt, Identifier) + ethutil.ReadConfig(".ethereum", lt, Identifier) logger := ethutil.Config.Log -- cgit v1.2.3 From 0bdb0a9d58be08e210eb94dc6893f6103202ae7c Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 30 May 2014 19:36:05 +0200 Subject: Added ini file for ethereum. fixes #66 --- ethereum/ethereum.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'ethereum') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 7bb668235..ecbf04c9a 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -6,10 +6,12 @@ import ( "github.com/ethereum/eth-go/ethchain" "github.com/ethereum/eth-go/ethutil" "github.com/ethereum/go-ethereum/utils" + "github.com/rakyll/globalconf" "io/ioutil" "log" "os" "os/signal" + "path" "runtime" "strings" ) @@ -59,7 +61,15 @@ func main() { lt = ethutil.LogFile | ethutil.LogStd } - ethutil.ReadConfig(".ethereum", lt, Identifier) + g, err := globalconf.NewWithOptions(&globalconf.Options{ + Filename: path.Join(ethutil.ApplicationFolder(".ethereal"), "conf.ini"), + }) + if err != nil { + fmt.Println(err) + } else { + g.ParseAll() + } + ethutil.ReadConfig(".ethereum", lt, g, Identifier) logger := ethutil.Config.Log -- cgit v1.2.3 From 98811f11e5d7ccf6e053b46b9ca2ed897140ce47 Mon Sep 17 00:00:00 2001 From: obscuren Date: Sat, 31 May 2014 11:43:08 +0200 Subject: ethereum instead of ethereal. Fixes #69 --- ethereum/ethereum.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ethereum') diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index ecbf04c9a..56ea46122 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -62,7 +62,7 @@ func main() { } g, err := globalconf.NewWithOptions(&globalconf.Options{ - Filename: path.Join(ethutil.ApplicationFolder(".ethereal"), "conf.ini"), + Filename: path.Join(ethutil.ApplicationFolder(".ethereum"), "conf.ini"), }) if err != nil { fmt.Println(err) -- cgit v1.2.3 From a6f4eef1dadee9d8caa9b0ac20e2ce4a3034a100 Mon Sep 17 00:00:00 2001 From: Maran Date: Mon, 2 Jun 2014 15:16:37 +0200 Subject: Added Peer Window --- ethereum/repl.go | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'ethereum') diff --git a/ethereum/repl.go b/ethereum/repl.go index 10f51675e..e59814154 100644 --- a/ethereum/repl.go +++ b/ethereum/repl.go @@ -66,6 +66,10 @@ func (self *JSEthereum) GetBlock(hash string) otto.Value { return self.toVal(&JSBlock{self.PEthereum.GetBlock(hash), self}) } +func (self *JSEthereum) GetPeers() otto.Value { + return self.toVal(self.PEthereum.GetPeers()) +} + func (self *JSEthereum) GetKey() otto.Value { return self.toVal(self.PEthereum.GetKey()) } -- cgit v1.2.3 From 307fe4a3cd4ff2d3910ed992e6e98a7cd3ca6f87 Mon Sep 17 00:00:00 2001 From: Maran Date: Wed, 4 Jun 2014 12:19:50 +0200 Subject: Add loading of extra build in js files to JS-Repl. Implements #67 --- ethereum/javascript_runtime.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'ethereum') diff --git a/ethereum/javascript_runtime.go b/ethereum/javascript_runtime.go index 93297f604..b05d39232 100644 --- a/ethereum/javascript_runtime.go +++ b/ethereum/javascript_runtime.go @@ -10,6 +10,7 @@ import ( "github.com/obscuren/otto" "io/ioutil" "os" + "path" "path/filepath" ) @@ -25,6 +26,20 @@ type JSRE struct { objectCb map[string][]otto.Value } +func (jsre *JSRE) LoadExtFile(path string) { + result, err := ioutil.ReadFile(path) + if err == nil { + jsre.vm.Run(result) + } else { + ethutil.Config.Log.Debugln("Could not load file:", path) + } +} + +func (jsre *JSRE) LoadIntFile(file string) { + assetPath := path.Join(os.Getenv("GOPATH"), "src", "github.com", "ethereum", "go-ethereum", "ethereal", "assets", "ext") + jsre.LoadExtFile(path.Join(assetPath, file)) +} + func NewJSRE(ethereum *eth.Ethereum) *JSRE { re := &JSRE{ ethereum, @@ -39,6 +54,10 @@ func NewJSRE(ethereum *eth.Ethereum) *JSRE { // Init the JS lib re.vm.Run(jsLib) + // Load extra javascript files + re.LoadIntFile("string.js") + re.LoadIntFile("big.js") + // We have to make sure that, whoever calls this, calls "Stop" go re.mainLoop() -- cgit v1.2.3 From 7843390ecd52df37a28282d76be198d5456ce385 Mon Sep 17 00:00:00 2001 From: Maran Date: Wed, 4 Jun 2014 15:54:33 +0200 Subject: Implement getStateKeyVal for JS bindings. Gives JS the option to 'loop' over contract key/val storage --- ethereum/repl.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'ethereum') diff --git a/ethereum/repl.go b/ethereum/repl.go index e59814154..0208459ad 100644 --- a/ethereum/repl.go +++ b/ethereum/repl.go @@ -78,6 +78,10 @@ func (self *JSEthereum) GetStateObject(addr string) otto.Value { return self.toVal(self.PEthereum.GetStateObject(addr)) } +func (self *JSEthereum) GetStateKeyVals(addr string) otto.Value { + return self.toVal(self.PEthereum.GetStateObject(addr).StateKeyVal(false)) +} + func (self *JSEthereum) Transact(key, recipient, valueStr, gasStr, gasPriceStr, dataStr string) otto.Value { r, err := self.PEthereum.Transact(key, recipient, valueStr, gasStr, gasPriceStr, dataStr) if err != nil { @@ -105,7 +109,7 @@ func (self *JSEthereum) toVal(v interface{}) otto.Value { result, err := self.vm.ToValue(v) if err != nil { - fmt.Println(err) + fmt.Println("Value unknown:", err) return otto.UndefinedValue() } -- cgit v1.2.3 From e36badd744bc79c652deb3d45da1438982ec622a Mon Sep 17 00:00:00 2001 From: Maran Date: Wed, 11 Jun 2014 12:33:11 +0200 Subject: Reimplement -datadir flag. Implements #79 The config file is actually loaded from the folder that datadir points at --- ethereum/config.go | 4 ++++ ethereum/ethereum.go | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'ethereum') diff --git a/ethereum/config.go b/ethereum/config.go index 39dc11727..a80b47a8e 100644 --- a/ethereum/config.go +++ b/ethereum/config.go @@ -24,6 +24,8 @@ var NonInteractive bool var StartJsConsole bool var InputFile string +var Datadir string + func Init() { flag.Usage = func() { fmt.Fprintf(os.Stderr, "%s [options] [filename]:\n", os.Args[0]) @@ -46,6 +48,8 @@ func Init() { flag.StringVar(&LogFile, "logfile", "", "log file (defaults to standard output)") flag.StringVar(&ImportKey, "import", "", "imports the given private key (hex)") + flag.StringVar(&Datadir, "datadir", ".ethereum", "specifies the datadir to use. Takes precedence over config file.") + flag.Parse() InputFile = flag.Arg(0) diff --git a/ethereum/ethereum.go b/ethereum/ethereum.go index 56ea46122..179a3f462 100644 --- a/ethereum/ethereum.go +++ b/ethereum/ethereum.go @@ -62,14 +62,14 @@ func main() { } g, err := globalconf.NewWithOptions(&globalconf.Options{ - Filename: path.Join(ethutil.ApplicationFolder(".ethereum"), "conf.ini"), + Filename: path.Join(ethutil.ApplicationFolder(Datadir), "conf.ini"), }) if err != nil { fmt.Println(err) } else { g.ParseAll() } - ethutil.ReadConfig(".ethereum", lt, g, Identifier) + ethutil.ReadConfig(Datadir, lt, g, Identifier) logger := ethutil.Config.Log -- cgit v1.2.3