Compare commits

..

1 Commits

Author SHA1 Message Date
6f85457ed9 Merge pull request 'yamlfix' (#1) from yamlfix into main
Reviewed-on: #1
2025-10-27 18:45:46 +00:00
2 changed files with 30 additions and 58 deletions

View File

@@ -1,4 +1,8 @@
Dokumentation wird bei Gelegenheit nachgereicht.
# template_repository
Wichtig: Link für Lizenz anpassen.

View File

@@ -5,9 +5,9 @@
# Synapse: https://git.techniverse.net/scriptos/livekit-ip-watch.git
# Autor: Patrick Asmus
# Web: https://www.cleveradmin.de
# Version: 1.2.1
# Version: 1.1
# Datum: 27.10.2025
# Modifikation: Funktion "detect_compose_cmd" nachträglich committed.
# Modifikation: healthcheck auf HTTP mit Custom URL umgestellt.
#####################################################
set -euo pipefail
@@ -124,25 +124,13 @@ backup_config() {
echo "$backup"
}
is_mikefarah_yq() {
yq --version 2>&1 | grep -qi 'mikefarah'
}
update_yaml_with_yq() {
local cidr="$1"
if is_mikefarah_yq; then
CIDR="$cidr" yq eval -i '
.rtc = (.rtc // {}) |
.rtc.ips = (.rtc.ips // {}) |
.rtc.ips.includes = [env(CIDR)]
' "$CONFIG_FILE"
else
yq -y -i --arg CIDR "$cidr" '
.rtc = (.rtc // {}) |
.rtc.ips = (.rtc.ips // {}) |
.rtc.ips.includes = [$CIDR]
' "$CONFIG_FILE"
fi
YQ_VAR_CIDR="$cidr" yq -i '
.rtc |= (. // {}) |
.rtc.ips |= (. // {}) |
.rtc.ips.includes = [env(YQ_VAR_CIDR)]
' "$CONFIG_FILE"
}
update_yaml_fallback() {
@@ -150,55 +138,35 @@ update_yaml_fallback() {
local tmp
tmp="$(mktemp)"
awk -v newcidr="$cidr" '
function indent_of(s, m,sp) { match(s,/^([ ]*)/,m); sp=length(m[1]); return sp }
BEGIN { in_rtc=0; rtc_indent=-1; skipping_ips=0; ips_indent=-1; injected=0 }
BEGIN{ in_rtc=0; in_ips=0; in_includes=0; injected=0 }
{
line=$0
ind=indent_of(line)
if ($0 ~ /^[[:space:]]*rtc:[[:space:]]*$/) {
in_rtc=1; rtc_indent=ind; injected=0
print line
next
if ($0 ~ /^[[:space:]]*rtc:[[:space:]]*$/) { in_rtc=1; in_ips=0; in_includes=0 }
else if (in_rtc && $0 ~ /^[[:space:]]*[[:alnum:]_]+:[[:space:]]*$/ && $0 !~ /^[[:space:]]*ips:/) {
if (!in_ips && !in_includes && !injected) {
print " ips:"
print " includes:"
print " - " newcidr
injected=1
}
}
if (in_rtc) {
if (skipping_ips) {
if (ind <= ips_indent) {
if (!injected) {
print " ips:"
print " includes:"
print " - " newcidr
injected=1
}
skipping_ips=0
} else { next }
}
if ($0 ~ /^[[:space:]]*ips:[[:space:]]*$/ && ind > rtc_indent) {
skipping_ips=1; ips_indent=ind
if (in_rtc && $0 ~ /^[[:space:]]*ips:[[:space:]]*$/) { in_ips=1; in_includes=0 }
if (in_ips && $0 ~ /^[[:space:]]*includes:[[:space:]]*$/) { in_includes=1; next }
if (in_includes) {
if ($0 ~ /^[[:space:]]*-[[:space:]]*[^[:space:]]+/) {
next
}
if (ind <= rtc_indent && $0 ~ /^[[:alnum:]]_+:[[:space:]]*$/) {
} else {
if (!injected) {
print " ips:"
print " includes:"
print " - " newcidr
injected=1
}
in_rtc=0; rtc_indent=-1
print line
next
in_includes=0
in_ips=($0 ~ /^[[:space:]]*ips:/)?1:0
}
print line
next
}
print line
}
END {
END{
if (in_rtc && !injected) {
print " ips:"
print " includes:"
@@ -313,4 +281,4 @@ main() {
fi
}
main "$@"
main "$@"