From 8adb2f2b1cfa0f8eebdeb50854b264eecf9fbeb7 Mon Sep 17 00:00:00 2001 From: renaynay <41963722+renaynay@users.noreply.github.com> Date: Wed, 25 Mar 2020 14:50:55 +0100 Subject: [PATCH 1/3] updating retesteth.go to remove adding the ws handler --- cmd/geth/retesteth.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/cmd/geth/retesteth.go b/cmd/geth/retesteth.go index 43cb8191fb..23f9d3fbcd 100644 --- a/cmd/geth/retesteth.go +++ b/cmd/geth/retesteth.go @@ -887,12 +887,10 @@ func retesteth(ctx *cli.Context) error { } vhosts := splitAndTrim(ctx.GlobalString(utils.RPCVirtualHostsFlag.Name)) cors := splitAndTrim(ctx.GlobalString(utils.RPCCORSDomainFlag.Name)) - wsOrigins := splitAndTrim(ctx.GlobalString(utils.WSAllowedOriginsFlag.Value)) srv := rpc.NewServer() handler := rpc.NewHTTPHandlerStack(srv, cors, vhosts) - handler = rpc.NewWebsocketUpgradeHandler(handler, srv.WebsocketHandler(wsOrigins)) // start http server var RetestethHTTPTimeouts = rpc.HTTPTimeouts{ From 74cd4f2fd01e08c3f309ac2369be7d199a52004e Mon Sep 17 00:00:00 2001 From: renaynay <41963722+renaynay@users.noreply.github.com> Date: Wed, 25 Mar 2020 15:28:09 +0100 Subject: [PATCH 2/3] dont overwrite registering apis --- node/node.go | 8 ++++++-- rpc/endpoints.go | 10 +++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/node/node.go b/node/node.go index 52ac182ca7..7ac643b035 100644 --- a/node/node.go +++ b/node/node.go @@ -372,7 +372,7 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors srv := rpc.NewServer() - err := RegisterApisFromWhitelist(apis, modules, srv) + err := registerApisFromWhitelist(apis, modules, srv) var ws http.Handler if n.httpEndpoint == n.wsEndpoint { @@ -697,7 +697,11 @@ func (n *Node) apis() []rpc.API { } } -func RegisterApisFromWhitelist(apis []rpc.API, modules []string, srv *rpc.Server) error { +func registerApisFromWhitelist(apis []rpc.API, modules []string, srv *rpc.Server) error { + if bad, available := rpc.CheckModuleAvailability(modules, apis); len(bad) > 0 { + log.Error("Unavailable modules in HTTP API list", "unavailable", bad, "available", available) + } + // Generate the whitelist based on the allowed modules whitelist := make(map[string]bool) for _, module := range modules { diff --git a/rpc/endpoints.go b/rpc/endpoints.go index a749735b47..10dc2e4949 100644 --- a/rpc/endpoints.go +++ b/rpc/endpoints.go @@ -24,10 +24,10 @@ import ( "github.com/ethereum/go-ethereum/log" ) -// checkModuleAvailability checks that all names given in modules are actually +// CheckModuleAvailability checks that all names given in modules are actually // available API services. It assumes that the MetadataApi module ("rpc") is always available; // the registration of this "rpc" module happens in NewServer() and is thus common to all endpoints. -func checkModuleAvailability(modules []string, apis []API) (bad, available []string) { +func CheckModuleAvailability(modules []string, apis []API) (bad, available []string) { availableSet := make(map[string]struct{}) for _, api := range apis { if _, ok := availableSet[api.Namespace]; !ok { @@ -45,10 +45,6 @@ func checkModuleAvailability(modules []string, apis []API) (bad, available []str // StartHTTPEndpoint starts the HTTP RPC endpoint, configured with cors/vhosts/modules. func StartHTTPEndpoint(endpoint string, apis []API, modules []string, timeouts HTTPTimeouts, handler http.Handler) (net.Listener, error) { - if bad, available := checkModuleAvailability(modules, apis); len(bad) > 0 { - log.Error("Unavailable modules in HTTP API list", "unavailable", bad, "available", available) - } - // Start the HTTP listener var ( listener net.Listener @@ -86,7 +82,7 @@ func StartHTTPEndpoint(endpoint string, apis []API, modules []string, timeouts H // StartWSEndpoint starts a websocket endpoint. func StartWSEndpoint(endpoint string, apis []API, modules []string, wsOrigins []string, exposeAll bool) (net.Listener, *Server, error) { - if bad, available := checkModuleAvailability(modules, apis); len(bad) > 0 { + if bad, available := CheckModuleAvailability(modules, apis); len(bad) > 0 { log.Error("Unavailable modules in WS API list", "unavailable", bad, "available", available) } // Generate the whitelist based on the allowed modules From 8766f6ac81ce4c23e78caad2b3c535a9cf31c644 Mon Sep 17 00:00:00 2001 From: renaynay <41963722+renaynay@users.noreply.github.com> Date: Wed, 25 Mar 2020 15:31:08 +0100 Subject: [PATCH 3/3] removing some unnecessary whitespace --- node/node.go | 6 ------ rpc/endpoints.go | 3 --- 2 files changed, 9 deletions(-) diff --git a/node/node.go b/node/node.go index 7ac643b035..8ab1b0d149 100644 --- a/node/node.go +++ b/node/node.go @@ -378,7 +378,6 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors if n.httpEndpoint == n.wsEndpoint { ws = srv.WebsocketHandler(wsOrigins) } - // wrap handler in websocket handler only if websocket port is the same as http rpc handler := n.AddWebsocketHandler(rpc.NewHTTPHandlerStack(srv, cors, vhosts), ws) @@ -389,11 +388,9 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors n.log.Info("HTTP endpoint opened", "url", fmt.Sprintf("http://%v/", listener.Addr()), "cors", strings.Join(cors, ","), "vhosts", strings.Join(vhosts, ",")) - if n.httpEndpoint == n.wsEndpoint { n.log.Info("WebSocket endpoint opened", "url", fmt.Sprintf("ws://%v", listener.Addr())) } - // All listeners booted successfully n.httpEndpoint = endpoint n.httpListener = listener @@ -701,13 +698,11 @@ func registerApisFromWhitelist(apis []rpc.API, modules []string, srv *rpc.Server if bad, available := rpc.CheckModuleAvailability(modules, apis); len(bad) > 0 { log.Error("Unavailable modules in HTTP API list", "unavailable", bad, "available", available) } - // Generate the whitelist based on the allowed modules whitelist := make(map[string]bool) for _, module := range modules { whitelist[module] = true } - // Register all the APIs exposed by the services for _, api := range apis { if whitelist[api.Namespace] || (len(whitelist) == 0 && api.Public) { @@ -717,6 +712,5 @@ func registerApisFromWhitelist(apis []rpc.API, modules []string, srv *rpc.Server log.Debug("HTTP registered", "namespace", api.Namespace) } } - return nil } diff --git a/rpc/endpoints.go b/rpc/endpoints.go index 10dc2e4949..e900c4e8a9 100644 --- a/rpc/endpoints.go +++ b/rpc/endpoints.go @@ -53,7 +53,6 @@ func StartHTTPEndpoint(endpoint string, apis []API, modules []string, timeouts H if listener, err = net.Listen("tcp", endpoint); err != nil { return nil, err } - // Make sure timeout values are meaningful if timeouts.ReadTimeout < time.Second { log.Warn("Sanitizing invalid HTTP read timeout", "provided", timeouts.ReadTimeout, "updated", DefaultHTTPTimeouts.ReadTimeout) @@ -67,7 +66,6 @@ func StartHTTPEndpoint(endpoint string, apis []API, modules []string, timeouts H log.Warn("Sanitizing invalid HTTP idle timeout", "provided", timeouts.IdleTimeout, "updated", DefaultHTTPTimeouts.IdleTimeout) timeouts.IdleTimeout = DefaultHTTPTimeouts.IdleTimeout } - // Bundle and start the HTTP server httpSrv := &http.Server{ Handler: handler, @@ -75,7 +73,6 @@ func StartHTTPEndpoint(endpoint string, apis []API, modules []string, timeouts H WriteTimeout: timeouts.WriteTimeout, IdleTimeout: timeouts.IdleTimeout, } - go httpSrv.Serve(listener) return listener, err }