Panel/Panel/modules/billing/RECENT_FIXES_SUMMARY.md
copilot-swe-agent[bot] 176f532737
feat: relocate billing runtime to module and harden updater panel pathing
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/50299e05-4ee0-4b5b-80e4-bc5f872c106e

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-05-18 13:46:11 +00:00

10 KiB

Recent Fixes & Enhancements Summary

Date: December 19, 2024 (Updated)

Phase 1: Visual TODO System Implementation NEW

Overview

Implemented comprehensive system to visually identify incomplete game documentation across the entire billing website. All game documentation folders now have completion tracking.

Changes Made

1. Metadata Enhancement System

  • Created: update_metadata_complete.ps1 - PowerShell script for batch metadata updates
  • Updated: 146 metadata.json files across all game documentation folders
  • New Field: Added "complete": false to mark documentation status
  • Exception: Minecraft marked as "complete": true (serves as complete template)

2. Documentation Display Logic

  • File: modules/billing/docs.php
  • Enhancement: Added automatic "TODO: " prefix for incomplete documentation
  • Logic:
    $isComplete = isset($metadata['complete']) ? (bool)$metadata['complete'] : false;
    if (!$isComplete) {
        $displayName = 'TODO: ' . $displayName;
    }
    
  • Result: Users immediately see which games need comprehensive documentation

3. Visual Impact on docs.php

Complete Documentation (no prefix):

  • Minecraft Server

Incomplete Documentation (TODO prefix):

  • TODO: Arma 3
  • TODO: Arma 2: Operation Arrowhead
  • TODO: Arma 2: Combined Operations
  • TODO: DayZ
  • TODO: Rust
  • TODO: Counter-Strike: Global Offensive
  • TODO: Garry's Mod
  • TODO: Valheim
  • TODO: Terraria
  • TODO: Left 4 Dead 2
  • TODO: Team Fortress 2
  • TODO: ARK: Survival Evolved
  • ...and 134 more games

Minecraft Documentation Template (Complete Example)

File: modules/billing/docs/minecraft/index.php Status: Complete (~550 lines) Includes:

  • 📚 Navigation with anchor links
  • 🔌 Comprehensive ports table (all ports with purposes)
  • ⚙️ Startup parameters (JVM flags, optimizations)
  • 🔧 Troubleshooting sections (specific solutions)
  • 🔥 Firewall configs (UFW, FirewallD, Windows, iptables)
  • 🔒 Security best practices
  • Performance optimization tips
  • 🔗 Resource links with citations

Critical Fixes Completed

1. PayPal Payment Capture Session Issue (FIXED)

Problem: Payment capture was failing with NO_USER_SESSION error even though user was logged in.

Root Cause: The api/capture_order.php file was calling session_start() without setting the session name first, so it couldn't access the opengamepanel_web session where the user_id is stored.

Solution: Added session_name("opengamepanel_web") before session_start() in capture_order.php.

File Modified: modules/billing/api/capture_order.php (line ~148)

Test Steps:

  1. Log into the billing site
  2. Add a server to cart
  3. Click PayPal checkout button
  4. Complete payment in PayPal sandbox
  5. Verify payment completes successfully and redirects to success page
  6. Check modules/billing/logs/payment_capture.log - should no longer show NO_USER_SESSION error

2. Cart Page Debug Logging Removed (COMPLETED)

What Was Removed:

  • Shutdown function that logged to data/debug_cart.log
  • ?debug_cart=1 parameter handling
  • Debug error display code

File Modified: modules/billing/cart.php (lines 1-30)

Result: Cart page now runs in production mode without debug overhead.


Problem: Cart page had different fonts and styling than other billing pages; missing footer entirely.

Solutions Applied:

  1. Added include(__DIR__ . '/includes/top.php'); before menu
  2. Added include(__DIR__ . '/includes/footer.php'); at page end
  3. Removed global font-family and background override from inline CSS
  4. Added favicon links to match other pages

Files Modified:

  • modules/billing/cart.php (head section and body closing)

Result: Cart page now has consistent header/menu/footer with rest of billing module.


Documentation Enhancements Started 📚

4. Minecraft Documentation Updated (TEMPLATE CREATED)

What Was Added:

  • Comprehensive Ports section with table showing all ports (TCP 25565, UDP 25565, TCP 25575, UDP 19132)
  • Port purposes clearly explained
  • Firewall configuration examples for multiple platforms
  • Security notes for RCON and port protection
  • Enhanced navigation with icons (🔌 Ports, ⚙️ Startup Parameters, 🔧 Troubleshooting)

File Modified: modules/billing/docs/minecraft/index.php

Template Pattern Established:

  • Quick Info section (at top)
  • Ports section with complete table
  • Installation steps
  • Configuration examples
  • Startup Parameters section (already excellent)
  • Troubleshooting section (already comprehensive)
  • Performance optimization
  • Security best practices

Remaining Documentation Work 📋

Games Needing Full Port/Parameter/Troubleshooting Docs

