Panel/AGENT_UNIFICATION.md
copilot-swe-agent[bot] 3c9bdde9a3 Implement unified OGP agent with platform detection and conditional logic
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2025-09-08 00:29:42 +00:00

3.1 KiB

OGP Agent Unification

Overview

This project unifies the Linux and Windows OGP (Open Game Panel) agent files into a single cross-platform agent that works on both Linux and Windows/Cygwin systems.

Key Platform-Specific Differences Addressed

1. SteamCMD Binary Paths

  • Linux: Uses steamcmd.sh
  • Windows: Uses steamcmd.exe
  • Solution: Platform-conditional constant STEAMCMD_CLIENT_BIN

2. Sudo Functionality

  • Linux: Full sudo support with password-based authentication
  • Windows: No sudo functionality (different permission model)
  • Solution: Conditional sudo functions that are no-ops on Windows

3. User Management

  • Linux: Uses LINUX_USER_PER_GAME_SERVER and SERVER_RUNNER_USER
  • Windows: Uses USER_RUNNING_SCRIPT with Cygwin-specific fallbacks
  • Solution: Platform-conditional user constants

4. Log Rotation

  • Linux: Automated log rotation functionality
  • Windows: Static log handling
  • Solution: Conditional log rotation code block

5. Screen Configuration

  • Linux: Dynamic screenrc file modification with temporary files
  • Windows: Static screenrc usage with basic screen session cleanup
  • Solution: Conditional screen configuration logic

6. File Permissions

  • Linux: Complex permission management using chmod, setfacl, chattr
  • Windows: Simpler permission model
  • Solution: Linux-only permission functions

7. Process Execution

  • Linux: Bash scripts with respawn logic and Wine environment variables
  • Windows: Batch files with priority/affinity control and Cygwin path conversion
  • Solution: Platform-specific create_screen_cmd and create_screen_cmd_loop functions

8. Path Handling

  • Linux: Standard Unix paths
  • Windows: Cygwin path conversion using cygpath -wa
  • Solution: Platform-specific path handling in replace_OGP_Env_Vars

Implementation Strategy

The unified agent uses:

  1. Platform Detection: $^O variable to detect Windows/Cygwin vs Linux
  2. Conditional Constants: Platform-specific values set at compile time
  3. Conditional Logic: Runtime platform checks for different behaviors
  4. Function Overloading: Same function names with platform-specific implementations

Files

  • ogp_agent_unified.pl: The unified agent file
  • AGENT_UNIFICATION.md: This documentation
  • _agent-linux/: Original Linux agent (preserved)
  • _agent-windows/: Original Windows agent (preserved)

Testing

The unified agent can be tested on both platforms:

  • Linux: Standard Perl environment
  • Windows: Cygwin with Perl environment

Deployment

To use the unified agent:

  1. Copy ogp_agent_unified.pl to the target system
  2. Ensure all required Perl modules are installed
  3. Run with same command-line options as original agents
  4. The agent will automatically detect the platform and behave appropriately

Benefits

  1. Single Codebase: Easier maintenance and updates
  2. Reduced Duplication: No need to maintain two separate files
  3. Consistent Features: New features automatically work on both platforms
  4. Simplified Deployment: One file works everywhere