Merge pull request #13 from status-im/rpc-flags

rpc flags added to the start up context
This commit is contained in:
Jarrad 2016-07-07 10:04:53 +02:00 committed by GitHub
commit 00ce499215
4 changed files with 89 additions and 6 deletions

View File

@ -10,11 +10,11 @@ fi
# Create fake Go workspace if it doesn't exist yet. # Create fake Go workspace if it doesn't exist yet.
workspace="$PWD/build/_workspace" workspace="$PWD/build/_workspace"
root="$PWD" root="$PWD"
ethdir="$workspace/src/github.com/ethereum" ethdir="$workspace/src/github.com/status-im"
if [ ! -L "$ethdir/go-ethereum" ]; then if [ ! -L "$ethdir/status-go" ]; then
mkdir -p "$ethdir" mkdir -p "$ethdir"
cd "$ethdir" cd "$ethdir"
ln -s ../../../../../. go-ethereum ln -s ../../../../../. status-go
cd "$root" cd "$root"
fi fi
@ -25,8 +25,8 @@ GOBIN="$PWD/build/bin"
export GOPATH GOBIN export GOPATH GOBIN
# Run the command inside the workspace. # Run the command inside the workspace.
cd "$ethdir/go-ethereum" cd "$ethdir/status-go"
PWD="$ethdir/go-ethereum" PWD="$ethdir/status-go"
# Launch the arguments with the configured environment. # Launch the arguments with the configured environment.
exec "$@" exec "$@"

59
src/jail.go Normal file
View File

@ -0,0 +1,59 @@
package main
import (
"github.com/robertkrimen/otto"
"fmt"
"encoding/json"
)
var statusJs string
var vms = make(map[string]*otto.Otto)
func Init(js string) {
statusJs = js
}
func printError(error string) string {
str := JSONError{
Error: error,
}
outBytes, _ := json.Marshal(&str)
return string(outBytes)
}
func printResult(res string, err error) string {
var out string
if err != nil {
out = printError(err.Error())
} else {
if "undefined" == res {
res = "null";
}
out = fmt.Sprintf(`{"result": %s}`, res)
}
return out
}
func Parse(chatId string, js string) string {
vm := otto.New()
jjs := statusJs + js + `
var catalog = JSON.stringify(_status_catalog);
`
vms[chatId] = vm
_, err := vm.Run(jjs)
res, _ := vm.Get("catalog")
return printResult(res.String(), err)
}
func Call(chatId string, path string, args string) string {
vm, ok := vms[chatId]
if !ok {
return printError(fmt.Sprintf("Vm[%s] doesn't exist.", chatId))
}
res, err := vm.Call("call", nil, path, args)
return printResult(res.String(), err);
}

View File

@ -81,3 +81,20 @@ func StartNode(datadir *C.char) *C.char {
return C.CString(string(outBytes)) return C.CString(string(outBytes))
} }
//export parse
func parse(chatId *C.char, js *C.char) *C.char {
res := Parse(C.GoString(chatId), C.GoString(js))
return C.CString(res)
}
//export call
func call(chatId *C.char, path *C.char, params *C.char) *C.char {
res := Call(C.GoString(chatId), C.GoString(path), C.GoString(params))
return C.CString(res)
}
//export initJail
func initJail(js *C.char) {
Init(C.GoString(js))
}

View File

@ -39,14 +39,21 @@ func main() {
// Placeholder for anything we want to run by default // Placeholder for anything we want to run by default
fmt.Println("You are running statusgo!") fmt.Println("You are running statusgo!")
createAndStartNode(".ethereum")
} }
// MakeNode create a geth node entity // MakeNode create a geth node entity
func MakeNode(datadir string) *node.Node { func MakeNode(datadir string) *node.Node {
// TODO remove admin rpcapi flag
set := flag.NewFlagSet("test", 0) set := flag.NewFlagSet("test", 0)
set.Bool("shh", true, "whisper") set.Bool("shh", true, "whisper")
set.Bool("noeth", true, "disable eth") set.Bool("noeth", true, "disable eth")
set.Bool("rpc", true, "enable rpc")
set.String("rpcaddr", "localhost", "host for RPC")
set.String("rpcport", "8545", "rpc port")
set.String("rpcapi", "db,eth,net,web3,shh,admin", "rpc api(s)")
set.String("datadir", datadir, "data directory for geth") set.String("datadir", datadir, "data directory for geth")
set.String("logdir", datadir, "log dir for glog") set.String("logdir", datadir, "log dir for glog")
c = cli.NewContext(nil, set, nil) c = cli.NewContext(nil, set, nil)