23 lines
1.1 KiB
Bash
Executable File
23 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
[[ $EUID -eq 0 ]] || { echo 'Run on the service VM as root.' >&2; exit 1; }
|
|
task_root=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
|
task_staging=$(mktemp -d)
|
|
trap 'rm -rf "$task_staging"' EXIT
|
|
python3 "$task_root/scripts/fetch-rules.py" --output "$task_staging/new"
|
|
mkdir -p "$task_staging/old"
|
|
cp -a /var/lib/clashweb-core/rules/. "$task_staging/old/"
|
|
install -m 0640 -o clashweb -g clashweb-core "$task_staging/new/"*.mrs /var/lib/clashweb-core/rules/
|
|
if ! sudo -u clashweb-mihomo /usr/local/bin/mihomo -t -d /var/lib/clashweb-core -f /var/lib/clashweb-core/config.yaml; then
|
|
cp -a "$task_staging/old/." /var/lib/clashweb-core/rules/
|
|
echo 'Validation failed; previous rules restored.' >&2
|
|
exit 1
|
|
fi
|
|
if ! systemctl restart clashweb-mihomo.service || ! systemctl is-active --quiet clashweb-mihomo.service; then
|
|
cp -a "$task_staging/old/." /var/lib/clashweb-core/rules/
|
|
systemctl restart clashweb-mihomo.service
|
|
echo 'Reload failed; previous rules restored.' >&2
|
|
exit 1
|
|
fi
|
|
echo 'Rule resources updated. Select a node in the UI if needed.'
|