Create initial GSP Panel wiki documentation

Frank Harris 2026-06-20 12:37:36 -05:00
parent 4bb57b944f
commit 502367b140
20 changed files with 764 additions and 1 deletions

29
Administration.md Normal file

@ -0,0 +1,29 @@
# Administration
Administration in GSP covers the pages and settings that control the panel itself and server templates.
## Common Admin Areas
- Game definitions and XML templates
- Workshop administration
- User and permission management
- Billing and website integration
- Module configuration pages
## Relevant Pages
- [Modules](Modules.md)
- [Module Reference](Module-Reference.md)
- [Users and Permissions](Users-and-Permissions.md)
- [Steam and Workshop](Steam-and-Workshop.md)
- [Database](Database.md)
## Workshop Admin Notes
The dedicated Steam Workshop admin page copies configuration settings between XML files. It does not copy installed mods, mod folders, or game server files.
## Good Practice
- Check whether a file lives under `references/` before editing it.
- Verify the target file is project code, not reference material.
- Prefer the module's existing validation and save helpers instead of building a one-off path.

@ -0,0 +1,20 @@
# Billing and Website Integration
GSP includes billing and website-facing modules that integrate with the panel.
## Relevant Modules
- `Panel/Panel/modules/billing/`
- `Panel/Panel/modules/website/`
- `Panel/Panel/modules/register/`
- `Panel/Panel/modules/support/`
- `Panel/Panel/modules/tickets/`
## Notes
- Billing behavior should be documented from the current GSP source, not from upstream assumptions.
- Some billing changes have schema implications, so review the module code and database references together.
## TODO
- Add a fuller billing and website integration map after the module inventory is finished.

33
Configuration.md Normal file

@ -0,0 +1,33 @@
# Configuration
GSP configuration is split across several layers.
## Main Layers
- Game template XML under `Panel/Panel/modules/config_games/server_configs/`
- Panel modules under `Panel/Panel/modules/`
- Per-module config data such as Workshop XML files under `Panel/Panel/modules/steam_workshop/game_configs/`
- Database-backed server and user state
## Practical Rule
When a setting affects startup commands, install behavior, or file editing, check both the module page and the game XML that defines the behavior.
## Important Configuration Areas
- Game names, installers, and startup parameters
- CLI parameter definitions
- Mod and Workshop support
- File editing and replacement rules
- Admin-only module settings
## Steam Workshop Configuration
- Workshop admin settings live in dedicated XML files under `Panel/Panel/modules/steam_workshop/game_configs/`
- Game XML `workshop_support` blocks define Workshop capability for game templates
See:
- [Game Template XML](Game-Template-XML.md)
- [Steam and Workshop](Steam-and-Workshop.md)
- [XML Schema and Validation](XML-Schema-and-Validation.md)

42
Database.md Normal file

@ -0,0 +1,42 @@
# Database
This page is a first-pass map of database usage discovered in the current source.
## Known Panel Areas
- `config_games` owns XML game template loading and schema validation, but most of its configuration lives in XML files rather than tables.
- `steam_workshop` uses XML config files plus panel-side logic and has dedicated workshop tables in the current codebase.
- `addonsmanager` and billing-related modules also use their own tables.
## Confirmed Steam Workshop Tables
From the current workshop docs and code comments:
- `steam_workshop_game_profiles`
- `steam_workshop_server_mods`
- `steam_workshop_server_settings`
## Confirmed Server Content Tables
From the current server content/workshop documentation:
- `server_content_workshop`
- `server_content_workshop_catalog`
## Other Obvious Panel Tables
The source references additional tables such as:
- `config_homes`
- `config_mods`
- `remote_servers`
- `user_games`
## Notes
- This is not a full schema dump.
- If a page needs exact column lists, inspect the module that owns the data instead of guessing.
## TODO
- Add a proper schema inventory page once the current repository tables are fully catalogued.

28
Development.md Normal file

