diff --git a/api/constants.go b/api/constants.go index 4f8fdcd32f..5be6e3f221 100644 --- a/api/constants.go +++ b/api/constants.go @@ -4,6 +4,6 @@ const ( WebUrlPrefix = "/v2/validator/" WebApiUrlPrefix = "/api/v2/validator/" KeymanagerApiPrefix = "/eth/v1" - - AuthTokenFileName = "auth-token" + SystemLogsPrefix = "health/logs" + AuthTokenFileName = "auth-token" ) diff --git a/validator/node/node.go b/validator/node/node.go index 7789666c24..4529287cfa 100644 --- a/validator/node/node.go +++ b/validator/node/node.go @@ -614,6 +614,16 @@ func (c *ValidatorClient) registerRPCService(router *mux.Router) error { if err := c.services.FetchService(&vs); err != nil { return err } + authTokenPath := c.cliCtx.String(flags.AuthTokenPathFlag.Name) + walletDir := c.cliCtx.String(flags.WalletDirFlag.Name) + // if no auth token path flag was passed try to set a default value + if authTokenPath == "" { + authTokenPath = flags.AuthTokenPathFlag.Value + // if a wallet dir is passed without an auth token then override the default with the wallet dir + if walletDir != "" { + authTokenPath = filepath.Join(walletDir, api.AuthTokenFileName) + } + } s := rpc.NewServer(c.cliCtx.Context, &rpc.Config{ Host: c.cliCtx.String(flags.RPCHost.Name), Port: fmt.Sprintf("%d", c.cliCtx.Int(flags.RPCPort.Name)), @@ -624,14 +634,15 @@ func (c *ValidatorClient) registerRPCService(router *mux.Router) error { GRPCRetryDelay: c.cliCtx.Duration(flags.GrpcRetryDelayFlag.Name), GRPCHeaders: strings.Split(c.cliCtx.String(flags.GrpcHeadersFlag.Name), ","), BeaconNodeGRPCEndpoint: c.cliCtx.String(flags.BeaconRPCProviderFlag.Name), - BeaconApiEndpoint: c.cliCtx.String(flags.BeaconRPCGatewayProviderFlag.Name), + BeaconApiEndpoint: c.cliCtx.String(flags.BeaconRESTApiProviderFlag.Name), BeaconApiTimeout: time.Second * 30, BeaconNodeCert: c.cliCtx.String(flags.CertFlag.Name), DB: c.db, Wallet: c.wallet, - WalletDir: c.cliCtx.String(flags.WalletDirFlag.Name), + WalletDir: walletDir, WalletInitializedFeed: c.walletInitializedFeed, ValidatorService: vs, + AuthTokenPath: authTokenPath, Router: router, }) return c.services.RegisterService(s) diff --git a/validator/rpc/intercepter.go b/validator/rpc/intercepter.go index 6dedcdaef4..1f574a433e 100644 --- a/validator/rpc/intercepter.go +++ b/validator/rpc/intercepter.go @@ -37,7 +37,7 @@ func (s *Server) AuthTokenInterceptor() grpc.UnaryServerInterceptor { func (s *Server) AuthTokenHandler(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // if it's not initialize or has a web prefix - if strings.Contains(r.URL.Path, api.WebApiUrlPrefix) || strings.Contains(r.URL.Path, api.KeymanagerApiPrefix) { + if (strings.Contains(r.URL.Path, api.WebApiUrlPrefix) || strings.Contains(r.URL.Path, api.KeymanagerApiPrefix)) && !strings.Contains(r.URL.Path, api.SystemLogsPrefix) { // ignore some routes reqToken := r.Header.Get("Authorization") if reqToken == "" { diff --git a/validator/rpc/server.go b/validator/rpc/server.go index eacc8eb7a2..6120e5ccfd 100644 --- a/validator/rpc/server.go +++ b/validator/rpc/server.go @@ -47,6 +47,7 @@ type Config struct { WalletDir string WalletInitializedFeed *event.Feed ValidatorService *client.ValidatorService + AuthTokenPath string Router *mux.Router } @@ -92,6 +93,8 @@ func NewServer(ctx context.Context, cfg *Config) *Server { server := &Server{ ctx: ctx, cancel: cancel, + logStreamer: logs.NewStreamServer(), + logStreamerBufferSize: 1000, // Enough to handle most bursts of logs in the validator client. host: cfg.Host, port: cfg.Port, grpcGatewayHost: cfg.GRPCGatewayHost, @@ -100,6 +103,17 @@ func NewServer(ctx context.Context, cfg *Config) *Server { grpcRetries: cfg.GRPCRetries, grpcRetryDelay: cfg.GRPCRetryDelay, grpcHeaders: cfg.GRPCHeaders, + validatorService: cfg.ValidatorService, + authTokenPath: cfg.AuthTokenPath, + db: cfg.DB, + walletDir: cfg.WalletDir, + walletInitializedFeed: cfg.WalletInitializedFeed, + walletInitialized: cfg.Wallet != nil, + wallet: cfg.Wallet, + beaconApiTimeout: cfg.BeaconApiTimeout, + beaconApiEndpoint: cfg.BeaconApiEndpoint, + beaconNodeEndpoint: cfg.BeaconNodeGRPCEndpoint, + router: cfg.Router, } if server.authTokenPath == "" && server.walletDir != "" {