152 lines
No EOL
9 KiB
JSON
152 lines
No EOL
9 KiB
JSON
{
|
|
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
|
|
"meta": {
|
|
"version": "PTDL_v2",
|
|
"update_url": null
|
|
},
|
|
"exported_at": "2025-07-19T22:21:54+02:00",
|
|
"name": "Zandronum",
|
|
"author": "sup@libtar.de",
|
|
"description": "Zandronum is a multiplayer oriented port, based off Skulltag, for Doom and Doom II by id Software.\r\n\r\nThis egg uses the Freedoom WAD by default.",
|
|
"features": null,
|
|
"docker_images": {
|
|
"Ubuntu": "ghcr.io\/ptero-eggs\/yolks:ubuntu"
|
|
},
|
|
"file_denylist": [],
|
|
"startup": ".\/zandronum-server -port {{SERVER_PORT}} -config \/home\/container\/zandronum.ini +set dmflags {{DMFLAGS}} +set dmflags2 {{DMFLAGS2}} +set zadmflags {{ZADMFLAGS}} +set compatflags {{COMPATFLAGS}} +set compatflags2 {{COMPATFLAGS2}} +set zacompatflags {{ZACOMPATFLAGS}} -iwad IWAD\/{{IWAD}} -file PWAD\/{{PWADS}} -host {{MAX_PLAYERS}} +map {{MAP}} -skill {{SKILL}} -netmode 1",
|
|
"config": {
|
|
"files": "{}",
|
|
"startup": "{\r\n \"done\": \"UDP Initialized.\"\r\n}",
|
|
"logs": "{}",
|
|
"stop": "quit"
|
|
},
|
|
"scripts": {
|
|
"installation": {
|
|
"script": "#!\/bin\/sh\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nARCH=\"linuxserver-armv8\"\r\nif [ \"$(uname -m)\" = \"x86_64\" ]; then\r\n ARCH=\"linux-x86_64\"\r\nfi\r\n\r\necho \"Fetching available Zandronum versions for architecture $ARCH...\"\r\nhtml=$(curl -s https:\/\/zandronum.com\/downloads\/)\r\n\r\necho \"Matched files:\"\r\nmatched=$(echo \"$html\" | grep -oE \"zandronum[0-9.]+-${ARCH}\\.tar\\.bz2\" | sort -u)\r\necho \"$matched\"\r\n\r\n# Extract version numbers (including 3.2 now)\r\nversions=$(echo \"$matched\" | sed -E \"s\/zandronum([0-9.]+)-.*\/\\1\/\")\r\nlatest_version=$(echo \"$versions\" | sort -V | tail -n1)\r\n\r\ndownload_success=0\r\n\r\nuser_agent=\"Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/115.0 Safari\/537.36\"\r\n\r\ndownload_with_retries() {\r\n local url=\"$1\"\r\n local tries=3\r\n local wait=5\r\n local count=1\r\n local filename\r\n filename=$(basename \"$url\")\r\n\r\n while [ $count -le $tries ]; do\r\n echo \"Download attempt $count of $tries...\"\r\n if curl -L --fail --retry 2 --retry-delay 5 -A \"$user_agent\" -o \"$filename\" \"$url\"; then\r\n return 0\r\n else\r\n echo \"Download attempt $count failed, retrying in $wait seconds...\"\r\n sleep $wait\r\n fi\r\n count=$((count + 1))\r\n done\r\n\r\n return 1\r\n}\r\n\r\nfilename=\"zandronum${latest_version}-${ARCH}.tar.bz2\"\r\nurl=\"https:\/\/zandronum.com\/downloads\/${filename}\"\r\n\r\necho \"Checking if file exists at $url...\"\r\nif curl -A \"$user_agent\" --silent --fail --output \/dev\/null \"$url\"; then\r\n echo \"Attempting to download $filename...\"\r\n if download_with_retries \"$url\"; then\r\n echo \"Successfully downloaded $filename.\"\r\n download_success=1\r\n else\r\n echo \"Download failed for $filename after retries.\"\r\n fi\r\nelse\r\n echo \"File not found: $filename\"\r\nfi\r\n\r\nif [ \"$download_success\" -ne 1 ]; then\r\n echo \"ERROR: Could not download the latest Zandronum version. Exiting.\"\r\n exit 1\r\nfi\r\n\r\necho \"Extracting $filename...\"\r\ntar -xjf \"$filename\"\r\nrm -f \"$filename\"\r\nrm -f zandronum # Remove the client binary\r\n\r\nchmod +x zandronum-server\r\n\r\nmkdir -p IWAD PWAD\r\n\r\necho \"Fetching latest Freedoom release...\"\r\nfreedoom_url=$(curl -s https:\/\/api.github.com\/repos\/freedoom\/freedoom\/releases\/latest | jq -r '.assets[].browser_download_url' | grep -m1 -i 'freedoom-.*\\.zip')\r\n\r\nif [ -z \"$freedoom_url\" ]; then\r\n echo \"Failed to fetch Freedoom release. Exiting.\"\r\n exit 1\r\nfi\r\n\r\necho \"Downloading Freedoom from $freedoom_url...\"\r\ncurl -L -o freedoom.zip \"$freedoom_url\"\r\nunzip -j -o freedoom.zip '*\/*' -d IWAD\/\r\nrm freedoom.zip\r\nrm -f IWAD\/*.html IWAD\/*.pdf\r\n\r\necho \"Downloading default config...\"\r\nwget -q -O zandronum.ini https:\/\/raw.githubusercontent.com\/ptero-eggs\/game-eggs\/main\/doom\/zandronum\/zandronum.ini\r\n\r\ntouch adminlist.txt whitelist.txt banlist.txt\r\n\r\nif [ \"$GEOIP\" = \"1\" ]; then\r\n echo \"Downloading GeoIP data...\"\r\n wget -q -O GeoIP.dat https:\/\/raw.githubusercontent.com\/ptero-eggs\/game-eggs\/main\/doom\/zandronum\/GeoIP.dat\r\nfi\r\n\r\necho \"Install complete. Zandronum version ${latest_version} is ready.\"",
|
|
"container": "ghcr.io\/ptero-eggs\/installers:alpine",
|
|
"entrypoint": "ash"
|
|
}
|
|
},
|
|
"variables": [
|
|
{
|
|
"name": "Max Players",
|
|
"description": "The maximum amount of players allowed on your game server.",
|
|
"env_variable": "MAX_PLAYERS",
|
|
"default_value": "16",
|
|
"user_viewable": true,
|
|
"user_editable": false,
|
|
"rules": "nullable|integer|max:128",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "IWAD",
|
|
"description": "An IWAD is the main resource file for a Doom-engine game, containing all the game's original sounds, levels, and graphics.",
|
|
"env_variable": "IWAD",
|
|
"default_value": "freedoom1.wad",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "required|string|max:255",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "PWADS",
|
|
"description": "If you wish to use multiple PWAD you can do so by separating them with spaces.\r\n\r\nA PWAD is a WAD containing lumps of data, often used as addons. They replace in-game assets.",
|
|
"env_variable": "PWADS",
|
|
"default_value": "",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "nullable|string|max:255",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "Skill",
|
|
"description": "Set the difficulty of the game.",
|
|
"env_variable": "SKILL",
|
|
"default_value": "",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "nullable|string|between:0,15",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "map",
|
|
"description": "The map the server should start with.",
|
|
"env_variable": "MAP",
|
|
"default_value": "e1m1",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "nullable|string|max:255",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "dmflags",
|
|
"description": "Gameplay flags. https:\/\/wiki.zandronum.com\/DMFlags",
|
|
"env_variable": "DMFLAGS",
|
|
"default_value": "",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "nullable|string|max:255",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "dmflags2",
|
|
"description": "Gameplay flags. https:\/\/wiki.zandronum.com\/DMFlags",
|
|
"env_variable": "DMFLAGS2",
|
|
"default_value": "",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "nullable|string|max:255",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "zadmflags",
|
|
"description": "Zandronum specific gameplay flags. https:\/\/wiki.zandronum.com\/DMFlags",
|
|
"env_variable": "ZADMFLAGS",
|
|
"default_value": "",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "nullable|string|max:255",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "compatflags",
|
|
"description": "Compatibility flags. https:\/\/wiki.zandronum.com\/DMFlags",
|
|
"env_variable": "COMPATFLAGS",
|
|
"default_value": "",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "nullable|string|max:255",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "compatflags2",
|
|
"description": "Compatibility flags. https:\/\/wiki.zandronum.com\/DMFlags",
|
|
"env_variable": "COMPATFLAGS2",
|
|
"default_value": "",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "nullable|string|max:255",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "zacompatflags",
|
|
"description": "Zandronum specific compatibility flags. https:\/\/wiki.zandronum.com\/DMFlags",
|
|
"env_variable": "ZACOMPATFLAGS",
|
|
"default_value": "",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "nullable|string|max:255",
|
|
"field_type": "text"
|
|
},
|
|
{
|
|
"name": "Enable GeoIP",
|
|
"description": "GeoIP is used to identify the country of the client's ip address",
|
|
"env_variable": "GEOIP",
|
|
"default_value": "1",
|
|
"user_viewable": true,
|
|
"user_editable": true,
|
|
"rules": "required|boolean",
|
|
"field_type": "text"
|
|
}
|
|
]
|
|
} |