Skip to content

Commit

Permalink
Update GeyserMC download URLs (#48)
Browse files Browse the repository at this point in the history
* Fix Geyser downloads 301 Redirect

Add -L flag to cURL downloads from Geyser CI to follow 301 redirect.

* Update to use GeyserMC download API and GeyserConnect extension

* Fix geyser port variable validation
  • Loading branch information
PseudoResonance authored Jul 20, 2023
1 parent fbda9f5 commit 6ce14e2
Show file tree
Hide file tree
Showing 7 changed files with 180 additions and 124 deletions.
42 changes: 18 additions & 24 deletions egg-geyser-connect.json
Original file line number Diff line number Diff line change
@@ -1,49 +1,42 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2021-02-11T12:13:45-05:00",
"exported_at": "2023-07-20T12:54:33-07:00",
"name": "GeyserConnect",
"author": "[email protected]",
"description": "GeyserConnect is an easy way for Bedrock Edition clients to connect to any Java Edition servers without having to run anything.",
"features": null,
"images": [
"quay.io\/geysermc\/pterodactyl-stuff:docker-geyserconnect"
],
"docker_images": {
"quay.io\/geysermc\/pterodactyl-stuff:docker-geyser": "quay.io\/geysermc\/pterodactyl-stuff:docker-geyser"
},
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
"config": {
"files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"address\": \"0.0.0.0\",\r\n \"port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \"Server started on\",\r\n \"userInteraction\": []\r\n}",
"files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"bedrock.address\": \"0.0.0.0\",\r\n \"bedrock.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
"startup": "{\r\n \"done\": \")! Run \/geyser help for help!\",\r\n \"userInteraction\": []\r\n}",
"logs": "{}",
"stop": "^C"
"stop": "geyser shutdown"
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# GeyserConnect Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\ncd \/mnt\/server\r\ncurl -s -L https:\/\/ci.opencollab.dev\/job\/GeyserMC\/job\/GeyserConnect\/job\/${UPDATE_BRANCH}\/lastSuccessfulBuild\/api\/xml?xpath=\/\/lastBuiltRevision\/SHA1 | sed 's\/.*>\\(.*\\)<.*\/\\1\/' > \".currenthash\"\r\ncurl -o ${SERVER_JARFILE} -L https:\/\/ci.opencollab.dev\/job\/GeyserMC\/job\/GeyserConnect\/job\/${UPDATE_BRANCH}\/lastSuccessfulBuild\/artifact\/target\/GeyserConnect.jar\r\ncurl -o config.yml https:\/\/raw.githubusercontent.com\/GeyserMC\/GeyserConnect\/master\/src\/main\/resources\/config.yml",
"container": "alpine:3.4",
"script": "#!\/bin\/ash\r\n# GeyserConnect Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\ncd \/mnt\/server\r\nGEYSER_HASH=`curl -L https:\/\/download.geysermc.org\/v2\/projects\/geyser\/versions\/latest\/builds\/latest | jq -r .downloads.standalone.sha256`\r\ncurl -o ${SERVER_JARFILE} -L https:\/\/download.geysermc.org\/v2\/projects\/geyser\/versions\/latest\/builds\/latest\/downloads\/standalone\r\necho \"${GEYSER_HASH} ${SERVER_JARFILE}\" | sha256sum -c\r\nRESULT=$?\r\nif [[ $RESULT -eq 0 ]]; then\r\necho \"Geyser SHA256 match\"\r\nelse\r\necho \"SHA256 does not match! Aborting...\"\r\nrm ${SERVER_JARFILE}\r\nexit 1\r\nfi\r\ncurl -o config.yml https:\/\/raw.githubusercontent.com\/GeyserMC\/Geyser\/master\/core\/src\/main\/resources\/config.yml\r\nmkdir extensions\r\necho \"Downloading latest GeyserConnect\"\r\ncurl -o geyserconnect.zip -L https:\/\/nightly.link\/GeyserMC\/GeyserConnect\/workflows\/build\/${UPDATE_BRANCH}\/GeyserConnect.zip\r\nunzip -d extensions geyserconnect.zip\r\nrm geyserconnect.zip",
"container": "ghcr.io\/pterodactyl\/installers:alpine",
"entrypoint": "ash"
}
},
"variables": [
{
"name": "Geyser JAR",
"description": "This is the GeyserConnect jar.",
"description": "Server Jarfile, by default this is set to 'geyser.jar'.\r\nSet it to otherwise if you wish to have a different jarfile name.",
"env_variable": "SERVER_JARFILE",
"default_value": "GeyserConnect.jar",
"user_viewable": true,
"user_editable": true,
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
},
{
"name": "Auto update",
"description": "",
"env_variable": "AUTO_UPDATE",
"default_value": "1",
"default_value": "geyser.jar",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean"
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
"field_type": "text"
},
{
"name": "Branch",
Expand All @@ -52,7 +45,8 @@
"default_value": "master",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
"rules": "required|string",
"field_type": "text"
}
]
}
}
46 changes: 17 additions & 29 deletions egg-geyser-m-c.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1"
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2020-08-27T15:08:05+01:00",
"exported_at": "2023-07-20T12:38:14-07:00",
"name": "GeyserMC",
"author": "[email protected]",
"description": "Geyser is a bridge between Minecraft: Bedrock Edition and Minecraft: Java Edition, closing the gap from those wanting to play true cross-platform.",
"image": "quay.io\/geysermc\/pterodactyl-stuff:docker-geyser",
"features": null,
"docker_images": {
"quay.io\/geysermc\/pterodactyl-stuff:docker-geyser": "quay.io\/geysermc\/pterodactyl-stuff:docker-geyser"
},
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -jar {{SERVER_JARFILE}}",
"config": {
"files": "{\r\n \"config.yml\": {\r\n \"parser\": \"yaml\",\r\n \"find\": {\r\n \"bedrock.address\": \"0.0.0.0\",\r\n \"bedrock.port\": \"{{server.build.default.port}}\"\r\n }\r\n }\r\n}",
Expand All @@ -17,38 +22,21 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/ash\r\n# GeyserMC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napk update\r\napk add curl\r\ncd \/mnt\/server\r\ncurl -s -L https:\/\/ci.opencollab.dev\/job\/GeyserMC\/job\/Geyser\/job\/${UPDATE_BRANCH}\/lastSuccessfulBuild\/api\/xml?xpath=\/\/lastBuiltRevision\/SHA1 | sed 's\/.*>\\(.*\\)<.*\/\\1\/' > \".currenthash\"\r\ncurl -o ${SERVER_JARFILE} -L https:\/\/ci.opencollab.dev\/job\/GeyserMC\/job\/Geyser\/job\/${UPDATE_BRANCH}\/lastSuccessfulBuild\/artifact\/bootstrap\/standalone\/target\/Geyser.jar\r\ncurl -o config.yml https:\/\/raw.githubusercontent.com\/GeyserMC\/Geyser\/master\/core\/src\/main\/resources\/config.yml",
"container": "alpine:3.4",
"script": "#!\/bin\/ash\r\n# GeyserMC Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\ncd \/mnt\/server\r\nGEYSER_HASH=`curl -L https:\/\/download.geysermc.org\/v2\/projects\/geyser\/versions\/latest\/builds\/latest | jq -r .downloads.standalone.sha256`\r\ncurl -o ${SERVER_JARFILE} -L https:\/\/download.geysermc.org\/v2\/projects\/geyser\/versions\/latest\/builds\/latest\/downloads\/standalone\r\necho \"${GEYSER_HASH} ${SERVER_JARFILE}\" | sha256sum -c\r\nRESULT=$?\r\nif [[ $RESULT -eq 0 ]]; then\r\necho \"Geyser SHA256 match\"\r\nelse\r\necho \"SHA256 does not match! Aborting...\"\r\nrm ${SERVER_JARFILE}\r\nexit 1\r\nfi\r\ncurl -o config.yml https:\/\/raw.githubusercontent.com\/GeyserMC\/Geyser\/master\/core\/src\/main\/resources\/config.yml",
"container": "ghcr.io\/pterodactyl\/installers:alpine",
"entrypoint": "ash"
}
},
"variables": [
{
"name": "Geyser JAR",
"description": "This is the GeyserMC jar.",
"description": "Server Jarfile, by default this is set to 'geyser.jar'.\r\nSet it to otherwise if you wish to have a different jarfile name.",
"env_variable": "SERVER_JARFILE",
"default_value": "Geyser.jar",
"user_viewable": 1,
"user_editable": 1,
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/"
},
{
"name": "Auto update",
"description": "",
"env_variable": "AUTO_UPDATE",
"default_value": "1",
"user_viewable": 1,
"user_editable": 1,
"rules": "required|boolean"
},
{
"name": "Branch",
"description": "The branch to fetch when downloading Geyser",
"env_variable": "UPDATE_BRANCH",
"default_value": "master",
"user_viewable": 1,
"user_editable": 1,
"rules": "required|string"
"default_value": "geyser.jar",
"user_viewable": true,
"user_editable": true,
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
"field_type": "text"
}
]
}
}
40 changes: 22 additions & 18 deletions egg-paper--floodgate.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2021-06-08T22:06:11+02:00",
"name": "Paper-Floodgate",
"exported_at": "2023-07-20T12:33:21-07:00",
"name": "Paper + Floodgate",
"author": "[email protected]",
"description": "High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.",
"features": [
"eula"
],
"images": [
"ghcr.io\/pterodactyl\/yolks:java_17",
"ghcr.io\/pterodactyl\/yolks:java_16",
"quay.io\/pterodactyl\/yolks:java_11",
"quay.io\/pterodactyl\/yolks:java_8"
],
"docker_images": {
"ghcr.io\/pterodactyl\/yolks:java_17": "ghcr.io\/pterodactyl\/yolks:java_17",
"ghcr.io\/pterodactyl\/yolks:java_16": "ghcr.io\/pterodactyl\/yolks:java_16",
"quay.io\/pterodactyl\/yolks:java_11": "quay.io\/pterodactyl\/yolks:java_11",
"quay.io\/pterodactyl\/yolks:java_8": "quay.io\/pterodactyl\/yolks:java_8"
},
"file_denylist": [],
"startup": "java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}",
"config": {
Expand All @@ -27,9 +27,9 @@
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Paper Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=paper\r\n\r\napt update\r\napt install -y curl jq\r\n\r\nif [ -n \"${DL_PATH}\" ]; then\r\n\techo -e \"Using supplied download url: ${DL_PATH}\"\r\n\tDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\n\tVER_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`\r\n\tLATEST_VERSION=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\n\r\n\tif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} version\"\r\n\t\tMINECRAFT_VERSION=${LATEST_VERSION}\r\n\tfi\r\n\t\r\n\tBUILD_EXISTS=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true`\r\n\tLATEST_BUILD=`curl -s https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\n\t\r\n\tif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\n\t\techo -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\n\telse\r\n\t\techo -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\n\t\tBUILD_NUMBER=${LATEST_BUILD}\r\n\tfi\r\n\t\r\n\tJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\n\t\r\n\techo \"Version being downloaded\"\r\n\techo -e \"MC Version: ${MINECRAFT_VERSION}\"\r\n\techo -e \"Build: ${BUILD_NUMBER}\"\r\n\techo -e \"JAR Name of Build: ${JAR_NAME}\"\r\n\tDOWNLOAD_URL=https:\/\/papermc.io\/api\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\n\r\ncd \/mnt\/server\r\n\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\n\r\nif [ -f ${SERVER_JARFILE} ]; then\r\n\tmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\n\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\n\r\nif [ ! -f server.properties ]; then\r\n echo -e \"Downloading MC server.properties\"\r\n curl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/java\/server.properties\r\nfi\r\necho -e \"Downloading Floodgate\"\r\nmkdir plugins\r\ncurl -o plugins\/floodgate-spigot.jar\t -L https:\/\/ci.opencollab.dev\/job\/GeyserMC\/job\/Floodgate\/job\/master\/lastSuccessfulBuild\/artifact\/spigot\/target\/floodgate-spigot.jar",
"container": "debian:buster-slim",
"entrypoint": "bash"
"script": "#!\/bin\/ash\r\n# Paper+Floodgate Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\nPROJECT=paper\r\nif [ -n \"${DL_PATH}\" ]; then\r\necho -e \"Using supplied download url: ${DL_PATH}\"\r\nDOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's\/{{\/${\/g' -e 's\/}}\/}\/g')`\r\nelse\r\nVER_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`\r\nLATEST_VERSION=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`\r\nif [ \"${VER_EXISTS}\" == \"true\" ]; then\r\necho -e \"Version is valid. Using version ${MINECRAFT_VERSION}\"\r\nelse\r\necho -e \"Using the latest ${PROJECT} version\"\r\nMINECRAFT_VERSION=${LATEST_VERSION}\r\nfi\r\nBUILD_EXISTS=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`\r\nLATEST_BUILD=`curl -s https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`\r\nif [ \"${BUILD_EXISTS}\" == \"true\" ]; then\r\necho -e \"Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}\"\r\nelse\r\necho -e \"Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}\"\r\nBUILD_NUMBER=${LATEST_BUILD}\r\nfi\r\nJAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar\r\necho \"Version being downloaded\"\r\necho -e \"MC Version: ${MINECRAFT_VERSION}\"\r\necho -e \"Build: ${BUILD_NUMBER}\"\r\necho -e \"JAR Name of Build: ${JAR_NAME}\"\r\nDOWNLOAD_URL=https:\/\/api.papermc.io\/v2\/projects\/${PROJECT}\/versions\/${MINECRAFT_VERSION}\/builds\/${BUILD_NUMBER}\/downloads\/${JAR_NAME}\r\nfi\r\ncd \/mnt\/server\r\necho -e \"Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\"\r\nif [ -f ${SERVER_JARFILE} ]; then\r\nmv ${SERVER_JARFILE} ${SERVER_JARFILE}.old\r\nfi\r\ncurl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}\r\nif [ ! -f server.properties ]; then\r\necho -e \"Downloading MC server.properties\"\r\ncurl -o server.properties https:\/\/raw.githubusercontent.com\/parkervcp\/eggs\/master\/minecraft\/java\/server.properties\r\nfi\r\nmkdir plugins\r\necho -e \"Downloading Floodgate\"\r\nFLOODGATE_HASH=`curl -L https:\/\/download.geysermc.org\/v2\/projects\/floodgate\/versions\/latest\/builds\/latest | jq -r .downloads.spigot.sha256`\r\ncurl -o plugins\/floodgate-spigot.jar -L https:\/\/download.geysermc.org\/v2\/projects\/floodgate\/versions\/latest\/builds\/latest\/downloads\/spigot\r\necho \"${FLOODGATE_HASH} plugins\/floodgate-spigot.jar\" | sha256sum -c\r\nRESULT=$?\r\nif [[ $RESULT -eq 0 ]]; then\r\necho \"Floodgate SHA256 match\"\r\nelse\r\necho \"SHA256 does not match! Aborting...\"\r\nrm plugins\/floodgate-spigot.jar\r\nexit 1\r\nfi",
"container": "ghcr.io\/pterodactyl\/installers:alpine",
"entrypoint": "ash"
}
},
"variables": [
Expand All @@ -40,16 +40,18 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": false,
"rules": "nullable|string|max:20"
"rules": "nullable|string|max:20",
"field_type": "text"
},
{
"name": "Server Jar File",
"description": "The name of the server jarfile to run the server with.",
"description": "Server Jarfile, by default this is set to 'server.jar'.\r\nSet it to otherwise if you wish to have a different jarfile name.",
"env_variable": "SERVER_JARFILE",
"default_value": "server.jar",
"user_viewable": true,
"user_editable": true,
"rules": "required|string|max:20"
"rules": "required|regex:\/^([\\w\\d._-]+)(\\.jar)$\/",
"field_type": "text"
},
{
"name": "Download Path",
Expand All @@ -58,7 +60,8 @@
"default_value": "",
"user_viewable": false,
"user_editable": false,
"rules": "nullable|string"
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Build Number",
Expand All @@ -67,7 +70,8 @@
"default_value": "latest",
"user_viewable": true,
"user_editable": false,
"rules": "required|string|max:20"
"rules": "required|string|max:20",
"field_type": "text"
}
]
}
}
Loading

0 comments on commit 6ce14e2

Please sign in to comment.