code: func (api *PrivateAdminAPI) StartRPC(host *string, port *int, cors *string, apis *string, vhosts *string) (bool, error) {
  	api.node.lock.Lock()
  	defer api.node.lock.Unlock()
  
  	if api.node.httpHandler != nil {
  		return false, fmt.Errorf("HTTP RPC already running on %s", api.node.httpEndpoint)
  	}
  
  	if host == nil {
  		h := DefaultHTTPHost
  		if api.node.config.HTTPHost != "" {
  			h = api.node.config.HTTPHost
  		}
  		host = &h
  	}
  	if port == nil {
  		port = &api.node.config.HTTPPort
  	}
  
  	allowedOrigins := api.node.config.HTTPCors
  	if cors != nil {
  		allowedOrigins = nil
  		for _, origin := range strings.Split(*cors, ",") {
  			allowedOrigins = append(allowedOrigins, strings.TrimSpace(origin))
  		}
  	}
  
  	allowedVHosts := api.node.config.HTTPVirtualHosts
  	if vhosts != nil {
  		allowedVHosts = nil
  		for _, vhost := range strings.Split(*host, ",") {
  			allowedVHosts = append(allowedVHosts, strings.TrimSpace(vhost))
  		}
  	}
  
  	modules := api.node.httpWhitelist
  	if apis != nil {
  		modules = nil
  		for _, m := range strings.Split(*apis, ",") {
  			modules = append(modules, strings.TrimSpace(m))
  		}
  	}
  
  	if err := api.node.startHTTP(fmt.Sprintf("%s:%d", *host, *port), api.node.rpcAPIs, modules, allowedOrigins, allowedVHosts, api.node.config.HTTPTimeouts); err != nil {
  		return false, err
  	}
  	return true, nil
  }
docs: // StartRPC starts the HTTP RPC API server.