Panel/docs/architecture/MODULE_DEPENDENCIES.md
2026-06-08 16:09:54 -05:00

11 KiB

Module Dependencies

Workspace reference: GSP-WORKSPACE.md

Scope

This file maps how Panel modules depend on:

  • agents
  • shared libraries
  • other modules
  • database tables
  • AJAX endpoints
  • external services

It answers the practical question: what can call what?

Core Dependency Layers

User / admin UI
  -> home.php module routing
  -> module page PHP files
  -> shared include libraries
  -> database layer
  -> agent RPC wrapper (lib_remote.php)
  -> Linux / Windows agents

AJAX / external API
  -> module endpoint PHP files or ogp_api.php / status_api.php
  -> same shared libraries and DB layer
  -> agent RPC where needed

Shared Internal Hubs

Hub Called By Purpose
Panel/includes/lib_remote.php gamemanager, cron, server, user_games, litefm, ftp, mysql, addonsmanager, status, dashboard, util, fast_download, billing, editconfigfiles Agent XML-RPC transport
Panel/modules/config_games/server_config_parser.php gamemanager, user_games, addonsmanager, cron, dsi, config_games, API Game XML loading and interpretation
Panel/includes/database_mysqli.php effectively all stateful modules Database abstraction and business queries
Panel/includes/functions.php and helpers.php global auth, logging, formatting, small helpers
Panel/includes/view.php and navig.php routing / page shell module dispatch and page rendering

Module Dependency Table