The following games need their docs/{game}/index.php files updated with the Minecraft template pattern:

  1. Counter-Strike: Global Offensive (csgo/)
  2. Team Fortress 2 (tf2/)
  3. Garry's Mod (garrysmod/)
  4. Rust (rust/)
  5. ARK: Survival Evolved (arkse/)
  6. Terraria (terraria/)
  7. Valheim (valheim/)
  8. 7 Days to Die (7daystodie/)
  9. DayZ (dayz/)
  10. Left 4 Dead 2 (left4dead2/)

Medium Priority:

  1. Counter-Strike Source (css/)
  2. Arma 3 (arma3/)
  3. Squad (squad/)
  4. Insurgency Sandstorm (insurgencysandstorm/)
  5. Space Engineers (space_engineers/)
  6. Conan Exiles (conanexiles/)
  7. The Forest (theforest/)
  8. Don't Starve Together (dontstarvetogether/)
  9. Factorio (factorio/)
  10. TeamSpeak 3 (teamspeak3/)

Lower Priority (Legacy/Niche):

  1. All remaining games in modules/billing/docs/

Research Needed Per Game

For each game, research and document:

  1. All Network Ports:

    • Game port (TCP/UDP)
    • Query port
    • RCON/Admin port
    • Voice chat ports (if applicable)
    • Steam port (if Steam-based)
    • Additional service ports (web interfaces, etc.)
  2. Startup Parameters:

    • Command-line flags
    • Memory allocation
    • Server configuration switches
    • Performance optimization flags
  3. Common Issues (from internet research):

    • "Server won't start" specific to that game
    • Connection problems
    • Performance/lag issues specific to game engine
    • Mod/plugin conflicts
    • Save corruption issues
    • Update/patch problems
  4. Game-Specific Configuration:

    • Main config file locations
    • Critical settings
    • Player limits
    • World/map settings

Documentation Template Structure

Each game's index.php should follow this structure:

<?php
/**
 * {Game Name} Server Documentation
 */
?>

<!-- Navigation with icons -->
<div style="background: #1e3a5f...">
    <h3>📚 Quick Navigation</h3>
    <div>
        <a href="#quick-info">Quick Info</a>
        <a href="#ports">🔌 Ports</a>
        <a href="#installation">Installation</a>
        <a href="#configuration">Configuration</a>
        <a href="#parameters">⚙️ Startup Parameters</a>
        <a href="#troubleshooting">🔧 Troubleshooting</a>
        <a href="#performance">Performance</a>
    </div>
</div>

<h1>{Game Name} Server Hosting Guide</h1>

<h2 id="quick-info">Quick Info</h2>
<!-- Key stats in styled box -->

<h2 id="ports">🔌 Network Ports Used</h2>
<!-- Table with all ports, protocols, purposes, required/optional -->
<!-- Firewall examples -->
<!-- Port security notes -->

<h2 id="installation">Installation & Setup</h2>
<!-- Step-by-step installation -->

<h2 id="configuration">Server Configuration</h2>
<!-- Config file examples -->

<h2 id="parameters">⚙️ Startup Parameters</h2>
<!-- Command-line flags -->
<!-- Parameter explanations -->

<h2 id="troubleshooting">🔧 Troubleshooting</h2>
<!-- Common Issues section -->
<!-- Server Won't Start -->
<!-- Connection Problems -->
<!-- Performance Issues -->
<!-- Game-specific problems -->

<h2 id="performance">Performance Optimization</h2>
<!-- Optimization tips -->

<!-- Additional Resources -->
<!-- Important Notes -->

Testing Checklist

PayPal Payment Flow:

  • Log into billing site
  • Add server to cart
  • Apply coupon (optional)
  • Click PayPal button
  • Complete sandbox payment
  • Verify success page loads
  • Check invoice marked as paid in database
  • Verify no NO_USER_SESSION in logs/payment_capture.log

Cart Page:

  • Cart page loads with correct header/menu (same font as index.php)
  • Footer appears with timestamp
  • Favicon displays in browser tab
  • Remove item (trash icon) works via AJAX
  • Cart refreshes without full page reload after removal
  • Database row hard-deleted (invoice removed from table)

Documentation:

  • Navigate to /docs.php (or docs index)
  • Click on Minecraft documentation
  • Verify new Ports section displays correctly
  • Verify navigation links jump to correct sections
  • Test on mobile/tablet for responsive layout

Next Steps (Priority Order)

  1. Test PayPal payment flow end-to-end (sandbox environment)
  2. Verify cart removal functionality (AJAX + database deletion)
  3. Begin documentation expansion:
    • Start with top 10 popular games
    • Research ports/parameters/issues for each
    • Update docs using Minecraft template
    • Test navigation and layout
  4. Consider automation:
    • Script to validate all game docs have required sections
    • Port information database/reference
    • Common troubleshooting template generator

Files Modified in This Session

  1. modules/billing/api/capture_order.php - Fixed session name issue
  2. modules/billing/cart.php - Removed debug logging, fixed header/footer
  3. modules/billing/docs/minecraft/index.php - Added ports section, enhanced navigation

Files to Review

  • modules/billing/logs/payment_capture.log - Check for successful captures
  • modules/billing/data/debug_cart.log - Should no longer be written to
  • Database table {$table_prefix}billing_invoices - Verify removals are hard-deleted

End of Summary