@ -0,0 +1,28 @@
# Development
This wiki follows a source-first workflow.
## Development Workflow
1. Read the relevant wiki page.
2. Inspect the current GSP source file.
3. Compare with `references/OGP/` only when upstream behavior matters.
4. Implement the change in the GSP codebase.
5. Validate syntax and schemas.
6. Update documentation when behavior changes.
## Validation Expectations
- Run PHP lint on modified PHP files.
- Run the XML validation script when game configs change.
- Keep reference material untouched.
## Good Practices
- Preserve existing conventions unless there is a clear reason to change them.
- Use TODO markers when source evidence is incomplete.
- Keep Workshop work in the dedicated `steam_workshop` module.
## TODO
- Add repo-specific branching and review rules if the project adopts a formal release workflow.

25
File-Management.md Normal file

@ -0,0 +1,25 @@
# File Management
GSP file handling is spread across several modules.
## Relevant Modules
- `Panel/Panel/modules/litefm/`
- `Panel/Panel/modules/ftp/`
- `Panel/Panel/modules/editconfigfiles/`
- `Panel/Panel/modules/backup-restore/`
## Practical Notes
- File operations should stay within the intended game home or configuration directories.
- The Panel should not touch game home files during settings-only Workshop config copy operations.
- Blank config file paths are valid in some Workshop workflows and should skip file editing entirely.
## Source Clues
- `remote_readfile()` and `remote_writefile()` are used to move file contents through the agent.
- `read_server_config()` is used to read XML config files.
## TODO
- Add specific file-management workflows and constraints once the module-by-module audit is complete.

27
Game-Server-Management.md Normal file

@ -0,0 +1,27 @@
# Game Server Management
This page covers the user-facing server lifecycle and management flow.
## Primary Tasks
- start and stop servers
- restart and monitor servers
- view logs
- manage files
- manage server-specific settings
## Main Source Areas
- `Panel/Panel/modules/gamemanager/`
- `Panel/Panel/modules/litefm/`
- `Panel/Panel/modules/ftp/`
- `Panel/Panel/modules/steam_workshop/`
## Workshop-Related Management
The dedicated Workshop module is used for Workshop installs, uninstalls, and Workshop configuration management. It is separate from normal server lifecycle controls.
## Notes
- Server lifecycle behavior should be treated as the Panel's responsibility.
- Agents should execute requests and report results, not decide policy.

137
Game-Template-XML.md Normal file

