Add hba-watcher.ps1
This commit is contained in:
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user