-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathegg-python.json
More file actions
164 lines (164 loc) · 9.26 KB
/
egg-python.json
File metadata and controls
164 lines (164 loc) · 9.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v2",
"update_url": null
},
"exported_at": "2025-02-19T17:29:55+01:00",
"name": "python generic Tunnel",
"author": "zari0@zarti.cfd",
"description": "A Generic Python Egg With Cloudflare Tunnel for Pterodactyl",
"features": null,
"docker_images": {
"Python 3.14": "ghcr.io\/zarti0\/python:3.14",
"Python 3.13": "ghcr.io\/zarti0\/python:3.13",
"Python 3.12": "ghcr.io\/zarti0\/python:3.12"
},
"file_denylist": [],
"startup": "PIP_TARGET=\"\/home\/container\/.pip-packages\"; PIP_CACHE_DIR=\"\/home\/container\/.pip-cache\"; mkdir -p $PIP_TARGET $PIP_CACHE_DIR; if [ \"${CLOUDFLARED_STATUS}\" = \"1\" ]; then echo \"${CLOUDFLARED_TOKEN}\" > \"cloudflared_token.txt\"; echo \"${CLOUDFLARE_TUNNEL_DOMAIN}\" > \"tunnel_domain.txt\"; ${STARTUP_COMMAND_CLOUDFLARED}; fi; if [[ -d .git ]] && [[ \"${AUTO_UPDATE}\" == \"1\" ]]; then git pull; fi; if [[ ! -z \"${PY_PACKAGES}\" ]]; then pip install --target=$PIP_TARGET --cache-dir=$PIP_CACHE_DIR ${PY_PACKAGES}; fi; if [[ -f \"\/home\/container\/${REQUIREMENTS_FILE}\" ]]; then pip install --target=$PIP_TARGET --cache-dir=$PIP_CACHE_DIR --upgrade pip -r \/home\/container\/${REQUIREMENTS_FILE}; fi; PYTHONPATH=$PIP_TARGET python \/home\/container\/${PY_FILE}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"change this part\"\r\n}",
"logs": "{}",
"stop": "^C^C^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\n# Python App Installation Script\r\n#\r\n# Server Files: \/mnt\/server\r\napt update\r\napt install -y git curl jq file unzip make gcc g++ libtool wget\r\n\r\n\r\nmkdir -p \/mnt\/server\r\ncd \/mnt\/server\r\n\r\nmkdir -p \/mnt\/server\/app\r\nmkdir -p \/mnt\/server\/logs\r\nmkdir -p \/mnt\/server\/tmp\r\n\r\ncd \/mnt\/server\/app \r\ngit clone https:\/\/github.com\/zarti0\/python-pterodactyl-tunnel.git\r\ncd python-pterodactyl-tunnel\r\nmv app.py cloudflare.sh requirements.txt static templates \/mnt\/server\r\nchmod +x \/mnt\/server\/cloudflare.sh\r\n\r\ncd \/mnt\/server\r\n\r\nrm -Rf \/mnt\/server\/app\r\n\r\n\r\n\r\nif [ \"${USER_UPLOAD}\" == \"true\" ] || [ \"${USER_UPLOAD}\" == \"1\" ]; then\r\n echo -e \"assuming user knows what they are doing have a good day.\"\r\n exit 0\r\nfi\r\n\r\n## add git ending if it's not on the address\r\nif [[ ${GIT_ADDRESS} != *.git ]]; then\r\n GIT_ADDRESS=${GIT_ADDRESS}.git\r\nfi\r\n\r\nif [ -z \"${USERNAME}\" ] && [ -z \"${ACCESS_TOKEN}\" ]; then\r\n echo -e \"using anon api call\"\r\nelse\r\n GIT_ADDRESS=\"https:\/\/${USERNAME}:${ACCESS_TOKEN}@$(echo -e ${GIT_ADDRESS} | cut -d\/ -f3-)\"\r\nfi\r\n\r\n## pull git python repo\r\nif [ \"$(ls -A \/mnt\/server)\" ]; then\r\n echo -e \"\/mnt\/server directory is not empty.\"\r\n if [ -d .git ]; then\r\n echo -e \".git directory exists\"\r\n if [ -f .git\/config ]; then\r\n echo -e \"loading info from git config\"\r\n ORIGIN=$(git config --get remote.origin.url)\r\n else\r\n echo -e \"files found with no git config\"\r\n echo -e \"closing out without touching things to not break anything\"\r\n exit 10\r\n fi\r\n fi\r\n\r\n if [ \"${ORIGIN}\" == \"${GIT_ADDRESS}\" ]; then\r\n echo \"pulling latest from github\"\r\n git pull\r\n fi\r\nelse\r\n echo -e \"\/mnt\/server is empty.\\ncloning files into repo\"\r\n if [ -z ${BRANCH} ]; then\r\n echo -e \"cloning default branch\"\r\n git clone ${GIT_ADDRESS} .\r\n else\r\n echo -e \"cloning ${BRANCH}'\"\r\n git clone --single-branch --branch ${BRANCH} ${GIT_ADDRESS} .\r\n fi\r\n\r\nfi\r\n\r\nexport HOME=\/mnt\/server\r\n\r\necho \"Installing python requirements into folder\"\r\nif [[ ! -z ${PY_PACKAGES} ]]; then\r\n pip install -U --prefix .local ${PY_PACKAGES}\r\nfi\r\n\r\nif [ -f \/mnt\/server\/requirements.txt ]; then\r\n pip install -U --prefix .local -r ${REQUIREMENTS_FILE}\r\nfi\r\n\r\necho -e \"install complete\"\r\nexit 0",
"container": "python:3.14-rc-slim-bullseye",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Git Repo Address",
"description": "Git repo to clone\r\n\r\nI.E. https:\/\/github.com\/parkervcp\/repo_name",
"env_variable": "GIT_ADDRESS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Branch",
"description": "What branch to pull from github.\r\n\r\nDefault is blank to pull the repo default branch",
"env_variable": "BRANCH",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "User Uploaded Files",
"description": "Skip all the install stuff if you are letting a user upload files.\r\n\r\n0 = false (default)\r\n1 = true",
"env_variable": "USER_UPLOAD",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Auto Update",
"description": "Pull the latest files on startup when using a GitHub repo.",
"env_variable": "AUTO_UPDATE",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "App py file",
"description": "The file that starts the App.",
"env_variable": "PY_FILE",
"default_value": "app.py",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Additional Python packages",
"description": "Install additional python packages.\r\n\r\nUse spaces to separate",
"env_variable": "PY_PACKAGES",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Username",
"description": "Username to auth with git.",
"env_variable": "USERNAME",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Git Access Token",
"description": "Password to use with git.\r\n\r\nIt's best practice to use a Personal Access Token.\r\nhttps:\/\/github.com\/settings\/tokens\r\nhttps:\/\/gitlab.com\/-\/profile\/personal_access_tokens",
"env_variable": "ACCESS_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string",
"field_type": "text"
},
{
"name": "Requirements file",
"description": "if there are other requirements files to choose from.",
"env_variable": "REQUIREMENTS_FILE",
"default_value": "requirements.txt",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "Cloudflare Tunnel",
"description": "Activate or deactivate cloudflared - https:\/\/developers.cloudflare.com\/cloudflare-one\/connections\/connect-networks\/",
"env_variable": "CLOUDFLARED_STATUS",
"default_value": "1",
"user_viewable": true,
"user_editable": true,
"rules": "required|boolean",
"field_type": "text"
},
{
"name": "Cloudflare Tunnel token",
"description": "The authentication token required to connect to Cloudflare's Tunnel service typically starts with ey....",
"env_variable": "CLOUDFLARED_TOKEN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string|regex:\/^[A-Za-z0-9_-]+$\/",
"field_type": "text"
},
{
"name": "Startup command Cloudflared",
"description": "The startup file for Cloudflared.",
"env_variable": "STARTUP_COMMAND_CLOUDFLARED",
"default_value": ".\/cloudflare.sh",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
},
{
"name": "CLOUDFLARE TUNNEL DOMAIN",
"description": "Domain for adding",
"env_variable": "CLOUDFLARE_TUNNEL_DOMAIN",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "required|string",
"field_type": "text"
}
]
}