Files
op-packages/luci-app-haproxy-manager/root/usr/libexec/haproxy-manager/apply-raw-file
T

46 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
set -eu
. /usr/libexec/haproxy-manager/common.sh
umask 077
SRC="${1:-}"
is_safe_temp_path "$SRC" || { echo "Refusing unsafe raw config path: $SRC" >&2; exit 1; }
[ -f "$SRC" ] || { echo "Raw config file not found: $SRC" >&2; exit 1; }
LOCK_DIR=/var/lock/haproxy-manager.apply
operation_lock_acquire "$LOCK_DIR" || { echo "Another HAProxy Manager operation is already running." >&2; exit 1; }
TMP_RAW="/tmp/haproxy-manager-raw-apply.$$"
BACKUP_ID=""
APPLIED=0
restore_on_error() {
status=$?
trap - EXIT
if [ "$APPLIED" != 1 ] && [ -n "$BACKUP_ID" ]; then
/usr/libexec/haproxy-manager/rollback --sync "$BACKUP_ID" >/dev/null 2>&1 || true
logger -t haproxy-manager "Raw apply failed; restored $BACKUP_ID"
fi
rm -f "$TMP_RAW" "$SRC"
operation_lock_release "$LOCK_DIR"
exit "$status"
}
trap restore_on_error EXIT
cp "$SRC" "$TMP_RAW"
rm -f "$SRC"
/usr/libexec/haproxy-manager/validate "$TMP_RAW"
BACKUP_ID="$(basename "$(/usr/libexec/haproxy-manager/backup)")"
atomic_install_file "$TMP_RAW" "$HAPROXY_CFG"
uci set "$CONFIG.main.active_mode=raw"
uci commit "$CONFIG"
/etc/init.d/haproxy enable >/dev/null 2>&1 || true
/etc/init.d/haproxy restart
APPLIED=1
trap - EXIT
rm -f "$TMP_RAW" "$SRC"
operation_lock_release "$LOCK_DIR"
echo "Raw HAProxy config applied. Backup: $BACKUP_ID"