serverwatcher 4.5.1__tar.gz → 4.6__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 (20) hide show
  1. {serverwatcher-4.5.1/src/serverwatcher.egg-info → serverwatcher-4.6}/PKG-INFO +1 -1
  2. {serverwatcher-4.5.1 → serverwatcher-4.6}/pyproject.toml +1 -1
  3. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/configclasses/watcher.py +2 -2
  4. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/defaultconfigs/watcher.yaml +2 -2
  5. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/validator.py +22 -16
  6. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/watcher.py +3 -3
  7. {serverwatcher-4.5.1 → serverwatcher-4.6/src/serverwatcher.egg-info}/PKG-INFO +1 -1
  8. {serverwatcher-4.5.1 → serverwatcher-4.6}/LICENSE +0 -0
  9. {serverwatcher-4.5.1 → serverwatcher-4.6}/README.md +0 -0
  10. {serverwatcher-4.5.1 → serverwatcher-4.6}/setup.cfg +0 -0
  11. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/__init__.py +0 -0
  12. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/configclasses/__init__.py +0 -0
  13. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/configclasses/global_config.py +0 -0
  14. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/configclasses/messages.py +0 -0
  15. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/defaultconfigs/global.yaml +0 -0
  16. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher/defaultconfigs/messages.yaml +0 -0
  17. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher.egg-info/SOURCES.txt +0 -0
  18. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher.egg-info/dependency_links.txt +0 -0
  19. {serverwatcher-4.5.1 → serverwatcher-4.6}/src/serverwatcher.egg-info/requires.txt +0 -0
  20. {serverwatcher-4.5.1 → serverwatcher-4.6}/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.1
3
+ Version: 4.6
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.1"
10
+ version = "4.6"
11
11
  description = "A HungerLib-powered Minecraft server automation engine."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.10"
@@ -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
@@ -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
@@ -88,32 +88,29 @@ def validate_messages_config(cfg, errors):
88
88
  # Not required for every field, but warn if missing
89
89
  pass
90
90
 
91
- def ensure_no_global_defaults(cfg, errors):
91
+ def ensure_no_global_defaults(cfg, defaults):
92
92
  if cfg.panel_url == "https://example.com":
93
- errors.append('panel_url: must not be left default')
93
+ defaults.append('panel_url')
94
94
 
95
95
  if cfg.panel_api_key == 'CHANGE_ME':
96
- errors.append('panel_api_key: must not be left default')
96
+ defaults.append('panel_api_key')
97
97
 
98
98
  if cfg.origin_server_id == 'CHANGE_ME':
99
- errors.append('origin_server_id: must not be left default')
99
+ defaults.append('origin_server_id')
100
100
 
101
101
  if cfg.server_id == 'CHANGE_ME':
102
- errors.append('server_id: must not be left default')
102
+ defaults.append('server_id')
103
103
 
104
104
  if cfg.server_domain == 'mc.example.com':
105
- errors.append('server_domain: must not be left default')
105
+ defaults.append('server_domain')
106
106
 
107
107
  if cfg.rcon_password == 'password':
108
- errors.append('rcon_password: must not be left default')
108
+ defaults.append('rcon_password')
109
109
 
110
110
 
111
- def ensure_no_watcher_defaults(cfg, errors):
112
- if cfg.restart_soon_schedule_id <= 0:
113
- errors.append(f'restart_soon_schedule_id: must be >= 1 (got {cfg.restart_soon_schedule_id})')
114
-
115
- if cfg.origin_disable_schedule_id <= 0:
116
- errors.append(f'origin_disable_schedule_id: must be >= 1 (got {cfg.origin_disable_schedule_id})')
111
+ def ensure_no_watcher_defaults(cfg, defaults):
112
+ if cfg.schedule_control and cfg.restart_soon_id == 0:
113
+ defaults.append('restart_soon_id')
117
114
 
118
115
 
119
116
  # -----------------------------
@@ -122,6 +119,7 @@ def ensure_no_watcher_defaults(cfg, errors):
122
119
 
123
120
  def validate_all():
124
121
  errors = []
122
+ defaults = []
125
123
 
126
124
  # Load configs
127
125
  global_cfg = loadConfig("config/global.yaml", "/defaultconfigs/global.yaml", GlobalConfig)
@@ -139,15 +137,23 @@ def validate_all():
139
137
  validate_watcher_config(watcher_cfg, errors)
140
138
 
141
139
  # Check for defaults
142
- ensure_no_global_defaults(global_cfg, errors)
143
- ensure_no_watcher_defaults(watcher_cfg, errors)
140
+ ensure_no_global_defaults(global_cfg, defaults)
141
+ ensure_no_watcher_defaults(watcher_cfg, defaults)
144
142
 
145
143
 
146
144
  # Print results
147
- if errors:
145
+ if len(defaults) >= 7:
146
+ print("❌ CONFIG VALIDATION FAILED:\nIt looks like you haven't configured this yet! Please change these defaults:")
147
+ for d in defaults:
148
+ print(" -", d)
149
+ sys.exit(1)
150
+
151
+ if errors or defaults:
148
152
  print("❌ CONFIG VALIDATION FAILED:")
149
153
  for e in errors:
150
154
  print(" -", e)
155
+ for d in defaults:
156
+ print(" -", d, ": must not be left default")
151
157
  sys.exit(1)
152
158
 
153
159
  print("✅ All configs are valid.")
@@ -92,7 +92,8 @@ class ServerWatcher:
92
92
 
93
93
  # restart logic
94
94
  def restart_and_wait(self):
95
- self.origin.disableSchedule(self.cfg.restart_soon_schedule_id)
95
+ if self.cfg.schedule_control:
96
+ self.origin.disableSchedule(self.cfg.restart_soon_id)
96
97
  self.server.restart()
97
98
  self.log.info(self.messages.restart_action_sent)
98
99
  time.sleep(self.cfg.restart_wait_seconds)
@@ -107,7 +108,6 @@ class ServerWatcher:
107
108
  if alive:
108
109
  self.log.info(self.messages.server_back_online)
109
110
  self.server.sendBroadcast(f"{self.messages.server_back_online_broadcast}")
110
- self.origin.enableSchedule(self.cfg.origin_disable_schedule_id)
111
111
  else:
112
112
  self.log.error(self.messages.server_failed_restart)
113
113
 
@@ -166,7 +166,7 @@ class ServerWatcher:
166
166
  no_restart_reasons = []
167
167
 
168
168
  # pro-restart
169
- if self.server.getSchedule(self.cfg.restart_soon_schedule_id)["is_active"]:
169
+ if self.cfg.schedule_control and self.server.getSchedule(self.cfg.restart_soon_id)["is_active"]:
170
170
  restart_reasons.append(self.messages.reason_restart_soon)
171
171
  pro += self.cfg.weight_restart_soon
172
172
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: serverwatcher
3
- Version: 4.5.1
3
+ Version: 4.6
4
4
  Summary: A HungerLib-powered Minecraft server automation engine.
5
5
  Author: iFamished
6
6
  License: GPL-3.0
File without changes
File without changes
File without changes