ports

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 25, 2025 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package ports contains entry-point related logic for builder-hub. As of now only way to access builder-hub functionality is via http

Index

Constants

View Source
const (
	AttestationTypeHeader string = "X-Flashbots-Attestation-Type"
	MeasurementHeader     string = "X-Flashbots-Measurement"
	ForwardedHeader       string = "X-Forwarded-For"
)

Variables

View Source
var (
	ErrInvalidAuthData  = errors.New("invalid auth data")
	ErrInvalidIPAddress = errors.New("invalid ip address")
)

Functions

This section is empty.

Types

type ActivationRequest added in v0.2.0

type ActivationRequest struct {
	Enabled bool `json:"enabled"`
}

type AdminBuilderService added in v0.2.0

type AdminBuilderService interface {
	GetActiveConfigForBuilder(ctx context.Context, builderName string) (json.RawMessage, error)
	AddMeasurement(ctx context.Context, measurement domain.Measurement, enabled bool) error
	AddBuilder(ctx context.Context, builder domain.Builder) error
	ChangeActiveStatusForBuilder(ctx context.Context, builderName string, isActive bool) error
	ChangeActiveStatusForMeasurement(ctx context.Context, measurementName string, isActive bool) error
	AddBuilderConfig(ctx context.Context, builderName string, config json.RawMessage) error
}

type AdminHandler added in v0.2.0

type AdminHandler struct {
	// contains filtered or unexported fields
}

func NewAdminHandler added in v0.2.0

func NewAdminHandler(service AdminBuilderService, secretService AdminSecretService, log *httplog.Logger) *AdminHandler

func (*AdminHandler) AddBuilder added in v0.2.0

func (s *AdminHandler) AddBuilder(w http.ResponseWriter, r *http.Request)

func (*AdminHandler) AddBuilderConfig added in v0.2.0

func (s *AdminHandler) AddBuilderConfig(w http.ResponseWriter, r *http.Request)

func (*AdminHandler) AddMeasurement added in v0.2.0

func (s *AdminHandler) AddMeasurement(w http.ResponseWriter, r *http.Request)

func (*AdminHandler) ChangeActiveStatusForBuilder added in v0.2.0

func (s *AdminHandler) ChangeActiveStatusForBuilder(w http.ResponseWriter, r *http.Request)

func (*AdminHandler) ChangeActiveStatusForMeasurement added in v0.2.0

func (s *AdminHandler) ChangeActiveStatusForMeasurement(w http.ResponseWriter, r *http.Request)

func (*AdminHandler) GetActiveConfigForBuilder added in v0.2.0

func (s *AdminHandler) GetActiveConfigForBuilder(w http.ResponseWriter, r *http.Request)

func (*AdminHandler) GetFullConfigForBuilder added in v0.2.0

func (s *AdminHandler) GetFullConfigForBuilder(w http.ResponseWriter, r *http.Request)

GetFullConfigForBuilder returns the full config for a builder, including secrets Note this copies logic from GetConfigWithSecrets in BuilderHubService since we decided to avoid application layer here it probably makes sense unless logic gets more complicated here

func (*AdminHandler) SetSecrets added in v0.2.0

func (s *AdminHandler) SetSecrets(w http.ResponseWriter, r *http.Request)

type AdminSecretService added in v0.2.0

type AdminSecretService interface {
	SetSecretValues(builderName string, message json.RawMessage) error
	application.SecretAccessor
}

type AuthData

type AuthData struct {
	AttestationType string
	MeasurementData map[string]string
	IP              net.IP
}

type Builder added in v0.2.0

type Builder struct {
	Name      string `json:"name"`
	DNSName   string `json:"dns_name"`
	IPAddress string `json:"ip_address"`
	Network   string `json:"network"`
}

type BuilderHubHandler

type BuilderHubHandler struct {
	// contains filtered or unexported fields
}

func NewBuilderHubHandler

func NewBuilderHubHandler(builderHubService BuilderHubService, log *httplog.Logger) *BuilderHubHandler

func (*BuilderHubHandler) GetActiveBuilders

func (bhs *BuilderHubHandler) GetActiveBuilders(w http.ResponseWriter, r *http.Request)

func (*BuilderHubHandler) GetActiveBuildersNoAuth

func (bhs *BuilderHubHandler) GetActiveBuildersNoAuth(w http.ResponseWriter, r *http.Request)

func (*BuilderHubHandler) GetActiveBuildersNoAuthNetworked added in v0.2.0

func (bhs *BuilderHubHandler) GetActiveBuildersNoAuthNetworked(w http.ResponseWriter, r *http.Request)

func (*BuilderHubHandler) GetAllowedMeasurements

func (bhs *BuilderHubHandler) GetAllowedMeasurements(w http.ResponseWriter, r *http.Request)

func (*BuilderHubHandler) GetConfigSecrets

func (bhs *BuilderHubHandler) GetConfigSecrets(w http.ResponseWriter, r *http.Request)

func (*BuilderHubHandler) RegisterCredentials

func (bhs *BuilderHubHandler) RegisterCredentials(w http.ResponseWriter, r *http.Request)

type BuilderHubService

type BuilderHubService interface {
	GetAllowedMeasurements(ctx context.Context) ([]domain.Measurement, error)
	GetActiveBuilders(ctx context.Context, network string) ([]domain.BuilderWithServices, error)
	VerifyIPAndMeasurements(ctx context.Context, ip net.IP, measurement map[string]string, attestationType string) (*domain.Builder, string, error)
	GetConfigWithSecrets(ctx context.Context, builderName string) ([]byte, error)
	RegisterCredentialsForBuilder(ctx context.Context, builderName, service, tlsCert string, ecdsaPubKey []byte, measurementName, attestationType string) error
	LogEvent(ctx context.Context, eventName, builderName, name string) error
}

type BuilderWithServiceCreds

type BuilderWithServiceCreds struct {
	IP           string
	DNSName      string
	Name         string
	ServiceCreds map[string]ServiceCred
}

func (BuilderWithServiceCreds) MarshalJSON

func (b BuilderWithServiceCreds) MarshalJSON() ([]byte, error)

MarshalJSON is a custom json marshaller. Unfortunately, there seems to be no way to inline map[string]Service when marshalling so we need to be careful when adding new fields, since custom json implementation will ignore it by default

func (*BuilderWithServiceCreds) UnmarshalJSON added in v0.2.0

func (b *BuilderWithServiceCreds) UnmarshalJSON(data []byte) error

type Measurement

type Measurement struct {
	Name            string                              `json:"measurement_id"`
	AttestationType string                              `json:"attestation_type"`
	Measurements    map[string]domain.SingleMeasurement `json:"measurements"`
}

type ServiceCred

type ServiceCred struct {
	TLSCert     string          `json:"tls_cert,omitempty"`
	ECDSAPubkey *common.Address `json:"ecdsa_pubkey_address,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL