chore(release): v0.7.13

Corrige Add-DnsClientNrptRule qui échouait systématiquement : ce
cmdlet n'a pas de paramètre -Name (contrairement à Get-/Set-/
Remove-), résolu comme abréviation ambiguë entre -Namespace/
-NameServers/-NameEncoding. Identification de la règle via -Comment
à la place, comme le nettoyage générique existant. Bénéficie au
chemin élevé classique et au service wgsecure-helper.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-04 19:13:50 +02:00
co-authored by Claude Sonnet 5
parent 7beb6deb7a
commit 8ec7dc6aaf
6 changed files with 36 additions and 11 deletions
+1 -1
View File
@@ -1,3 +1,3 @@
__version__ = "0.7.12"
__version__ = "0.7.13"
APP_NAME = "WGSecure"
APP_SHORT = "WGS"
+24 -6
View File
@@ -191,11 +191,22 @@ def _nrpt_add_split_dns_ps(server: str, domains: list[str], rule_name: str) -> s
# même. Les deux formes sont nécessaires pour couvrir toute la zone —
# comme `~domaine` sous systemd-resolved (Linux) couvre déjà les deux.
namespace_list = ", ".join(f"'{d}', '.{d}'" for d in clean)
# Add-DnsClientNrptRule n'a PAS de paramètre -Name (contrairement à
# Get-/Set-/Remove-) : la règle créée reçoit un identifiant GUID auto-
# généré, jamais le nôtre. "-Name" était donc résolu par PowerShell
# comme une abréviation ambiguë entre -Namespace/-NameServers/
# -NameEncoding (« le nom du paramètre "name" est ambigu ») — la pose de
# la règle échouait donc systématiquement, masqué jusqu'ici par
# l'ancienne incapacité à remonter le texte d'une erreur élevée. On
# identifie/retrouve donc la règle via -Comment (qui, lui, existe bien
# sur Add-), comme le fait déjà le nettoyage générique plus bas
# (_NRPT_CLEAN_PS, filtré sur .Comment).
return (
f"$rule = Get-DnsClientNrptRule -Name '{rule_name}' -ErrorAction SilentlyContinue; "
f"if ($rule) {{ Remove-DnsClientNrptRule -Name '{rule_name}' -Force -ErrorAction SilentlyContinue }}; "
f"Add-DnsClientNrptRule -Name '{rule_name}' -Namespace @({namespace_list}) "
f"-NameServer '{server}' -Comment 'WGSecure Split-DNS'; "
f"Get-DnsClientNrptRule -ErrorAction SilentlyContinue | "
f"Where-Object {{ $_.Comment -eq '{rule_name}' }} | "
f"ForEach-Object {{ Remove-DnsClientNrptRule -Name $_.Name -Force -ErrorAction SilentlyContinue }}; "
f"Add-DnsClientNrptRule -Namespace @({namespace_list}) "
f"-NameServers '{server}' -Comment '{rule_name}'; "
# Sans ce contrôle, une erreur réelle d'Add-DnsClientNrptRule restait
# invisible : le script se terminait quand même avec le code 0, et
# `setup_split_dns` rapportait un succès alors que la règle n'avait
@@ -205,9 +216,16 @@ def _nrpt_add_split_dns_ps(server: str, domains: list[str], rule_name: str) -> s
def _nrpt_remove_split_dns_ps(rule_name: str) -> str:
"""PowerShell script to remove a NRPT rule for split-DNS."""
"""PowerShell script to remove a NRPT rule for split-DNS.
La règle n'a pas de -Name pris en charge à la création (cf.
`_nrpt_add_split_dns_ps`) : on la retrouve par son -Comment plutôt que
par un -Name qui ne correspondrait jamais à rien.
"""
return (
f"Remove-DnsClientNrptRule -Name '{rule_name}' -Force -ErrorAction SilentlyContinue"
f"Get-DnsClientNrptRule -ErrorAction SilentlyContinue | "
f"Where-Object {{ $_.Comment -eq '{rule_name}' }} | "
f"ForEach-Object {{ Remove-DnsClientNrptRule -Name $_.Name -Force -ErrorAction SilentlyContinue }}"
)