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.
Files changed (21) hide show
  1. {serverwatcher-4.5.2/src/serverwatcher.egg-info → serverwatcher-4.7}/PKG-INFO +1 -1
  2. {serverwatcher-4.5.2 → serverwatcher-4.7}/pyproject.toml +1 -1
  3. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/configclasses/messages.py +3 -0
  4. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/configclasses/watcher.py +2 -2
  5. serverwatcher-4.7/src/serverwatcher/defaultconfigs/global.yaml +28 -0
  6. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/defaultconfigs/messages.yaml +4 -1
  7. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/defaultconfigs/watcher.yaml +2 -2
  8. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/validator.py +3 -6
  9. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/watcher.py +16 -10
  10. {serverwatcher-4.5.2 → serverwatcher-4.7/src/serverwatcher.egg-info}/PKG-INFO +1 -1
  11. serverwatcher-4.5.2/src/serverwatcher/defaultconfigs/global.yaml +0 -28
  12. {serverwatcher-4.5.2 → serverwatcher-4.7}/LICENSE +0 -0
  13. {serverwatcher-4.5.2 → serverwatcher-4.7}/README.md +0 -0
  14. {serverwatcher-4.5.2 → serverwatcher-4.7}/setup.cfg +0 -0
  15. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/__init__.py +0 -0
  16. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/configclasses/__init__.py +0 -0
  17. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher/configclasses/global_config.py +0 -0
  18. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher.egg-info/SOURCES.txt +0 -0
  19. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher.egg-info/dependency_links.txt +0 -0
  20. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher.egg-info/requires.txt +0 -0
  21. {serverwatcher-4.5.2 → serverwatcher-4.7}/src/serverwatcher.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 4.5.2
3
+ Version: 4.7
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "serverwatcher"
10
- version = "4.5.2"
10
+ version = "4.7"
11
11
  description = "A HungerLib-powered Minecraft server automation engine."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"
@@ -40,6 +40,9 @@ class MessagesConfig:
40
40
  log_gap_high: str
41
41
 
42
42
  # reasons
43
+ pro_restart_splash: str
44
+ anti_restart_splash: str
45
+
43
46
  reason_restart_soon: str
44
47
  reason_ram: str
45
48
  reason_cpu: str
@@ -2,8 +2,8 @@ from dataclasses import dataclass
2
2
 
3
3
  @dataclass
4
4
  class WatcherConfig:
5
- restart_soon_schedule_id: int
6
- origin_disable_schedule_id: int
5
+ schedule_control: bool
6
+ restart_soon_id: int
7
7
 
8
8
  ram_threshold: int
9
9
  cpu_threshold: int
@@ -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
- restart_soon_schedule_id: 0 # replace this with real schedule id
3
- origin_disable_schedule_id: 0 # replace this with real schedule id
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.restart_soon_schedule_id == 0:
113
- defaults.append('restart_soon_schedule_id')
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) >= 8:
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.origin.disableSchedule(self.cfg.restart_soon_schedule_id)
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.server.sendBroadcast(f"{self.messages.server_back_online_broadcast}")
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.restart_soon_schedule_id)["is_active"]:
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
- for r in restart_reasons:
215
- self.log.warn(f"- {r}")
216
- for r in no_restart_reasons:
217
- self.log.warn(f"- {r}")
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 4.5.2
3
+ Version: 4.7
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
@@ -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