hungerlib 4.24.dev9__tar.gz → 4.24.dev11__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hungerlib-4.24.dev9/src/hungerlib.egg-info → hungerlib-4.24.dev11}/PKG-INFO +2 -1
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/pyproject.toml +2 -1
- hungerlib-4.24.dev11/src/hungerlib/email/email_templates/restart.html +16 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/email/manager.py +17 -25
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11/src/hungerlib.egg-info}/PKG-INFO +2 -1
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib.egg-info/requires.txt +1 -0
- hungerlib-4.24.dev9/src/hungerlib/email/email_templates/restart.html +0 -21
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/LICENSE +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/README.md +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/setup.cfg +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/__init__.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/__init__.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/backups.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/command.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/databases.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/filemanager.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/schedule.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/startup.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/bridgeclient.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/configloader.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/discord_bot_webhook.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/email/__init__.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/email/client.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/email/message.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/messagerouter.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/panel.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/servers/__init__.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/servers/generic.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/servers/minecraft.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/utils/__init__.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/utils/exceptions.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/utils/time.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/utils/utils.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/validator.py +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib.egg-info/SOURCES.txt +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib.egg-info/dependency_links.txt +0 -0
- {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hungerlib
|
|
3
|
-
Version: 4.24.
|
|
3
|
+
Version: 4.24.dev11
|
|
4
4
|
Summary: Powerful automation library for Pterodactyl.
|
|
5
5
|
Author: iFamished
|
|
6
6
|
License: MIT
|
|
@@ -26,6 +26,7 @@ Requires-Dist: requests
|
|
|
26
26
|
Requires-Dist: mcrcon
|
|
27
27
|
Requires-Dist: PyYaml
|
|
28
28
|
Requires-Dist: mapres
|
|
29
|
+
Requires-Dist: jinja2
|
|
29
30
|
Dynamic: license-file
|
|
30
31
|
|
|
31
32
|
# HungerLib
|
|
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
|
|
|
7
7
|
|
|
8
8
|
[project]
|
|
9
9
|
name = "hungerlib"
|
|
10
|
-
version = "4.24-dev.
|
|
10
|
+
version = "4.24-dev.11"
|
|
11
11
|
description = "Powerful automation library for Pterodactyl."
|
|
12
12
|
readme = "README.md"
|
|
13
13
|
requires-python = ">=3.9"
|
|
@@ -28,6 +28,7 @@ dependencies = [
|
|
|
28
28
|
"mcrcon",
|
|
29
29
|
"PyYaml",
|
|
30
30
|
"mapres",
|
|
31
|
+
"jinja2",
|
|
31
32
|
]
|
|
32
33
|
classifiers = [
|
|
33
34
|
"Programming Language :: Python :: 3",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<div style="background:#fff; border-radius:10px; padding:20px; max-width:600px; margin:0 auto;
|
|
2
|
+
box-shadow:0 6px 18px rgba(0,0,0,0.06); font-family: Arial, sans-serif;">
|
|
3
|
+
|
|
4
|
+
<h1 style="color:#2b6df6; margin-bottom:20px;">
|
|
5
|
+
Server {{ server_name }} Restart Scheduled
|
|
6
|
+
</h1>
|
|
7
|
+
|
|
8
|
+
<p style="color:#333; font-size:16px; line-height:1.6;">
|
|
9
|
+
The server <strong>{{ server_name }}</strong> will restart at <strong>{{ time }}</strong>.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<p style="font-size:13px; color:#666; margin-top:12px;">
|
|
13
|
+
Triggered by: {{ trigger }}
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
</div>
|
|
@@ -1,43 +1,36 @@
|
|
|
1
|
-
from
|
|
1
|
+
from jinja2 import Environment, FileSystemLoader
|
|
2
2
|
import pathlib
|
|
3
|
-
from string import Template
|
|
4
3
|
from cloudflare import Cloudflare
|
|
5
4
|
from .message import Email
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
# Templates live in: src/hungerlib/email/email_templates
|
|
7
|
+
TEMPLATE_DIR = pathlib.Path(__file__).resolve().parent / "email_templates"
|
|
8
8
|
|
|
9
9
|
class EmailManager:
|
|
10
|
-
|
|
10
|
+
"""
|
|
11
11
|
Backend email system.
|
|
12
12
|
Holds API token and account ID.
|
|
13
13
|
Sends emails created by EmailClient.
|
|
14
|
-
|
|
14
|
+
"""
|
|
15
|
+
|
|
15
16
|
def __init__(self, api_token: str, account_id: str):
|
|
16
17
|
self.client = Cloudflare(api_token=api_token)
|
|
17
18
|
self.account_id = account_id
|
|
18
19
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
20
|
+
# Jinja2 environment configured for HTML emails
|
|
21
|
+
self.jinja = Environment(
|
|
22
|
+
loader=FileSystemLoader(str(TEMPLATE_DIR)),
|
|
23
|
+
autoescape=False, # Cloudflare rejects escaped HTML
|
|
24
|
+
trim_blocks=False, # preserve whitespace
|
|
25
|
+
lstrip_blocks=False # preserve indentation
|
|
26
|
+
)
|
|
25
27
|
|
|
26
|
-
# -------------------------
|
|
27
|
-
# Template renderer
|
|
28
|
-
# -------------------------
|
|
29
28
|
def render_template(self, template: str, ctx: dict) -> str:
|
|
30
|
-
|
|
31
|
-
return
|
|
29
|
+
tmpl = self.jinja.get_template(f"{template}.html")
|
|
30
|
+
return tmpl.render(**ctx)
|
|
32
31
|
|
|
33
|
-
# -------------------------
|
|
34
|
-
# Actual sending
|
|
35
|
-
# -------------------------
|
|
36
32
|
def send_email(self, user, email: Email) -> bool:
|
|
37
|
-
|
|
38
|
-
cc_str = ','.join(email.cc) if email.cc else None
|
|
39
|
-
bcc_str = ','.join(email.bcc) if email.bcc else None
|
|
40
|
-
|
|
33
|
+
# Render template if needed
|
|
41
34
|
if email.template and not email.html:
|
|
42
35
|
email.html = self.render_template(email.template, email.template_ctx)
|
|
43
36
|
|
|
@@ -61,5 +54,4 @@ class EmailManager:
|
|
|
61
54
|
payload["bcc"] = ",".join(email.bcc)
|
|
62
55
|
|
|
63
56
|
resp = self.client.email_sending.send(**payload)
|
|
64
|
-
|
|
65
|
-
return bool(getattr(resp, 'delivered', None))
|
|
57
|
+
return bool(getattr(resp, "delivered", None))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hungerlib
|
|
3
|
-
Version: 4.24.
|
|
3
|
+
Version: 4.24.dev11
|
|
4
4
|
Summary: Powerful automation library for Pterodactyl.
|
|
5
5
|
Author: iFamished
|
|
6
6
|
License: MIT
|
|
@@ -26,6 +26,7 @@ Requires-Dist: requests
|
|
|
26
26
|
Requires-Dist: mcrcon
|
|
27
27
|
Requires-Dist: PyYaml
|
|
28
28
|
Requires-Dist: mapres
|
|
29
|
+
Requires-Dist: jinja2
|
|
29
30
|
Dynamic: license-file
|
|
30
31
|
|
|
31
32
|
# HungerLib
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8">
|
|
5
|
-
<title>Server Restart</title>
|
|
6
|
-
<style>
|
|
7
|
-
body { font-family: Arial, sans-serif; background:#f4f6f9; margin:0; padding:20px; }
|
|
8
|
-
.card { background:#fff; border-radius:10px; padding:20px; max-width:600px; margin:0 auto; box-shadow:0 6px 18px rgba(0,0,0,0.06); }
|
|
9
|
-
h1 { color:#2b6df6; }
|
|
10
|
-
p { color:#333; }
|
|
11
|
-
.meta { font-size:13px; color:#666; margin-top:12px; }
|
|
12
|
-
</style>
|
|
13
|
-
</head>
|
|
14
|
-
<body>
|
|
15
|
-
<div class="card">
|
|
16
|
-
<h1>Server $server_name Restart Scheduled</h1>
|
|
17
|
-
<p>The server $server_name will restart at <time>.</p>
|
|
18
|
-
<p class="meta">Triggered by: $trigger</p>
|
|
19
|
-
</div>
|
|
20
|
-
</body>
|
|
21
|
-
</html>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|