dodatkowe poprawki i funkcje
This commit is contained in:
50
app.py
50
app.py
@@ -85,25 +85,6 @@ def runCmd(cmd: str):
|
|||||||
except subprocess.TimeoutExpired:
|
except subprocess.TimeoutExpired:
|
||||||
return 124, "", "Timeout"
|
return 124, "", "Timeout"
|
||||||
|
|
||||||
def reloadService(name: str):
|
|
||||||
"""Próbuje reload; gdy nie powiedzie się standardowe 'systemctl reload', robi restart."""
|
|
||||||
cmd = serviceCommand(name)
|
|
||||||
rc, out, err = runCmd(cmd)
|
|
||||||
if rc == 0:
|
|
||||||
return {"service": name, "action": "reload", "rc": rc, "stdout": out, "stderr": err}
|
|
||||||
|
|
||||||
if cmd.startswith("systemctl reload"):
|
|
||||||
rc2, out2, err2 = runCmd(f"systemctl restart {name}")
|
|
||||||
return {
|
|
||||||
"service": name,
|
|
||||||
"action": "restart" if rc2 == 0 else "reload->restart_failed",
|
|
||||||
"rc": rc2,
|
|
||||||
"stdout": out2,
|
|
||||||
"stderr": err2 or err,
|
|
||||||
}
|
|
||||||
|
|
||||||
return {"service": name, "action": "custom_failed", "rc": rc, "stdout": out, "stderr": err}
|
|
||||||
|
|
||||||
def reloadServices():
|
def reloadServices():
|
||||||
"""Przeładowuje wszystkie serwisy z konfiguracji i zwraca listę wyników."""
|
"""Przeładowuje wszystkie serwisy z konfiguracji i zwraca listę wyników."""
|
||||||
svcs = listServices()
|
svcs = listServices()
|
||||||
@@ -126,6 +107,37 @@ def maskToken(token: str | None) -> str:
|
|||||||
return "*" * len(token)
|
return "*" * len(token)
|
||||||
return token[:4] + "*" * (len(token) - 8) + token[-4:]
|
return token[:4] + "*" * (len(token) - 8) + token[-4:]
|
||||||
|
|
||||||
|
def commandCandidates(name: str):
|
||||||
|
# 1) konfiguracja ma priorytet
|
||||||
|
sect = f"service:{name}"
|
||||||
|
if cfg.has_section(sect) and cfg.has_option(sect, "command"):
|
||||||
|
return [cfg.get(sect, "command")]
|
||||||
|
|
||||||
|
# 2) auto-kandydaci zależnie od dostępności
|
||||||
|
cmds = []
|
||||||
|
if shutil.which("systemctl"):
|
||||||
|
cmds += [f"systemctl reload {name}", f"systemctl restart {name}"]
|
||||||
|
if shutil.which("service"):
|
||||||
|
cmds += [f"service {name} reload", f"service {name} restart"]
|
||||||
|
if shutil.which("rc-service"):
|
||||||
|
cmds += [f"rc-service {name} reload", f"rc-service {name} restart"]
|
||||||
|
# 3) ostatnia deska ratunku: HUP
|
||||||
|
if shutil.which("pkill"):
|
||||||
|
cmds += [f"pkill -HUP {name}"]
|
||||||
|
return cmds or [f"pkill -HUP {name}"]
|
||||||
|
|
||||||
|
def reloadService(name: str):
|
||||||
|
for cmd in commandCandidates(name):
|
||||||
|
rc, out, err = runCmd(cmd)
|
||||||
|
# 127 = command not found; spróbuj następnego kandydata
|
||||||
|
if rc == 127 or "not found" in (err or "").lower():
|
||||||
|
continue
|
||||||
|
if rc == 0:
|
||||||
|
return {"service": name, "action": cmd, "rc": rc, "stdout": out, "stderr": err}
|
||||||
|
# jeśli komenda istnieje, ale zwróciła błąd – próbuj dalej
|
||||||
|
last = {"service": name, "action": cmd, "rc": rc, "stdout": out, "stderr": err}
|
||||||
|
# jeśli nic się nie udało:
|
||||||
|
return last if 'last' in locals() else {"service": name, "action": "no-cmd", "rc": 127, "stdout": "", "stderr": "no candidate"}
|
||||||
|
|
||||||
#
|
#
|
||||||
# WYCZYTUJEMY TOKEN
|
# WYCZYTUJEMY TOKEN
|
||||||
|
@@ -7,4 +7,4 @@ services = dnsmasq
|
|||||||
reload_timeout = 5
|
reload_timeout = 5
|
||||||
|
|
||||||
[service:dnsmasq]
|
[service:dnsmasq]
|
||||||
command = systemctl reload dnsmasq
|
command = pkill -HUP dnsmasq
|
Reference in New Issue
Block a user