From fb6efce219b1eed01540891f65a64a354e9cf6db Mon Sep 17 00:00:00 2001 From: Matteo Di Lorenzi Date: Tue, 3 Mar 2026 10:19:43 +0100 Subject: [PATCH] feat(ns-api): add update-timezone script for post-commit processing --- packages/ns-api/Makefile | 3 +- .../files/post-commit/update-timezone.py | 30 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 packages/ns-api/files/post-commit/update-timezone.py diff --git a/packages/ns-api/Makefile b/packages/ns-api/Makefile index ebb590704..7a0143552 100644 --- a/packages/ns-api/Makefile +++ b/packages/ns-api/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 2022 Nethesis S.r.l. +# Copyright (C) 2026 Nethesis S.r.l. # SPDX-License-Identifier: GPL-2.0-only # @@ -179,6 +179,7 @@ define Package/ns-api/install $(INSTALL_BIN) ./files/pre-commit/update-objects.py $(1)/usr/libexec/ns-api/pre-commit $(INSTALL_BIN) ./files/post-commit/reload-ipsets.py $(1)/usr/libexec/ns-api/post-commit $(INSTALL_BIN) ./files/post-commit/restart-cron.py $(1)/usr/libexec/ns-api/post-commit + $(INSTALL_BIN) ./files/post-commit/update-timezone.py $(1)/usr/libexec/ns-api/post-commit $(INSTALL_BIN) ./files/post-commit/restart-wireguard.py $(1)/usr/libexec/ns-api/post-commit $(INSTALL_BIN) ./files/pre-commit/clean-network.py $(1)/usr/libexec/ns-api/pre-commit $(INSTALL_BIN) ./files/remove-pppoe-keepalive $(1)/usr/share/ns-api diff --git a/packages/ns-api/files/post-commit/update-timezone.py b/packages/ns-api/files/post-commit/update-timezone.py new file mode 100644 index 000000000..8a10aa290 --- /dev/null +++ b/packages/ns-api/files/post-commit/update-timezone.py @@ -0,0 +1,30 @@ +#!/usr/bin/python3 + +# +# Copyright (C) 2026 Nethesis S.r.l. +# SPDX-License-Identifier: GPL-2.0-only +# + +import subprocess + +if 'system' in changes: + system_changes = changes['system'] + timezone_value = None + zonename_value = None + + # extract timezone and zonename values from changes + for change in system_changes: + if len(change) >= 4: + if change[2] == 'timezone': + timezone_value = change[3] + elif change[2] == 'zonename': + zonename_value = change[3] + + # update symlink and TZ variable if changed + if zonename_value: + # replace spaces with underscores like /etc/init.d/system does + zonename_normalized = zonename_value.replace(' ', '_') + subprocess.run(["/bin/ln", "-sf", f"/usr/share/zoneinfo/{zonename_normalized}", "/etc/localtime"], check=True, capture_output=True) + + if timezone_value: + subprocess.run(["/bin/sh", "-c", f"echo '{timezone_value}' > /tmp/TZ"], check=True, capture_output=True) \ No newline at end of file