@ -0,0 +1,137 @@
# Game Template XML
Game template XML defines how a game server is installed, started, queried, and customized.
## Purpose
The XML files in `Panel/Panel/modules/config_games/server_configs/` describe:
- the game key
- game name
- installer type
- startup command templates
- CLI parameter definitions
- mod definitions
- file replacement rules
- custom fields
- post-install and pre-start hooks
- Workshop capability metadata
## Current GSP Schema
The current schema is in:
- `Panel/Panel/modules/config_games/schema_server_config.xml`
The schema validates with:
- `Panel/Panel/modules/config_games/tests/validate_server_configs.php`
## Confirmed Tags In Current GSP
From the schema and current XML files, these tags are confirmed:
- `game_key`
- `protocol`
- `lgsl_query_name`
- `gameq_query_name`
- `installer`
- `game_name`
- `workshop_support`
- `server_exec_name`
- `query_port`
- `cli_template`
- `cli_params`
- `reserve_ports`
- `cli_allow_chars`
- `maps_location`
- `map_list`
- `console_log`
- `exe_location`
- `max_user_amount`
- `control_protocol`
- `control_protocol_type`
- `mods`
- `replace_texts`
- `server_params`
- `custom_fields`
- `list_players_command`
- `player_info_regex`
- `player_info`
- `player_commands`
- `pre_install`
- `post_install`
- `pre_start`
- `post_start`
- `environment_variables`
- `lock_files`
- `configuration_files`
## Workshop Support Block
The schema includes a `workshop_support` block between `game_name` and `server_exec_name`.
Confirmed children:
- `enabled`
- `provider`
- `steam_app_id`
- `workshop_app_id`
- `download_method`
- `install_strategy`
- `install_path`
- `startup_param_format`
- `mod_separator`
- `mod_prefix`
- `mod_folder_format`
- `copy_keys`
- `post_install_action`
Confirmed `copy_keys` children:
- `source_pattern`
- `target_path`
Confirmed install strategies in the schema:
- `game_managed_workshop`
- `steamcmd_download_only`
- `copy_to_game_root`
- `copy_to_mod_folder`
- `dayz_mod_folder`
- `arma_mod_folder`
- `config_only`
- `custom_scripted_install`
## Example
The Arma 3 templates currently include a `workshop_support` block:
```xml
<workshop_support>
<enabled>1</enabled>
<provider>steam</provider>
<steam_app_id>107410</steam_app_id>
<workshop_app_id>107410</workshop_app_id>
<download_method>steamcmd</download_method>
<install_strategy>arma_mod_folder</install_strategy>
<install_path>{SERVER_ROOT}/{MOD_FOLDER}</install_path>
<startup_param_format>-mod={MOD_LIST}</startup_param_format>
<mod_separator>;</mod_separator>
<mod_prefix>@</mod_prefix>
<copy_keys enabled="1">
<source_pattern>{MOD_PATH}/keys/*.bikey</source_pattern>
<target_path>{SERVER_ROOT}/keys</target_path>
</copy_keys>
</workshop_support>
```
## Compare With OGP
The OGP wiki notes in `references/OGP/OGP-Website.wiki/XML-Notes.md` describe the older XML model without the current GSP `workshop_support` block.
## TODO / Needs Verification
- Which older XML tags are still accepted only for legacy compatibility
- Whether any additional tags are currently parsed by code outside the schema
- Whether any module-specific XML tags were added in a commit after the current schema

42
Getting-Started.md Normal file

@ -0,0 +1,42 @@
# Getting Started
This wiki documents the GSP Panel as a fork of Open Game Panel and a separate product with its own current behavior.
## First Read
- [Home](Home.md)
- [Installation](Installation.md)
- [Configuration](Configuration.md)
- [Modules](Modules.md)
## What GSP Is
GSP is the control-plane web panel for game server administration. It coordinates server management, XML-based game templates, file operations, and module pages.
## Workspace Layout
In this workspace:
- `Panel/Panel/` contains the current GSP Panel source tree.
- `Panel.wiki/` contains this wiki.
- `references/OGP/` contains read-only upstream reference material.
## Recommended First Steps
1. Read the relevant wiki page for the feature you want to change.
2. Inspect the current source file in `Panel/Panel/modules/...`.
3. Compare with `references/OGP/` when original behavior matters.
4. Make the change in GSP code, not in `references/`.
5. Run the applicable validation or syntax checks.
## Good Starting Points
- `Panel/Panel/modules/config_games/` for XML game templates and schema validation
- `Panel/Panel/modules/steam_workshop/` for dedicated Workshop administration and installs
- `Panel/Panel/modules/gamemanager/` for server lifecycle actions
- `Panel/Panel/modules/addonsmanager/` for server content workflows
## Notes
- This wiki is a first-pass operational guide.
- Pages marked with TODO or Needs Verification indicate areas where source evidence was incomplete or intentionally conservative.

28
Home.md

@ -1 +1,27 @@
Welcome to the Wiki.
# Game Server Panel Wiki
Game Server Panel is a fork of Open Game Panel.
Game Server Panel, or GSP, is being developed as a modernized game server control panel for managing game servers, Workshop content, server files, users, and supporting XML-driven game templates.
Start here:
- [Getting Started](Getting-Started.md)
- [Installation](Installation.md)
- [Configuration](Configuration.md)
- [Administration](Administration.md)
- [Game Server Management](Game-Server-Management.md)
- [Modules](Modules.md)
- [Steam and Workshop](Steam-and-Workshop.md)
- [XML Schema and Validation](XML-Schema-and-Validation.md)
- [Troubleshooting](Troubleshooting.md)
Key reference pages:
- [Game Template XML](Game-Template-XML.md)
- [Module Reference](Module-Reference.md)
- [Database](Database.md)
- [Remote Servers and Agents](Remote-Servers-and-Agents.md)
- [OGP Fork Notes](OGP-Fork-Notes.md)
The upstream OGP reference material is stored in `references/OGP/` in this workspace and is read-only. Use it to compare original behavior, then document GSP behavior in this wiki.

