hungerlib 2.4.1.dev0__tar.gz → 2.5.1.dev0__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-2.4.1.dev0/src/hungerlib.egg-info → hungerlib-2.5.1.dev0}/PKG-INFO +1 -1
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/pyproject.toml +1 -1
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/addons/__init__.py +8 -2
- hungerlib-2.5.1.dev0/src/hungerlib/addons/converters.py +13 -0
- hungerlib-2.5.1.dev0/src/hungerlib/addons/snapshot.py +34 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/servers/generic.py +36 -2
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0/src/hungerlib.egg-info}/PKG-INFO +1 -1
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib.egg-info/SOURCES.txt +2 -1
- hungerlib-2.4.1.dev0/src/hungerlib/addons/lag.py +0 -25
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/LICENSE +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/README.md +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/setup.cfg +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/__init__.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/addons/colormap.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/addons/countdown.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/addons/mchelpers.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/addons/scheduler.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/addons/validation.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/api/__init__.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/api/backups.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/api/command.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/api/databases.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/api/filemanager.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/api/schedule.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/api/startup.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/logger.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/panel.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/servers/__init__.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib/servers/minecraft.py +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib.egg-info/dependency_links.txt +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib.egg-info/requires.txt +0 -0
- {hungerlib-2.4.1.dev0 → hungerlib-2.5.1.dev0}/src/hungerlib.egg-info/top_level.txt +0 -0
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from .colormap import ColorMap, MC_COLOR_MAP, ASCII_COLOR_MAP
|
|
2
2
|
from .countdown import runCountdownEvents, waitForOnline, waitForOffline
|
|
3
|
-
from .
|
|
3
|
+
from .snapshot import Snapshot
|
|
4
4
|
from .scheduler import snapSchedule, secsUntil, minsUntil
|
|
5
5
|
from .validation import validateAll
|
|
6
|
+
from .converters import *
|
|
6
7
|
|
|
7
8
|
__all__ = [
|
|
8
9
|
'ColorMap',
|
|
@@ -11,9 +12,14 @@ __all__ = [
|
|
|
11
12
|
'runCountdownEvents',
|
|
12
13
|
'waitForOnline',
|
|
13
14
|
'waitForOffline',
|
|
14
|
-
'
|
|
15
|
+
'Snapshot',
|
|
15
16
|
'snapSchedule',
|
|
16
17
|
'secsUntil',
|
|
17
18
|
'minsUntil',
|
|
18
19
|
'validateAll',
|
|
20
|
+
'converters',
|
|
21
|
+
'mb_gb',
|
|
22
|
+
'gb_mb',
|
|
23
|
+
'mib_gib',
|
|
24
|
+
'gib_mib',
|
|
19
25
|
]
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Names are in "from-to" format. Example: mb_gb() means megabyte to gigabyte.
|
|
2
|
+
|
|
3
|
+
def mb_gb(mb, floor=False):
|
|
4
|
+
return mb / 1000 if not floor else mb // 1000
|
|
5
|
+
|
|
6
|
+
def gb_mb(gb):
|
|
7
|
+
return gb * 1000
|
|
8
|
+
|
|
9
|
+
def mib_gib(mib, floor=False):
|
|
10
|
+
return mib / 1024 if not floor else mib // 1024
|
|
11
|
+
|
|
12
|
+
def gib_mib(gib):
|
|
13
|
+
return gib * 1024
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
class Snapshot:
|
|
2
|
+
def __init__(self, Server, gib=False):
|
|
3
|
+
self.Server = Server
|
|
4
|
+
g = 1
|
|
5
|
+
if gib:
|
|
6
|
+
g = 1024
|
|
7
|
+
|
|
8
|
+
# generic
|
|
9
|
+
self.ram = self.Server.getRAM() / g
|
|
10
|
+
self.cpu = self.Server.getCPU()
|
|
11
|
+
self.network_in = self.Server.getNetworkIn() / g
|
|
12
|
+
self.network_out = self.Server.getNetworkOut() / g
|
|
13
|
+
self.uptime = self.Server.getUptime()
|
|
14
|
+
self.uptime_formatted = self.Server.getUptime(True)
|
|
15
|
+
|
|
16
|
+
# server-specific
|
|
17
|
+
self.tps = self.Server.getTPS() if hasattr(self.Server, 'getTPS') else None
|
|
18
|
+
self.players = self.Server.getPlayers() if hasattr(self.Server, 'getPlayers') else None
|
|
19
|
+
|
|
20
|
+
def __str__(self):
|
|
21
|
+
base = (
|
|
22
|
+
f'Server: {self.Server.name}\n'
|
|
23
|
+
f'Uptime: {self.uptime_formatted}\n'
|
|
24
|
+
f'RAM: {self.ram}\n'
|
|
25
|
+
f'CPU: {self.cpu}\n'
|
|
26
|
+
f'Network (in): {self.network_in}\n'
|
|
27
|
+
f'Network (out): {self.network_out}'
|
|
28
|
+
)
|
|
29
|
+
if self.tps is not None:
|
|
30
|
+
base += f'\nTPS: {self.tps}'
|
|
31
|
+
if self.players is not None:
|
|
32
|
+
base += f'\nOnline players: {self.players}'
|
|
33
|
+
|
|
34
|
+
return base
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# Universal server class
|
|
2
2
|
from hungerlib import Panel
|
|
3
|
+
from hungerlib.addons import MC_COLOR_MAP
|
|
3
4
|
|
|
4
5
|
|
|
5
6
|
class GenericServer:
|
|
@@ -7,7 +8,8 @@ class GenericServer:
|
|
|
7
8
|
self,
|
|
8
9
|
name,
|
|
9
10
|
panel,
|
|
10
|
-
server_id
|
|
11
|
+
server_id,
|
|
12
|
+
color_map=MC_COLOR_MAP
|
|
11
13
|
):
|
|
12
14
|
'''Generic server class'''
|
|
13
15
|
|
|
@@ -18,7 +20,7 @@ class GenericServer:
|
|
|
18
20
|
|
|
19
21
|
# internal helpers
|
|
20
22
|
def _translate_mc_colors(self, msg):
|
|
21
|
-
for tag, code in self.
|
|
23
|
+
for tag, code in self.color_map.items():
|
|
22
24
|
msg = msg.replace(tag, code)
|
|
23
25
|
return msg
|
|
24
26
|
|
|
@@ -170,6 +172,38 @@ class GenericServer:
|
|
|
170
172
|
return self.updateSchedule(schedule_id, payload)
|
|
171
173
|
|
|
172
174
|
|
|
175
|
+
def getSchedule(self, schedule_id: int):
|
|
176
|
+
"""
|
|
177
|
+
Returns a dict containing all schedule attributes for the given schedule_id.
|
|
178
|
+
Works with raw ScheduleAPI responses.
|
|
179
|
+
"""
|
|
180
|
+
resp = self.panel.schedules.list(self.server_id)
|
|
181
|
+
data = resp.json()
|
|
182
|
+
for item in data.get("data", []):
|
|
183
|
+
attr = item.get("attributes", {})
|
|
184
|
+
if attr.get("id") == schedule_id:
|
|
185
|
+
return {
|
|
186
|
+
"id": attr.get("id"),
|
|
187
|
+
"name": attr.get("name"),
|
|
188
|
+
"description": attr.get("description"),
|
|
189
|
+
"is_active": attr.get("is_active"),
|
|
190
|
+
"cron": attr.get("cron"),
|
|
191
|
+
"minute": attr.get("cron", {}).get("minute"),
|
|
192
|
+
"hour": attr.get("cron", {}).get("hour"),
|
|
193
|
+
"day_of_month": attr.get("cron", {}).get("day_of_month"),
|
|
194
|
+
"month": attr.get("cron", {}).get("month"),
|
|
195
|
+
"day_of_week": attr.get("cron", {}).get("day_of_week"),
|
|
196
|
+
"next_run_at": attr.get("next_run_at"),
|
|
197
|
+
"last_run_at": attr.get("last_run_at"),
|
|
198
|
+
"only_when_online": attr.get("only_when_online"),
|
|
199
|
+
"is_processing": attr.get("is_processing"),
|
|
200
|
+
"created_at": attr.get("created_at"),
|
|
201
|
+
"updated_at": attr.get("updated_at"),
|
|
202
|
+
"tasks": attr.get("relationships", {}).get("tasks", {}).get("data", [])
|
|
203
|
+
}
|
|
204
|
+
return None
|
|
205
|
+
|
|
206
|
+
|
|
173
207
|
|
|
174
208
|
# health snapshot
|
|
175
209
|
def snapshot(self):
|
|
@@ -11,10 +11,11 @@ src/hungerlib.egg-info/requires.txt
|
|
|
11
11
|
src/hungerlib.egg-info/top_level.txt
|
|
12
12
|
src/hungerlib/addons/__init__.py
|
|
13
13
|
src/hungerlib/addons/colormap.py
|
|
14
|
+
src/hungerlib/addons/converters.py
|
|
14
15
|
src/hungerlib/addons/countdown.py
|
|
15
|
-
src/hungerlib/addons/lag.py
|
|
16
16
|
src/hungerlib/addons/mchelpers.py
|
|
17
17
|
src/hungerlib/addons/scheduler.py
|
|
18
|
+
src/hungerlib/addons/snapshot.py
|
|
18
19
|
src/hungerlib/addons/validation.py
|
|
19
20
|
src/hungerlib/api/__init__.py
|
|
20
21
|
src/hungerlib/api/backups.py
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
def checkLag(server, ram, cpu, nwi, nwo, tps):
|
|
2
|
-
"""
|
|
3
|
-
Pure lag check.
|
|
4
|
-
Returns a tuple: (lag_detected: bool, reasons: list[str])
|
|
5
|
-
"""
|
|
6
|
-
reasons = []
|
|
7
|
-
|
|
8
|
-
currentRAM = server.getRAM(gb=True)
|
|
9
|
-
currentCPU = server.getCPU()
|
|
10
|
-
currentNWI = server.getNetworkIn(gb=True)
|
|
11
|
-
currentNWO = server.getNetworkOut(gb=True)
|
|
12
|
-
currentTPS = server.getTPS() if hasattr(server, "getTPS") else None
|
|
13
|
-
|
|
14
|
-
if currentRAM is not None and currentRAM >= ram:
|
|
15
|
-
reasons.append(f"RAM: {currentRAM}GB")
|
|
16
|
-
if currentCPU is not None and currentCPU >= cpu:
|
|
17
|
-
reasons.append(f"CPU: {currentCPU}%")
|
|
18
|
-
if currentNWI is not None and currentNWI >= nwi:
|
|
19
|
-
reasons.append(f"Network Inbound: {currentNWI}GB")
|
|
20
|
-
if currentNWO is not None and currentNWO >= nwo:
|
|
21
|
-
reasons.append(f"Network Outbound: {currentNWO}GB")
|
|
22
|
-
if currentTPS is not None and currentTPS <= tps:
|
|
23
|
-
reasons.append(f"TPS: {currentTPS}")
|
|
24
|
-
|
|
25
|
-
return (len(reasons) > 0, reasons)
|
|
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
|