mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-09-10 18:34:18 +08:00
133 lines
4.8 KiB
Bash
133 lines
4.8 KiB
Bash
#!/bin/sh
|
|
# Run once on every (re-)install/upgrade of luci-app-daede: migrate legacy
|
|
# config, drop stale files from the old luci-app-daed package, and seed the
|
|
# default dae form sections. The netns cleanup that used to be patched into
|
|
# daed's init from here now lives directly in daed's own stop_service().
|
|
|
|
set -e
|
|
|
|
# luci-app-daede owns its own LuCI menu and view path. Remove stale files from
|
|
# the official luci-app-daed package and earlier daede builds that reused
|
|
# /view/daed.
|
|
rm -f /usr/share/luci/menu.d/luci-app-daed.json
|
|
rm -f /usr/share/rpcd/acl.d/luci-app-daed.json
|
|
rm -rf /usr/share/luci-app-daed
|
|
rm -rf /www/luci-static/resources/view/daed
|
|
rm -f /usr/lib/lua/luci/i18n/daed.zh-cn.lmo
|
|
rm -f /tmp/luci-indexcache.* 2>/dev/null || true
|
|
rm -rf /tmp/luci-modulecache/* 2>/dev/null || true
|
|
|
|
if [ -f /etc/config/daed_luci ]; then
|
|
old_backend="$(uci -q get daed_luci.config.active_backend || true)"
|
|
if ! uci -q get daede.config >/dev/null 2>&1; then
|
|
touch /etc/config/daede
|
|
uci -q set daede.config=daede
|
|
case "$old_backend" in
|
|
dae|daed) uci -q set daede.config.active_backend="$old_backend" ;;
|
|
esac
|
|
uci -q commit daede
|
|
elif ! uci -q get daede.config.active_backend >/dev/null 2>&1; then
|
|
case "$old_backend" in
|
|
dae|daed)
|
|
uci -q set daede.config.active_backend="$old_backend"
|
|
uci -q commit daede
|
|
;;
|
|
esac
|
|
fi
|
|
rm -f /etc/config/daed_luci
|
|
fi
|
|
|
|
if ! uci -q get daede.config >/dev/null 2>&1; then
|
|
touch /etc/config/daede
|
|
uci -q set daede.config=daede
|
|
if [ -f /etc/init.d/daed ]; then
|
|
uci -q set daede.config.active_backend='daed'
|
|
else
|
|
uci -q set daede.config.active_backend='dae'
|
|
fi
|
|
uci -q commit daede
|
|
fi
|
|
|
|
# Remove --disable-timestamp from dae init so log lines carry timestamps
|
|
DAE_INIT="/etc/init.d/dae"
|
|
if [ -f "$DAE_INIT" ]; then
|
|
sed -i 's/--disable-timestamp//' "$DAE_INIT"
|
|
sed -i '/procd_append_param command *$/d' "$DAE_INIT"
|
|
sed -i 's|procd_set_param env DAE_LOCATION_ASSET="/usr/share/v2ray".*|procd_set_param env DAE_LOCATION_ASSET="/usr/share/v2ray" TZ="$(uci -q get system.@system[0].zonename)"|' "$DAE_INIT"
|
|
fi
|
|
|
|
# dae expects geoip.dat / geosite.dat under /usr/share/dae/;
|
|
# v2ray-geoip installs them to /usr/share/v2ray/. Create symlinks.
|
|
if [ -f /usr/share/v2ray/geoip.dat ] && [ ! -f /usr/share/dae/geoip.dat ]; then
|
|
mkdir -p /usr/share/dae
|
|
ln -sf /usr/share/v2ray/geoip.dat /usr/share/dae/geoip.dat
|
|
fi
|
|
if [ -f /usr/share/v2ray/geosite.dat ] && [ ! -f /usr/share/dae/geosite.dat ]; then
|
|
mkdir -p /usr/share/dae
|
|
ln -sf /usr/share/v2ray/geosite.dat /usr/share/dae/geosite.dat
|
|
fi
|
|
if [ -f /usr/share/v2ray/geoip.dat ] && [ ! -f /usr/share/daed/geoip.dat ]; then
|
|
mkdir -p /usr/share/daed
|
|
ln -sf /usr/share/v2ray/geoip.dat /usr/share/daed/geoip.dat
|
|
fi
|
|
if [ -f /usr/share/v2ray/geosite.dat ] && [ ! -f /usr/share/daed/geosite.dat ]; then
|
|
mkdir -p /usr/share/daed
|
|
ln -sf /usr/share/v2ray/geosite.dat /usr/share/daed/geosite.dat
|
|
fi
|
|
|
|
# Seed default dae form sections (group/routing/dns) for the LuCI editor.
|
|
# Idempotent: only add what's missing. Lives in the `dae` UCI package,
|
|
# consumed by gen-dae-config.sh.
|
|
if [ -f /etc/config/dae ]; then
|
|
if ! uci -q get dae.config.lan_interface >/dev/null 2>&1; then
|
|
uci -q set dae.config.lan_interface='br-lan'
|
|
fi
|
|
if ! uci -q show dae | grep -q "=group$"; then
|
|
g="$(uci add dae group)"
|
|
uci -q set "dae.$g.name=proxy"
|
|
uci -q set "dae.$g.policy=min_moving_avg"
|
|
fi
|
|
if ! uci -q get dae.routing >/dev/null 2>&1; then
|
|
uci -q set dae.routing=routing
|
|
uci -q set dae.routing.private_direct=1
|
|
uci -q set dae.routing.cn_direct=1
|
|
uci -q set dae.routing.block_ads=0
|
|
uci -q set dae.routing.fallback=proxy
|
|
fi
|
|
if ! uci -q get dae.dns >/dev/null 2>&1; then
|
|
uci -q set dae.dns=dns
|
|
uci -q set dae.dns.cn_upstream='udp://dns.alidns.com:53'
|
|
uci -q set dae.dns.fallback_upstream='tcp+udp://dns.google:53'
|
|
uci -q set dae.dns.response_ttl='0'
|
|
fi
|
|
# Migrate legacy group filters to the unified source / name_filter fields,
|
|
# then drop the old keys so the form shows real, editable values (the old
|
|
# fields used to re-populate the new ones and looked un-deletable).
|
|
# `uci get` joins a list into one space-separated line; the unquoted $() word-
|
|
# splits it back into items. dae tags/keywords are whitespace-free, so this is
|
|
# the intended split (do NOT set IFS=newline here — it would merge the items).
|
|
i=0
|
|
while uci -q get "dae.@group[$i]" >/dev/null 2>&1; do
|
|
if [ -z "$(uci -q get dae.@group[$i].source)" ]; then
|
|
for v in $(uci -q get dae.@group[$i].filter_sub 2>/dev/null); do
|
|
uci -q add_list dae.@group[$i].source="$v"
|
|
done
|
|
fi
|
|
if [ -z "$(uci -q get dae.@group[$i].name_filter)" ]; then
|
|
for v in $(uci -q get dae.@group[$i].filter_node 2>/dev/null); do
|
|
uci -q add_list dae.@group[$i].name_filter="$v"
|
|
done
|
|
fi
|
|
uci -q delete dae.@group[$i].filter_sub 2>/dev/null
|
|
uci -q delete dae.@group[$i].filter_node 2>/dev/null
|
|
i=$((i+1))
|
|
done
|
|
uci -q commit dae
|
|
fi
|
|
|
|
exit 0
|
|
|
|
reload_service() {
|
|
restart
|
|
}
|