Skip to content

Commit c27d548

Browse files
committed
fix initialization of roles and clients
1 parent 468ca72 commit c27d548

3 files changed

Lines changed: 12 additions & 7 deletions

File tree

data/config/mosquitto/public/default-dynamic-security.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
"anonymousGroup": "anonymous",
7171
"roles": [
7272
{
73-
"rolename": "openwb-version:2",
73+
"rolename": "openwb-version:1",
7474
"textname": "openWB Versionsnummer",
7575
"textdescription": "Diese Rolle ist ein Platzhalter für die openWB Versionsnummer und wird automatisch aktualisiert. Sie hat keine direkten Berechtigungen.",
7676
"acls": []

packages/helpermodules/mosquitto_dynsec/mosquitto_dynsec.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import requests
44
from json import load as json_load, dump as json_dump
55
from pathlib import Path
6+
from time import sleep
67
from typing import Optional, Tuple
78
from datetime import datetime, timedelta
89
from passlib.hash import bcrypt
@@ -121,11 +122,18 @@ def create_user(ip_address: str):
121122

122123

123124
def check_roles_at_start():
125+
log.warning("Warte auf SubData-Initialisierung, bevor ACL-Rollen überprüft werden ...")
126+
sleep(0.5) # we have a race condition at startup!
127+
# check roles and users at startup and add missing ones if user management is active
128+
if SubData.system_data["system"].data["security"]["user_management_active"] is not True:
129+
log.warning("Benutzerverwaltung ist deaktiviert.")
130+
return
131+
log.warning("Benutzerverwaltung ist aktiviert, überprüfe ACL-Rollen und System-Benutzer ...")
124132
display_reload_required = update_acls()
125133
flag_path = Path(_get_base_path() / "ramdisk" / "init_user_management")
126134
if flag_path.is_file():
127135
with open(flag_path, "r") as file:
128-
flag = file.readline() == "1"
136+
flag = file.readline().strip() == "1"
129137
if flag:
130138
for cp in SubData.cp_data.values():
131139
add_acl_role("chargepoint-<id>-access", cp.chargepoint.num)
@@ -153,6 +161,7 @@ def check_roles_at_start():
153161
check_required_users()
154162
# finally trigger a reload of a local display to ensure the new credentials are picked up
155163
if display_reload_required:
164+
log.warning("ACLs wurden aktualisiert, lokale Displays werden neu geladen, um die Änderungen zu übernehmen.")
156165
run_command([
157166
f"{_get_base_path()}/runs/update_local_display.sh", "1"
158167
], process_exception=True)

packages/main.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -350,11 +350,7 @@ def schedule_jobs():
350350
# Warten, damit subdata Zeit hat, alle Topics auf dem Broker zu empfangen.
351351
event_update_config_completed.wait(300)
352352
event_subdata_initialized.wait(300)
353-
# wenn die Benutzerverwaltung aktiviert ist, müssen die Rollen beim Start überprüft werden, damit die ACLs korrekt angewendet werden.
354-
if sub.system_data["system"].data["security"]["user_management_active"]:
355-
Thread(target=check_roles_at_start, args=(), name="check acl roles at start").start()
356-
else:
357-
log.debug("Benutzerverwaltung ist deaktiviert, ACL-Rollen werden nicht überprüft.")
353+
Thread(target=check_roles_at_start, args=(), name="check acl roles at start").start()
358354
Pub().pub("openWB/set/system/boot_done", True)
359355
Path(Path(__file__).resolve().parents[1]/"ramdisk"/"bootdone").touch()
360356
schedule_jobs()

0 commit comments

Comments
 (0)