eggs/gta/altv/egg-alt--v.json

64 lines
7.6 KiB
JSON

{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1"
},
"exported_at": "2020-02-19T21:48:36-05:00",
"name": "alt:V",
"author": "parker@parkervcp.com",
"description": "alt:V Multiplayer a third-party multiplayer modification for Grand Theft Auto: V",
"image": "quay.io/parkervcp/pterodactyl-images:debian_dotnet",
"startup": "sleep 2 && ./altv-server",
"config": {
"files": "{\r\n \"server.cfg\": {\r\n \"parser\": \"file\",\r\n \"find\": {\r\n \"host:\": \"host: 0.0.0.0\",\r\n \"port:\": \"port: {{server.build.default.port}}\",\r\n \"password:\": \"password: {{server.build.env.PASSWORD}}\",\r\n \"description:\": \"description: {{server.build.env.SERVER_DESC}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Server started\"\r\n}",
"logs": "{}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!/bin/bash\r\n# AltV Install Script\r\n#\r\n# Server Files: /mnt/server\r\n# BUILD=stable ## this should be an egg variable.\r\nBASE_URL=\"https://cdn.altv.mp/\" ## Where the files are stored.\r\n\r\n## install required dependancies.\r\nfunction install_deps () {\r\n apt update\r\n apt install -y libatomic1 zip unzip jq curl wget\r\n echo -e \"deps installed\"\r\n echo -e\r\n}\r\n\r\n## check the has on files and compare to a remote source.\r\n## usage 'check_hash \"file\" \"remote_hash_source\"'\r\nfunction check_hash () {\r\n echo -e \"Checking for file ${1}\"\r\n echo -e \"running: curl -sSL ${2} | jq -r --arg FILENAME \\\"${3}\\\" '.hashList | .[\\$FILENAME]'\"\r\n hash=$(curl -sSL ${2} | jq -r --arg FILENAME ${3} '.hashList | .[$FILENAME]')\r\n echo -e \"hash: $hash\"\r\n\r\n if [ -f ${2} ]; then\r\n\r\n echo -e \"hash is $(sha1sum ${1} | awk '{ print $1 }')\"\r\n echo -e \"current has is ${hash}\"\r\n\r\n if [ \"$(sha1sum ${2} | awk '{ print $1 }')\" == \"${hash}\" ]; then\r\n echo -e \"Hash matched\"\r\n echo -e \"No need to download new file.\"\r\n return 0\r\n else\r\n echo -e \"Hash didn't match\"\r\n echo -e \"Need to download the correct version\"\r\n return 1\r\n fi\r\n else\r\n echo \"No file found\"\r\n return 1\r\n fi\r\n}\r\n\r\n## makes sure a download link is valid.\r\nfunction validate_download () {\r\n DOWNLOAD_URL=${1}\r\n\r\n echo -e \"Download url is ${DOWNLOAD_URL}\"\r\n\r\n if [ ! -z \"${DOWNLOAD_URL}\" ]; then \r\n if curl --output /dev/null --silent --head --fail ${DOWNLOAD_URL}; then\r\n echo -e \"link is valid. setting download link to ${DOWNLOAD_URL}\"\r\n DOWNLOAD_LINK=${DOWNLOAD_URL}\r\n else \r\n echo -e \"link is invalid closing out\"\r\n exit 2\r\n fi\r\n fi\r\n\r\n}\r\n\r\nfunction download_files () {\r\n ## validate download link and get files\r\n validate_download ${1}\r\n echo -e \"running wget ${DOWNLOAD_URL} -O ${2}\"\r\n wget ${DOWNLOAD_URL} -O ${2}\r\n}\r\n\r\n## This is a file array for files to get downloaded.\r\n## They are all comma separated lists.\r\n## remote folder (0), json file with hashes (1), file name in json file (2), file name (3), file folder (4), extra commands (5)\r\nfile_array=( \\\r\n\"server/${BUILD}/x64_linux/\",\"update.json\",\"altv-server\",\"altv-server\",/mnt/server/,execute \\\r\n\"server/${BUILD}/x64_linux/\",\"update.json\",\"data/vehmodels.bin\",\"vehmodels.bin\",/mnt/server/data/ \\\r\n\"server/${BUILD}/x64_linux/\",\"update.json\",\"data/vehmods.bin\",\"vehmods.bin\",/mnt/server/data/ \\\r\n\"others/\",,\"server.cfg\",server.cfg,/mnt/server/ \\\r\n\"node-module/${BUILD}/x64_linux/\",\"update.json\",\"libnode.so.72\",\"libnode.so.72\",/mnt/server/ \\\r\n\"node-module/${BUILD}/x64_linux/\",\"update.json\",\"modules/libnode-module.so\",\"libnode-module.so\",/mnt/server/modules/ \\\r\n\"coreclr-module/${BUILD}/x64_linux/\",,\"AltV.Net.Host.dll\",\"AltV.Net.Host.dll\",/mnt/server/ \\\r\n\"coreclr-module/${BUILD}/x64_linux/\",,\"AltV.Net.Host.runtimeconfig.json\",\"AltV.Net.Host.runtimeconfig.json\",/mnt/server/ \\\r\n\"coreclr-module/stable/x64_linux/\",\"update.json\",\"modules/libcsharp-module.so\",\"libcsharp-module.so\",/mnt/server/modules/ \\\r\n\"samples/\",,\"resources.zip\",\"resources.zip\",/mnt/server/,unzip \\\r\n)\r\n\r\ninstall_deps\r\n\r\n## this goes through each value in the array and then checks the hash\r\nfor EACH in ${file_array[@]}\r\ndo\r\n ## this needs to be here to break apart the arrays.\r\n IFS=',' read -r -a array <<< \"$EACH\"\r\n\r\n if [ ! -z \"${array[1]}\" ]; then\r\n ## check hash on 'folder/file' with 'remote file base url/remote folder/ json file' 'json file name' \r\n if check_hash \"${array[4]}${array[3]}\" \"${BASE_URL}${array[0]}${array[1]}\" \"${array[2]}\"; then\r\n echo -e \"file up to date\"\r\n else\r\n echo -e \"downloading most recent file\"\r\n fi\r\n ## make the directory if it doesn't exist.\r\n if [ ! -d ${array[4]} ]; then\r\n mkdir ${array[4]}\r\n fi\r\n download_files \"${BASE_URL}${array[0]}${array[2]}\" \"${array[4]}${array[3]}\"\r\n else\r\n ## make the directory if it doesn't exist.\r\n if [ ! -d ${array[4]} ]; then\r\n mkdir ${array[4]}\r\n fi\r\n download_files \"${BASE_URL}${array[0]}${array[2]}\" \"${array[4]}${array[3]}\"\r\n fi\r\n\r\n ## run extra commands if needed.\r\n case ${array[5]} in\r\n unzip)\r\n cd ${array[4]}\r\n unzip -o ${array[3]}\r\n rm ${array[3]}\r\n ;;\r\n execute)\r\n chmod +x ${array[4]}${array[3]}\r\n ;;\r\n esac\r\n\r\n# echo -e \"HashFile: ${BASE_URL}${array[0]}${array[1]}\"\r\n# echo -e \"Download URL ${BASE_URL}${array[0]}${array[2]}\"\r\n# echo -e \"Filename ${array[3]}\"\r\n# echo -e \"File Folder ${array[4]}\"\r\n# echo -e \"commands to run ${array[5]}\"\r\n# echo -e\r\ndone\r\n\r\necho -e \"install complete\"",
"container": "debian:buster-slim",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "ld lib path",
"description": "Needed to load modules correctly.",
"env_variable": "LD_LIBRARY_PATH",
"default_value": ".",
"user_viewable": 0,
"user_editable": 0,
"rules": "required|string|max:20"
},
{
"name": "Which alt:V build to download",
"description": "The supported versions are release, rc, dev (default: release).\r\n\r\nIf you don't know what you are doing leave it on stable",
"env_variable": "BUILD",
"default_value": "release",
"user_viewable": 1,
"user_editable": 1,
"rules": "required|string|max:20"
},
{
"name": "Server Password",
"description": "The password to join the server",
"env_variable": "PASSWORD",
"default_value": "ChangeMe",
"user_viewable": 1,
"user_editable": 1,
"rules": "nullable|string|min:6"
},
{
"name": "Server Description",
"description": "Description for the server.",
"env_variable": "SERVER_DESC",
"default_value": "A Pterodactyl Hosted Server",
"user_viewable": 1,
"user_editable": 1,
"rules": "required|string"
}
]
}