42 lines
3.7 KiB
Markdown
42 lines
3.7 KiB
Markdown
---
|
|
type: User Story
|
|
title: Operate servers through an RCON console
|
|
description: Administrators execute bounded RCON commands through the server-side portal proxy.
|
|
tags: [admin, rcon, minecraft, console, security]
|
|
timestamp: 2026-08-08T13:40:43Z
|
|
story_id: US-022
|
|
status: verified
|
|
---
|
|
|
|
# User Story
|
|
|
|
As an administrator, I want an RCON console in the portal, so that I can operate configured Minecraft servers without exposing credentials to the browser.
|
|
|
|
# Acceptance Criteria
|
|
|
|
- [x] Existing account-manager administrators can select an enabled connection and execute an RCON command from the admin UI.
|
|
- [x] Browsers never connect to RCON directly; commands pass through the authenticated Next.js server runtime to the configured endpoint.
|
|
- [x] Every command independently rechecks administrator authorization and the selected connection's enabled state.
|
|
- [x] Commands are length-limited, reject control characters, execute with bounded concurrency and a timeout, and return bounded output.
|
|
- [x] Command responses are displayed safely and are not persisted in console history, audit data, or application logs.
|
|
- [x] Audit events record the administrator, connection, command verb and digest, success, and duration without recording complete commands or responses.
|
|
- [x] Authentication, timeout, and connection failures return safe operator-facing messages without credentials or stack traces.
|
|
- [x] The console spans the available content width and uses the portal color palette to present a terminal-style server header with connection controls, a single keyboard-accessible prompt, pending state, and scrollable latest-response viewport.
|
|
- [x] Configured server addresses may be internal or external, and operators receive guidance that RCON network exposure and transport security remain their responsibility.
|
|
- [x] Command responses, connection errors, and connection-operation results appear in the terminal viewport, including an actionable empty state when no connection exists.
|
|
- [x] The page has no duplicate connection form or connection-list panel outside the terminal workspace.
|
|
|
|
# Implementation
|
|
|
|
The full-width portal-colored terminal workspace identifies and manages the selected server in its header, accepts one command through a keyboard-focused prompt, and displays command responses plus connection-operation notices in one scrollable viewport. It retains an actionable terminal and Add control when no connections exist, with no duplicate configuration panels. The client invokes an authenticated server action that revalidates the enabled connection, decrypts its credential only in the server runtime, and executes one bounded command. The gateway limits each process to one operation per server and eight total operations, applies a five-second end-to-end deadline plus bounded cleanup, sanitizes and truncates output, and records keyed command lifecycle audits without command or response content.
|
|
|
|
# Validation
|
|
|
|
Application behavior is verified with gateway, validation, component, credential, and server-action tests; full workspace tests and type checks; web lint; OKF validation; Semgrep; dependency audit; and a production Next.js build on 2026-08-08. Component validation confirms the full-width workspace, labelled server and command controls, header actions, accessible modal forms, terminal-contained notices, and the actionable no-server state. The SoMC GitOps deployment verifies Season 4 RCON through an authenticated internal ClusterIP Service backed by a Kubernetes Secret while product guidance also covers external server addresses.
|
|
|
|
# Related Stories
|
|
|
|
- [Manage RCON server connections](us-021-rcon-connections.md)
|
|
- [Operate settings and audit views](us-012-admin-operations.md)
|
|
- [Preserve an audit trail](us-010-audit-events.md)
|