mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-09-10 18:34:18 +08:00
46 lines
1.3 KiB
Bash
Executable File
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"
|