Files

81 lines
2.3 KiB
Bash
Raw Permalink Normal View History

2026-01-25 12:40:04 +00:00
#!/bin/sh
CMD="$1"
2026-02-04 04:05:30 +04:00
LOCAL_LST="$2"
H_REPLACE="$3"
2026-01-25 12:40:04 +00:00
2026-02-04 04:05:30 +04:00
[ -z "$CMD" ] || [ -z "$LOCAL_LST" ] || [ -z "$H_REPLACE" ] && echo "Missing params!" && exit 1
2026-01-25 12:40:04 +00:00
fix_dns() {
local dns1="1.1.1.1"
local dns2="1.0.0.1"
if ! grep -q "$dns1" /etc/resolv.conf; then
2026-02-04 04:05:30 +04:00
printf "Patching DNS for restore... "
2026-04-14 17:16:42 +04:00
sed -i '/^nameserver/d' /etc/resolv.conf
2026-01-25 12:40:04 +00:00
sed -i "1i nameserver $dns1" /etc/resolv.conf
sed -i "2i nameserver $dns2" /etc/resolv.conf
2026-02-04 04:05:30 +04:00
echo "OK"
2026-01-25 12:40:04 +00:00
fi
}
list_user_packages() {
2026-04-13 15:07:22 +04:00
if [ -f /rom/etc/apk/world ]; then
grep -v -F -x -f /rom/etc/apk/world /etc/apk/world | sed 's/=.*//'
else
cat /etc/apk/world | sed 's/=.*//'
fi
2026-01-25 12:40:04 +00:00
}
case "$CMD" in
write)
2026-02-04 04:05:30 +04:00
mkdir -p "$(dirname "$LOCAL_LST")"
echo "Package list:"
> "$LOCAL_LST"
2026-01-25 12:40:04 +00:00
for pkg in $(list_user_packages); do
2026-02-04 04:05:30 +04:00
echo "$pkg" >> "$LOCAL_LST"
2026-01-25 12:40:04 +00:00
echo " [+] $pkg"
done
;;
2026-02-04 04:05:30 +04:00
2026-01-25 12:40:04 +00:00
restore)
2026-02-04 04:05:30 +04:00
[ ! -f "$LOCAL_LST" ] && echo "File not found!" && exit 1
2026-01-25 12:40:04 +00:00
[ ! -f /etc/resolv.conf-backup ] && cp /etc/resolv.conf /etc/resolv.conf-backup
fix_dns
2026-02-04 04:05:30 +04:00
printf "Updating package lists... "
2026-04-13 15:07:22 +04:00
apk update >/dev/null 2>&1
2026-02-04 04:05:30 +04:00
echo "OK"
2026-04-13 15:07:22 +04:00
2026-02-04 04:05:30 +04:00
echo "Removing conflicts:"
if [ -n "$H_REPLACE" ]; then
2026-04-14 15:41:11 +04:00
pattern=$(echo "$H_REPLACE" | sed 's/ /|/g')
2026-04-13 15:07:22 +04:00
REMOVABLE=$(apk list --installed | grep -E "$pattern" | awk '{print $1}' | sed 's/-[0-9].*$//')
2026-01-25 12:40:04 +00:00
for p in $REMOVABLE; do
2026-02-04 04:05:30 +04:00
printf " [-] %s... " "$p"
2026-04-13 15:07:22 +04:00
apk del "$p" >/dev/null 2>&1
2026-02-04 04:05:30 +04:00
echo "OK"
2026-01-25 12:40:04 +00:00
done
fi
2026-04-13 15:07:22 +04:00
2026-02-04 04:05:30 +04:00
echo "Installing packages:"
for pkg in $(cat "$LOCAL_LST"); do
2026-04-13 15:07:22 +04:00
if apk info -e "$pkg" >/dev/null 2>&1; then
2026-04-14 15:58:04 +04:00
echo " [=] $pkg... is already installed"
2026-01-25 12:40:04 +00:00
else
fix_dns
2026-02-04 04:05:30 +04:00
printf " [+] $pkg... "
2026-04-13 15:07:22 +04:00
if apk add "$pkg" >/dev/null 2>&1; then
2026-01-25 12:40:04 +00:00
echo "OK"
else
echo "FAILED"
fi
fi
done
2026-04-13 15:07:22 +04:00
2026-01-25 12:40:04 +00:00
[ -f /etc/resolv.conf-backup ] && mv /etc/resolv.conf-backup /etc/resolv.conf
2026-02-04 04:05:30 +04:00
echo "Summary:"
2026-04-14 15:58:04 +04:00
echo " [+] Restoring packages completed"
echo " [!] Reboot required"
2026-01-25 12:40:04 +00:00
;;
2026-04-14 15:41:11 +04:00
esac