serverwatcher 4.5.2__tar.gz → 4.7__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-4.5.2/src/serverwatcher.egg-info → serverwatcher-4.7}/PKG-INFO +1 -1
- {serverwatcher-4.5.2 → serverwatcher-4.7}/pyproject.toml +1 -1
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/configclasses/messages.py +3 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/configclasses/watcher.py +2 -2
- serverwatcher-4.7/src/serverwatcher/defaultconfigs/global.yaml +28 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/defaultconfigs/messages.yaml +4 -1
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/defaultconfigs/watcher.yaml +2 -2
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/validator.py +3 -6
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/watcher.py +16 -10
- {serverwatcher-4.5.2 → serverwatcher-4.7/src/serverwatcher.egg-info}/PKG-INFO +1 -1
- serverwatcher-4.5.2/src/serverwatcher/defaultconfigs/global.yaml +0 -28
- {serverwatcher-4.5.2 → serverwatcher-4.7}/LICENSE +0 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/README.md +0 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/setup.cfg +0 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/__init__.py +0 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/configclasses/__init__.py +0 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/configclasses/global_config.py +0 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher.egg-info/SOURCES.txt +0 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher.egg-info/dependency_links.txt +0 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher.egg-info/requires.txt +0 -0
- {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
watch_interval: 300
|
|
2
|
+
|
|
3
|
+
panel:
|
|
4
|
+
panel_name: "My Panel"
|
|
5
|
+
panel_url: "https://example.com"
|
|
6
|
+
panel_api_key: "CHANGE_ME"
|
|
7
|
+
|
|
8
|
+
origin:
|
|
9
|
+
origin_server_id: "CHANGE_ME"
|
|
10
|
+
|
|
11
|
+
server:
|
|
12
|
+
server_name: "My SMP"
|
|
13
|
+
server_id: "CHANGE_ME"
|
|
14
|
+
server_domain: "mc.example.com"
|
|
15
|
+
server_port: 25565
|
|
16
|
+
rcon_port: 25575
|
|
17
|
+
rcon_password: "password"
|
|
18
|
+
tps_command: "ticks"
|
|
19
|
+
|
|
20
|
+
logging:
|
|
21
|
+
do_logging: True
|
|
22
|
+
logger_name: "Server Watcher"
|
|
23
|
+
log_path: "/home/container/logs/"
|
|
24
|
+
timezone: "America/Chicago"
|
|
25
|
+
|
|
26
|
+
terminal:
|
|
27
|
+
console_backspaces: 8
|
|
28
|
+
clear_terminal: True
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
prefix: "<aqua>[Server Watcher]"
|
|
1
|
+
prefix: "<reset><aqua>[Server Watcher]"
|
|
2
2
|
|
|
3
3
|
broadcast_restart_at: "{prefix} The server will restart at {time} CDT."
|
|
4
4
|
|
|
@@ -36,6 +36,9 @@ logging:
|
|
|
36
36
|
log_gap_high: "Gap {gap}. Scheduling restart in 1 hour."
|
|
37
37
|
|
|
38
38
|
reasons:
|
|
39
|
+
pro_restart_splash: "PRO-RESTART REASONS:"
|
|
40
|
+
anti_restart_splash: "ANTI-RESTART REASONS:"
|
|
41
|
+
|
|
39
42
|
reason_restart_soon: "The server is set to restart soon"
|
|
40
43
|
reason_ram: "RAM usage ({ram}) is higher than {threshold} GB"
|
|
41
44
|
reason_cpu: "CPU usage ({cpu}) is higher than {threshold}%"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
schedules:
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
schedule_control: False
|
|
3
|
+
restart_soon_id: 0 # replace this with a real schedule id
|
|
4
4
|
|
|
5
5
|
thresholds:
|
|
6
6
|
ram_threshold: 6
|
|
@@ -109,11 +109,8 @@ def ensure_no_global_defaults(cfg, defaults):
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
def ensure_no_watcher_defaults(cfg, defaults):
|
|
112
|
-
if cfg.
|
|
113
|
-
defaults.append('
|
|
114
|
-
|
|
115
|
-
if cfg.origin_disable_schedule_id == 0:
|
|
116
|
-
defaults.append('origin_disable_schedule_id')
|
|
112
|
+
if cfg.schedule_control and cfg.restart_soon_id == 0:
|
|
113
|
+
defaults.append('restart_soon_id')
|
|
117
114
|
|
|
118
115
|
|
|
119
116
|
# -----------------------------
|
|
@@ -145,7 +142,7 @@ def validate_all():
|
|
|
145
142
|
|
|
146
143
|
|
|
147
144
|
# Print results
|
|
148
|
-
if len(defaults) >=
|
|
145
|
+
if len(defaults) >= 7:
|
|
149
146
|
print("❌ CONFIG VALIDATION FAILED:\nIt looks like you haven't configured this yet! Please change these defaults:")
|
|
150
147
|
for d in defaults:
|
|
151
148
|
print(" -", d)
|
|
@@ -18,7 +18,6 @@ from serverwatcher.configclasses.global_config import GlobalConfig
|
|
|
18
18
|
from serverwatcher.configclasses.messages import MessagesConfig
|
|
19
19
|
from serverwatcher.configclasses.watcher import WatcherConfig
|
|
20
20
|
|
|
21
|
-
|
|
22
21
|
from serverwatcher.validator import validate_all
|
|
23
22
|
|
|
24
23
|
validate_all()
|
|
@@ -92,7 +91,8 @@ class ServerWatcher:
|
|
|
92
91
|
|
|
93
92
|
# restart logic
|
|
94
93
|
def restart_and_wait(self):
|
|
95
|
-
self.
|
|
94
|
+
if self.cfg.schedule_control:
|
|
95
|
+
self.origin.disableSchedule(self.cfg.restart_soon_id)
|
|
96
96
|
self.server.restart()
|
|
97
97
|
self.log.info(self.messages.restart_action_sent)
|
|
98
98
|
time.sleep(self.cfg.restart_wait_seconds)
|
|
@@ -106,8 +106,7 @@ class ServerWatcher:
|
|
|
106
106
|
|
|
107
107
|
if alive:
|
|
108
108
|
self.log.info(self.messages.server_back_online)
|
|
109
|
-
self.
|
|
110
|
-
self.origin.enableSchedule(self.cfg.origin_disable_schedule_id)
|
|
109
|
+
self.log.info(self.fmt(self.messages.server_back_online_broadcast), destination=True, origin=False, logs=False)
|
|
111
110
|
else:
|
|
112
111
|
self.log.error(self.messages.server_failed_restart)
|
|
113
112
|
|
|
@@ -166,7 +165,7 @@ class ServerWatcher:
|
|
|
166
165
|
no_restart_reasons = []
|
|
167
166
|
|
|
168
167
|
# pro-restart
|
|
169
|
-
if self.server.getSchedule(self.cfg.
|
|
168
|
+
if self.cfg.schedule_control and self.server.getSchedule(self.cfg.restart_soon_id)["is_active"]:
|
|
170
169
|
restart_reasons.append(self.messages.reason_restart_soon)
|
|
171
170
|
pro += self.cfg.weight_restart_soon
|
|
172
171
|
|
|
@@ -189,7 +188,7 @@ class ServerWatcher:
|
|
|
189
188
|
)
|
|
190
189
|
pro += self.cfg.weight_uptime
|
|
191
190
|
|
|
192
|
-
if snap.tps <= self.cfg.tps_threshold:
|
|
191
|
+
if (snap.tps if snap.tps is not None else 0) <= self.cfg.tps_threshold:
|
|
193
192
|
restart_reasons.append(
|
|
194
193
|
self.fmt(self.messages.reason_tps, tps=snap.tps, threshold=self.cfg.tps_threshold)
|
|
195
194
|
)
|
|
@@ -211,10 +210,17 @@ class ServerWatcher:
|
|
|
211
210
|
anti += snap.players * self.cfg.weight_per_player
|
|
212
211
|
|
|
213
212
|
# logging
|
|
214
|
-
|
|
215
|
-
self.log.warn(f"
|
|
216
|
-
|
|
217
|
-
|
|
213
|
+
if restart_reasons:
|
|
214
|
+
self.log.warn(f"{self.messages.pro_restart_splash}")
|
|
215
|
+
for r in restart_reasons:
|
|
216
|
+
self.log.warn(f"- {r}")
|
|
217
|
+
self.log.warn("\n")
|
|
218
|
+
|
|
219
|
+
if no_restart_reasons:
|
|
220
|
+
self.log.warn(f"{self.messages.anti_restart_splash}")
|
|
221
|
+
for r in no_restart_reasons:
|
|
222
|
+
self.log.warn(f"- {r}")
|
|
223
|
+
self.log.warn("\n")
|
|
218
224
|
|
|
219
225
|
self.log.warn(f"Pro-restart: {pro}")
|
|
220
226
|
self.log.warn(f"Anti-restart: {anti}")
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
watch_interval: 60
|
|
2
|
-
|
|
3
|
-
panel:
|
|
4
|
-
panel_name: My Panel
|
|
5
|
-
panel_url: https://example.com
|
|
6
|
-
panel_api_key: CHANGE_ME
|
|
7
|
-
|
|
8
|
-
origin:
|
|
9
|
-
origin_server_id: CHANGE_ME
|
|
10
|
-
|
|
11
|
-
server:
|
|
12
|
-
server_name: My SMP
|
|
13
|
-
server_id: CHANGE_ME
|
|
14
|
-
server_domain: mc.example.com
|
|
15
|
-
server_port: 25565
|
|
16
|
-
rcon_port: 25575
|
|
17
|
-
rcon_password: password
|
|
18
|
-
tps_command: ticks
|
|
19
|
-
|
|
20
|
-
logging:
|
|
21
|
-
do_logging: True
|
|
22
|
-
logger_name: "Server Watcher"
|
|
23
|
-
log_path: "/home/container/logs/"
|
|
24
|
-
timezone: "America/Chicago"
|
|
25
|
-
|
|
26
|
-
terminal:
|
|
27
|
-
console_backspaces: 8
|
|
28
|
-
clear_terminal: True
|
|
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
|