From 87aef1c8ff0b72884a25ed5d7d165b76948eba47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Zmatl=C3=ADk?= <130238389+OndrejZmatlik@users.noreply.github.com> Date: Thu, 27 Aug 2026 09:47:23 +0200 Subject: [PATCH] Add read-only support and UI indicators for MikroTik dynamic peers (#733) * Add dynamic Mikrotik peer support & UI/i18n Introduce handling for dynamically created Mikrotik peers: add Dynamic/IsDynamic fields to domain, peer and interface models and API models; include "dynamic" in Mikrotik queries; skip updates/deletes for dynamic peers; sync dynamic flag when restoring state. Prevent modifying/deleting dynamic peers in manager. UI: disable selection/edit for dynamic peers and show badge. Implement Mikrotik interface hook execution. Add i18n keys/translations for dynamic-peer messages across languages. * Fix Mikrotik hooks implementation and UI visibility --- .../src/components/InterfaceEditModal.vue | 10 +- frontend/src/lang/translations/de.json | 6 +- frontend/src/lang/translations/en.json | 6 +- frontend/src/lang/translations/es.json | 6 +- frontend/src/lang/translations/fr.json | 6 +- frontend/src/lang/translations/ja.json | 6 +- frontend/src/lang/translations/ko.json | 993 +++++++++--------- frontend/src/lang/translations/pt.json | 6 +- frontend/src/lang/translations/ru.json | 6 +- frontend/src/lang/translations/uk.json | 6 +- frontend/src/lang/translations/vi.json | 6 +- frontend/src/lang/translations/zh.json | 915 ++++++++-------- frontend/src/views/InterfaceView.vue | 20 +- internal/adapters/wgcontroller/mikrotik.go | 73 +- .../app/api/v0/handlers/endpoint_config.go | 1 + internal/app/api/v0/model/models.go | 1 + internal/app/api/v0/model/models_interface.go | 3 + internal/app/api/v0/model/models_peer.go | 3 + internal/app/wireguard/controller_manager.go | 3 + .../app/wireguard/wireguard_interfaces.go | 14 +- internal/app/wireguard/wireguard_peers.go | 12 +- internal/config/backend.go | 1 + internal/domain/controller.go | 1 + internal/domain/interface.go | 2 + internal/domain/peer.go | 5 + 25 files changed, 1121 insertions(+), 990 deletions(-) diff --git a/frontend/src/components/InterfaceEditModal.vue b/frontend/src/components/InterfaceEditModal.vue index a078e84..eeb98d5 100644 --- a/frontend/src/components/InterfaceEditModal.vue +++ b/frontend/src/components/InterfaceEditModal.vue @@ -72,6 +72,14 @@ const isBackendValid = computed(() => { return valid }) +const isHookSupported = computed(() => { + if (!formData.value.Backend) return false; + let availableBackends = settings.Setting('AvailableBackends') || []; + let backend = availableBackends.find(b => b.Id === formData.value.Backend); + if (!backend) return false; + return backend.Type === 'local' || backend.Type === 'mikrotik'; +}) + // functions watch(() => props.visible, async (newValue, oldValue) => { @@ -499,7 +507,7 @@ async function del() { -