Merge pull request 'Funktionen "update_yaml_with_yq" und "update_yaml_fallback" überarbeitet' (#2) from yamlfix into main
Reviewed-on: #2
This commit is contained in:
commit
a9e9cf15a0
@ -5,9 +5,9 @@
|
||||
# Synapse: https://git.techniverse.net/scriptos/livekit-ip-watch.git
|
||||
# Autor: Patrick Asmus
|
||||
# Web: https://www.cleveradmin.de
|
||||
# Version: 1.1
|
||||
# Version: 1.2
|
||||
# Datum: 27.10.2025
|
||||
# Modifikation: healthcheck auf HTTP mit Custom URL umgestellt.
|
||||
# Modifikation: Funktionen "update_yaml_with_yq" und "update_yaml_fallback" überarbeitet
|
||||
#####################################################
|
||||
|
||||
set -euo pipefail
|
||||
@ -124,13 +124,25 @@ backup_config() {
|
||||
echo "$backup"
|
||||
}
|
||||
|
||||
is_mikefarah_yq() {
|
||||
yq --version 2>&1 | grep -qi 'mikefarah'
|
||||
}
|
||||
|
||||
update_yaml_with_yq() {
|
||||
local cidr="$1"
|
||||
YQ_VAR_CIDR="$cidr" yq -i '
|
||||
.rtc |= (. // {}) |
|
||||
.rtc.ips |= (. // {}) |
|
||||
.rtc.ips.includes = [env(YQ_VAR_CIDR)]
|
||||
' "$CONFIG_FILE"
|
||||
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
|
||||
}
|
||||
|
||||
update_yaml_fallback() {
|
||||
@ -138,35 +150,55 @@ update_yaml_fallback() {
|
||||
local tmp
|
||||
tmp="$(mktemp)"
|
||||
awk -v newcidr="$cidr" '
|
||||
BEGIN{ in_rtc=0; in_ips=0; in_includes=0; injected=0 }
|
||||
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 }
|
||||
{
|
||||
line=$0
|
||||
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
|
||||
}
|
||||
ind=indent_of(line)
|
||||
|
||||
if ($0 ~ /^[[:space:]]*rtc:[[:space:]]*$/) {
|
||||
in_rtc=1; rtc_indent=ind; injected=0
|
||||
print line
|
||||
next
|
||||
}
|
||||
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:]]+/) {
|
||||
|
||||
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
|
||||
next
|
||||
} else {
|
||||
}
|
||||
|
||||
if (ind <= rtc_indent && $0 ~ /^[[:alnum:]]_+:[[:space:]]*$/) {
|
||||
if (!injected) {
|
||||
print " ips:"
|
||||
print " includes:"
|
||||
print " - " newcidr
|
||||
injected=1
|
||||
}
|
||||
in_includes=0
|
||||
in_ips=($0 ~ /^[[:space:]]*ips:/)?1:0
|
||||
in_rtc=0; rtc_indent=-1
|
||||
print line
|
||||
next
|
||||
}
|
||||
|
||||
print line
|
||||
next
|
||||
}
|
||||
|
||||
print line
|
||||
}
|
||||
END{
|
||||
END {
|
||||
if (in_rtc && !injected) {
|
||||
print " ips:"
|
||||
print " includes:"
|
||||
@ -177,14 +209,6 @@ update_yaml_fallback() {
|
||||
mv "$tmp" "$CONFIG_FILE"
|
||||
}
|
||||
|
||||
detect_compose_cmd() {
|
||||
if command -v docker-compose >/dev/null 2>&1; then
|
||||
echo "docker-compose"
|
||||
else
|
||||
echo "docker compose"
|
||||
fi
|
||||
}
|
||||
|
||||
restart_service() {
|
||||
if [[ "$RUNTIME" == "compose" ]]; then
|
||||
local dir file
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user