Module Calls Agent Calls Other Modules / Files Shared Libraries Major DB / State AJAX / API Endpoints External Integrations
administration Indirectly, for update and logger views panel_update.php, backup/log helpers functions.php, DB layer, lib_remote.php settings, remote server metadata watch_logger.php Git / Forgejo, filesystem
addonsmanager Yes workshop_action.php, server_content_actions.php, server_content_helpers.php, config_games lib_remote.php, XML parser addons, server_content_manifest, server_content_workshop workshop_action.php SteamCMD, Workshop, archive installers
backup-restore Limited / indirect local helper function file DB layer, filesystem helpers backup metadata if present module pages zip/tar filesystem work
billing Yes for server provisioning/expiry actions embeds storefront runtime; shares logic with Website/ DB layer, lib_remote.php, payment helpers orders, invoices, coupons, server provisioning state webhook and checkout entrypoints under module and website PayPal, Stripe/manual gateways, email
circular No own helper file DB layer announcement/content records show_circular.php none
config_games No direct agent use in main UI server_config_parser.php, cli-params.php, set_mods.php, set_params.php XML parser, DB layer config_homes, config_mods XML editor-like pages GameQ, LGSL references
cron Yes shared_cron_functions.php, uses ogp_api.php URLs as scheduled payloads lib_remote.php, XML parser, DB layer Panel-side scheduler intent; agent-owned cron entries events.php, thetime.php, user_cron.php agent scheduler, wget, panel API
dashboard Yes query_ref.php, updateWidgets.php lib_remote.php, DB layer widget prefs, server overview updateWidgets.php query protocols
dsi Yes shared DSI includes, gamemanager/home_handling_functions.php, XML parser lib_remote.php, XML parser, GameQ, LGSL server and game metadata image.php, list/admin pages GameQ, LGSL, GeoIP
editconfigfiles Yes its own helpers/config lists lib_remote.php, DB layer file edit permissions by home modify.php remote file editing
faq No RSS/parser helper DB/content layer FAQ/news content faq.js RSS parsing
fast_download Yes admin/user pages, helper file lib_remote.php, DB layer fastdl config aliases module pages web server / FastDL service
ftp Yes bundled net2ftp app files, admin wrapper lib_remote.php, DB layer remote server FTP config admin and embedded FTP UI Pure-FTPd / FTP service, net2ftp
gamemanager Yes home_handling_functions.php, start/stop/restart/log pages lib_remote.php, XML parser, helpers server homes, last params, runtime status get_server_log.php, log.php, rcon.php screen, RCON, query protocols, SteamCMD
lgsl_with_img_mod No agent by default own LGSL pages LGSL server query presentation feed.php, image.php LGSL
litefm Yes file manager pages and helpers lib_remote.php, session helpers session download state fm_dir.php, fm_read.php, fm_write.php, get_file.php remote file management
lostpwd No own page DB layer, mail helpers users form endpoints email
modulemanager No agent module_handling.php, update modules filesystem, DB layer installed module metadata add/delete/update pages filesystem
mysql Yes own DB server management pages lib_remote.php, DB layer mysql server records, dumps get_dump.php MySQL server administration
news No admin upload/config pages DB/content libs news posts upload/admin pages file upload
rcon Yes standalone RCON page lib_remote.php, XML parser server home lookup module page RCON
register No agent registration helper pages DB layer users register-exec.php captcha/email if configured
server Yes add/edit/restart/reboot/firewall/view_log pages lib_remote.php, DB layer remote_servers, IP allocation mon_stats.php, view_log.php agent lifecycle, firewall, reboot
settings No agent by default api_hosts.php, theme/settings pages DB layer, API helpers settings, authorized-host files settings pages Discord webhook config, API host files
status Yes modules/status/include/* lib_remote.php, config helpers remote server list embedded include pages CPU/RAM/disk/uptime monitoring
subusers No direct agent own CRUD pages DB layer users, permissions form endpoints none
support No agent own page DB layer, functions.php support requests support form page Discord webhook
teamspeak3 No generic agent RPC own TS3 admin lib set TS3-specific classes, DB layer TS3 homes/config TS3 pages TeamSpeak query/admin
tickets No agent by default attachment, rating, settings, count, submit, view pages DB layer tickets, attachments, ratings notificationCount.php, submitTicket.php, downloadAttachment.php email/notifications if configured
TS3Admin No generic agent RPC bundled TS3 admin web app TS3 admin classes TS3 runtime/admin data JS-driven views TeamSpeak admin interface
tshock No generic agent RPC shared TShock helpers DB layer Terraria/TShock tokens/config create token and management pages TShock REST/API
update Indirectly through administration/panel_update.php and agent component_update updating.php, patch manager filesystem, DB/settings, lib_remote.php update settings, backups, last update files module pages Git / Forgejo
user_admin No direct agent user/group CRUD pages DB layer users, groups, assignments form endpoints none
user_games Yes provisioning, clone, migrate, custom fields, browser lib_remote.php, XML parser, DB layer server_homes, user_homes, IP allocations, configs get_size.php, browser pages filesystem, provisioning, rsync
util Yes addadmin helpers, SteamID tools, network tools lib_remote.php, DB layer server lookup helper pages RCON, Steam ID conversion

Module-To-Module Relationships

Source Module Target Module / File Why
gamemanager config_games/server_config_parser.php build startup commands, query definitions, control protocol metadata
gamemanager addonsmanager/monitor_buttons.php and content helpers indirectly content/update actions shown on monitor pages
cron addonsmanager/server_content_actions.php via ogp_api.php?server_content/run_scheduled_action scheduled content checks and installs
cron gamemanager via ogp_api.php?gamemanager/* start, stop, restart, Steam auto update
user_games gamemanager/home_handling_functions.php delete / teardown and lifecycle-related helpers
user_games billing/create_servers.php provisioning integration
dsi gamemanager/home_handling_functions.php shared game-home status logic
update administration/panel_update.php actual admin-facing updater implementation
settings api_functions.php authorized host list UI for external API
billing Website/ mirrored runtime storefront and payment logic is shared between panel module and public site

AJAX And Async Endpoints

Endpoint Owning Module Purpose
Panel/modules/gamemanager/get_server_log.php gamemanager live log refresh
Panel/modules/dashboard/updateWidgets.php dashboard dashboard widget refresh
Panel/modules/tickets/notificationCount.php tickets unread/support badge count
Panel/modules/cron/events.php cron scheduler log refresh
Panel/modules/litefm/get_file.php litefm streamed download chunks
Panel/status_api.php architecture / public status panel-local public node summary API
Panel/ogp_api.php architecture / external API token-authenticated external automation API

Major Database Ownership

This is not a full schema map. It identifies ownership boundaries.

Table / Group Main Owners
settings settings, update, general bootstrap
users, user_groups, user_homes user_admin, subusers, register, auth/session flows
remote_servers, remote_server_ips server, provisioning, status, dashboard
server_homes, home_ip_ports, game_mods user_games, gamemanager, cron, provisioning
config_homes, config_mods config_games, user_games, gamemanager
api_tokens ogp_api.php, user session helpers
server_content_manifest, server_content_workshop, addons addonsmanager
billing/order/invoice/coupon tables billing, Website/
ticket/support tables tickets, support
widget / dashboard tables dashboard

External Integration Map

Integration Primary Modules
SteamCMD gamemanager, addonsmanager, Workshop flows, agents
Steam Workshop addonsmanager, legacy steam_workshop, agents
GameQ / LGSL gamemanager, dashboard, dsi, XML config
RCON gamemanager, rcon, util, scheduler-triggered API calls
Git / Forgejo update, administration/panel_update.php, agent component_update
FTP / Pure-FTPd / net2ftp ftp, provisioning
Discord webhooks settings, support, shared functions.php::discordmsg
PayPal / Stripe / manual payments billing, Website/api/*, Website/webhook.php
TeamSpeak teamspeak3, TS3Admin
TShock tshock

Search Coverage Used For This Document

Key searches:

  • rg -n "new OGPRemoteLibrary|->remote_|->scheduler_|->component_update|->steam_workshop" Panel/modules Panel/includes
  • rg -n "require|require_once|include|include_once" Panel/modules -g '*.php'
  • find Panel/modules -maxdepth 2 -type f \\( -name '*.php' -o -name '*.js' \\)