34
Installation.md Normal file

@ -0,0 +1,34 @@
# Installation
This page is a practical overview, not a packaging guide.
## What To Install
- A working web stack for the Panel
- PHP with XML support
- A database server for Panel data
- The GSP Panel source tree
- The appropriate agent repositories for server execution
## Workspace Guidance
- Keep `references/OGP/` read-only.
- Install or deploy from the GSP source tree, not from reference material.
- Validate XML-related changes with the bundled schema check before treating them as complete.
## Where To Look In Source
- `Panel/Panel/modules/config_games/tests/validate_server_configs.php`
- `Panel/Panel/modules/config_games/schema_server_config.xml`
- `Panel/Panel/modules/steam_workshop/`
## First Checks After Installation
1. Open the Panel home page.
2. Confirm module navigation loads.
3. Confirm XML game configs parse and validate.
4. Confirm the Workshop and game management pages open without PHP errors.
## TODO
- Add a full platform-specific install walkthrough once the current deployment path is finalized.

57
Module-Reference.md Normal file

@ -0,0 +1,57 @@
# Module Reference
This page is a working inventory of modules discovered in the current GSP Panel tree.
## Core Modules
| Module | Path | Purpose | Main files | Notes |
| --- | --- | --- | --- | --- |
| TS3Admin | `Panel/Panel/modules/TS3Admin/` | TeamSpeak 3 admin integration | `module.php`, `navigation.xml` | TODO: confirm current feature scope |
| addonsmanager | `Panel/Panel/modules/addonsmanager/` | Server content workflows and legacy add-ons area | `module.php`, `addons_manager.php`, `workshop_content.php`, `workshop_action.php`, `server_content_helpers.php` | Workshop entry point should remain dedicated to `steam_workshop` |
| administration | `Panel/Panel/modules/administration/` | Admin utilities and system settings | `module.php`, page files | TODO |
| backup-restore | `Panel/Panel/modules/backup-restore/` | Backup and restore functions | `module.php` | TODO |
| billing | `Panel/Panel/modules/billing/` | Billing / storefront integration | `module.php`, admin pages, docs | Relevant DB tables exist in billing code, but not fully inventoried here |
| circular | `Panel/Panel/modules/circular/` | Small utility module | `module.php` | TODO |
| config_games | `Panel/Panel/modules/config_games/` | XML game templates, schema, and config parsing | `config_servers.php`, `server_config_parser.php`, `schema_server_config.xml`, `tests/validate_server_configs.php` | High-confidence module |
| cron | `Panel/Panel/modules/cron/` | Scheduled task handling | `module.php` | TODO |
| dashboard | `Panel/Panel/modules/dashboard/` | Home/dashboard pages | `module.php` | TODO |
| dsi | `Panel/Panel/modules/dsi/` | Game-related service integration | `module.php` | TODO |
| editconfigfiles | `Panel/Panel/modules/editconfigfiles/` | Config file editing | `module.php` | Works with file/config management flows |
| faq | `Panel/Panel/modules/faq/` | FAQ pages | `module.php` | TODO |
| fast_download | `Panel/Panel/modules/fast_download/` | Download helper paths | `module.php` | TODO |
| ftp | `Panel/Panel/modules/ftp/` | FTP-related file access | `module.php` | TODO |
| gamemanager | `Panel/Panel/modules/gamemanager/` | Server lifecycle and game monitoring | `module.php`, `mini_start.php`, `home_handling_functions.php`, `update_actions.php` | Central gameplay management module |
| lgsl_with_img_mod | `Panel/Panel/modules/lgsl_with_img_mod/` | LGSL query integration | `module.php` | TODO |
| litefm | `Panel/Panel/modules/litefm/` | File manager | `module.php` | User-facing file operations |
| lostpwd | `Panel/Panel/modules/lostpwd/` | Lost password flow | `module.php` | TODO |
| mods | `Panel/Panel/modules/mods/` | Mod definitions and mod tools | `module.php` | TODO |
| modulemanager | `Panel/Panel/modules/modulemanager/` | Module enable/disable or management | `module.php` | TODO |
| mysql | `Panel/Panel/modules/mysql/` | MySQL database tools | `module.php` | TODO |
| news | `Panel/Panel/modules/news/` | News / announcements | `module.php` | TODO |
| rcon | `Panel/Panel/modules/rcon/` | Remote console tools | `module.php` | TODO |
| register | `Panel/Panel/modules/register/` | User registration | `module.php` | TODO |
| reseller | `Panel/Panel/modules/reseller/` | Reseller admin flows | `module.php`, `navigation.xml` | Seen in Git history and navigation |
| server | `Panel/Panel/modules/server/` | Server views / server-side pages | `module.php` | TODO |
| settings | `Panel/Panel/modules/settings/` | Panel settings | `module.php` | TODO |
| steam_workshop | `Panel/Panel/modules/steam_workshop/` | Dedicated Steam Workshop module | `module.php`, `main.php`, `workshop_admin.php`, `uninstall.php`, `functions.php` | Active dedicated Workshop module |
| subusers | `Panel/Panel/modules/subusers/` | Sub-user management | `module.php` | TODO |
| support | `Panel/Panel/modules/support/` | Support pages | `module.php` | TODO |
| teamspeak3 | `Panel/Panel/modules/teamspeak3/` | TeamSpeak 3 integration | `module.php` | TODO |
| tickets | `Panel/Panel/modules/tickets/` | Ticketing / support tickets | `module.php`, `navigation.xml` | TODO |
| tshock | `Panel/Panel/modules/tshock/` | TShock / Terraria-related admin | `module.php` | TODO |
| update | `Panel/Panel/modules/update/` | Update flow | `module.php` | TODO |
| user_admin | `Panel/Panel/modules/user_admin/` | User administration | `module.php` | Admin-facing |
| user_games | `Panel/Panel/modules/user_games/` | User game server list and access | `module.php` | User-facing |
| util | `Panel/Panel/modules/util/` | Shared utilities | `module.php` | TODO |
| website | `Panel/Panel/modules/website/` | Website integration pages | `module.php` | TODO |
## Additional Workshop-Related Files
- `Panel/Panel/modules/steam_workshop/game_configs/` contains per-game Workshop XML profiles.
- `Panel/Panel/modules/steam_workshop/navigation.xml` exposes the dedicated pages.
- `Panel/Panel/modules/steam_workshop/simple_admin_helper.php` adds a simple admin UI helper.
## Notes
- Some modules may contain subpages not listed here because their behavior is still being inventoried.
- For any module not yet fully understood, treat this as a first-pass reference and add TODOs rather than assumptions.

