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.
Files changed (37) hide show
  1. {hungerlib-4.24.dev9/src/hungerlib.egg-info → hungerlib-4.24.dev11}/PKG-INFO +2 -1
  2. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/pyproject.toml +2 -1
  3. hungerlib-4.24.dev11/src/hungerlib/email/email_templates/restart.html +16 -0
  4. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/email/manager.py +17 -25
  5. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11/src/hungerlib.egg-info}/PKG-INFO +2 -1
  6. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib.egg-info/requires.txt +1 -0
  7. hungerlib-4.24.dev9/src/hungerlib/email/email_templates/restart.html +0 -21
  8. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/LICENSE +0 -0
  9. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/README.md +0 -0
  10. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/setup.cfg +0 -0
  11. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/__init__.py +0 -0
  12. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/__init__.py +0 -0
  13. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/backups.py +0 -0
  14. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/command.py +0 -0
  15. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/databases.py +0 -0
  16. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/filemanager.py +0 -0
  17. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/schedule.py +0 -0
  18. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/api/startup.py +0 -0
  19. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/bridgeclient.py +0 -0
  20. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/configloader.py +0 -0
  21. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/discord_bot_webhook.py +0 -0
  22. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/email/__init__.py +0 -0
  23. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/email/client.py +0 -0
  24. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/email/message.py +0 -0
  25. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/messagerouter.py +0 -0
  26. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/panel.py +0 -0
  27. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/servers/__init__.py +0 -0
  28. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/servers/generic.py +0 -0
  29. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/servers/minecraft.py +0 -0
  30. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/utils/__init__.py +0 -0
  31. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/utils/exceptions.py +0 -0
  32. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/utils/time.py +0 -0
  33. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/utils/utils.py +0 -0
  34. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib/validator.py +0 -0
  35. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib.egg-info/SOURCES.txt +0 -0
  36. {hungerlib-4.24.dev9 → hungerlib-4.24.dev11}/src/hungerlib.egg-info/dependency_links.txt +0 -0
  37. {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.dev9
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.9"
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 __future__ import annotations
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
- TEMPLATE_DIR = pathlib.Path(__file__).resolve().parent / 'email_templates'
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
- # Template loader
21
- # -------------------------
22
- def load_template(self, name: str) -> str:
23
- path = TEMPLATE_DIR / f'{name}.html'
24
- return path.read_text(encoding='utf8')
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
- raw = self.load_template(template)
31
- return Template(raw).safe_substitute(ctx)
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
- to_str = ','.join(email.to)
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.dev9
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
@@ -2,3 +2,4 @@ requests
2
2
  mcrcon
3
3
  PyYaml
4
4
  mapres
5
+ jinja2
@@ -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