|
|
@@ -263,7 +263,7 @@ func (n *Node) startRPC(services map[reflect.Type]Service) error {
|
|
|
n.stopInProc()
|
|
|
return err
|
|
|
}
|
|
|
- if err := n.startHTTP(n.httpEndpoint, apis, n.config.HTTPModules, n.config.HTTPCors); err != nil {
|
|
|
+ if err := n.startHTTP(n.httpEndpoint, apis, n.config.HTTPModules, n.config.HTTPCors, n.config.HTTPVirtualHosts); err != nil {
|
|
|
n.stopIPC()
|
|
|
n.stopInProc()
|
|
|
return err
|
|
|
@@ -287,7 +287,7 @@ func (n *Node) startInProc(apis []rpc.API) error {
|
|
|
if err := handler.RegisterName(api.Namespace, api.Service); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- n.log.Debug(fmt.Sprintf("InProc registered %T under '%s'", api.Service, api.Namespace))
|
|
|
+ n.log.Debug("InProc registered", "service", api.Service, "namespace", api.Namespace)
|
|
|
}
|
|
|
n.inprocHandler = handler
|
|
|
return nil
|
|
|
@@ -313,7 +313,7 @@ func (n *Node) startIPC(apis []rpc.API) error {
|
|
|
if err := handler.RegisterName(api.Namespace, api.Service); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- n.log.Debug(fmt.Sprintf("IPC registered %T under '%s'", api.Service, api.Namespace))
|
|
|
+ n.log.Debug("IPC registered", "service", api.Service, "namespace", api.Namespace)
|
|
|
}
|
|
|
// All APIs registered, start the IPC listener
|
|
|
var (
|
|
|
@@ -324,7 +324,7 @@ func (n *Node) startIPC(apis []rpc.API) error {
|
|
|
return err
|
|
|
}
|
|
|
go func() {
|
|
|
- n.log.Info(fmt.Sprintf("IPC endpoint opened: %s", n.ipcEndpoint))
|
|
|
+ n.log.Info("IPC endpoint opened", "url", fmt.Sprintf("%s", n.ipcEndpoint))
|
|
|
|
|
|
for {
|
|
|
conn, err := listener.Accept()
|
|
|
@@ -337,7 +337,7 @@ func (n *Node) startIPC(apis []rpc.API) error {
|
|
|
return
|
|
|
}
|
|
|
// Not closed, just some error; report and continue
|
|
|
- n.log.Error(fmt.Sprintf("IPC accept failed: %v", err))
|
|
|
+ n.log.Error("IPC accept failed", "err", err)
|
|
|
continue
|
|
|
}
|
|
|
go handler.ServeCodec(rpc.NewJSONCodec(conn), rpc.OptionMethodInvocation|rpc.OptionSubscriptions)
|
|
|
@@ -356,7 +356,7 @@ func (n *Node) stopIPC() {
|
|
|
n.ipcListener.Close()
|
|
|
n.ipcListener = nil
|
|
|
|
|
|
- n.log.Info(fmt.Sprintf("IPC endpoint closed: %s", n.ipcEndpoint))
|
|
|
+ n.log.Info("IPC endpoint closed", "endpoint", n.ipcEndpoint)
|
|
|
}
|
|
|
if n.ipcHandler != nil {
|
|
|
n.ipcHandler.Stop()
|
|
|
@@ -365,7 +365,7 @@ func (n *Node) stopIPC() {
|
|
|
}
|
|
|
|
|
|
// startHTTP initializes and starts the HTTP RPC endpoint.
|
|
|
-func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors []string) error {
|
|
|
+func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors []string, vhosts []string) error {
|
|
|
// Short circuit if the HTTP endpoint isn't being exposed
|
|
|
if endpoint == "" {
|
|
|
return nil
|
|
|
@@ -382,7 +382,7 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors
|
|
|
if err := handler.RegisterName(api.Namespace, api.Service); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- n.log.Debug(fmt.Sprintf("HTTP registered %T under '%s'", api.Service, api.Namespace))
|
|
|
+ n.log.Debug("HTTP registered", "service", api.Service, "namespace", api.Namespace)
|
|
|
}
|
|
|
}
|
|
|
// All APIs registered, start the HTTP listener
|
|
|
@@ -393,9 +393,8 @@ func (n *Node) startHTTP(endpoint string, apis []rpc.API, modules []string, cors
|
|
|
if listener, err = net.Listen("tcp", endpoint); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- go rpc.NewHTTPServer(cors, handler).Serve(listener)
|
|
|
- n.log.Info(fmt.Sprintf("HTTP endpoint opened: http://%s", endpoint))
|
|
|
-
|
|
|
+ go rpc.NewHTTPServer(cors, vhosts, handler).Serve(listener)
|
|
|
+ n.log.Info("HTTP endpoint opened", "url", fmt.Sprintf("http://%s", endpoint), "cors", strings.Join(cors, ","), "hvosts", strings.Join(vhosts, ","))
|
|
|
// All listeners booted successfully
|
|
|
n.httpEndpoint = endpoint
|
|
|
n.httpListener = listener
|
|
|
@@ -410,7 +409,7 @@ func (n *Node) stopHTTP() {
|
|
|
n.httpListener.Close()
|
|
|
n.httpListener = nil
|
|
|
|
|
|
- n.log.Info(fmt.Sprintf("HTTP endpoint closed: http://%s", n.httpEndpoint))
|
|
|
+ n.log.Info("HTTP endpoint closed", "url", fmt.Sprintf("http://%s", n.httpEndpoint))
|
|
|
}
|
|
|
if n.httpHandler != nil {
|
|
|
n.httpHandler.Stop()
|
|
|
@@ -436,7 +435,7 @@ func (n *Node) startWS(endpoint string, apis []rpc.API, modules []string, wsOrig
|
|
|
if err := handler.RegisterName(api.Namespace, api.Service); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- n.log.Debug(fmt.Sprintf("WebSocket registered %T under '%s'", api.Service, api.Namespace))
|
|
|
+ n.log.Debug("WebSocket registered", "service", api.Service, "namespace", api.Namespace)
|
|
|
}
|
|
|
}
|
|
|
// All APIs registered, start the HTTP listener
|
|
|
@@ -448,7 +447,7 @@ func (n *Node) startWS(endpoint string, apis []rpc.API, modules []string, wsOrig
|
|
|
return err
|
|
|
}
|
|
|
go rpc.NewWSServer(wsOrigins, handler).Serve(listener)
|
|
|
- n.log.Info(fmt.Sprintf("WebSocket endpoint opened: ws://%s", listener.Addr()))
|
|
|
+ n.log.Info("WebSocket endpoint opened", "url", fmt.Sprintf("ws://%s", listener.Addr()))
|
|
|
|
|
|
// All listeners booted successfully
|
|
|
n.wsEndpoint = endpoint
|
|
|
@@ -464,7 +463,7 @@ func (n *Node) stopWS() {
|
|
|
n.wsListener.Close()
|
|
|
n.wsListener = nil
|
|
|
|
|
|
- n.log.Info(fmt.Sprintf("WebSocket endpoint closed: ws://%s", n.wsEndpoint))
|
|
|
+ n.log.Info("WebSocket endpoint closed", "url", fmt.Sprintf("ws://%s", n.wsEndpoint))
|
|
|
}
|
|
|
if n.wsHandler != nil {
|
|
|
n.wsHandler.Stop()
|