94 lines
2.5 KiB
Markdown
94 lines
2.5 KiB
Markdown
# 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:
|
|
|
|
```text
|
|
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.
|
|
|