27
Modules.md Normal file

@ -0,0 +1,27 @@
# Modules
GSP modules are organized under `Panel/Panel/modules/`.
## How Modules Work
- Each module lives in its own directory.
- Most modules expose a `module.php` entry point and one or more page files.
- Many modules also provide `navigation.xml`, styles, or helper scripts.
- Module behavior is usually split between user-facing pages and admin pages.
## Major Module Areas
- Server management
- User and permission management
- Configuration and XML tools
- Workshop and content management
- Billing and website integration
## Discovered Modules
See [Module Reference](Module-Reference.md) for the current module inventory and the main files in each module.
## Notes
- `references/OGP/` contains upstream module documentation for comparison only.
- When a module is unclear, document it as TODO instead of inventing behavior.

33
OGP-Fork-Notes.md Normal file

@ -0,0 +1,33 @@
# OGP Fork Notes
Game Server Panel is a fork of Open Game Panel.
## Reference Policy
- `references/OGP/` is read-only upstream reference material.
- Use it to understand old behavior, then implement changes in GSP source only.
- Do not edit, move, rename, or delete anything under `references/`.
## Confirmed Differences
- GSP has a dedicated `steam_workshop` module that is active in this workspace.
- GSP also has a schema-level `workshop_support` block for XML game templates.
- GSP has a bundled XML validation script for game configs.
- GSP's Steam Workshop handling has been rewritten multiple times in the current history, including admin profile and server-settings work.
- GSP's DayZ/Arma XML handling includes CDATA and validation cleanup that is not described in the older OGP wiki notes.
## Likely Differences That Need More Review
- Exactly which legacy OGP XML tags remain supported only for compatibility
- Which modules have diverged from upstream beyond naming and rebranding
- Which database schema differences are intentional versus historical leftovers
## Useful Upstream References
- `references/OGP/OGP-Website.wiki/XML-Notes.md`
- `references/OGP/Module-Steam_Workshop/README.md`
- `references/OGP/OGP-Website.wiki/Home.md`
## TODO
- Expand this page with a module-by-module diff once the source audit is complete.

