Help us shape the future of Go! Take the 2026 Go Developer Survey

web

package
v0.1.2 Latest Latest
Warning

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

Go to latest
Published: Apr 10, 2026 License: AGPL-3.0 Imports: 10 Imported by: 0

Documentation

Overview

Package web provides the BubbleFish Nexus web dashboard.

The dashboard runs on a separate port (default 8081) and requires admin_token authentication on all endpoints. It uses textContent exclusively — inner HTML is NEVER used (XSS prevention).

Reference: Tech Spec Section 13.2.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AuditProvider

type AuditProvider interface {
	RecentInteractions(limit int) []AuditRecordInfo
	InteractionsByActor(actorID string, limit int) []AuditRecordInfo
	PolicyDenials(limit int) []AuditRecordInfo
	AuditStats() AuditStatsInfo
}

AuditProvider supplies data for the dashboard audit tab. All methods must be safe for concurrent use.

Reference: Tech Spec Addendum Section A2.7.

type AuditRecordInfo

type AuditRecordInfo struct {
	RecordID       string  `json:"record_id"`
	Timestamp      string  `json:"timestamp"`
	Source         string  `json:"source"`
	ActorType      string  `json:"actor_type"`
	ActorID        string  `json:"actor_id"`
	OperationType  string  `json:"operation_type"`
	Endpoint       string  `json:"endpoint"`
	HTTPStatusCode int     `json:"http_status_code"`
	PolicyDecision string  `json:"policy_decision"`
	PolicyReason   string  `json:"policy_reason,omitempty"`
	LatencyMs      float64 `json:"latency_ms"`
	Destination    string  `json:"destination,omitempty"`
	Subject        string  `json:"subject,omitempty"`
	ResultCount    int     `json:"result_count,omitempty"`
}

AuditRecordInfo is a flat summary of an interaction record for the audit tab. Defined here to avoid importing the audit package into web.

type AuditStatsInfo

type AuditStatsInfo struct {
	TotalRecords      int            `json:"total_records"`
	InteractionsPerHr map[string]int `json:"interactions_per_hour"`
	DenialRate        float64        `json:"denial_rate"`
	FilterRate        float64        `json:"filter_rate"`
	TopSources        map[string]int `json:"top_sources"`
	TopActors         map[string]int `json:"top_actors"`
	ByOperation       map[string]int `json:"by_operation"`
	ByDecision        map[string]int `json:"by_decision"`
}

AuditStatsInfo holds summary statistics for the audit tab.

type AuthFailureInfo

type AuthFailureInfo struct {
	Timestamp  string `json:"timestamp"`
	Source     string `json:"source"`
	IP         string `json:"ip"`
	Endpoint   string `json:"endpoint"`
	TokenClass string `json:"token_class"`
	StatusCode int    `json:"status_code"`
}

AuthFailureInfo is a single auth failure event for the security tab.

type Config

type Config struct {
	Port             int
	RequireAuth      bool
	AdminKey         []byte // Resolved admin token bytes.
	Logger           *slog.Logger
	SecurityProvider SecurityProvider // Optional; security tab disabled if nil.
	AuditProvider    AuditProvider    // Optional; audit tab disabled if nil.
	AdminHandler     http.Handler     // Optional; when set, /api/* routes are delegated to this handler.
	DashboardHTML    string           // Optional; v4 dashboard HTML content. When set, replaces the builtin skeleton.
	LogoPNG          []byte           // Optional; embedded logo PNG served at /logo_metal.png.
}

Config holds the settings for the web dashboard.

type Dashboard

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

Dashboard is the web dashboard server. All state is held in struct fields.

func New

func New(cfg Config) *Dashboard

New creates a Dashboard but does not start it.

func (*Dashboard) Start

func (d *Dashboard) Start() error

Start starts the dashboard HTTP server. It blocks until Stop() is called or the listener fails.

func (*Dashboard) Stop

func (d *Dashboard) Stop()

Stop gracefully shuts down the dashboard server.

type LintFinding

type LintFinding struct {
	Severity string `json:"severity"`
	Check    string `json:"check"`
	Message  string `json:"message"`
}

LintFinding is a single lint diagnostic for the security tab.

type SecurityProvider

type SecurityProvider interface {
	SourcePolicies() []SourcePolicyInfo
	AuthFailures(limit int) []AuthFailureInfo
	LintFindings() []LintFinding
}

SecurityProvider supplies data for the dashboard security tab. All methods must be safe for concurrent use.

type SourcePolicyInfo

type SourcePolicyInfo struct {
	Name                string   `json:"name"`
	CanRead             bool     `json:"can_read"`
	CanWrite            bool     `json:"can_write"`
	AllowedDestinations []string `json:"allowed_destinations"`
	MaxResults          int      `json:"max_results"`
	MaxResponseBytes    int      `json:"max_response_bytes"`
	RateLimit           int      `json:"rate_limit_rpm"`
}

SourcePolicyInfo is a read-only summary of a source's policies for the security tab. Defined here to avoid importing config into web.

Jump to

Keyboard shortcuts

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