Add hba-watcher.ps1

This commit is contained in:
2026-06-08 13:43:43 +02:00
parent 96341e089f
commit 28ade76f64
+36
View File
@@ -0,0 +1,36 @@
# Haelt zwei Replikations-Regeln fuer lxreplica in pg_hba.conf.
# Idempotent: entfernt immer alle lxreplica-Zeilen und setzt sie neu
# verhindert Duplikate auch bei gleichzeitigen Schreibvorgaengen.
$pgCtl = "C:\Program Files\Lexware\PostgreSql\17\Bin\pg_ctl.exe"
$dataDir = "C:\ProgramData\Lexware\LexwarePG\Data\current"
$hbaFile = "$dataDir\pg_hba.conf"
$ruleAll = "hostssl all lxreplica 192.168.115.113/32 scram-sha-256"
$ruleRep = "hostssl replication lxreplica 192.168.115.113/32 scram-sha-256"
while ($true) {
try {
$lines = [System.IO.File]::ReadAllLines($hbaFile)
$existing = $lines | Where-Object { $_ -match "lxreplica" }
$alreadyCorrect = ($existing.Count -eq 2) -and
($existing[0] -eq $ruleAll) -and
($existing[1] -eq $ruleRep)
if (-not $alreadyCorrect) {
$base = $lines | Where-Object { $_ -notmatch "lxreplica" }
$newLines = [System.Collections.Generic.List[string]]::new()
foreach ($line in $base) {
if ($line -match "192\.168\.115\.0/24") {
$newLines.Add($ruleAll)
$newLines.Add($ruleRep)
}
$newLines.Add($line)
}
[System.IO.File]::WriteAllLines($hbaFile, $newLines, [System.Text.Encoding]::ASCII)
& $pgCtl reload -D $dataDir 2>&1 | Out-Null
}
} catch {}
Start-Sleep -Seconds 10
}