- config_servers.php: add gsp_normalize_config_value(), gsp_value_to_display_string(),
gsp_value_to_editable_string() helpers; replace (string)$attrValue cast at line 124
with gsp_value_to_editable_string() so PHP arrays from SimpleXML attribute iteration
never trigger "Array to string conversion" notices
- adminserverlist.php sync_billing_services(): add description column (= service name)
to INSERT so the query succeeds on databases where description is NOT NULL without
a default; add pre-flight col_exists() schema guard that shows a friendly admin
warning and aborts sync instead of crashing on completely missing columns
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/e8bfe531-e1ff-4257-b49c-f8376b84e772
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
- admin_config.php: guard session_start() — was firing Notice because
admin_auth.php → session_bridge.php already started the session
- includes/menu.php: check mysqli_thread_id() before reusing $db so a
closed handle does not cause 'mysqli object is already closed' fatal
- admin_invoices.php / admin_payments.php: set $db = null after
mysqli_close() so menu.php's reuse-check correctly falls through to
opening a fresh connection
- adminserverlist.php: use col_exists() to detect missing 'enabled'
column in gsp_remote_servers; fall back to constant 1 and display a
schema-notice banner; guard UPDATE accordingly; also add missing
price_daily / price_year columns to the services SELECT; remove
duplicate 'Update Enabled Servers' button
- add_remote_server_enabled_column.sql: idempotent migration to add the
'enabled' INT column to gsp_remote_servers on older installs
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/988997ed-7568-48bf-96ef-889fb5d91fec
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
- Use DECIMAL instead of FLOAT for monetary columns in ALTER TABLE
- Simplify bind_param type string from concatenated to single literal
- Validate payment_status against ENUM values before CSS class injection
- Add provisioning failure logging when panel bootstrap fails
- Add comment explaining total_due/amount legacy fallback
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
- Add PaymentGatewayInterface contract for all payment providers
- Add PayPalGateway (reads credentials from config, not hardcoded)
- Add ManualGateway for admin-triggered payments
- Add StripeGateway stub for future implementation
- Add GatewayFactory for gateway instantiation by name
- Add BillingRepository: parameterized-SQL data layer
- Add BillingService: pricing, invoice creation, payment processing
- Add gsp_billing_transactions table (DB version 2) for audit trail
- Add new columns to gsp_billing_invoices (home_id, rate_type, players, period_start/end, subtotal, total_due, payment_status)
- Add gsp_billing_service_remote_servers mapping table
- Move PayPal credentials from api files into config.inc.php
- Fix double session_start() bug in capture_order.php
- Replace raw SQL with prepared statements throughout
- Refactor admin_invoices.php to use billing_invoices + BillingRepository
- Refactor admin_payments.php to read from gsp_billing_transactions
- Update admin.php with links to Transaction Log and Manage Invoices
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
- Fixed empty caption handling in XML parameter extraction
- Generated detailed startup parameters for all games from XML configs
- All games now have complete troubleshooting sections
- All navigation anchors working properly
- 149 games successfully processed with full documentation
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
Escape all parameter keys, captions, descriptions, option values, and defaults before inserting into HTML to prevent XSS vulnerabilities from XML configuration data.
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
- Fix option text handling to check for None instead of falsy
- Improve HTML cleaning with html.unescape and better tag removal
- Fix multi-line string in die() function
- Add html module import for proper HTML entity handling
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
Move start script, service setup, and troubleshooting sections outside the conditional block to ensure they appear in all generated documentation regardless of whether detailed XML startup params exist.
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
- Add comprehensive headers to deploy_gsp.sh and push_to_github.sh
- Make scripts configurable via environment variables
- Update push_to_github.sh to support GITHUB_TOKEN env var
- Enhance generate_game_docs.py with:
* Command-line argument support (--games, --force, --todo-only)
* Extraction of detailed startup parameters from XML
* Prevention of overwriting existing files unless --force is used
* Comprehensive parameter documentation with options and defaults
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
- Replace generic port descriptions with specific port tables
- Add comprehensive port information for 51 games including:
- Arma series with all ports (game, query, RCON, VON)
- Source engine games (game, query, RCON, SourceTV)
- Popular games like Rust, Minecraft, ARK, Valheim
- Voice servers (TeamSpeak, Mumble, Ventrilo)
- Each port table shows port number, protocol, and purpose
- Matches TF2 documentation format as reference
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
- Replace generic "Varies (see configuration)" with actual default ports
- Add specific port numbers for 41 game servers (Arma series: 2302, Source games: 27015, etc.)
- Update configuration file paths from XML definitions
- Properly escape backslashes in Windows paths for HTML display
Games updated include: Arma2/3, TF2, CS:GO, ETS2, Rust, Minecraft, and many more
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>