22
Release-Process.md Normal file

@ -0,0 +1,22 @@
# Release Process
This is a first-pass release note, not a formal release playbook.
## Current Practical Steps
1. Finish the code or docs change.
2. Validate the affected files.
3. Review `git status`.
4. Commit with a clear message.
5. Review the result before pushing.
## Suggested Checks
- PHP syntax checks for modified PHP files
- XML validation for changed game configs
- Manual smoke testing of the affected module pages
## Notes
- No formal release automation was confirmed in the current source inspection.
- Add a fuller process when the team standardizes one.

@ -0,0 +1,35 @@
# Remote Servers and Agents
GSP uses remote communication to control game servers through agents.
## Current Panel-Side Flow
- Panel modules build an action.
- The Panel sends the action through its remote library.
- The agent executes the request.
- The Panel reads back status or logs.
## Important Source Areas
- `Panel/Panel/includes/lib_remote.php`
- `Panel/Panel/modules/gamemanager/`
- `Panel/Panel/modules/steam_workshop/`
## Confirmed Remote Methods Used In Workshop Paths
- `steam_cmd(...)`
- `steam_workshop(...)`
- `get_workshop_mods_info(...)`
- `remote_writefile(...)`
- `remote_readfile(...)`
- `exec(...)`
## Agent Repositories
The agent code lives in the separate GSP agent repositories, not in the Panel wiki or the Panel source tree.
## Notes
- The Panel decides policy.
- The agents execute trusted requests and report back.
- Reference material under `references/OGP/` is read-only and should only be used to compare old behavior.

41
Steam-and-Workshop.md Normal file

@ -0,0 +1,41 @@
# Steam and Workshop
GSP keeps Steam Workshop behavior in the dedicated `steam_workshop` module.
## Current Module Scope
- User-facing Workshop installs and uninstalls
- Workshop search and item lookup
- Admin Workshop XML profile management
- Copying Workshop configuration settings between XML files
## Important Paths
- `Panel/Panel/modules/steam_workshop/`
- `Panel/Panel/modules/steam_workshop/game_configs/`
- `Panel/Panel/modules/config_games/server_configs/`
## Confirmed Behavior
- The dedicated Workshop module is the active Workshop path in this workspace.
- The admin copy feature copies configuration settings only.
- Installed mods, mod folders, and game server files are not copied by that feature.
- Blank `File Path` means config-file editing is skipped.
## Workshop Config Copy Rule
The copy source dropdown should use a safe XML filename value and the handler should validate that filename before reading from `game_configs/`.
## GSP Game XML Support
Current game XML includes a schema-level `workshop_support` block for Workshop-enabled templates.
See:
- [Game Template XML](Game-Template-XML.md)
- [XML Schema and Validation](XML-Schema-and-Validation.md)
## Notes
- Do not move Workshop back into `addonsmanager`.
- Treat `references/OGP/` as upstream reference code only.

