treat as_root properly in check_service

This commit is contained in:
2025-05-28 13:38:55 +02:00
parent f91bb1e725
commit 50a2390c3b
2 changed files with 11 additions and 11 deletions

View File

@ -193,7 +193,7 @@ def do_cmd(*command, sudo=True):
def frappy(cfg=None, port=None, requirements='', **kwds): def frappy(cfg=None, port=None, requirements='', **kwds):
if not cfg: if not cfg:
return None return False, None
req = pip_requirements['l_samenv'] req = pip_requirements['l_samenv']
if requirements: if requirements:
req[cfg] = '\n'.join(requirements.split(',')) req[cfg] = '\n'.join(requirements.split(','))
@ -222,7 +222,7 @@ def router(firewall=False, **opts):
elif change_firewall(False, set(), doit): elif change_firewall(False, set(), doit):
show.dirty = True show.dirty = True
if not opts: if not opts:
return None return True, None
try: try:
os.remove(TO_SYSTEM[0] / 'etc/nftables.conf') os.remove(TO_SYSTEM[0] / 'etc/nftables.conf')
with open(TOOLS / 'requirements.txt') as f: with open(TOOLS / 'requirements.txt') as f:
@ -246,7 +246,7 @@ def display_update(cfg):
def display(**opts): def display(**opts):
if not opts: if not opts:
return None return True, None
return True, DISPLAY_SERVICE return True, DISPLAY_SERVICE
@ -275,9 +275,10 @@ def pip():
show.dirty = True show.dirty = True
def boxweb(port=80, page='main'): def boxweb(port=80, page=None):
port = int(port) port = int(port)
return port <= 1024, BOXWEB_SERVICE.format(port=port, page=page) servicecfg = None if page is None else BOXWEB_SERVICE.format(port=port, page=page)
return port <= 1024, servicecfg
SERVICES = dict(router=router, display=display, frappy=frappy, boxweb=boxweb) SERVICES = dict(router=router, display=display, frappy=frappy, boxweb=boxweb)
@ -661,15 +662,14 @@ def handle_config():
for service, service_func in SERVICES.items(): for service, service_func in SERVICES.items():
section = service.upper() section = service.upper()
section_dict = config.get(section, {}) section_dict = config.get(section, {})
ret = service_func(**section_dict) as_root, servicecfg = service_func(**section_dict)
active, enabled = check_service(service) active, enabled = check_service(service, as_root=as_root)
if ret is None: if servicecfg is None:
if active or enabled: if active or enabled:
check_service(service, False, doit) check_service(service, False, doit, as_root=as_root)
show.dirty = True show.dirty = True
continue continue
else: else:
as_root, servicecfg = ret
if not enabled: if not enabled:
to_start[service] = 'enable', as_root to_start[service] = 'enable', as_root
elif not active: elif not active:

View File

@ -226,7 +226,7 @@ def check_service(service, set_on=None, execute=None, as_root=True):
sim: print out command instead of executing sim: print out command instead of executing
""" """
result = unix_cmd(f'systemctl show -p WantedBy -p ActiveState {service}', sudo=False) result = unix_cmd('systemctl show -p WantedBy -p ActiveState', service, sudo=as_root)
enabled = False enabled = False
active = False active = False
for line in result.split('\n'): for line in result.split('\n'):