Panel/docs/agents/WINDOWS_AGENT.md

2.5 KiB

Windows Agent

Role

Agent-Windows/ogp_agent.pl is the Windows/Cygwin execution agent for GSP. It mirrors the Linux agent as closely as practical, while using Windows-compatible paths, processes, and wrappers.

Important Files

  • Agent-Windows/ogp_agent.pl
  • Agent-Windows/php-query/
  • Agent-Windows/ArmaBE/
  • Agent-Windows/Cfg/
  • Agent-Windows/Install/
  • Agent-Windows/ServerFiles/
  • Agent-Windows/Schedule/

Cygwin Requirements

The Windows agent assumes a Cygwin-style environment that can provide:

  • screen
  • Perl
  • shell utilities such as ps, grep, cut, awk, sed
  • cygpath
  • a usable bash

The goal is to keep the Windows agent behavior close to the Linux agent so the Panel does not need separate semantics for basic lifecycle operations.

Startup Logic

Relevant functions:

  • universal_start_without_decrypt
  • create_screen_cmd
  • create_screen_cmd_loop
  • replace_OGP_Env_Vars

The Windows agent also uses screen sessions for managed server execution. Depending on the game and binary type, it may wrap commands in cmd /Q /C start or run a batch file wrapper.

The session naming scheme also follows the OGP convention:

OGP_HOME_000000123

Status Logic

Relevant functions:

  • is_screen_running_without_decrypt
  • get_screen_pid_without_decrypt
  • server_status_without_decrypt
  • verify_server_stopped_without_decrypt

The status model should check:

  • screen/session existence
  • process/PID information when available
  • game port listening
  • optional query metadata

The old SERVER_STOPPED file should not be the source of truth.

Logging

Relevant function:

  • get_log

Windows/Cygwin logs come from screen logs and/or local copies. Log retrieval should remain compatible with the Panel's AJAX log view.

Scheduler

Relevant functions:

  • scheduler_dispatcher
  • scheduler_server_action
  • scheduler_log_events
  • scheduler_add_task
  • scheduler_del_task
  • scheduler_edit_task
  • scheduler_read_tasks
  • scheduler_stop
  • scheduler_list_tasks

The Windows scheduler implementation should remain aligned with the Linux scheduler implementation so the Panel can treat both the same way.

Windows-Specific Notes

  • Path conversion between Cygwin and native Windows paths matters during startup.
  • Batch wrappers are often needed for Windows executables.
  • Process cleanup must avoid killing unrelated processes that happen to share an executable name.
  • The agent should continue to use screen where it already does so, to stay aligned with Linux behavior.