added API/IPC commandline flags
This commit is contained in:
		
							parent
							
								
									8ebf2d8fad
								
							
						
					
					
						commit
						2a0d888326
					
				| @ -239,6 +239,9 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso | ||||
| 		utils.RPCEnabledFlag, | ||||
| 		utils.RPCListenAddrFlag, | ||||
| 		utils.RPCPortFlag, | ||||
| 		utils.IPCDisabledFlag, | ||||
| 		utils.IPCApiFlag, | ||||
| 		utils.IPCPathFlag, | ||||
| 		utils.WhisperEnabledFlag, | ||||
| 		utils.VMDebugFlag, | ||||
| 		utils.ProtocolVersionFlag, | ||||
| @ -382,6 +385,11 @@ func startEth(ctx *cli.Context, eth *eth.Ethereum) { | ||||
| 		} | ||||
| 	} | ||||
| 	// Start auxiliary services if enabled.
 | ||||
| 	if !ctx.GlobalBool(utils.IPCDisabledFlag.Name) { | ||||
| 		if err := utils.StartIPC(eth, ctx); err != nil { | ||||
| 			utils.Fatalf("Error string IPC: %v", err) | ||||
| 		} | ||||
| 	} | ||||
| 	if ctx.GlobalBool(utils.RPCEnabledFlag.Name) { | ||||
| 		if err := utils.StartRPC(eth, ctx); err != nil { | ||||
| 			utils.Fatalf("Error starting RPC: %v", err) | ||||
|  | ||||
| @ -24,6 +24,9 @@ import ( | ||||
| 	"github.com/ethereum/go-ethereum/p2p/nat" | ||||
| 	"github.com/ethereum/go-ethereum/rpc" | ||||
| 	"github.com/ethereum/go-ethereum/xeth" | ||||
| 	"github.com/ethereum/go-ethereum/rpc/api" | ||||
| 	"github.com/ethereum/go-ethereum/rpc/comms" | ||||
| 	"github.com/ethereum/go-ethereum/rpc/codec" | ||||
| ) | ||||
| 
 | ||||
| func init() { | ||||
| @ -206,6 +209,20 @@ var ( | ||||
| 		Usage: "Domain on which to send Access-Control-Allow-Origin header", | ||||
| 		Value: "", | ||||
| 	} | ||||
| 	IPCDisabledFlag = cli.BoolFlag{ | ||||
| 		Name:  "ipcdisable", | ||||
| 		Usage: "Disable the IPC-RPC server", | ||||
| 	} | ||||
| 	IPCApiFlag = cli.StringFlag{ | ||||
| 		Name:  "ipcapi", | ||||
| 		Usage: "Specify the API's which are offered over this interface", | ||||
| 		Value: api.DefaultIpcApis, | ||||
| 	} | ||||
| 	IPCPathFlag = DirectoryFlag{ | ||||
| 		Name:  "ipcpath", | ||||
| 		Usage: "Filename for IPC socket/pipe", | ||||
| 		Value: DirectoryString{common.DefaultIpcPath()}, | ||||
| 	} | ||||
| 	// Network Settings
 | ||||
| 	MaxPeersFlag = cli.IntFlag{ | ||||
| 		Name:  "maxpeers", | ||||
| @ -368,6 +385,22 @@ func MakeAccountManager(ctx *cli.Context) *accounts.Manager { | ||||
| 	return accounts.NewManager(ks) | ||||
| } | ||||
| 
 | ||||
| func StartIPC(eth *eth.Ethereum, ctx *cli.Context) error { | ||||
| 	config := comms.IpcConfig{ | ||||
| 		Endpoint: ctx.GlobalString(IPCPathFlag.Name), | ||||
| 	} | ||||
| 
 | ||||
| 	xeth := xeth.New(eth, nil) | ||||
| 	codec := codec.JSON | ||||
| 
 | ||||
| 	apis, err := api.ParseApiString(ctx.GlobalString(IPCApiFlag.Name), codec, xeth, eth) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	return comms.StartIpc(config, codec, apis...) | ||||
| } | ||||
| 
 | ||||
| func StartRPC(eth *eth.Ethereum, ctx *cli.Context) error { | ||||
| 	config := rpc.RpcConfig{ | ||||
| 		ListenAddress: ctx.GlobalString(RPCListenAddrFlag.Name), | ||||
|  | ||||
| @ -94,6 +94,10 @@ func DefaultDataDir() string { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func DefaultIpcPath() string { | ||||
| 	return filepath.Join(DefaultDataDir(), "geth.ipc") | ||||
| } | ||||
| 
 | ||||
| func IsWindows() bool { | ||||
| 	return runtime.GOOS == "windows" | ||||
| } | ||||
|  | ||||
| @ -2,6 +2,11 @@ package api | ||||
| 
 | ||||
| import "github.com/ethereum/go-ethereum/rpc/shared" | ||||
| 
 | ||||
| const ( | ||||
| 	// List with all API's which are offered over the IPC interface by default
 | ||||
| 	DefaultIpcApis = "eth" | ||||
| ) | ||||
| 
 | ||||
| // Ethereum RPC API interface
 | ||||
| type EthereumApi interface { | ||||
| 	// Execute the given request and returns the response or an error
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user