serverwatcher 3.8.4__tar.gz → 3.9.1__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.
- {serverwatcher-3.8.4/src/serverwatcher.egg-info → serverwatcher-3.9.1}/PKG-INFO +1 -1
- {serverwatcher-3.8.4 → serverwatcher-3.9.1}/pyproject.toml +1 -1
- {serverwatcher-3.8.4 → serverwatcher-3.9.1}/src/serverwatcher/watcher.py +10 -22
- {serverwatcher-3.8.4 → serverwatcher-3.9.1/src/serverwatcher.egg-info}/PKG-INFO +1 -1
- serverwatcher-3.9.1/src/serverwatcher.egg-info/SOURCES.txt +14 -0
- serverwatcher-3.8.4/src/serverwatcher/defaultconfigs/global.yaml +0 -16
- serverwatcher-3.8.4/src/serverwatcher/defaultconfigs/messages.yaml +0 -51
- serverwatcher-3.8.4/src/serverwatcher/defaultconfigs/watcher.yaml +0 -39
- serverwatcher-3.8.4/src/serverwatcher/helpers/__init__.py +0 -5
- serverwatcher-3.8.4/src/serverwatcher/helpers/loadconfigs.py +0 -15
- serverwatcher-3.8.4/src/serverwatcher.egg-info/SOURCES.txt +0 -19
- {serverwatcher-3.8.4 → serverwatcher-3.9.1}/LICENSE +0 -0
- {serverwatcher-3.8.4 → serverwatcher-3.9.1}/README.md +0 -0
- {serverwatcher-3.8.4 → serverwatcher-3.9.1}/setup.cfg +0 -0
- {serverwatcher-3.8.4 → serverwatcher-3.9.1}/src/serverwatcher/__init__.py +0 -0
- {serverwatcher-3.8.4/src/serverwatcher/config → serverwatcher-3.9.1/src/serverwatcher/configmap/configclasses}/__init__.py +0 -0
- {serverwatcher-3.8.4/src/serverwatcher/config → serverwatcher-3.9.1/src/serverwatcher/configmap/configclasses}/global_config.py +0 -0
- {serverwatcher-3.8.4/src/serverwatcher/config → serverwatcher-3.9.1/src/serverwatcher/configmap/configclasses}/messages.py +0 -0
- {serverwatcher-3.8.4/src/serverwatcher/config → serverwatcher-3.9.1/src/serverwatcher/configmap/configclasses}/watcher.py +0 -0
- {serverwatcher-3.8.4 → serverwatcher-3.9.1}/src/serverwatcher.egg-info/dependency_links.txt +0 -0
- {serverwatcher-3.8.4 → serverwatcher-3.9.1}/src/serverwatcher.egg-info/requires.txt +0 -0
- {serverwatcher-3.8.4 → serverwatcher-3.9.1}/src/serverwatcher.egg-info/top_level.txt +0 -0
|
@@ -11,36 +11,24 @@ from hungerlib.addons import (
|
|
|
11
11
|
waitForOnline,
|
|
12
12
|
validateAll,
|
|
13
13
|
runCountdownEvents,
|
|
14
|
-
load_yaml,
|
|
15
|
-
map_to_dataclass,
|
|
16
14
|
)
|
|
17
|
-
|
|
18
|
-
from serverwatcher.config import GlobalConfig, MessagesConfig, WatcherConfig
|
|
19
|
-
from serverwatcher.helpers import load_or_default
|
|
15
|
+
from hungerlib.addons.configmap import load_or_default
|
|
20
16
|
|
|
21
17
|
# Set directory
|
|
22
18
|
BASE_DIR = os.getcwd()
|
|
23
|
-
PACKAGE_DIR = os.path.dirname(__file__)
|
|
19
|
+
PACKAGE_DIR = os.path.dirname(__file__)
|
|
24
20
|
|
|
25
21
|
|
|
26
|
-
# Main watcher
|
|
27
22
|
class ServerWatcher:
|
|
28
23
|
def __init__(self):
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
self.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
MessagesConfig
|
|
38
|
-
)
|
|
39
|
-
self.cfg: WatcherConfig = load_or_default(
|
|
40
|
-
"config/watcher.yaml",
|
|
41
|
-
"defaultconfigs/watcher.yaml",
|
|
42
|
-
WatcherConfig
|
|
43
|
-
)
|
|
24
|
+
# Load all configs in /config using configmap
|
|
25
|
+
cfgmap = load_or_default("config", skip_files=[])
|
|
26
|
+
|
|
27
|
+
self.global_cfg = cfgmap["global.yaml"]
|
|
28
|
+
self.messages = cfgmap["messages.yaml"]
|
|
29
|
+
self.cfg = cfgmap["watcher.yaml"]
|
|
30
|
+
|
|
31
|
+
|
|
44
32
|
self.panel = Panel(
|
|
45
33
|
name=self.global_cfg.panel_name,
|
|
46
34
|
url=self.global_cfg.panel_url,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
src/serverwatcher/__init__.py
|
|
5
|
+
src/serverwatcher/watcher.py
|
|
6
|
+
src/serverwatcher.egg-info/PKG-INFO
|
|
7
|
+
src/serverwatcher.egg-info/SOURCES.txt
|
|
8
|
+
src/serverwatcher.egg-info/dependency_links.txt
|
|
9
|
+
src/serverwatcher.egg-info/requires.txt
|
|
10
|
+
src/serverwatcher.egg-info/top_level.txt
|
|
11
|
+
src/serverwatcher/configmap/configclasses/__init__.py
|
|
12
|
+
src/serverwatcher/configmap/configclasses/global_config.py
|
|
13
|
+
src/serverwatcher/configmap/configclasses/messages.py
|
|
14
|
+
src/serverwatcher/configmap/configclasses/watcher.py
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
panel:
|
|
2
|
-
panel_name: My Panel
|
|
3
|
-
panel_url: https://example.com
|
|
4
|
-
panel_api_key: CHANGE_ME
|
|
5
|
-
|
|
6
|
-
origin:
|
|
7
|
-
origin_server_id: CHANGE_ME
|
|
8
|
-
|
|
9
|
-
server:
|
|
10
|
-
server_name: My SMP
|
|
11
|
-
server_id: CHANGE_ME
|
|
12
|
-
server_domain: mc.example.com
|
|
13
|
-
server_port: 25565
|
|
14
|
-
rcon_port: 25575
|
|
15
|
-
rcon_password: password
|
|
16
|
-
tps_command: ticks
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
prefix: "<aqua>[Server Watcher]"
|
|
2
|
-
|
|
3
|
-
broadcast_restart_at: "{prefix} The server will restart at {time} CDT."
|
|
4
|
-
|
|
5
|
-
broadcast_minute:
|
|
6
|
-
minute_120: "{prefix} Restart in 2 hours!"
|
|
7
|
-
minute_60: "{prefix} Restart in 1 hour!"
|
|
8
|
-
minute_45: "{prefix} Restart in 45 minutes!"
|
|
9
|
-
minute_30: "{prefix} Restart in 30 minutes!"
|
|
10
|
-
minute_15: "{prefix} Restart in 15 minutes!"
|
|
11
|
-
minute_5: "{prefix} Restart in 5 minutes!"
|
|
12
|
-
minute_1: "{prefix} Restart in 1 minute!"
|
|
13
|
-
|
|
14
|
-
broadcast_second:
|
|
15
|
-
second_10: "{prefix} Restart in 10 seconds!"
|
|
16
|
-
second_9: "{prefix} Restart in 9 seconds!"
|
|
17
|
-
second_8: "{prefix} Restart in 8 seconds!"
|
|
18
|
-
second_7: "{prefix} Restart in 7 seconds!"
|
|
19
|
-
second_6: "{prefix} Restart in 6 seconds!"
|
|
20
|
-
second_5: "{prefix} Restart in 5 seconds!"
|
|
21
|
-
second_4: "{prefix} Restart in 4 seconds!"
|
|
22
|
-
second_3: "{prefix} Restart in 3 seconds!"
|
|
23
|
-
second_2: "{prefix} Restart in 2 seconds!"
|
|
24
|
-
second_1: "{prefix} Restart in 1 second!"
|
|
25
|
-
|
|
26
|
-
logging:
|
|
27
|
-
log_start: "ServerWatcher is running!"
|
|
28
|
-
log_status_check: "Checking server status..."
|
|
29
|
-
log_validation_fail: "Validation FAILED."
|
|
30
|
-
log_validation_ok: "All validation checks succeeded."
|
|
31
|
-
log_shutdown: "Shutting down ServerWatcher."
|
|
32
|
-
log_immediate_restart: "Restarting immediately."
|
|
33
|
-
log_no_restart: "The server does not need to restart."
|
|
34
|
-
log_scheduled: "Restart needed, but anti-restart factors outweigh it."
|
|
35
|
-
log_gap_low: "Gap {gap}. Scheduling restart in 2 hours."
|
|
36
|
-
log_gap_high: "Gap {gap}. Scheduling restart in 1 hour."
|
|
37
|
-
|
|
38
|
-
reasons:
|
|
39
|
-
reason_restart_soon: "The server is set to restart soon"
|
|
40
|
-
reason_ram: "RAM usage ({ram}) is higher than {threshold} GB"
|
|
41
|
-
reason_cpu: "CPU usage ({cpu}) is higher than {threshold}%"
|
|
42
|
-
reason_uptime: "Uptime {uptime} exceeds {threshold}h"
|
|
43
|
-
reason_tps: "TPS {tps} is lower than {threshold}"
|
|
44
|
-
reason_low_uptime: "Uptime {uptime} is shorter than 30m"
|
|
45
|
-
reason_players: "There {verb} {count} {plural} online"
|
|
46
|
-
|
|
47
|
-
restarts:
|
|
48
|
-
restart_action_sent: "Restart action sent. Waiting..."
|
|
49
|
-
server_back_online: "Server is back online!"
|
|
50
|
-
server_back_online_broadcast: "{prefix} <green>Restart successful!"
|
|
51
|
-
server_failed_restart: "Server failed to restart!"
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
logging:
|
|
2
|
-
logger_name_template: "Server Watcher"
|
|
3
|
-
log_path: "/home/container/logs/"
|
|
4
|
-
timezone: "America/Chicago"
|
|
5
|
-
|
|
6
|
-
terminal_settings:
|
|
7
|
-
console_backspaces: 8
|
|
8
|
-
clear_terminal: True
|
|
9
|
-
|
|
10
|
-
schedules:
|
|
11
|
-
restart_soon_schedule_id: 0 # replace this with real schedule id
|
|
12
|
-
origin_disable_schedule_id: 0 # replace this with real schedule id
|
|
13
|
-
|
|
14
|
-
thresolds:
|
|
15
|
-
ram_threshold: 6
|
|
16
|
-
cpu_threshold: 150
|
|
17
|
-
uptime_hours_threshold: 12
|
|
18
|
-
tps_threshold: 19.5
|
|
19
|
-
|
|
20
|
-
weights:
|
|
21
|
-
weight_restart_soon: 3
|
|
22
|
-
weight_ram: 1
|
|
23
|
-
weight_cpu: 1
|
|
24
|
-
weight_uptime: 1
|
|
25
|
-
weight_tps: 1
|
|
26
|
-
weight_low_uptime: 5
|
|
27
|
-
weight_per_player: 1
|
|
28
|
-
|
|
29
|
-
gaps:
|
|
30
|
-
low_gap_minutes: 120
|
|
31
|
-
high_gap_minutes: 60
|
|
32
|
-
|
|
33
|
-
restart_intervals:
|
|
34
|
-
restart_wait_seconds: 45
|
|
35
|
-
restart_online_timeout: 120
|
|
36
|
-
restart_online_interval: 2
|
|
37
|
-
|
|
38
|
-
watcher_intervals:
|
|
39
|
-
watch_interval: 60
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
def load_or_default(path: str, default_path: str, schema):
|
|
4
|
-
|
|
5
|
-
abs_path = os.path.join(BASE_DIR, path)
|
|
6
|
-
abs_default = os.path.join(PACKAGE_DIR, default_path)
|
|
7
|
-
|
|
8
|
-
if not os.path.exists(abs_path):
|
|
9
|
-
os.makedirs(os.path.dirname(abs_path), exist_ok=True)
|
|
10
|
-
with open(abs_default, "r") as src, open(abs_path, "w") as dst:
|
|
11
|
-
dst.write(src.read())
|
|
12
|
-
|
|
13
|
-
raw = load_yaml(abs_path)
|
|
14
|
-
raw = flatten_nested(raw)
|
|
15
|
-
return map_to_dataclass(raw, schema)
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
LICENSE
|
|
2
|
-
README.md
|
|
3
|
-
pyproject.toml
|
|
4
|
-
src/serverwatcher/__init__.py
|
|
5
|
-
src/serverwatcher/watcher.py
|
|
6
|
-
src/serverwatcher.egg-info/PKG-INFO
|
|
7
|
-
src/serverwatcher.egg-info/SOURCES.txt
|
|
8
|
-
src/serverwatcher.egg-info/dependency_links.txt
|
|
9
|
-
src/serverwatcher.egg-info/requires.txt
|
|
10
|
-
src/serverwatcher.egg-info/top_level.txt
|
|
11
|
-
src/serverwatcher/config/__init__.py
|
|
12
|
-
src/serverwatcher/config/global_config.py
|
|
13
|
-
src/serverwatcher/config/messages.py
|
|
14
|
-
src/serverwatcher/config/watcher.py
|
|
15
|
-
src/serverwatcher/defaultconfigs/global.yaml
|
|
16
|
-
src/serverwatcher/defaultconfigs/messages.yaml
|
|
17
|
-
src/serverwatcher/defaultconfigs/watcher.yaml
|
|
18
|
-
src/serverwatcher/helpers/__init__.py
|
|
19
|
-
src/serverwatcher/helpers/loadconfigs.py
|
|
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
|