Panel/modules/config_games/server_configs/dayz_arma2co_win32.xml
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

143 lines
4.3 KiB
XML

<game_config>
<game_key>dayzmod_win32</game_key>
<installer>steamcmd</installer>
<game_name>DayZ Mod</game_name>
<server_exec_name>arma2oaserver.exe</server_exec_name>
<cli_template>%MODLIST% -cfg=cfg\basic.cfg -config=cfg\server.cfg -name=dayz -profiles=cfg %IP% %PORT%</cli_template>
<cli_params>
<cli_param id="PORT" cli_string="-port=" />
<cli_param id="IP" cli_string="-ip=" />
</cli_params>
<reserve_ports>
<port type="add" id="QUERY_PORT">1</port>
</reserve_ports>
<cli_allow_chars>;</cli_allow_chars>
<console_log>cfg/arma2oaserver.RPT</console_log>
<max_user_amount>64</max_user_amount>
<control_protocol>armabe</control_protocol>
<mods>
<mod>
<name>none</name>
<installer_name>33930</installer_name>
</mod>
</mods>
<replace_texts>
<text key="max_players">
<default>(maxPlayers\s*=\s*)(.*)(;)</default>
<var>maxPlayers = "%key%";</var>
<filepath>cfg/server.cfg</filepath>
<options>key-regex</options>
</text>
<text key="port">
<default>Port =.*</default>
<var>Port = %key% </var>
<filepath>bec/config/config.cfg</filepath>
<options>key-regex</options>
</text>
<text key="ip">
<default>Ip =.*</default>
<var>Ip = %key% </var>
<filepath>bec/config/config.cfg</filepath>
<options>key-regex</options>
</text>
<text key="home_path">
<default>BePath =.*</default>
<var>BePath = %key%/cfg/Battleye</var>
<filepath>bec/config/config.cfg</filepath>
<options>key-regex</options>
</text>
</replace_texts>
<server_params>
<param id="MODLIST" key="-mod=" type="text">
<default>@dayz_epoch;@epochserver;</default>
<option>ns</option>
<caption>Mods ex: @dayz;@hive or @dayz_epoch;@dayz_epoch_server</caption>
<desc>Semicolon after each mod and you MUST copy the KEY into your keys folder.
Make sure if you install a MOD, you list the name here or else it wont get loaded.
</desc>
</param>
</server_params>
<post_install><![CDATA[
mkdir -p ./cfg
touch ./cfg/dayz_arma2co_win32.xml.txt
wget --progress=dot:giga http://files.iaregamer.com/gamefiles/arma2Addons.tar
tar -xvf arma2Addons.tar
rm -f arma2Addons.tar
wget --progress=dot:giga http://files.iaregamer.com/gamefiles/dayzmod1.9.0.tar
tar -xvf dayzmod1.9.0.tar
rm -f dayzmod1.9.0.tar
#Create Database ---------------------------------------
dbPass=$(tr -dc 'A-Za-z0-9_' </dev/urandom | head -c 12)
srvID=${PWD##*/}
dbID="server_${srvID}"
sed -i "s/^Host = .*/Host = mysql.iaregamer.com/" cfg/hiveext.ini
sed -i "s/^Port = .*/Port = 3306/" cfg/hiveext.ini
sed -i "s/^Database = .*/Database = ${dbID}/" cfg/hiveext.ini
sed -i "s/^Username = .*/Username = ${dbID}/" cfg/hiveext.ini
sed -i "s/^Password = .*/Password = ${dbPass}/" cfg/hiveext.ini
mysql -e "
CREATE DATABASE IF NOT EXISTS \`${dbID}\`;
CREATE USER IF NOT EXISTS '${dbID}'@'%' IDENTIFIED BY '${dbPass}';
GRANT ALL ON \`${dbID}\`.* TO '${dbID}'@'%';
DELETE FROM panel.gsp_mysql_databases WHERE db_user='${dbID}';
INSERT INTO panel.gsp_mysql_databases
(mysql_server_id, home_id, db_user, db_passwd, db_name, enabled)
VALUES (1, ${srvID}, '${dbID}', '${dbPass}', '${dbID}', 1);
"
mysql --force "${dbID}" < 1.9.0_fresh.sql
# Create alsoRun.bat -----------------------------------
printf '%s\r\n' \
'@echo off' \
'del /q "..\_alsoRun.pid" 2>nul' \
'cd bec' \
'start "BEC" bec.exe --dsc --dec -f config.cfg' \
'cd ..' \
'timeout /t 3 /nobreak >nul' \
'for /f "tokens=2 delims==" %%P in ('"'"'wmic process where "ExecutablePath='"'"'%cd:\=\\%\\bec.exe'"'"'" get ProcessId /value ^| find "="'"'"') do >"..\_alsoRun.pid" echo %%P' \
> _alsoRun.bat
]]></post_install>
<pre_start>
</pre_start>
<lock_files>
Arma2Server.exe
Arma2Server_x64.exe
</lock_files>
<configuration_files>
<file description="Server settings">cfg\server.cfg</file>
<file description="Basic Network settings" >cfg\basic.cfg</file>
<file description="BattlEye Rcon Password" >cfg\battleye\beserver.cfg</file>
<file description="DB settings and Date/Time">cfg\hiveext.ini</file>
<file description="Difficulty Settings">cfg\users\dayz\dayz.arma2oaprofile</file>
<file description="For DayZmod: 224580 All others: 33930">steam_appid.txt</file>
<file description="BEC Scheduler">bec\config\scheduler.xml</file>
<file description="BEC Admins">bec\config\admins.xml</file>
<file description="BEC Whitelist">bec\config\whitelist.xml</file>
<file description="BEC Message List">bec\config\fortune.txt</file>
</configuration_files>
</game_config>