#!/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 /usr/share/luci-app-daede/config-defaults.sh # 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