mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-26 05:17:22 +00:00
424c8f6b46
* begin the middleware approach * attempt middleware * middleware works in tandem with web ui * handle delete as well * delete request * DELETE working * tool to perform imports * functioning * commentary * build * gaz * smol test * enable keymanager api use protonames * edit * one rule * rem gw * Fix custom compiler (cherry picked from commit 3b1f65919e04ddf7e07c8f60cba1be883a736476) * gen proto * imports * Update validator/node/node.go Co-authored-by: Radosław Kapka <rkapka@wp.pl> * remaining comments * update item * rpc * add * run gateway * simplify * rem flag * deep source Co-authored-by: prestonvanloon <preston@prysmaticlabs.com> Co-authored-by: Radosław Kapka <rkapka@wp.pl> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com>
96 lines
3.1 KiB
Go
96 lines
3.1 KiB
Go
// Package main allows for creation of an HTTP-JSON to gRPC
|
|
// gateway as a binary go process.
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"flag"
|
|
"fmt"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/gorilla/mux"
|
|
joonix "github.com/joonix/log"
|
|
"github.com/prysmaticlabs/prysm/api/gateway"
|
|
beaconGateway "github.com/prysmaticlabs/prysm/beacon-chain/gateway"
|
|
"github.com/prysmaticlabs/prysm/beacon-chain/rpc/apimiddleware"
|
|
"github.com/prysmaticlabs/prysm/cmd/beacon-chain/flags"
|
|
_ "github.com/prysmaticlabs/prysm/runtime/maxprocs"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
var (
|
|
beaconRPC = flag.String("beacon-rpc", "localhost:4000", "Beacon chain gRPC endpoint")
|
|
port = flag.Int("port", 8000, "Port to serve on")
|
|
host = flag.String("host", "127.0.0.1", "Host to serve on")
|
|
debug = flag.Bool("debug", false, "Enable debug logging")
|
|
allowedOrigins = flag.String("corsdomain", "localhost:4242", "A comma separated list of CORS domains to allow")
|
|
enableDebugRPCEndpoints = flag.Bool("enable-debug-rpc-endpoints", false, "Enable debug rpc endpoints such as /eth/v1alpha1/beacon/state")
|
|
grpcMaxMsgSize = flag.Int("grpc-max-msg-size", 1<<22, "Integer to define max recieve message call size")
|
|
httpModules = flag.String(
|
|
"http-modules",
|
|
strings.Join([]string{flags.PrysmAPIModule, flags.EthAPIModule}, ","),
|
|
"Comma-separated list of API module names. Possible values: `"+flags.PrysmAPIModule+`,`+flags.EthAPIModule+"`.",
|
|
)
|
|
)
|
|
|
|
func init() {
|
|
logrus.SetFormatter(joonix.NewFormatter())
|
|
}
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
if *debug {
|
|
log.SetLevel(logrus.DebugLevel)
|
|
}
|
|
|
|
gatewayConfig := beaconGateway.DefaultConfig(*enableDebugRPCEndpoints, *httpModules)
|
|
muxs := make([]*gateway.PbMux, 0)
|
|
if gatewayConfig.V1AlphaPbMux != nil {
|
|
muxs = append(muxs, gatewayConfig.V1AlphaPbMux)
|
|
}
|
|
if gatewayConfig.EthPbMux != nil {
|
|
muxs = append(muxs, gatewayConfig.EthPbMux)
|
|
}
|
|
opts := []gateway.Option{
|
|
gateway.WithPbHandlers(muxs),
|
|
gateway.WithMuxHandler(gatewayConfig.Handler),
|
|
gateway.WithRemoteAddr(*beaconRPC),
|
|
gateway.WithGatewayAddr(fmt.Sprintf("%s:%d", *host, *port)),
|
|
gateway.WithAllowedOrigins(strings.Split(*allowedOrigins, ",")),
|
|
gateway.WithMaxCallRecvMsgSize(uint64(*grpcMaxMsgSize)),
|
|
}
|
|
|
|
if flags.EnableHTTPEthAPI(*httpModules) {
|
|
opts = append(opts, gateway.WithApiMiddleware(&apimiddleware.BeaconEndpointFactory{}))
|
|
}
|
|
|
|
gw, err := gateway.New(context.Background(), opts...)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
r := mux.NewRouter()
|
|
r.HandleFunc("/swagger/", gateway.SwaggerServer())
|
|
r.HandleFunc("/healthz", healthzServer(gw))
|
|
gw.SetRouter(r)
|
|
|
|
gw.Start()
|
|
|
|
select {}
|
|
}
|
|
|
|
// healthzServer returns a simple health handler which returns ok.
|
|
func healthzServer(gw *gateway.Gateway) http.HandlerFunc {
|
|
return func(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "text/plain")
|
|
if err := gw.Status(); err != nil {
|
|
http.Error(w, err.Error(), http.StatusBadGateway)
|
|
return
|
|
}
|
|
if _, err := fmt.Fprintln(w, "ok"); err != nil {
|
|
log.WithError(err).Error("failed to respond to healthz")
|
|
}
|
|
}
|
|
}
|