added API/IPC commandline flags
This commit is contained in:
		
				
					committed by
					
						
						Bas van Kervel
					
				
			
			
				
	
			
			
			
						parent
						
							8ebf2d8fad
						
					
				
				
					commit
					2a0d888326
				
			@@ -239,6 +239,9 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso
 | 
				
			|||||||
		utils.RPCEnabledFlag,
 | 
							utils.RPCEnabledFlag,
 | 
				
			||||||
		utils.RPCListenAddrFlag,
 | 
							utils.RPCListenAddrFlag,
 | 
				
			||||||
		utils.RPCPortFlag,
 | 
							utils.RPCPortFlag,
 | 
				
			||||||
 | 
							utils.IPCDisabledFlag,
 | 
				
			||||||
 | 
							utils.IPCApiFlag,
 | 
				
			||||||
 | 
							utils.IPCPathFlag,
 | 
				
			||||||
		utils.WhisperEnabledFlag,
 | 
							utils.WhisperEnabledFlag,
 | 
				
			||||||
		utils.VMDebugFlag,
 | 
							utils.VMDebugFlag,
 | 
				
			||||||
		utils.ProtocolVersionFlag,
 | 
							utils.ProtocolVersionFlag,
 | 
				
			||||||
@@ -382,6 +385,11 @@ func startEth(ctx *cli.Context, eth *eth.Ethereum) {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	// Start auxiliary services if enabled.
 | 
						// 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 ctx.GlobalBool(utils.RPCEnabledFlag.Name) {
 | 
				
			||||||
		if err := utils.StartRPC(eth, ctx); err != nil {
 | 
							if err := utils.StartRPC(eth, ctx); err != nil {
 | 
				
			||||||
			utils.Fatalf("Error starting RPC: %v", err)
 | 
								utils.Fatalf("Error starting RPC: %v", err)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,6 +24,9 @@ import (
 | 
				
			|||||||
	"github.com/ethereum/go-ethereum/p2p/nat"
 | 
						"github.com/ethereum/go-ethereum/p2p/nat"
 | 
				
			||||||
	"github.com/ethereum/go-ethereum/rpc"
 | 
						"github.com/ethereum/go-ethereum/rpc"
 | 
				
			||||||
	"github.com/ethereum/go-ethereum/xeth"
 | 
						"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() {
 | 
					func init() {
 | 
				
			||||||
@@ -206,6 +209,20 @@ var (
 | 
				
			|||||||
		Usage: "Domain on which to send Access-Control-Allow-Origin header",
 | 
							Usage: "Domain on which to send Access-Control-Allow-Origin header",
 | 
				
			||||||
		Value: "",
 | 
							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
 | 
						// Network Settings
 | 
				
			||||||
	MaxPeersFlag = cli.IntFlag{
 | 
						MaxPeersFlag = cli.IntFlag{
 | 
				
			||||||
		Name:  "maxpeers",
 | 
							Name:  "maxpeers",
 | 
				
			||||||
@@ -368,6 +385,22 @@ func MakeAccountManager(ctx *cli.Context) *accounts.Manager {
 | 
				
			|||||||
	return accounts.NewManager(ks)
 | 
						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 {
 | 
					func StartRPC(eth *eth.Ethereum, ctx *cli.Context) error {
 | 
				
			||||||
	config := rpc.RpcConfig{
 | 
						config := rpc.RpcConfig{
 | 
				
			||||||
		ListenAddress: ctx.GlobalString(RPCListenAddrFlag.Name),
 | 
							ListenAddress: ctx.GlobalString(RPCListenAddrFlag.Name),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -94,6 +94,10 @@ func DefaultDataDir() string {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func DefaultIpcPath() string {
 | 
				
			||||||
 | 
						return filepath.Join(DefaultDataDir(), "geth.ipc")
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func IsWindows() bool {
 | 
					func IsWindows() bool {
 | 
				
			||||||
	return runtime.GOOS == "windows"
 | 
						return runtime.GOOS == "windows"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,11 @@ package api
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import "github.com/ethereum/go-ethereum/rpc/shared"
 | 
					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
 | 
					// Ethereum RPC API interface
 | 
				
			||||||
type EthereumApi interface {
 | 
					type EthereumApi interface {
 | 
				
			||||||
	// Execute the given request and returns the response or an error
 | 
						// Execute the given request and returns the response or an error
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user