161 lines
5.4 KiB
Markdown
161 lines
5.4 KiB
Markdown
# Library Reference
|
|
|
|
Workspace reference: [`GSP-WORKSPACE.md`](../../../GSP-WORKSPACE.md)
|
|
|
|
## Scope
|
|
|
|
This file documents the shared Panel libraries and helper entrypoints that multiple modules reuse.
|
|
|
|
Primary directories:
|
|
|
|
- `Panel/includes/`
|
|
- `Panel/protocol/`
|
|
|
|
No separate `Panel/libraries/` or `Panel/common/` tree is currently used as the main shared layer.
|
|
|
|
## Core Include Files
|
|
|
|
| File | Purpose | Used By |
|
|
|---|---|---|
|
|
| `Panel/includes/config.inc.php` | Main runtime configuration | global bootstrap, APIs, installers |
|
|
| `Panel/includes/database.php` | DB abstraction selector | bootstrap |
|
|
| `Panel/includes/database_mysqli.php` | Main database implementation and business-query layer | almost all stateful modules |
|
|
| `Panel/includes/functions.php` | general utility helpers, formatting, logging, Discord webhook helper | global |
|
|
| `Panel/includes/helpers.php` | session, auth, panel helper functions | global |
|
|
| `Panel/includes/html_functions.php` | HTML rendering helpers | module UIs |
|
|
| `Panel/includes/form_table_class.php` | form builder helper | admin and config forms |
|
|
| `Panel/includes/lang.php` | translation loading | global |
|
|
| `Panel/includes/lib_remote.php` | XML-RPC wrapper for agent commands | every agent-aware module |
|
|
| `Panel/includes/navig.php` | module/page routing | main panel request flow |
|
|
| `Panel/includes/view.php` | page shell and shared JS injection | main panel request flow |
|
|
| `Panel/includes/refreshed.php` | refresh helper | cron/events and refresh-style pages |
|
|
| `Panel/includes/debug.php` | debug support | limited / diagnostic use |
|
|
| `Panel/includes/ip_in_range.php` | CIDR / IP-range helper | API host authorization |
|
|
| `Panel/includes/api_functions.php` | `ogp_api.php` argument maps and API-side helper logic | external API, scheduler URLs |
|
|
|
|
## `lib_remote.php` Wrapper Surface
|
|
|
|
`Panel/includes/lib_remote.php` is the most important shared library in the repository.
|
|
|
|
Responsibilities:
|
|
|
|
- XML-RPC request creation
|
|
- encryption of parameters
|
|
- RPC request transport
|
|
- decoding return payloads
|
|
- compatibility fallbacks for older agents
|
|
|
|
Major consumers:
|
|
|
|
- `gamemanager`
|
|
- `cron`
|
|
- `server`
|
|
- `user_games`
|
|
- `addonsmanager`
|
|
- `litefm`
|
|
- `ftp`
|
|
- `mysql`
|
|
- `status`
|
|
- `dashboard`
|
|
- `util`
|
|
|
|
See:
|
|
|
|
- `docs/architecture/PANEL_AGENT_COMMANDS.md`
|
|
|
|
## Database Layer
|
|
|
|
`Panel/includes/database_mysqli.php` is more than a raw DB adapter. It acts as a domain service layer.
|
|
|
|
It owns:
|
|
|
|
- users and roles
|
|
- remote servers
|
|
- game homes
|
|
- config homes and mods
|
|
- API tokens
|
|
- widget settings
|
|
- many module-specific table helpers
|
|
|
|
Practical rule:
|
|
|
|
- before adding direct SQL inside a module, check whether `database_mysqli.php` already exposes the needed operation
|
|
|
|
## API Helper Layer
|
|
|
|
`Panel/includes/api_functions.php` supports `Panel/ogp_api.php`.
|
|
|
|
Responsibilities:
|
|
|
|
- endpoint argument definitions
|
|
- startup command generation
|
|
- RCON dispatch helper
|
|
- API host authorization checks
|
|
|
|
This file is also indirectly used by the scheduler because cron jobs call back into `ogp_api.php`.
|
|
|
|
## XML / Game Config Parsing
|
|
|
|
Shared files:
|
|
|
|
- `Panel/modules/config_games/server_config_parser.php`
|
|
- `Panel/modules/config_games/schema_server_config.xml`
|
|
- `Panel/modules/config_games/xml_tag_descriptions.php`
|
|
|
|
Responsibilities:
|
|
|
|
- validate game XML files
|
|
- load startup/query/install metadata
|
|
- expose game config values to `gamemanager`, `user_games`, `addonsmanager`, `dsi`, and APIs
|
|
|
|
## Protocol Libraries
|
|
|
|
| Path | Purpose | Used By |
|
|
|---|---|---|
|
|
| `Panel/protocol/lgsl/` | LGSL query implementation | `gamemanager`, `dsi`, XML helpers |
|
|
| `Panel/protocol/GameQ/` | GameQ query implementation | `gamemanager`, `dsi`, XML helpers |
|
|
|
|
Important note:
|
|
|
|
- query libraries provide optional metadata
|
|
- they are not the source of truth for runtime status
|
|
|
|
## Bundled Third-Party Libraries In Modules
|
|
|
|
These are module-local, not general-purpose shared libs, but they matter for architecture.
|
|
|
|
| Path | Purpose | Main Module |
|
|
|---|---|---|
|
|
| `Panel/modules/ftp/` bundled net2ftp code | browser-based FTP UI | `ftp` |
|
|
| `Panel/modules/TS3Admin/` | TeamSpeak admin webapp | `TS3Admin` |
|
|
| `Panel/modules/teamspeak3/ts3admin.class.php` and related files | TeamSpeak integration | `teamspeak3` |
|
|
| `Panel/modules/gamemanager/MinecraftRcon.class.php` | Minecraft-specific RCON client | `gamemanager` |
|
|
| `Panel/modules/news/include/library/HTMLPurifier/` | content sanitization | `news` |
|
|
|
|
## Filesystem And Update Helpers
|
|
|
|
Notable update-related shared logic currently lives in:
|
|
|
|
- `Panel/modules/administration/panel_update.php`
|
|
- `Panel/modules/update/updating.php`
|
|
- `Panel/modules/update/patch_manager.php`
|
|
- `Panel/modules/update/post_update.php`
|
|
|
|
These are not in `includes/`, but they function as shared update infrastructure used by the admin-facing update UI.
|
|
|
|
## Consumers By Concern
|
|
|
|
| Concern | Primary Shared Files |
|
|
|---|---|
|
|
| Agent RPC | `includes/lib_remote.php` |
|
|
| Database | `includes/database_mysqli.php` |
|
|
| API | `includes/api_functions.php`, `ogp_api.php` |
|
|
| Routing / page shell | `includes/navig.php`, `includes/view.php` |
|
|
| XML config | `modules/config_games/server_config_parser.php` |
|
|
| Query metadata | `protocol/lgsl`, `protocol/GameQ` |
|
|
| Auth/session helpers | `includes/helpers.php`, `includes/functions.php` |
|
|
|
|
## Search Coverage Used For This Document
|
|
|
|
- `find Panel/includes -maxdepth 1 -type f`
|
|
- `rg -n "require_once\\('includes/lib_remote.php'|require_once\\(\"modules/config_games/server_config_parser.php\"|require_once\\('protocol/" Panel/modules`
|