25
Troubleshooting.md Normal file

@ -0,0 +1,25 @@
# Troubleshooting
Use this page for fast triage.
## XML Problems
- If a game config fails to load, check `Panel/Panel/modules/config_games/schema_server_config.xml`.
- Run the XML validation script.
- Compare against `references/OGP/` only if you need upstream behavior.
## Workshop Problems
- If Workshop copy validation fails, verify the source is a safe XML filename under `Panel/Panel/modules/steam_workshop/game_configs/`.
- If the module complains about a missing config file, check the destination XML file and path rules.
- If blank `File Path` still tries to edit a game file, that is a bug.
## Remote and Agent Problems
- Confirm the agent is online.
- Confirm the remote library can reach the server.
- Confirm the requested action is still within the module's supported workflow.
## Notes
- When a problem seems to involve old OGP behavior, inspect the matching file under `references/OGP/` and fix the GSP code only.

25
Users-and-Permissions.md Normal file

@ -0,0 +1,25 @@
# Users and Permissions
GSP permissions are split between admin users, regular users, and sub-users.
## Main Areas
- `Panel/Panel/modules/user_admin/`
- `Panel/Panel/modules/subusers/`
- `Panel/Panel/modules/register/`
- `Panel/Panel/modules/lostpwd/`
- `Panel/Panel/modules/reseller/`
## Practical Rules
- Admin-only pages should remain admin-only.
- Workshop admin actions are restricted to admins.
- User-facing modules should not expose reference material or privileged paths.
## Workshop Example
The dedicated Workshop admin page is admin-only and is used to manage Workshop XML config settings. It should not be used to expose installed mod files or reference code.
## TODO
- Add a fuller permission matrix once the source-side role handling is documented.

@ -0,0 +1,55 @@
# XML Schema and Validation
This page explains where GSP validates XML and how to check changes safely.
## Current Validation Path
Primary files:
- `Panel/Panel/modules/config_games/schema_server_config.xml`
- `Panel/Panel/modules/config_games/server_config_parser.php`
- `Panel/Panel/modules/config_games/tests/validate_server_configs.php`
- `Panel/Panel/includes/lib_remote.php`
## How Validation Works
- `read_server_config()` loads a game XML file and validates it against the bundled schema.
- The validation test script loads every XML file in `server_configs/` and validates each one against the same schema.
- XML parse failures and schema failures are treated as real errors, not warnings.
## How To Validate XML Changes
1. Edit the XML file in `Panel/Panel/modules/config_games/server_configs/`.
2. Confirm the XML is well-formed.
3. Run the bundled validation script:
```bash
php Panel/modules/config_games/tests/validate_server_configs.php
```
4. Fix any schema or parse errors before merging.
## GSP-Specific XML Findings
Confirmed from the current source:
- `workshop_support` is part of the schema.
- `workshop_support` is positioned after `game_name` and before `server_exec_name`.
- The schema includes explicit Workshop install strategy values.
- The validation script is part of the current Panel tree, not just a reference note.
## Git History Notes
Searches in the current Panel history show several XML-related changes, including:
- `5a03946d...` `woekshop phase 1`
- `69f415ad...` `feat(steam_workshop): production rewrite with full admin profile page and server settings`
- `6d9cd28a...` `feat: Server Content Phase 2 - schema, cache mode setting, install history, manifest, requires_stop`
- `de80f896...` `fix: wrap DayZ post_install scripts in CDATA, add XML editor auto-sanitizer`
- `d564476d...` `feat: GSP 1.0 baseline - module versions, FAQ refresh, XML editor validation, Obsidian theme`
## Needs Verification
- The exact timeline of every XML tag addition
- Whether any non-schema XML tags are intentionally accepted by runtime code
- Whether additional validation exists in any module outside `config_games`