diff --git a/README.md b/README.md new file mode 100644 index 00000000..3aabcfe7 --- /dev/null +++ b/README.md @@ -0,0 +1,112 @@ +# GSP + +GSP is a game server hosting platform built around a web Panel, Linux and Windows/Cygwin agents, and a customer Website. + +The goal of this repository is to let customers manage hosted game servers with the same practical control they would expect on their own machine: + +- start, stop, restart, and monitor servers +- edit config files and startup parameters +- use FTP and file management tools +- install mods, add-ons, and Workshop content +- schedule safe automation tasks +- read logs and troubleshooting docs +- get accurate server status reporting +- keep billing, support, and provisioning tied to the server lifecycle + +## Repository Layout + +```text +/ + Agent_Linux/ + Agent-Windows/ + Panel/ + Website/ + docs/ +``` + +## Component Overview + +### Panel + +The Panel is the control layer. It loads modules from `Panel/modules/`, stores panel-side state in the database, and talks to the agents through `Panel/includes/lib_remote.php`. + +### Linux Agent + +`Agent_Linux/ogp_agent.pl` launches and monitors game servers on Linux, using `screen` as the shared runtime backend. + +### Windows Agent + +`Agent-Windows/ogp_agent.pl` mirrors the Linux agent as closely as possible for Windows/Cygwin environments. + +### Website + +`Website/` is the public-facing site for product information, onboarding, docs, and commerce. + +## Documentation Overview + +Start with: + +- [docs/development/CODEX_GUIDE.md](docs/development/CODEX_GUIDE.md) +- [docs/architecture/REPOSITORY_OVERVIEW.md](docs/architecture/REPOSITORY_OVERVIEW.md) +- [docs/architecture/PANEL_AGENT_FLOW.md](docs/architecture/PANEL_AGENT_FLOW.md) +- [docs/architecture/API_REFERENCE.md](docs/architecture/API_REFERENCE.md) +- [docs/modules/MODULE_INDEX.md](docs/modules/MODULE_INDEX.md) +- [docs/features/STATUS_SYSTEM.md](docs/features/STATUS_SYSTEM.md) +- [docs/features/XML_SYSTEM.md](docs/features/XML_SYSTEM.md) +- [docs/features/WORKSHOP_SYSTEM.md](docs/features/WORKSHOP_SYSTEM.md) +- [docs/features/SCHEDULER_SYSTEM.md](docs/features/SCHEDULER_SYSTEM.md) + +Additional architecture and decision records: + +- [docs/architecture/AI_GSP_ARCHITECTURE.md](docs/architecture/AI_GSP_ARCHITECTURE.md) +- [docs/decisions/](docs/decisions/) +- [docs/development/GSP_PLATFORM_IMPROVEMENT_REPORT.md](docs/development/GSP_PLATFORM_IMPROVEMENT_REPORT.md) + +## Development Workflow + +1. Read the docs first. +2. Find the relevant module, agent, or feature page. +3. Inspect code only where the docs point you. +4. Keep changes scoped to the module you are working on. +5. Prefer safe, structured interfaces over ad hoc shell commands. +6. Verify behavior in both Panel and agent paths when lifecycle or content flow is affected. + +## Branch Strategy + +Use a simple stable vs unstable model: + +- `stable` or release branches should only contain verified customer-facing behavior. +- `unstable` or feature branches should hold active work, investigations, and partially complete features. + +If the repo uses different branch names in practice, keep the same concept: + +- stable = customer-ready +- unstable = in progress + +## Stable vs Unstable + +Stable code should have: + +- accurate lifecycle and status reporting +- working logs +- safe file and FTP access +- working scheduler actions +- working backups and restore paths +- documented Workshop/content flows + +Unstable code may exist for: + +- experimental features +- partial module migrations +- new XML capabilities +- future improvements that are not yet customer-safe + +## Documentation Map + +- Architecture: `docs/architecture/` +- Agents: `docs/agents/` +- Games: `docs/games/` +- Modules: `docs/modules/` +- Features: `docs/features/` +- Decisions: `docs/decisions/` +- Development notes: `docs/development/` diff --git a/AI_GSP_ARCHITECTURE.md b/docs/architecture/AI_GSP_ARCHITECTURE.md similarity index 100% rename from AI_GSP_ARCHITECTURE.md rename to docs/architecture/AI_GSP_ARCHITECTURE.md diff --git a/docs/architecture/API_REFERENCE.md b/docs/architecture/API_REFERENCE.md new file mode 100644 index 00000000..86cbfee6 --- /dev/null +++ b/docs/architecture/API_REFERENCE.md @@ -0,0 +1,129 @@ +# API Reference + +## Overview + +Panel-Agent communication uses XML-RPC over HTTP. + +Main transport wrapper: + +- `Panel/includes/lib_remote.php` + +Main agent implementation files: + +- `Agent_Linux/ogp_agent.pl` +- `Agent-Windows/ogp_agent.pl` + +The Panel encrypts arguments before sending them to the agent. The agent decodes them, performs the requested action locally, then returns a status or payload. + +## General Call Pattern + +```text +Panel module + -> OGPRemoteLibrary method in lib_remote.php + -> XML-RPC request to agent /RPC2 + -> agent subroutine in ogp_agent.pl + -> local screen/process/file/network action + -> return code or structured payload +``` + +## Core RPC Methods + +| RPC / Wrapper | Purpose | Common Callers | Notes | +|---|---|---|---| +| `status_chk` | Quick agent reachability check | Panel health checks | Returns a lightweight online/offline/encryption state. | +| `rfile_exists` | Test if a remote file exists | File/content helpers | Used for safe file checks before read/write actions. | +| `get_log` | Fetch screen or console log text | `gamemanager` | Returns log content plus a status code. | +| `remote_stop_server` / `stop_server` | Stop a game server | `gamemanager`, scheduler actions | Takes control protocol and home path data. | +| `remote_send_rcon_command` / `send_rcon_command` | Send RCON/console command | `gamemanager`, `rcon`, scheduler warnings | Useful for warning messages and admin commands. | +| `remote_readfile` / `readfile` | Read a remote file | File editor, config tools | Must remain path-safe. | +| `remote_writefile` / `writefile` | Write a remote file | File editor, config tools | Must remain path-safe. | +| `universal_start` | Start a game server | `gamemanager` | Launches a managed `screen` session. | +| `is_screen_running` | Test whether a managed screen session exists | `gamemanager`, monitor pages | Legacy/simple screen check, not full readiness. | +| `remote_server_status` / `server_status` | Structured server status | `gamemanager` | The preferred source for online/start/stop state. | +| `remote_restart_server` / `restart_server` | Restart a server | `gamemanager` | Intended to be stop, wait, start. | +| `remote_query` | Query game metadata | `gamemanager` | Optional metadata only. | +| `steam_cmd` / `steam` / `automatic_steam_update` | SteamCMD-based update flows | Update actions, Workshop/install tools | Used by Steam-based server maintenance. | +| `start_file_download` | Download external content | Update/content tools | Returns a PID or progress handle. | +| `uncompress_file` | Extract archives | Content installers | Used for zip/tar package installs. | +| `remote_dirlist` / `remote_dirlistfm` | Read remote directory listings | File manager | Used for browse views. | +| `cpu_count`, `renice_process`, `force_cpu` | System/process control helpers | Update/start flows | Used during server launch optimization. | +| `clone_home` / `remove_home` | Duplicate or delete a server home | Provisioning/admin tools | Used during provisioning and teardown. | +| `secure_path`, `get_chattr` | Path safety and attribute helpers | File and security tools | Helps enforce control-path rules. | +| `ftp_mgr` | FTP management helper | FTP module | Used to manage server FTP state. | +| `compress_files` | Archive files | Backup/content tools | Candidate building block for backups. | +| `start_fastdl` / `stop_fastdl` / `restart_fastdl` / `fastdl_status` | FastDL service management | `fast_download` | Source/GoldSrc web distribution support. | +| `scheduler_*` methods | Task list and task CRUD | `cron` | Agent-owned scheduler implementation. | +| `agent_restart` | Restart the agent itself | Admin maintenance | Node maintenance action. | +| `shell_action` | Run a shell action in a controlled way | Advanced agent operations | Should remain tightly permissioned. | +| `send_steam_guard_code` | Submit Steam Guard code | Steam authenticated installs | Used for authenticated SteamCMD workflows. | +| `steam_workshop` / `get_workshop_mods_info` | Workshop-related helper calls | Workshop/content flows | Active in current module work, but still being consolidated. | + +## Status And Return Patterns + +Return values differ by method, but common patterns are: + +- `1` or positive values for success +- `0` for offline/unavailable +- `-1` or another negative value for error +- structured arrays/hashes for richer status methods + +`remote_server_status` is the important structured response. It should return the agent as source of truth for: + +- `OFFLINE` +- `STARTING` +- `ONLINE` +- `STOPPING` +- `UNRESPONSIVE` +- `UNKNOWN` + +## Sequence Diagrams + +### Start + +```text +Panel + -> universal_start +Agent + -> create screen session + -> launch server command +Panel + -> remote_server_status polling +Agent + -> session/process + port checks +Panel + -> render STARTING / ONLINE / UNRESPONSIVE +``` + +### Stop + +```text +Panel + -> remote_stop_server +Agent + -> graceful stop command if available + -> wait for session/process exit + -> escalate to kill if needed +Panel + -> remote_server_status polling +Agent + -> confirm OFFLINE or UNRESPONSIVE +``` + +### Logs + +```text +Panel log page + -> get_log +Agent + -> read screen log or console log +Panel + -> refresh textarea via AJAX +``` + +## Error Handling Notes + +- Do not treat query failure as a start failure by itself. +- Do not treat marker-file presence as the source of truth. +- Do not expose raw shell execution to customers through generic RPC routes. +- When a method returns a payload, record the error text in the Panel UI if the operation fails. + diff --git a/docs/decisions/0001-screen-vs-tmux.md b/docs/decisions/0001-screen-vs-tmux.md new file mode 100644 index 00000000..e5e25bdf --- /dev/null +++ b/docs/decisions/0001-screen-vs-tmux.md @@ -0,0 +1,29 @@ +# Decision 0001: Keep `screen` As The Shared Backend + +## Status + +Accepted + +## Decision + +GSP should keep `screen` as the shared process/session backend for both Linux and Windows/Cygwin agents for the current platform generation. + +## Reasoning + +- The existing agents already implement server lifecycle around `screen`. +- Linux and Windows/Cygwin behavior can stay aligned if both sides share the same session model. +- The Panel already expects session-based lifecycle checks. +- Moving to a different backend too early would create a large amount of compatibility work for start/stop/restart, logging, and scheduler flows. + +## Alternatives Considered + +- `tmux` +- direct process supervision without session wrappers +- custom daemon per server + +## Why Those Were Not Chosen + +- They would require broader code changes across both agents and the Panel. +- The existing runtime, log, and scheduler flows already assume `screen`. +- Cross-platform parity is easier to maintain with the current backend. + diff --git a/docs/decisions/0002-status-detection.md b/docs/decisions/0002-status-detection.md new file mode 100644 index 00000000..aecf9391 --- /dev/null +++ b/docs/decisions/0002-status-detection.md @@ -0,0 +1,32 @@ +# Decision 0002: Agent-Truthed Status Detection + +## Status + +Accepted + +## Decision + +Server status should be derived from agent truth: + +1. managed process/session existence +2. required game port listening +3. optional query and metadata lookup + +## Reasoning + +- Marker files become stale after crashes, failed starts, and power loss. +- Query systems like LGSL and GameQ are useful but unreliable as the sole online signal. +- The agent can check the actual runtime state locally. + +## Alternatives Considered + +- query-only status +- marker-file status +- process-only status + +## Why Those Were Not Chosen + +- Query-only status can lie for supported games. +- Marker files are not authoritative. +- Process-only status misses the important readiness condition: the port must actually listen. + diff --git a/docs/decisions/0003-companion-programs.md b/docs/decisions/0003-companion-programs.md new file mode 100644 index 00000000..76fea7f9 --- /dev/null +++ b/docs/decisions/0003-companion-programs.md @@ -0,0 +1,29 @@ +# Decision 0003: First-Class Companion Programs + +## Status + +Accepted + +## Decision + +Companion applications such as BEC, B3, Discord bridges, log watchers, and stats collectors should be modeled as managed companion programs rather than ad hoc customer-editable startup scripts. + +## Reasoning + +- Customers should not control privileged helper commands through editable startup files. +- Companion processes need to be started, stopped, and restarted alongside the game server. +- PID and log handling should be centralized. +- The same design should work across Linux and Windows/Cygwin. + +## Alternatives Considered + +- keep `_alsoRun.bat` style helper files +- use only `pre_start` scripts +- rely on manual customer scripts + +## Why Those Were Not Chosen + +- They are not centrally managed. +- They are hard to secure. +- They are difficult to cleanly stop on server shutdown. + diff --git a/docs/decisions/0004-workshop-system.md b/docs/decisions/0004-workshop-system.md new file mode 100644 index 00000000..38fba63c --- /dev/null +++ b/docs/decisions/0004-workshop-system.md @@ -0,0 +1,26 @@ +# Decision 0004: Server Content Manager Is The Workshop Layer + +## Status + +Accepted + +## Decision + +`Panel/modules/addonsmanager` should remain the primary future home for Workshop items, mods, add-ons, and server content. `steam_workshop` should remain a deprecated compatibility layer only. + +## Reasoning + +- `addonsmanager` already has the richer schema and more complete product direction. +- It supports content types beyond Steam Workshop. +- It is a better fit for load order, enable/disable, install history, and metadata. + +## Alternatives Considered + +- keep `steam_workshop` as the main module +- split mods, add-ons, and Workshop into separate modules + +## Why Those Were Not Chosen + +- `steam_workshop` is explicitly deprecated in the codebase. +- Separate modules would fragment user workflows and duplicate install logic. + diff --git a/docs/decisions/0005-control-path-layout.md b/docs/decisions/0005-control-path-layout.md new file mode 100644 index 00000000..934143f9 --- /dev/null +++ b/docs/decisions/0005-control-path-layout.md @@ -0,0 +1,26 @@ +# Decision 0005: Keep Managed Control Paths Outside Customer-Easy Edit Paths + +## Status + +Accepted + +## Decision + +Managed control files, manifests, scheduler state, and helper scripts should live in protected control locations rather than in customer-editable startup files where possible. + +## Reasoning + +- Customer-editable startup areas are too easy to tamper with. +- Managed state should not depend on files that customers can modify through FTP or file manager. +- Secure and auditable behavior is easier when control files are outside the customer content path. + +## Alternatives Considered + +- keep helper scripts in the game home +- keep runtime manifests next to the game executable + +## Why Those Were Not Chosen + +- Those options make it too easy for customers to alter managed execution. +- They complicate cleanup and lifecycle tracking. + diff --git a/docs/decisions/0006-installers.md b/docs/decisions/0006-installers.md new file mode 100644 index 00000000..136b1996 --- /dev/null +++ b/docs/decisions/0006-installers.md @@ -0,0 +1,28 @@ +# Decision 0006: Installers Must Be Game-Capability Driven + +## Status + +Accepted + +## Decision + +Installer behavior should be driven by game XML capabilities and module metadata instead of ad hoc shell scripts or one-off module pages. + +## Reasoning + +- Different games need different install strategies. +- Some games are content-copy based. +- Some are SteamCMD based. +- Some need key copying, startup parameter edits, or profile transforms. +- The Panel needs a structured model to support all of them cleanly. + +## Alternatives Considered + +- per-game custom shell scripts only +- raw customer-provided installer commands + +## Why Those Were Not Chosen + +- They are harder to secure and harder to document. +- They do not scale cleanly across games or platforms. + diff --git a/COMPANION_PROGRAMS_DESIGN.md b/docs/decisions/COMPANION_PROGRAMS_DESIGN.md similarity index 100% rename from COMPANION_PROGRAMS_DESIGN.md rename to docs/decisions/COMPANION_PROGRAMS_DESIGN.md diff --git a/docs/decisions/README.md b/docs/decisions/README.md new file mode 100644 index 00000000..d3820fd8 --- /dev/null +++ b/docs/decisions/README.md @@ -0,0 +1,21 @@ +# Decisions + +This folder holds permanent architecture decisions and a small set of preserved investigation reports that informed those decisions. + +## Decision Records + +- `0001-screen-vs-tmux.md` +- `0002-status-detection.md` +- `0003-companion-programs.md` +- `0004-workshop-system.md` +- `0005-control-path-layout.md` +- `0006-installers.md` + +## Preserved Reports + +- `COMPANION_PROGRAMS_DESIGN.md` +- `SCHEDULER_ACTIONS_DESIGN.md` +- `STEAM_WORKSHOP_DESIGN.md` + +Use the numbered decision files for long-term design rules. Use the report files for the investigative context that led to those decisions. + diff --git a/SCHEDULER_ACTIONS_DESIGN.md b/docs/decisions/SCHEDULER_ACTIONS_DESIGN.md similarity index 100% rename from SCHEDULER_ACTIONS_DESIGN.md rename to docs/decisions/SCHEDULER_ACTIONS_DESIGN.md diff --git a/STEAM_WORKSHOP_DESIGN.md b/docs/decisions/STEAM_WORKSHOP_DESIGN.md similarity index 100% rename from STEAM_WORKSHOP_DESIGN.md rename to docs/decisions/STEAM_WORKSHOP_DESIGN.md diff --git a/docs/development/CODEX_GUIDE.md b/docs/development/CODEX_GUIDE.md index dd6189ea..1b953b72 100644 --- a/docs/development/CODEX_GUIDE.md +++ b/docs/development/CODEX_GUIDE.md @@ -17,12 +17,15 @@ This file is the first stop for future Codex sessions working in this repository 1. `docs/architecture/REPOSITORY_OVERVIEW.md` 2. `docs/architecture/PANEL_AGENT_FLOW.md` -3. `docs/modules/MODULE_INDEX.md` -4. `docs/modules/GAMEMANAGER.md` -5. `docs/features/STATUS_SYSTEM.md` -6. `docs/features/XML_SYSTEM.md` -7. `docs/modules/SCHEDULER.md` -8. `docs/modules/SERVER_CONTENT_MANAGER.md` +3. `docs/architecture/API_REFERENCE.md` +4. `docs/modules/MODULE_INDEX.md` +5. `docs/modules/GAMEMANAGER.md` +6. `docs/features/STATUS_SYSTEM.md` +7. `docs/features/XML_SYSTEM.md` +8. `docs/modules/SCHEDULER.md` +9. `docs/modules/SERVER_CONTENT_MANAGER.md` +10. `docs/decisions/` +11. `docs/games/` ## Important Files By Topic @@ -76,6 +79,20 @@ This file is the first stop for future Codex sessions working in this repository - `Agent_Linux/ogp_agent.pl` - `Agent-Windows/ogp_agent.pl` +### Decisions And Historical Reports + +- `docs/architecture/AI_GSP_ARCHITECTURE.md` +- `docs/decisions/0001-screen-vs-tmux.md` +- `docs/decisions/0002-status-detection.md` +- `docs/decisions/0003-companion-programs.md` +- `docs/decisions/0004-workshop-system.md` +- `docs/decisions/0005-control-path-layout.md` +- `docs/decisions/0006-installers.md` +- `docs/decisions/COMPANION_PROGRAMS_DESIGN.md` +- `docs/decisions/SCHEDULER_ACTIONS_DESIGN.md` +- `docs/decisions/STEAM_WORKSHOP_DESIGN.md` +- `docs/development/GSP_PLATFORM_IMPROVEMENT_REPORT.md` + ## Common Development Workflows ### Debug a start/stop/restart issue @@ -119,6 +136,7 @@ The repository has already been mapped in these areas: - current Server Content Manager structure - current scheduler structure - module-level roles and dependency patterns +- preserved investigation reports have been moved into the docs tree ## Things Intentionally Not Yet Implemented @@ -135,4 +153,3 @@ This documentation-only pass does not implement: ## Practical Rule for Future Sessions Before scanning code broadly, read the docs layer first. Only open source files when the documentation does not already answer the question. - diff --git a/GSP_PLATFORM_IMPROVEMENT_REPORT.md b/docs/development/GSP_PLATFORM_IMPROVEMENT_REPORT.md similarity index 100% rename from GSP_PLATFORM_IMPROVEMENT_REPORT.md rename to docs/development/GSP_PLATFORM_IMPROVEMENT_REPORT.md diff --git a/docs/features/COMPANION_PROGRAMS.md b/docs/features/COMPANION_PROGRAMS.md new file mode 100644 index 00000000..1a7f527c --- /dev/null +++ b/docs/features/COMPANION_PROGRAMS.md @@ -0,0 +1,39 @@ +# Companion Programs + +## Current State + +Companion programs are not yet a first-class managed system. Current behavior is mostly script-driven and game-specific. + +Important references: + +- `docs/decisions/0003-companion-programs.md` +- `Agent_Linux/ogp_agent.pl` +- `Agent-Windows/ogp_agent.pl` +- `Panel/modules/config_games/schema_server_config.xml` + +## What The System Needs To Do + +- start companion apps with the server +- stop companion apps when the server stops +- restart companion apps when the server restarts +- track PIDs or handles +- log stdout/stderr +- avoid customer-editable privileged startup scripts + +## Good Companion Examples + +- BEC for Arma/DayZ +- B3 +- Discord bots or bridges +- log watchers +- stats collectors +- anti-cheat helpers + +## Recommended Shape + +The system should be XML/admin-defined and agent-managed. + +## Recommendation + +Keep the design centralized and game-aware. Do not rely on one-off helper files as the source of truth. + diff --git a/docs/features/COMPETITOR_COMPARISON.md b/docs/features/COMPETITOR_COMPARISON.md new file mode 100644 index 00000000..28d64eb8 --- /dev/null +++ b/docs/features/COMPETITOR_COMPARISON.md @@ -0,0 +1,34 @@ +# Competitor Comparison + +## Reviewed Hosts / Panels + +- Open Game Panel +- TCAdmin +- Pterodactyl +- GameServers.com +- Nitrado + +## Comparison Themes + +| Area | Common Market Pattern | GSP Opportunity | +|---|---|---| +| Workshop / mods | Often present in a game-specific or host-specific way | Build a structured, game-capability-driven server content system. | +| Backups | Usually manual plus scheduled | Make backups easy, visible, restorable, and tied to retention policy. | +| Scheduling | Restarts, warnings, backups, updates | Support safer typed actions with task logs and conflict handling. | +| Status | Basic power state plus query metadata | Use agent-truth status and honest fallback messaging. | +| File management | Built-in file manager and FTP | Keep advanced file control but make it safer and clearer. | +| RCON | Often available in host tools | Make RCON presets, warnings, and logs clean and secure. | +| Permissions | Subusers/roles | Continue improving granular permissions and support workflows. | +| Provisioning | One-click create/install | Make provisioning audit-friendly and reliable. | +| Monitoring | State, logs, alerts | Surface startup failures, unresponsive servers, and maintenance notes clearly. | + +## Opportunities For GSP To Be Better + +- better documentation +- better agent-truth state +- clearer status transitions +- safer advanced control for power users +- more honest error reporting +- cleaner Server Content / Workshop handling +- tighter task history and logs + diff --git a/docs/features/FILE_EDITOR.md b/docs/features/FILE_EDITOR.md new file mode 100644 index 00000000..02a7c7e5 --- /dev/null +++ b/docs/features/FILE_EDITOR.md @@ -0,0 +1,26 @@ +# File Editor + +## Current State + +File editing is split across LiteFM, FTP, edit-config helpers, and agent remote read/write methods. + +Important references: + +- `Panel/modules/litefm/` +- `Panel/modules/ftp/` +- `Panel/modules/editconfigfiles/` +- `Panel/includes/lib_remote.php` + +## What It Should Provide + +- safe browsing inside server home roots +- text editing with syntax highlighting +- backups before save +- restore last saved version +- read-only protected paths +- large-file warnings + +## Main Risk + +Customer access must never extend into agent control files, shared secrets, or other users' server homes. + diff --git a/docs/features/FTP_SYSTEM.md b/docs/features/FTP_SYSTEM.md new file mode 100644 index 00000000..bb6c3a61 --- /dev/null +++ b/docs/features/FTP_SYSTEM.md @@ -0,0 +1,25 @@ +# FTP System + +## Current State + +GSP includes an FTP module and FTP-related provisioning fields. + +Important references: + +- `Panel/modules/ftp/module.php` +- `Panel/modules/user_games/module.php` +- `Panel/modules/server/module.php` + +## Current Notes + +- FTP remains useful for advanced users. +- The embedded FTP UI is legacy-heavy and should be treated carefully. +- FTP credentials need to be protected and easy to reset. + +## Recommended Direction + +- keep FTP as an advanced access method +- document it clearly +- avoid exposing control paths +- audit the legacy embedded file manager code + diff --git a/docs/features/INSTALLERS.md b/docs/features/INSTALLERS.md new file mode 100644 index 00000000..a5c4a7f7 --- /dev/null +++ b/docs/features/INSTALLERS.md @@ -0,0 +1,27 @@ +# Installers + +## Current State + +Installer behavior is split across game XML, gamemanager startup, addonsmanager, SteamCMD helpers, and agent scripts. + +Important references: + +- `Panel/modules/config_games/schema_server_config.xml` +- `Panel/modules/gamemanager/home_handling_functions.php` +- `Panel/modules/addonsmanager/module.php` +- `Panel/modules/steam_workshop/module.php` +- `Agent_Linux/ogp_agent.pl` +- `Agent-Windows/ogp_agent.pl` + +## Installer Types Seen In The Codebase + +- SteamCMD-based installs +- download/extract installs +- script-driven installs +- Workshop/content installs +- profile/content copy workflows + +## Recommended Model + +Installer strategy should come from game capability metadata. The agent should execute trusted strategies, not arbitrary customer commands. + diff --git a/docs/features/LOGGING_SYSTEM.md b/docs/features/LOGGING_SYSTEM.md new file mode 100644 index 00000000..ba463bc7 --- /dev/null +++ b/docs/features/LOGGING_SYSTEM.md @@ -0,0 +1,33 @@ +# Logging System + +## Current State + +Logging comes from multiple places: + +- agent screen logs +- console logs +- update logs +- scheduler logs +- admin/logger history + +Important references: + +- `Panel/modules/gamemanager/log.php` +- `Panel/modules/gamemanager/view_server_log.php` +- `Panel/modules/gamemanager/get_server_log.php` +- `Agent_Linux/ogp_agent.pl` +- `Agent-Windows/ogp_agent.pl` + +## What Works + +- live log retrieval exists +- logs can be fetched through the Panel +- the viewer can update via AJAX + +## What Still Needs Cleanup + +- better startup failure diagnostics +- clearer newest-log-file selection +- better error highlighting +- better downloadable log history + diff --git a/docs/features/PROVISIONING.md b/docs/features/PROVISIONING.md new file mode 100644 index 00000000..5f067942 --- /dev/null +++ b/docs/features/PROVISIONING.md @@ -0,0 +1,38 @@ +# Provisioning + +## Current State + +Server provisioning flows are centered in `user_games` and supported by billing and server manager modules. + +Important references: + +- `Panel/modules/user_games/module.php` +- `Panel/modules/user_games/add_home.php` +- `Panel/modules/user_games/edit_home.php` +- `Panel/modules/user_games/assign_home.php` +- `Panel/modules/user_games/clone_home.php` +- `Panel/modules/user_games/check_expire.php` +- `Panel/includes/api_functions.php` +- `Panel/modules/billing/module.php` +- `Panel/modules/server/module.php` + +## What Provisioning Must Handle + +- server home creation +- port assignment +- passwords +- FTP access +- expiration and suspension +- clone/migrate behavior +- game XML and mod selection + +## Recommended Direction + +Provisioning should be validated and logged more like a commercial hosting platform: + +- clear create/install status +- no port collisions +- secure default passwords +- clear billing lifecycle behavior +- post-create status verification + diff --git a/docs/features/RCON_SYSTEM.md b/docs/features/RCON_SYSTEM.md new file mode 100644 index 00000000..fcc9dc14 --- /dev/null +++ b/docs/features/RCON_SYSTEM.md @@ -0,0 +1,27 @@ +# RCON System + +## Current State + +RCON support is part of the gamemanager and a dedicated admin RCON module. + +Important references: + +- `Panel/modules/gamemanager/module.php` +- `Panel/modules/gamemanager/home_handling_functions.php` +- `Panel/modules/gamemanager/rcon.php` +- `Panel/modules/rcon/module.php` + +## Current Uses + +- admin console commands +- warning messages before restart +- diagnostic control for supported games +- scheduler-friendly command execution + +## Recommended Direction + +- keep presets +- validate commands where possible +- do not expose arbitrary commands to customers by default +- log every command with user and server context + diff --git a/docs/features/SCHEDULER_SYSTEM.md b/docs/features/SCHEDULER_SYSTEM.md new file mode 100644 index 00000000..16069eac --- /dev/null +++ b/docs/features/SCHEDULER_SYSTEM.md @@ -0,0 +1,35 @@ +# Scheduler System + +## Current State + +The scheduler is implemented through the `cron` Panel module and agent-side `Schedule::Cron` execution. + +Important references: + +- `docs/modules/SCHEDULER.md` +- `Panel/modules/cron/cron.php` +- `Panel/modules/cron/shared_cron_functions.php` +- `Agent_Linux/ogp_agent.pl` +- `Agent-Windows/ogp_agent.pl` + +## Current Strengths + +- It can schedule server actions. +- It can schedule Steam updates and server content actions. +- It already has a visible UI and agent execution path. + +## Current Weaknesses + +- It is too command-string oriented. +- Customer-safe and admin-only actions are not separated cleanly enough. +- Task run history is not rich enough. +- Error reporting and conflict handling need work. + +## Recommended Direction + +- typed actions +- explicit permissions +- stored task history +- clear logs and results +- no customer raw shell commands by default + diff --git a/docs/games/README.md b/docs/games/README.md new file mode 100644 index 00000000..42dcc85f --- /dev/null +++ b/docs/games/README.md @@ -0,0 +1,31 @@ +# Games + +This folder is reserved for game-by-game documentation. + +## Current Role + +The detailed game-specific behavior still lives mainly in: + +- `Panel/modules/config_games/schema_server_config.xml` +- `Panel/modules/config_games/server_config_parser.php` +- `Panel/modules/gamemanager/home_handling_functions.php` +- `Panel/modules/addonsmanager/` +- the agent startup and Workshop/content scripts + +## Planned Contents + +Future game docs should cover: + +- startup parameters +- query ports +- RCON ports +- common config files +- Workshop/mod support +- install strategies +- status quirks +- troubleshooting notes + +## Current Gap + +There is not yet a full game-by-game documentation catalog in this folder. That is the next obvious documentation pass after the module and architecture layers. + diff --git a/docs/modules/MODULE_INDEX.md b/docs/modules/MODULE_INDEX.md index 3d174cf6..fe26380f 100644 --- a/docs/modules/MODULE_INDEX.md +++ b/docs/modules/MODULE_INDEX.md @@ -1,54 +1,54 @@ # Module Index -This is the current Panel module inventory. It is intentionally concise so future Codex sessions can decide which module to inspect in code. +This is the master module inventory for the Panel. Use it as the first stop before opening module code. -| Module | Purpose | Current State | Dependencies | Notes | -|---|---|---|---|---| -| `TS3Admin` | Teamspeak 3 admin interface | Required, legacy niche | TS3 admin files | Keep if TS3 hosting is sold. | -| `addonsmanager` | Server Content Manager | Required, actively evolving | DB tables, game XML, agent install scripts | Best current home for mods, add-ons, Workshop, and content installs. | -| `administration` | Admin utilities | Required | Core admin pages | Includes logger/watch tools. | -| `backup-restore` | Backup/restore UI | Optional, broken/testing | Hard-coded backup host/path logic | Hide until replaced. | -| `billing` | Billing, provisioning, commerce | Optional, large custom module | Payment gateways, invoices, shop/provisioning docs | Important for commercial hosting. | -| `circular` | Notification/circular messages | Optional | Panel UI | Good candidate for maintenance and announcement notices. | -| `config_games` | Game XML definitions and CLI builder | Required | XML schema/parser | Critical for startup templates, queries, custom fields, and game capabilities. | -| `cron` | Scheduler / CRON | Required | Agent scheduler methods, Panel action selection | Needs safe action registry and task history. | -| `dashboard` | Main landing dashboard | Required | Panel auth and server summaries | Should surface status, support, billing, and alerts. | -| `dsi` | Dynamic Server Image | Optional | Game imagery and cached assets | Useful for server cards and branding. | -| `editconfigfiles` | Config file shortcuts | Optional | Game config metadata | Good for surfacing common editable files. | -| `faq` | FAQ/help | Required | Site docs/content | Should link to game docs and common workflows. | -| `fast_download` | FastDL support | Required | Source/GoldSrc-style web distribution | Still useful for older Source engine communities. | -| `ftp` | FTP admin | Required | File transfer service, access rights | Needs security review but remains important. | -| `gamemanager` | Server monitor, lifecycle, logs, RCON | Required | Agent RPC, game XML, query libraries | Core customer workflow module. | -| `lgsl_with_img_mod` | LGSL server status images | Optional legacy | Query/image cache data | Secondary to agent truth. | -| `litefm` | In-panel file manager | Required | File system access rights | Should be the preferred in-panel file tool. | -| `lostpwd` | Password recovery | Required | Auth/account flow | Basic account support. | -| `modulemanager` | Module installation/configuration | Required | Module metadata | Admin maintenance tool. | -| `mysql` | MySQL hosting/admin | Required | MySQL service setup | Good future product tie-in for databases. | -| `news` | Legacy news/announcements | Optional legacy | Old CMS-like data | Consider hiding unless modernized. | -| `rcon` | RCON admin tool | Required | Server protocol support | Useful for commands, warnings, and scheduler integration. | -| `register` | Account registration | Required | Auth flow | Basic customer onboarding. | -| `server` | Server manager | Required | Agent/node management | Admin-facing node controls. | -| `settings` | Global settings | Required | Auth, site config | Admin configuration area. | -| `status` | Status page | Optional alpha | Status data | Not ready for customer-facing critical use. | -| `steam_workshop` | Legacy Workshop module | Optional deprecated | Workshop DB helpers | Hidden/deprecated in favor of `addonsmanager`. | -| `subusers` | Subuser permissions | Required | Authorization model | Important for commercial teams and communities. | -| `support` | Support landing page | Required | Ticketing/docs | Better as an entry point than the full ticket workflow. | -| `teamspeak3` | Teamspeak 3 web interface | Required if sold | TS3 service | Hide if not part of the product offering. | -| `tickets` | Support ticket system | Optional but useful | DB tables, attachments, notifications | Stronger support workflow than `support` alone. | -| `tshock` | Terraria/TShock utilities | Optional niche | Terraria/TShock game support | Expose only for supported games. | -| `update` | Panel updates | Required admin tool | Patch/update system | Admin-only maintenance. | -| `user_admin` | User management | Required | Auth/admin roles | Important for staff administration. | -| `user_games` | Server provisioning and assignment | Required | Game homes, ports, billing integration | Core provisioning path. | -| `util` | Utility tools | Required | Misc tools | Keep useful tools, hide legacy helpers that are not maintained. | +| Module | Purpose | Status | Recommendation | +|---|---|---|---| +| [`TS3Admin`](TS3Admin.md) | Teamspeak 3 admin interface | Functional / niche | Keep or hide depending on product line | +| [`administration`](administration.md) | Admin utilities and logging helpers | Functional / legacy-leaning | Keep | +| [`addonsmanager`](SERVER_CONTENT_MANAGER.md) | Server Content Manager | Functional / actively evolving | Keep / Improve | +| [`backup-restore`](backup-restore.md) | Backup and restore UI | Broken | Remove / Replace | +| [`billing`](billing.md) | Billing, provisioning, commerce | Functional / partial | Keep / Rewrite | +| [`circular`](circular.md) | Notification and circular messages | Functional | Keep / Improve | +| [`config_games`](config_games.md) | XML game definitions and CLI builder | Production / functional | Keep / Improve | +| [`cron`](SCHEDULER.md) | Scheduler / CRON | Functional / partial | Rewrite / Improve | +| [`dashboard`](dashboard.md) | Main landing dashboard | Functional | Keep / Improve | +| [`dsi`](dsi.md) | Dynamic Server Image | Legacy / functional | Keep / Audit | +| [`editconfigfiles`](editconfigfiles.md) | Config file shortcuts | Functional / partial | Keep / Improve | +| [`faq`](faq.md) | FAQ and help content | Functional | Keep / Improve | +| [`fast_download`](fast_download.md) | FastDL support | Functional | Keep | +| [`ftp`](ftp.md) | FTP administration | Functional / legacy-heavy | Keep / Rewrite | +| [`gamemanager`](GAMEMANAGER.md) | Server monitor, lifecycle, logs, RCON | Production / functional | Keep / Improve | +| [`lgsl_with_img_mod`](lgsl_with_img_mod.md) | LGSL server status images | Legacy | Deprecate / Keep as legacy | +| [`litefm`](litefm.md) | In-panel file manager | Functional | Keep / Improve | +| [`lostpwd`](lostpwd.md) | Password recovery | Functional | Keep | +| [`modulemanager`](modulemanager.md) | Module installation and access rights | Functional | Keep | +| [`mysql`](mysql.md) | MySQL hosting/admin | Functional / future-facing | Keep / Future | +| [`news`](news.md) | Legacy news / announcements | Legacy | Deprecate / Hide unless modernized | +| [`rcon`](rcon.md) | RCON admin tool | Functional | Keep / Improve | +| [`register`](register.md) | Account registration | Functional | Keep | +| [`server`](server.md) | Remote server and node manager | Production / administrative | Keep / Improve | +| [`settings`](settings.md) | Panel settings and themes | Production | Keep | +| [`status`](status.md) | Status page | Experimental / alpha | Rewrite / Deprecate | +| [`steam_workshop`](steam_workshop.md) | Legacy Workshop module | Deprecated | Deprecate / Merge | +| [`subusers`](subusers.md) | Subuser permissions | Functional | Keep / Improve | +| [`support`](support.md) | Support landing page | Functional | Keep / Merge with tickets workflow | +| [`teamspeak3`](teamspeak3.md) | Teamspeak 3 web interface | Functional if sold | Keep or hide based on product line | +| [`tickets`](tickets.md) | Support ticket system | Production / functional | Keep / Improve | +| [`tshock`](tshock.md) | Terraria/TShock utilities | Alpha / partial | Keep conditional / Improve | +| [`update`](update.md) | Panel update tooling | Production / admin-only | Keep | +| [`user_admin`](user_admin.md) | User management | Production | Keep / Improve | +| [`user_games`](user_games.md) | Server provisioning and assignment | Production / functional | Keep / Improve | +| [`util`](util.md) | Miscellaneous utility tools | Functional / mixed | Keep / Rewrite selectively | -## Dependency Notes +## Shared Dependencies Common dependencies across many modules: -- `includes/lib_remote.php` +- `Panel/includes/lib_remote.php` - auth/session and role checks - `config_games` XML parsing -- DB access helpers +- database access helpers - server home and IP/port records ## High-Value Modules @@ -65,4 +65,3 @@ The modules most likely to matter in future investigations are: 8. `billing` 9. `tickets` 10. `subusers` - diff --git a/docs/modules/TS3Admin.md b/docs/modules/TS3Admin.md new file mode 100644 index 00000000..f53cbe51 --- /dev/null +++ b/docs/modules/TS3Admin.md @@ -0,0 +1,52 @@ +# TS3Admin + +## Purpose + +Teamspeak 3 admin interface module. + +## Current Status + +- Functional +- Niche + +## Dependencies + +- TS3 server administration data +- Teamspeak 3 service access + +## Database Tables + +- `ts3_homes` + +## Agent Interaction + +- indirect through TS3 service administration + +## User Workflow + +- manage TS3 service associations + +## Admin Workflow + +- configure TS3 homes and credentials + +## Security Concerns + +- Teamspeak credentials and host access + +## Known Issues + +- separate niche module from the game-server core + +## Missing Functionality + +- clearer docs and product positioning + +## Suggested Future Improvements + +- keep only if TS3 hosting is part of the offering + +## Recommendation + +- Keep / Hide depending on product line + diff --git a/docs/modules/administration.md b/docs/modules/administration.md new file mode 100644 index 00000000..10a04c01 --- /dev/null +++ b/docs/modules/administration.md @@ -0,0 +1,60 @@ +# Administration + +## Purpose + +Admin utilities and logging helpers, including the watch logger and external link storage. + +## Current Status + +- Functional +- Legacy-leaning + +## Dependencies + +- Panel admin pages +- `adminExternalLinks` table +- `logger` table + +## Database Tables + +- `adminExternalLinks` +- `logger` + +## Agent Interaction + +- None directly + +## User Workflow + +- Not customer-facing + +## Admin Workflow + +- manage external admin links +- inspect logger records +- use watch logger tools + +## Security Concerns + +- admin-only access +- log visibility should be role-gated + +## Known Issues + +- legacy UI patterns +- limited product value compared to newer notification/support systems + +## Missing Functionality + +- modern audit/log search +- tighter integration with support and notifications + +## Suggested Future Improvements + +- merge logger views into a unified audit area +- replace old link utilities with clearer admin widgets + +## Recommendation + +- Keep + diff --git a/docs/modules/backup-restore.md b/docs/modules/backup-restore.md new file mode 100644 index 00000000..c742eeae --- /dev/null +++ b/docs/modules/backup-restore.md @@ -0,0 +1,62 @@ +# Backup Restore + +## Purpose + +Backup and restore UI for game server homes. + +## Current Status + +- Broken +- Testing-phase messaging in code + +## Dependencies + +- Hard-coded backup paths and external backup host details in module code +- Manual shell execution + +## Database Tables + +- None declared in module metadata + +## Agent Interaction + +- Not a clean agent-driven workflow + +## User Workflow + +- Customer-facing but not production-ready + +## Admin Workflow + +- currently used as an experimental/testing interface only + +## Security Concerns + +- hard-coded paths +- hard-coded credentials style behavior +- shell command construction +- not safe as a production backup path + +## Known Issues + +- explicit "not working" messaging +- dry-run style behavior +- restore flow is not a real product workflow + +## Missing Functionality + +- real backup job model +- retention policy +- restore verification +- download/export +- agent-integrated backup execution + +## Suggested Future Improvements + +- replace with a managed backup system +- move backup state and logs into the Panel/agent architecture + +## Recommendation + +- Remove / Replace + diff --git a/docs/modules/billing.md b/docs/modules/billing.md new file mode 100644 index 00000000..53b803f2 --- /dev/null +++ b/docs/modules/billing.md @@ -0,0 +1,73 @@ +# Billing + +## Purpose + +Commercial billing, provisioning, invoices, orders, transactions, coupons, and payment gateway integration. + +## Current Status + +- Functional +- Partial / complex + +## Dependencies + +- Payment gateways +- provisioning flow +- server lifecycle and expiration logic +- docs under `Panel/modules/billing/docs/` + +## Database Tables + +- `billing_services` +- `billing_orders` +- `billing_invoices` +- `billing_transactions` +- `billing_coupons` +- `billing_config` +- `billing_paypal_webhook_events` +- `billing_paypal_errors` + +## Agent Interaction + +- indirect through provisioning and server lifecycle + +## User Workflow + +- shop/service purchase +- invoice/payment flow +- renewals +- account/service status + +## Admin Workflow + +- configure payment gateways +- manage coupons and pricing +- inspect invoices/transactions +- manage provisioning behavior + +## Security Concerns + +- payment keys and webhook secrets +- user identity and billing data +- service suspension/expiration behavior + +## Known Issues + +- large and complex module surface +- requires strong testing around provisioning lifecycle + +## Missing Functionality + +- cleaner linkage from billing events to server state +- clearer expiration/suspension docs and UX + +## Suggested Future Improvements + +- simplify provisioning audit +- add clearer service lifecycle feedback +- link billing more directly to support and server monitor + +## Recommendation + +- Keep / Rewrite + diff --git a/docs/modules/circular.md b/docs/modules/circular.md new file mode 100644 index 00000000..9d858ef3 --- /dev/null +++ b/docs/modules/circular.md @@ -0,0 +1,57 @@ +# Circular + +## Purpose + +Admin notifications / circular messages for broadcasting announcements to users. + +## Current Status + +- Functional + +## Dependencies + +- Panel notification flow +- user recipient tracking + +## Database Tables + +- `circular` +- `circular_recipients` + +## Agent Interaction + +- None directly + +## User Workflow + +- receive announcements / notifications + +## Admin Workflow + +- create a circular message +- target recipients +- review delivery state + +## Security Concerns + +- message content should be sanitized +- recipient scoping must be correct + +## Known Issues + +- older notification pattern + +## Missing Functionality + +- richer maintenance scheduling integration +- email/Discord bridge + +## Suggested Future Improvements + +- integrate with support and maintenance alerts +- expose clearer read/unread state + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/config_games.md b/docs/modules/config_games.md new file mode 100644 index 00000000..e1eb014b --- /dev/null +++ b/docs/modules/config_games.md @@ -0,0 +1,69 @@ +# Config Games + +## Purpose + +Game XML definitions, CLI parameter generation, mod definitions, and custom field mapping. + +## Current Status + +- Production +- Functional + +## Dependencies + +- XML schema +- XML parser +- gamemanager +- user_games +- file/config editing tools + +## Database Tables + +- `config_homes` +- `config_mods` + +## Agent Interaction + +- drives startup command construction +- influences query and control protocol handling + +## User Workflow + +- select a game definition +- configure startup parameters +- view/edit common CLI values +- work with custom fields + +## Admin Workflow + +- create/update XML game configs +- define mods, CLI params, ports, and custom fields +- validate XML structure + +## Security Concerns + +- parameter injection +- shell escaping +- path validation + +## Known Issues + +- schema is powerful but broad +- some capabilities are encoded implicitly instead of declaratively + +## Missing Functionality + +- first-class workshop/content capability declarations +- first-class scheduler capability declarations +- richer docs metadata + +## Suggested Future Improvements + +- extend XML capability model +- document supported variables and examples more clearly +- tie docs generation into XML + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/cron.md b/docs/modules/cron.md new file mode 100644 index 00000000..78c69564 --- /dev/null +++ b/docs/modules/cron.md @@ -0,0 +1,69 @@ +# Cron + +## Purpose + +Scheduler / CRON for game server automation. + +## Current Status + +- Functional +- Partial + +## Dependencies + +- Panel action selectors +- agent scheduler tasks +- server monitor and content systems + +## Database Tables + +- None declared by the module metadata + +## Agent Interaction + +- `scheduler_add_task` +- `scheduler_edit_task` +- `scheduler_del_task` +- `scheduler_list_tasks` +- `scheduler_read_tasks` + +## User Workflow + +- create recurring server actions +- review task list and event output + +## Admin Workflow + +- create server-wide tasks +- create raw command tasks +- manage server content action automation + +## Security Concerns + +- raw commands can be dangerous +- API tokens in callbacks need careful handling +- customer-safe actions must be separated from admin-only actions + +## Known Issues + +- too command-string oriented +- limited task history +- overlap and conflict rules are weak + +## Missing Functionality + +- typed action registry +- task run history +- notifications +- missed-run handling + +## Suggested Future Improvements + +- rebuild around safe actions +- add structured logs and result states +- make customer-safe actions distinct from admin actions + +## Recommendation + +- Rewrite / Improve + diff --git a/docs/modules/dashboard.md b/docs/modules/dashboard.md new file mode 100644 index 00000000..0c828442 --- /dev/null +++ b/docs/modules/dashboard.md @@ -0,0 +1,53 @@ +# Dashboard + +## Purpose + +Main landing dashboard with widgets and quick server overview. + +## Current Status + +- Functional + +## Dependencies + +- Panel dashboard widgets +- user permissions + +## Database Tables + +- `widgets` +- `widgets_users` + +## Agent Interaction + +- indirect through monitor widgets and server summaries + +## User Workflow + +- view server summary widgets +- access quick links + +## Admin Workflow + +- manage dashboard widgets and layout + +## Security Concerns + +- widget visibility should respect permissions + +## Known Issues + +- some default widgets are legacy + +## Missing Functionality + +- richer status and alert surfaces + +## Suggested Future Improvements + +- surface lifecycle state, support, billing, and docs more prominently + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/dsi.md b/docs/modules/dsi.md new file mode 100644 index 00000000..ece7612a --- /dev/null +++ b/docs/modules/dsi.md @@ -0,0 +1,52 @@ +# Dynamic Server Image + +## Purpose + +Dynamic server image and artwork management for server cards. + +## Current Status + +- Functional +- Legacy / niche + +## Dependencies + +- cached server images +- game-specific artwork assets + +## Database Tables + +- None declared in module metadata + +## Agent Interaction + +- None directly + +## User Workflow + +- view server images in dashboard/status contexts + +## Admin Workflow + +- configure imagery and defaults + +## Security Concerns + +- image cache and file path safety + +## Known Issues + +- niche module with limited platform-critical value + +## Missing Functionality + +- clearer integration with docs and server cards + +## Suggested Future Improvements + +- keep only if the product uses it heavily + +## Recommendation + +- Keep / Audit + diff --git a/docs/modules/editconfigfiles.md b/docs/modules/editconfigfiles.md new file mode 100644 index 00000000..14431fa6 --- /dev/null +++ b/docs/modules/editconfigfiles.md @@ -0,0 +1,55 @@ +# Edit Config Files + +## Purpose + +Game-specific shortcuts for editing common configuration files. + +## Current Status + +- Functional +- Partial + +## Dependencies + +- game XML +- file manager / remote read-write helpers + +## Database Tables + +- None declared in module metadata + +## Agent Interaction + +- remote file read/write + +## User Workflow + +- open common config files quickly +- edit and save them + +## Admin Workflow + +- define which files are surfaced and how + +## Security Concerns + +- path validation +- protected file roots + +## Known Issues + +- can become a simple wrapper around file editing without enough game context + +## Missing Functionality + +- backup-before-save +- better docs and common file shortcuts + +## Suggested Future Improvements + +- tie to XML docs and common config templates + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/faq.md b/docs/modules/faq.md new file mode 100644 index 00000000..d3a4682f --- /dev/null +++ b/docs/modules/faq.md @@ -0,0 +1,51 @@ +# F.A.Q. + +## Purpose + +Basic help and FAQ content for users. + +## Current Status + +- Functional + +## Dependencies + +- site help content +- docs links + +## Database Tables + +- None declared in module metadata + +## Agent Interaction + +- None directly + +## User Workflow + +- read help content + +## Admin Workflow + +- maintain FAQ content + +## Security Concerns + +- content sanitization + +## Known Issues + +- limited compared to full docs system + +## Missing Functionality + +- game-aware docs integration + +## Suggested Future Improvements + +- link FAQ entries to module and game docs + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/fast_download.md b/docs/modules/fast_download.md new file mode 100644 index 00000000..fbac637c --- /dev/null +++ b/docs/modules/fast_download.md @@ -0,0 +1,53 @@ +# Fast Download + +## Purpose + +FastDL support for Source/GoldSrc style content distribution. + +## Current Status + +- Functional + +## Dependencies + +- web server / FastDL setup +- access rules + +## Database Tables + +- `fastdl_access_rules` +- `fastdl_settings` + +## Agent Interaction + +- fastdl service management through agent RPC + +## User Workflow + +- download client assets faster from the server host + +## Admin Workflow + +- configure rules and server settings + +## Security Concerns + +- file exposure rules +- bandwidth / access control + +## Known Issues + +- niche feature set + +## Missing Functionality + +- better UI and docs + +## Suggested Future Improvements + +- keep for Source-family communities + +## Recommendation + +- Keep + diff --git a/docs/modules/ftp.md b/docs/modules/ftp.md new file mode 100644 index 00000000..f1ee898b --- /dev/null +++ b/docs/modules/ftp.md @@ -0,0 +1,59 @@ +# FTP + +## Purpose + +FTP administration and access control for server homes. + +## Current Status + +- Functional +- Legacy-heavy + +## Dependencies + +- FTP service / access credentials +- file management permissions + +## Database Tables + +- None declared in module metadata + +## Agent Interaction + +- FTP manager helpers through `lib_remote.php` + +## User Workflow + +- receive FTP credentials +- upload/download files through FTP client software + +## Admin Workflow + +- configure FTP access behavior +- manage permissions + +## Security Concerns + +- credentials +- root/path exposure +- embedded legacy net2ftp code + +## Known Issues + +- old embedded FTP UI stack +- security review needed + +## Missing Functionality + +- cleaner modern FTP/SFTP guidance +- clear boundary to protect agent/control files + +## Suggested Future Improvements + +- keep FTP as an advanced access path +- audit or replace the embedded UI layer + +## Recommendation + +- Keep / Rewrite + diff --git a/docs/modules/gamemanager.md b/docs/modules/gamemanager.md new file mode 100644 index 00000000..c7ea28dc --- /dev/null +++ b/docs/modules/gamemanager.md @@ -0,0 +1,4 @@ +# gamemanager + +This page is an alias for [GAMEMANAGER.md](GAMEMANAGER.md). The full module documentation lives there. + diff --git a/docs/modules/lgsl_with_img_mod.md b/docs/modules/lgsl_with_img_mod.md new file mode 100644 index 00000000..3e5e769d --- /dev/null +++ b/docs/modules/lgsl_with_img_mod.md @@ -0,0 +1,53 @@ +# LGSL With Image Mod + +## Purpose + +Legacy LGSL status listing and image-based server display. + +## Current Status + +- Legacy +- Functional for query display + +## Dependencies + +- LGSL query data +- cached image assets + +## Database Tables + +- `lgsl` + +## Agent Interaction + +- query-based display only + +## User Workflow + +- view public-facing server status images + +## Admin Workflow + +- manage LGSL entries + +## Security Concerns + +- query trust should not be treated as server truth + +## Known Issues + +- legacy status approach +- overlaps with modern agent status reporting + +## Missing Functionality + +- clearer integration with the current status model + +## Suggested Future Improvements + +- keep only where the image-based listing is still desired + +## Recommendation + +- Deprecate / Keep as legacy + diff --git a/docs/modules/litefm.md b/docs/modules/litefm.md new file mode 100644 index 00000000..4819d7f2 --- /dev/null +++ b/docs/modules/litefm.md @@ -0,0 +1,61 @@ +# Lite File Manager + +## Purpose + +In-panel file manager and file editor for customer server homes. + +## Current Status + +- Functional +- Important core tool + +## Dependencies + +- file access rights +- remote file read/write/list helpers +- editor assets + +## Database Tables + +- None declared in module metadata + +## Agent Interaction + +- remote file listings +- read/write operations + +## User Workflow + +- browse files +- upload/download +- edit common configs + +## Admin Workflow + +- set file management permissions +- configure file manager behavior + +## Security Concerns + +- path traversal +- protected control files +- shared secret exposure + +## Known Issues + +- should be hardened around safe roots and backups + +## Missing Functionality + +- stronger backup-before-save +- better large file handling +- clearer read-only protected path UX + +## Suggested Future Improvements + +- make this the preferred editor and file browsing path + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/lostpwd.md b/docs/modules/lostpwd.md new file mode 100644 index 00000000..52cc6562 --- /dev/null +++ b/docs/modules/lostpwd.md @@ -0,0 +1,50 @@ +# Lost Password + +## Purpose + +Password recovery flow for users. + +## Current Status + +- Functional + +## Dependencies + +- auth and email recovery flow + +## Database Tables + +- None declared in module metadata + +## Agent Interaction + +- None directly + +## User Workflow + +- request password reset + +## Admin Workflow + +- not a primary admin surface + +## Security Concerns + +- reset tokens and email verification must be secure + +## Known Issues + +- basic account-management module + +## Missing Functionality + +- richer account recovery UX + +## Suggested Future Improvements + +- keep stable and simple + +## Recommendation + +- Keep + diff --git a/docs/modules/modulemanager.md b/docs/modules/modulemanager.md new file mode 100644 index 00000000..5e527281 --- /dev/null +++ b/docs/modules/modulemanager.md @@ -0,0 +1,52 @@ +# Module Manager + +## Purpose + +Install and manage Panel modules and access rights. + +## Current Status + +- Functional + +## Dependencies + +- module metadata +- access rights registry + +## Database Tables + +- `module_access_rights` + +## Agent Interaction + +- None directly + +## User Workflow + +- none, admin-only + +## Admin Workflow + +- enable/disable modules +- manage access flags + +## Security Concerns + +- module access rights control what users can see and do + +## Known Issues + +- older module administration workflow + +## Missing Functionality + +- better module documentation and dependency graph + +## Suggested Future Improvements + +- surface module health and compatibility more clearly + +## Recommendation + +- Keep + diff --git a/docs/modules/mysql.md b/docs/modules/mysql.md new file mode 100644 index 00000000..edfe2316 --- /dev/null +++ b/docs/modules/mysql.md @@ -0,0 +1,53 @@ +# MySQL + +## Purpose + +MySQL hosting/admin module for servers and databases. + +## Current Status + +- Functional +- Future-facing + +## Dependencies + +- MySQL service setup +- server assignment + +## Database Tables + +- `mysql_servers` +- `mysql_databases` + +## Agent Interaction + +- indirect service provisioning + +## User Workflow + +- create/manage databases when enabled + +## Admin Workflow + +- configure MySQL servers and permissions + +## Security Concerns + +- database credentials and privilege strings + +## Known Issues + +- not a central focus of the current product line + +## Missing Functionality + +- clearer customer-facing DB hosting UX + +## Suggested Future Improvements + +- improve if DB hosting is part of the offering + +## Recommendation + +- Keep / Future + diff --git a/docs/modules/news.md b/docs/modules/news.md new file mode 100644 index 00000000..3e11ef0b --- /dev/null +++ b/docs/modules/news.md @@ -0,0 +1,51 @@ +# NewsLister + +## Purpose + +Legacy news and announcement module. + +## Current Status + +- Legacy +- Optional + +## Dependencies + +- old CMS-style content + +## Database Tables + +- none declared in module metadata + +## Agent Interaction + +- None directly + +## User Workflow + +- view announcements/news posts + +## Admin Workflow + +- create/edit news content + +## Security Concerns + +- old content system patterns + +## Known Issues + +- legacy news/lister architecture + +## Missing Functionality + +- modern notification and maintenance messaging + +## Suggested Future Improvements + +- replace with circular notifications or a modern announcements system + +## Recommendation + +- Deprecate / Hide unless modernized + diff --git a/docs/modules/rcon.md b/docs/modules/rcon.md new file mode 100644 index 00000000..88baa14a --- /dev/null +++ b/docs/modules/rcon.md @@ -0,0 +1,53 @@ +# Rcon + +## Purpose + +Admin RCON interface for issuing console commands to supported game servers. + +## Current Status + +- Functional + +## Dependencies + +- server control protocol support +- gamemanager + +## Database Tables + +- none declared in module metadata + +## Agent Interaction + +- sends RCON/console commands through the agent + +## User Workflow + +- usually not customer-facing + +## Admin Workflow + +- run commands +- support warning messages and diagnostics + +## Security Concerns + +- command validation +- log every command + +## Known Issues + +- command safety depends heavily on module-specific restrictions + +## Missing Functionality + +- richer presets and command history + +## Suggested Future Improvements + +- integrate more tightly with scheduler warnings and support workflows + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/register.md b/docs/modules/register.md new file mode 100644 index 00000000..15396ad8 --- /dev/null +++ b/docs/modules/register.md @@ -0,0 +1,51 @@ +# Register + +## Purpose + +User registration module. + +## Current Status + +- Functional + +## Dependencies + +- auth and account creation flow + +## Database Tables + +- none declared in module metadata + +## Agent Interaction + +- None directly + +## User Workflow + +- create an account + +## Admin Workflow + +- not an admin surface + +## Security Concerns + +- registration abuse prevention +- email validation + +## Known Issues + +- basic account onboarding module + +## Missing Functionality + +- richer onboarding / invitation flows + +## Suggested Future Improvements + +- keep stable and minimal + +## Recommendation + +- Keep + diff --git a/docs/modules/server.md b/docs/modules/server.md new file mode 100644 index 00000000..83d1e12d --- /dev/null +++ b/docs/modules/server.md @@ -0,0 +1,59 @@ +# Server Manager + +## Purpose + +Remote server/node management in the Panel. + +## Current Status + +- Production +- Administrative + +## Dependencies + +- remote server records +- port arrangements +- agent connection settings + +## Database Tables + +- `remote_server_ips` +- `remote_servers` +- `arrange_ports` + +## Agent Interaction + +- manages the agent endpoints and node-level data + +## User Workflow + +- not usually customer-facing + +## Admin Workflow + +- add/remove remote servers +- manage IPs, ports, NAT, firewall settings +- review node configuration + +## Security Concerns + +- encryption keys +- timeout settings +- firewall/IP exposure + +## Known Issues + +- admin UX is older and could be clearer + +## Missing Functionality + +- richer node health and capacity dashboard + +## Suggested Future Improvements + +- improve node monitoring and provisioning diagnostics + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/settings.md b/docs/modules/settings.md new file mode 100644 index 00000000..9b0d079d --- /dev/null +++ b/docs/modules/settings.md @@ -0,0 +1,51 @@ +# Settings + +## Purpose + +Panel settings, theme settings, and core site configuration. + +## Current Status + +- Production + +## Dependencies + +- auth/admin configuration + +## Database Tables + +- `settings` + +## Agent Interaction + +- None directly + +## User Workflow + +- none, admin-only + +## Admin Workflow + +- update panel settings +- update theme settings + +## Security Concerns + +- global configuration values need protection + +## Known Issues + +- basic settings model + +## Missing Functionality + +- clearer configuration grouping and validation + +## Suggested Future Improvements + +- improve admin UX and settings validation + +## Recommendation + +- Keep + diff --git a/docs/modules/status.md b/docs/modules/status.md new file mode 100644 index 00000000..a9270d23 --- /dev/null +++ b/docs/modules/status.md @@ -0,0 +1,52 @@ +# Status + +## Purpose + +Admin status page for server/node state. + +## Current Status + +- Experimental +- Alpha + +## Dependencies + +- status data +- node/server metadata + +## Database Tables + +- none declared in module metadata + +## Agent Interaction + +- may read status summaries + +## User Workflow + +- not a primary customer workflow + +## Admin Workflow + +- inspect status information + +## Security Concerns + +- should not expose sensitive details without permissions + +## Known Issues + +- alpha-grade module + +## Missing Functionality + +- stable dashboard integration + +## Suggested Future Improvements + +- replace with a proper node health/status dashboard + +## Recommendation + +- Rewrite / Deprecate + diff --git a/docs/modules/steam_workshop.md b/docs/modules/steam_workshop.md new file mode 100644 index 00000000..0b44913e --- /dev/null +++ b/docs/modules/steam_workshop.md @@ -0,0 +1,55 @@ +# Steam Workshop + +## Purpose + +Legacy standalone Steam Workshop support. + +## Current Status + +- Deprecated +- Compatibility only + +## Dependencies + +- Steam Workshop DB helpers +- legacy helper functions + +## Database Tables + +- `steam_workshop_game_profiles` +- `steam_workshop_server_mods` +- `steam_workshop_server_settings` + +## Agent Interaction + +- workshop download/update helpers + +## User Workflow + +- legacy workshop path only + +## Admin Workflow + +- legacy migration / compatibility + +## Security Concerns + +- should not compete with the current Server Content Manager + +## Known Issues + +- explicitly deprecated in code comments + +## Missing Functionality + +- modern unified Workshop/content UX + +## Suggested Future Improvements + +- keep only compatibility helpers +- migrate users into `addonsmanager` + +## Recommendation + +- Deprecate / Merge + diff --git a/docs/modules/subusers.md b/docs/modules/subusers.md new file mode 100644 index 00000000..8c2e5401 --- /dev/null +++ b/docs/modules/subusers.md @@ -0,0 +1,52 @@ +# Subusers + +## Purpose + +Subuser permissions and delegated access management. + +## Current Status + +- Functional + +## Dependencies + +- user/group permission model +- server access rights + +## Database Tables + +- not declared in the module metadata file itself + +## Agent Interaction + +- None directly + +## User Workflow + +- grant access to another user +- share server management rights + +## Admin Workflow + +- manage permission scope and delegated access + +## Security Concerns + +- permissions must be scoped tightly to avoid over-sharing + +## Known Issues + +- module documentation is sparse in code + +## Missing Functionality + +- clearer UI around per-server and per-feature permissions + +## Suggested Future Improvements + +- tie subusers into files, scheduler, content, and support permissions more explicitly + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/support.md b/docs/modules/support.md new file mode 100644 index 00000000..7fdf7eff --- /dev/null +++ b/docs/modules/support.md @@ -0,0 +1,52 @@ +# Support + +## Purpose + +Simple support landing page for users. + +## Current Status + +- Functional +- Landing page only + +## Dependencies + +- ticketing / docs / contact flows + +## Database Tables + +- none declared in module metadata + +## Agent Interaction + +- none directly + +## User Workflow + +- open support entry point + +## Admin Workflow + +- connect support entry points to tickets and docs + +## Security Concerns + +- support forms must respect auth and privacy + +## Known Issues + +- limited compared with the tickets module + +## Missing Functionality + +- server context auto-attach +- ticket creation workflow + +## Suggested Future Improvements + +- keep as a support landing page and route users to tickets/docs + +## Recommendation + +- Keep / Merge with tickets workflow + diff --git a/docs/modules/teamspeak3.md b/docs/modules/teamspeak3.md new file mode 100644 index 00000000..c45d8f3b --- /dev/null +++ b/docs/modules/teamspeak3.md @@ -0,0 +1,50 @@ +# Teamspeak 3 Web Interface + +## Purpose + +Web interface for Teamspeak 3 hosting. + +## Current Status + +- Functional if Teamspeak hosting is part of the offering + +## Dependencies + +- Teamspeak 3 service support + +## Database Tables + +- none declared in module metadata + +## Agent Interaction + +- TS3 service control and web interface integration + +## User Workflow + +- manage Teamspeak 3 resources + +## Admin Workflow + +- provide or hide TS3 support depending on the product line + +## Security Concerns + +- TS3 credentials and service access + +## Known Issues + +- separate from the game server core experience + +## Missing Functionality + +- clearer product documentation + +## Suggested Future Improvements + +- keep only if TS3 is a product line + +## Recommendation + +- Keep / Hide depending on product strategy + diff --git a/docs/modules/tickets.md b/docs/modules/tickets.md new file mode 100644 index 00000000..2230c925 --- /dev/null +++ b/docs/modules/tickets.md @@ -0,0 +1,63 @@ +# Tickets + +## Purpose + +Support ticket system with messages, attachments, and settings. + +## Current Status + +- Production +- Functional + +## Dependencies + +- auth/session +- support workflows +- attachment storage + +## Database Tables + +- `tickets` +- `ticket_messages` +- `ticket_attachments` +- `ticket_settings` + +## Agent Interaction + +- indirect via server-context support requests + +## User Workflow + +- create ticket +- reply +- upload attachments +- track status + +## Admin Workflow + +- respond to tickets +- manage settings +- moderate attachments and ratings + +## Security Concerns + +- attachment size and file type limits +- privacy of server and billing context + +## Known Issues + +- should be more tightly linked to server monitor and logs + +## Missing Functionality + +- automatic server context attachment +- support escalation flow + +## Suggested Future Improvements + +- integrate server state, recent logs, and account context + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/ts3admin.md b/docs/modules/ts3admin.md new file mode 100644 index 00000000..71e10504 --- /dev/null +++ b/docs/modules/ts3admin.md @@ -0,0 +1,4 @@ +# ts3admin + +This page is an alias for [TS3Admin.md](TS3Admin.md). The full module documentation lives there. + diff --git a/docs/modules/tshock.md b/docs/modules/tshock.md new file mode 100644 index 00000000..7949a220 --- /dev/null +++ b/docs/modules/tshock.md @@ -0,0 +1,54 @@ +# TShock + +## Purpose + +Terraria / TShock-specific support module. + +## Current Status + +- Alpha +- Partial + +## Dependencies + +- Terraria/TShock server support +- token management + +## Database Tables + +- `tshock` + +## Agent Interaction + +- token and server data used for TShock support + +## User Workflow + +- only for compatible Terraria servers + +## Admin Workflow + +- configure and manage TShock-specific settings + +## Security Concerns + +- token storage +- compatibility gating + +## Known Issues + +- alpha status +- should only appear for the right game types + +## Missing Functionality + +- complete docs and tighter game capability gating + +## Suggested Future Improvements + +- expose only when XML/game capability says Terraria/TShock + +## Recommendation + +- Keep conditional / Improve + diff --git a/docs/modules/update.md b/docs/modules/update.md new file mode 100644 index 00000000..c7d89511 --- /dev/null +++ b/docs/modules/update.md @@ -0,0 +1,55 @@ +# Update + +## Purpose + +Panel update and patch management. + +## Current Status + +- Production +- Admin-only + +## Dependencies + +- patch and update logs +- admin access + +## Database Tables + +- `update_blacklist` +- `panel_update_log` +- `update_patches` + +## Agent Interaction + +- indirect if patch operations touch remote systems + +## User Workflow + +- none, admin-only + +## Admin Workflow + +- inspect and apply updates +- review patch logs + +## Security Concerns + +- updates modify the control plane itself + +## Known Issues + +- can be confusing if not clearly separated from game-server updates + +## Missing Functionality + +- clearer update history and rollback guidance + +## Suggested Future Improvements + +- keep admin-only and document carefully + +## Recommendation + +- Keep + diff --git a/docs/modules/user_admin.md b/docs/modules/user_admin.md new file mode 100644 index 00000000..5394d1ce --- /dev/null +++ b/docs/modules/user_admin.md @@ -0,0 +1,58 @@ +# User Admin + +## Purpose + +User, role, and group administration. + +## Current Status + +- Production + +## Dependencies + +- auth system +- role and group tables + +## Database Tables + +- `users` +- `user_groups` +- `user_role_info` +- `user_group_info` + +## Agent Interaction + +- none directly + +## User Workflow + +- account management + +## Admin Workflow + +- create/edit users +- manage groups and roles +- set page limits and email preferences + +## Security Concerns + +- password handling +- email uniqueness +- group permissions + +## Known Issues + +- older role/group model + +## Missing Functionality + +- more explicit per-feature permissions + +## Suggested Future Improvements + +- tie roles into server content, scheduler, files, and billing more clearly + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/user_games.md b/docs/modules/user_games.md new file mode 100644 index 00000000..96d6a8e2 --- /dev/null +++ b/docs/modules/user_games.md @@ -0,0 +1,68 @@ +# User Games + +## Purpose + +Server provisioning, assignment, cloning, expiration, and home management. + +## Current Status + +- Production +- Functional + +## Dependencies + +- billing lifecycle +- server manager +- game XML configs +- Panel agent provisioning calls + +## Database Tables + +- `user_homes` +- `user_group_remote_servers` +- `user_group_homes` +- `master_server_homes` + +## Agent Interaction + +- provisioning and clone operations +- installation commands +- expiration handling + +## User Workflow + +- get assigned a server +- edit home details +- clone or migrate when allowed +- check expiration + +## Admin Workflow + +- create servers +- assign homes +- migrate homes +- manage install commands and custom fields + +## Security Concerns + +- port allocation +- password generation +- ownership and permission boundaries + +## Known Issues + +- provisioning is a critical path and needs audit-grade reliability + +## Missing Functionality + +- clearer install/provisioning progress +- stronger post-create verification + +## Suggested Future Improvements + +- make provisioning more transparent and testable + +## Recommendation + +- Keep / Improve + diff --git a/docs/modules/util.md b/docs/modules/util.md new file mode 100644 index 00000000..12868ce4 --- /dev/null +++ b/docs/modules/util.md @@ -0,0 +1,51 @@ +# Utilities + +## Purpose + +Miscellaneous utility tools such as Steam ID conversion and game-adjacent helpers. + +## Current Status + +- Mixed +- Functional but partly legacy + +## Dependencies + +- PHP BCMath extension + +## Database Tables + +- None declared in module metadata + +## Agent Interaction + +- some helper tools may use remote data or agent info + +## User Workflow + +- use helper tools when relevant + +## Admin Workflow + +- audit utilities and decide which are still product-relevant + +## Security Concerns + +- utility tools should not leak secrets or overreach permissions + +## Known Issues + +- mixed-value tool collection + +## Missing Functionality + +- clear product grouping and documentation + +## Suggested Future Improvements + +- keep useful tools, hide obsolete ones, and document by game relevance + +## Recommendation + +- Keep / Rewrite selectively +