Commit graph

250 commits

Author SHA1 Message Date
copilot-swe-agent[bot]
de80f89619
fix: wrap DayZ post_install scripts in CDATA, add XML editor auto-sanitizer
- dayz_arma2co_win32.xml: wrap post_install in CDATA to fix raw '<' breaking
  XML parsing; fix dbPass generation to use portable tr form
- dayz_epoch_mod_win32.xml: same CDATA wrapping; replace &lt; literals so
  bash actually receives real '<' redirect characters
- config_servers.php: add config_games_sanitize_xml_scripts() that wraps bare
  '<' in script-like nodes with CDATA before saving raw XML; add
  config_games_script_node_names() helper; structured-editor save now uses
  createCDATASection() for post_install/pre_start/etc. nodes so shell
  characters survive DOM round-trips intact

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/1afce49e-510d-49a6-9d11-0b7118d3cf85

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:43:41 +00:00
copilot-swe-agent[bot]
d564476d1c
feat: GSP 1.0 baseline – module versions, FAQ refresh, XML editor validation, Obsidian theme
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/40ca313f-3f17-4f62-8f05-ba72540a8d30

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:31:07 +00:00
copilot-swe-agent[bot]
9740cdd33b
fix: escape service_name in order.php to prevent XSS; modernize admin JS
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/28b4019a-734d-418e-8002-8c1ff0c0f564

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:04:59 +00:00
copilot-swe-agent[bot]
21bcdac9d7
fix: address review feedback - move JS to script block, use CSS classes
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/28b4019a-734d-418e-8002-8c1ff0c0f564

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:04:03 +00:00
copilot-swe-agent[bot]
70c3ff8979
fix: billing game images - dropdown selector, auto-guess, proper URL resolution
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/28b4019a-734d-418e-8002-8c1ff0c0f564

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 23:03:03 +00:00
copilot-swe-agent[bot]
a484974c06
fix: billing admin service list UI and customer server list display
- adminserverlist.php: fix th color (dark bg #2c3e50 + light text #f0f0f0)
  and add position:sticky to thead so header rows stay visible while scrolling
- adminserverlist.php: remove Out of Stock column from UI (thead, tbody),
  save handler (no longer reads/writes out_of_stock), and sync logic
  (soft-disable no longer sets out_of_stock = 1; new rows no longer insert it)
- adminserverlist.php: normalize price inputs to step=0.01 / 2 decimal places
- serverlist.php: fix foreach on mysqli_result cast bug that silently
  prevented all services from rendering; now uses fetch_assoc() loop
- serverlist.php: add IS NOT NULL guard alongside the != '' check

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/3474562e-25f4-4d89-a030-f227e11b609b

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 22:39:49 +00:00
copilot-swe-agent[bot]
51e3bbe16d
fix: billing login fatal error (remove users_pass_hash UPDATE) and clean up DayZ Epoch XML post_install
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/ab0498eb-fc73-47ef-aec4-f20043320401

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-03 21:58:13 +00:00
692c276bc9
Update dayz_arma2co_win32.xml 2026-05-03 14:46:25 -07:00
copilot-swe-agent[bot]
ea995dc3b8
fix: sync billing_services from config_homes (one row per game), not config_mods
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/007e3cab-f414-4c90-864c-e820a847b637

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 21:28:46 +00:00
2686174609
Merge pull request #103 from GameServerPanel/copilot/fix-batch-of-errors
Fix array offset on false, array-to-string, and missing INSERT columns in billing sync
2026-05-02 13:44:55 -07:00
copilot-swe-agent[bot]
d57e3d0152
Fix: array offset on false in getNextAvailablePort, array-to-string in render_node attributes, missing columns in sync_billing_services INSERT
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/5bf3f57e-9174-4768-ae8b-c3526a1daeca

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 20:42:46 +00:00
1b0cddc818
Fix SQL query syntax in monitor_buttons.php 2026-05-02 16:36:13 -04:00
735322b8bc removed extras module 2026-05-02 16:20:19 -04:00
7a01838802
Modify download links and extraction commands
Updated download URLs and extraction commands in the post-install section.
2026-05-02 16:14:49 -04:00
copilot-swe-agent[bot]
ffece9ba57
fix: address code review nits - table name escaping, prefix fallback, gamemanager default, admin.php site vars
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/35af6b7c-2518-4105-b4d2-ba1f3fe754cd

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 19:43:35 +00:00
copilot-swe-agent[bot]
d8972fee16
fix: consolidate module schemas to db_version=1, fix billing admin undefined vars and prefix
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/35af6b7c-2518-4105-b4d2-ba1f3fe754cd

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 19:41:22 +00:00
copilot-swe-agent[bot]
744964ac60
fix: address code review nits - simplify array_map lambda and clarify empty remote_server_id
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/e8bfe531-e1ff-4257-b49c-f8376b84e772

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:42:09 +00:00
copilot-swe-agent[bot]
3024e41121
fix: config editor array-to-string warning and billing description INSERT failure
- 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>
2026-05-02 15:41:20 +00:00
04dc98380b
Merge pull request #100 from GameServerPanel/copilot/fix-billing-database-target
Fix billing DB target safety + replace service-remote-server mapping table with CSV column
2026-05-02 08:26:11 -07:00
c5d64420dd
Update dayz_epoch_mod_win32.xml 2026-05-02 08:25:25 -07:00
copilot-swe-agent[bot]
8a832b0eac
fix: remove unused $type variable in adminserverlist.php flash loop
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/0b960e6d-bdf7-4b5b-8114-6c63e6b11a8d

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:22:58 +00:00
copilot-swe-agent[bot]
3219ed335e
fix: billing DB safety, remove mapping table, sync services from game config
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/0b960e6d-bdf7-4b5b-8114-6c63e6b11a8d

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:22:13 +00:00
copilot-swe-agent[bot]
61f6e517ec
fix: improve script-only install messaging and add error logging for exec() calls
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/9c87b62e-17b2-4f36-9b49-82238d73dda2

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:09:43 +00:00
copilot-swe-agent[bot]
75e63475ae
feat: remove legacy rsync/manual install methods, standardize SteamCMD pipeline, fix Update button
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/9c87b62e-17b2-4f36-9b49-82238d73dda2

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 15:08:38 +00:00
copilot-swe-agent[bot]
7f6fe9a39a
fix: address code review - prepared stmt, first-radio auto-select, remove unused var, clarify comment
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/4a9c8aab-3782-44a8-a5e4-01b50a813cc0

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 14:52:30 +00:00
copilot-swe-agent[bot]
b3d677035b
feat: update wording (GitHub Stable/Unstable) + billing matrix redesign
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/4a9c8aab-3782-44a8-a5e4-01b50a813cc0

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 14:50:25 +00:00
copilot-swe-agent[bot]
f4f222953f
fix: address code review feedback on billing admin fixes
- menu.php: remove unnecessary @ suppression from mysqli_thread_id()
  (instanceof check already guarantees a mysqli object)
- adminserverlist.php: split ternary flash message into separate if/else
  for readability; replace dynamic SQL fragment with explicit if/else
  query branches

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/988997ed-7568-48bf-96ef-889fb5d91fec

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 13:41:13 +00:00
copilot-swe-agent[bot]
bb77620796
fix: resolve 3 billing admin errors and normalize remote_servers query
- 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>
2026-05-02 13:40:10 +00:00
copilot-swe-agent[bot]
fcc54cb2da
style: clean up string concatenation in config_loader.php
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/a3e1e4bb-8eb1-4e6e-b1f8-7f3952301231

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 13:16:40 +00:00
copilot-swe-agent[bot]
1247e5e7ca
fix: harden billing module for standalone portability
- config_loader.php: prefer local billing config FIRST (root cause fix)
  - was: panel config loaded first, overriding local config with wrong db name
  - now: local modules/billing/includes/config.inc.php always wins when present
- config.inc.php: add $db_port="3306"
- config.example.php: new example config with all variables documented
- menu.php: add $db_port to mysqli_connect
- admin_auth.php: add $db_port; remove hardcoded /_website path detection
- bootstrap.php billing_get_db(): add $db_port
- login.php: fix /_website path detection
- adminserverlist.php: add $db_port; fix hardcoded /modules/billing/ URL
- All other mysqli_connect calls: add isset($db_port) port parameter
  (my_servers, forgot_password, serverlist, server_status, order, register,
   reset_password, payment_success, my_account, admin_invoices, admin_payments,
   diag_remote, admin_coupons, test_db_connection, tools/check_db_user,
   renew_server)
- timestamp.txt: updated

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/a3e1e4bb-8eb1-4e6e-b1f8-7f3952301231

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 13:15:50 +00:00
copilot-swe-agent[bot]
d4332808e6
chore: remove 22 stray backup files (.bak/.BAK/.orig/.backup); update CHANGELOG and timestamp
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/fe14a5ef-8993-48c4-a867-17971b58ac92

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 12:51:18 +00:00
copilot-swe-agent[bot]
3066d9c75c
fix(billing): address code review issues - ALTER TABLE syntax, null period handling, type detection
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/e8da2cb7-dbf1-4296-b25d-766f8e099581

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-02 12:23:23 +00:00
copilot-swe-agent[bot]
4a1b5bc725
fix(billing): address code review feedback
- 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>
2026-05-02 12:19:32 +00:00
copilot-swe-agent[bot]
986a4e53b4
refactor(billing): clean architecture with payment gateway abstraction
- 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>
2026-05-02 12:17:36 +00:00
copilot-swe-agent[bot]
b4cadbe30f
fix: replace deprecated zip_* functions and string interpolation in unzip.php (PHP 8.3)
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/cc7d8d98-a257-470e-aa29-dff276024b1f

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 23:06:56 +00:00
copilot-swe-agent[bot]
79d78f074b
fix: address code review comments (grace_days in Step B, simplified rate_map, spelling, comments)
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/5dbd58e1-7aa0-41e2-8dd3-c56b69ede05e

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 22:19:17 +00:00
copilot-swe-agent[bot]
b03d9b2171
feat: simplify billing status to Active/Invoiced/Expired with new SQL migration and cron rewrite
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/5dbd58e1-7aa0-41e2-8dd3-c56b69ede05e

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 22:17:22 +00:00
copilot-swe-agent[bot]
1a7502952c
feat: move panel update UI to Update module, add backup-only button & DB logging, fix password input exposure
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/a08c8b94-1b12-4eec-86c6-770cb435bb06

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 21:34:49 +00:00
copilot-swe-agent[bot]
480d3872d7
fix: rewrite panel backup system — tar gzip, proper mysqldump, backup.log, and full metadata
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/7f8dfeb1-bb3a-4dfc-a2fa-524a5ac201bf

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 19:21:08 +00:00
copilot-swe-agent[bot]
6edfa36235
fix: store backups inside panel directory; revert dev testing heading
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/33417aee-aecb-44de-9008-5b1008b4e3dc

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 19:02:36 +00:00
copilot-swe-agent[bot]
c0e63b45bc
fix: improve panel update system with version.json, git-first updates, and footer version display
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/cce5f75b-a5b6-4b28-8f92-1f8197231a0a

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 18:50:42 +00:00
copilot-swe-agent[bot]
ed0b9298c0
fix: explicit SSL verification, refactor CSRF token generation to helper
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/63f4e381-38d6-4fcf-b084-409cb4d2138c

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 14:23:41 +00:00
copilot-swe-agent[bot]
aeb1399024
fix: address code review issues (SSL verification, credential exposure, random_bytes safety)
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/63f4e381-38d6-4fcf-b084-409cb4d2138c

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 14:21:59 +00:00
copilot-swe-agent[bot]
feebfea702
feat: add safe panel update system to administration page
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/63f4e381-38d6-4fcf-b084-409cb4d2138c

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 14:19:40 +00:00
copilot-swe-agent[bot]
2d2fc496d5
fix: remove created_by_admin from billing INSERT and schema
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/2ce89b8b-fa50-40b9-aa38-4ebbc44a9770

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 13:52:38 +00:00
copilot-swe-agent[bot]
facd1f0269
fix: declare FormTable::$i property and consolidate created_by_admin into INSERT
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/f945ff87-7135-4e6f-bbdb-f3ec276ac89b

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 13:28:02 +00:00
copilot-swe-agent[bot]
8a6823186a
fix: null handling in realEscapeSingle, init $map, add billing upgrade for created_by_admin
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/77c3c429-fc35-4f66-9d78-900be575b81a

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 13:16:04 +00:00
copilot-swe-agent[bot]
7551567354
fix: cast mod_name to string in preg_match; add created_by_admin to billing_orders schema
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/15c9652a-a4a6-4f02-bcc2-15f8fed708b1

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 13:04:31 +00:00
copilot-swe-agent[bot]
7a16fb299f
fix: PHP 8 compatibility warnings and fatal errors
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/5ac91d14-7688-4ab2-9065-10d4a361750f

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-01 12:56:23 +00:00
copilot-swe-agent[bot]
9d1999f374
feat: admin billing integration + migrate system (replaces clone)
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/8940e39d-4aaa-4154-874b-74ab24d74da3

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-04-30 20:54:08 +00:00