Merge pull request #1203 from sofia-riese/redesign-1

feat(set_crashdir.sh): adapt new designs for more interfaces
This commit is contained in:
juewuy
2026-02-02 20:57:35 +08:00
committed by GitHub

View File

@@ -3,31 +3,35 @@
[ -f /tmp/SC_tmp/libs/check_dir_avail.sh ] && . /tmp/SC_tmp/libs/check_dir_avail.sh [ -f /tmp/SC_tmp/libs/check_dir_avail.sh ] && . /tmp/SC_tmp/libs/check_dir_avail.sh
cecho() {
printf '%b\n' "$*"
}
set_usb_dir() { set_usb_dir() {
while true; do while true; do
cecho "请选择安装目录" comp_box "请选择安装目录"
du -hL /mnt | awk '{print " "NR" "$2" "$1}' du -hL /mnt |
read -p "请输入相应数字 > " num awk '{print NR") "$2 " " $1}' |
while IFS= read -r line; do
content_line "$line"
done
separator_line "="
read -r -p "请输入相应数字> " num
dir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p) dir=$(du -hL /mnt | awk '{print $2}' | sed -n "$num"p)
if [ -z "$dir" ]; then if [ -z "$dir" ]; then
cecho "\033[31m输入错误请重新设置\033[0m" msg_alert "\033[31m输入错误请重新设置\033[0m"
continue continue
fi fi
break 1 break 1
done done
} }
set_xiaomi_dir() { set_xiaomi_dir() {
cecho "\033[33m检测到当前设备为小米官方系统请选择安装位置\033[0m" comp_box "\033[33m检测到当前设备为小米官方系统请选择安装位置\033[0m"
[ -d /data ] && cecho " 1 安装到 /data 目录,剩余空间:$(dir_avail /data -h)(支持软固化功能)" [ -d /data ] && content_line "1) /data目录剩余空间:$(dir_avail /data -h) 支持软固化功能"
[ -d /userdisk ] && cecho " 2 安装到 /userdisk 目录,剩余空间:$(dir_avail /userdisk -h)(支持软固化功能)" [ -d /userdisk ] && content_line "2) /userdisk目录剩余空间:$(dir_avail /userdisk -h) 支持软固化功能"
[ -d /data/other_vol ] && cecho " 3 安装到 /data/other_vol 目录,剩余空间:$(dir_avail /data/other_vol -h)(支持软固化功能)" [ -d /data/other_vol ] && content_line "3) /data/other_vol目录剩余空间:$(dir_avail /data/other_vol -h) 支持软固化功能"
cecho " 4 安装到自定义目录(不推荐,不明勿用!)" content_line "4) 自定义目录不推荐,不明勿用!"
cecho " 0 退出安装" content_line ""
echo "-----------------------------------------------" content_line "0) 退出安装"
read -p "请输入相应数字 > " num separator_line "="
read -r -p "请输入相应数字> " num
case "$num" in case "$num" in
1) 1)
dir=/data dir=/data
@@ -42,56 +46,70 @@ set_xiaomi_dir() {
set_cust_dir set_cust_dir
;; ;;
*) *)
line_break
exit 1 exit 1
;; ;;
esac esac
} }
set_asus_usb() { set_asus_usb() {
while true; do while true; do
echo -e "请选择U盘目录" comp_box "请选择U盘目录"
du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print " "NR" "$2" "$1}' du -hL /tmp/mnt |
read -p "请输入相应数字 > " num awk -F/ 'NF<=4 {print NR") "$2 " " $1}' |
while IFS= read -r line; do
content_line "$line"
done
separator_line "="
read -r -p "请输入相应数字> " num
dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p) dir=$(du -hL /tmp/mnt | awk -F/ 'NF<=4' | awk '{print $2}' | sed -n "$num"p)
if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then if [ ! -f "$dir/asusware.arm/etc/init.d/S50downloadmaster" ]; then
echo -e "\033[31m未找到下载大师自启文件$dir/asusware.arm/etc/init.d/S50downloadmaster请检查设置\033[0m" msg_alert "\033[31m未找到下载大师自启文件$dir/asusware.arm/etc/init.d/S50downloadmaster请检查设置\033[0m"
sleep 1
else else
break break
fi fi
done done
} }
set_asus_dir() { set_asus_dir() {
cecho "\033[33m检测到当前设备为华硕固件请选择安装方式\033[0m" separator_line "="
cecho " 1 基于U盘+下载大师安装(支持所有固件限ARM设备须插入U盘或移动硬盘)" btm_box "\033[33m检测到当前设备为华硕固件请选择安装方式\033[0m" \
cecho " 2 基于自启脚本安装(仅支持部分梅林固件)" "1) 基于U盘+下载大师安装支持所有固件限ARM设备须插入U盘或移动硬盘" \
cecho " 0 退出安装" "2) 基于自启脚本安装(仅持部分梅林固件)" \
echo "-----------------------------------------------" "" \
read -p "请输入相应数字 > " num "0) 退出安装"
read -r -p "请输入相应数字> " num
case "$num" in case "$num" in
1) 1)
echo -e "请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!" msg_alert -t 2 "请先在路由器网页后台安装下载大师并启用,之后选择外置存储所在目录!"
sleep 2
set_asus_usb set_asus_usb
;; ;;
2) 2)
cecho "如开机无法正常自启请重新使用U盘+下载大师安装!" msg_alert -t 2 "如开机无法正常自启请重新使用U盘+下载大师安装!"
sleep 2
dir=/jffs dir=/jffs
;; ;;
*) *)
line_break
exit 1 exit 1
;; ;;
esac esac
} }
set_cust_dir() { set_cust_dir() {
while true; do while true; do
echo "-----------------------------------------------" comp_box "路径是必须带 / 的格式,注意写入虚拟内存(/tmp,/opt,/sys...)的文件会在重启后消失!" \
echo '可用路径 剩余空间:' "" \
df -h | awk '{print $6,$4}' | sed 1d "可用路径 剩余空间:"
echo '路径是必须带 / 的格式,注意写入虚拟内存(/tmp,/opt,/sys...)的文件会在重启后消失!!!' df -h |
read -p "请输入自定义路径 > " dir awk '{print $6, $4}' |
sed '1d' |
while IFS= read -r line; do
content_line "$line"
done
separator_line "="
read -r -p "请输入自定义路径> " dir
if [ "$(dir_avail "$dir")" = 0 ] || [ -n "$(echo "$dir" | grep -Eq '^/(tmp|opt|sys)(/|$)')" ]; then if [ "$(dir_avail "$dir")" = 0 ] || [ -n "$(echo "$dir" | grep -Eq '^/(tmp|opt|sys)(/|$)')" ]; then
cecho "\033[31m路径错误请重新设置\033[0m" msg_alert "\033[31m路径错误请重新设置\033[0m"
continue continue
fi fi
break 1 break 1
@@ -100,22 +118,30 @@ set_cust_dir() {
set_crashdir() { set_crashdir() {
while true; do while true; do
echo "-----------------------------------------------" top_box "\033[33m注意安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
cecho "\033[33m注意安装ShellCrash至少需要预留约1MB的磁盘空间\033[0m"
case "$systype" in case "$systype" in
Padavan) dir=/etc/storage ;; Padavan)
mi_snapshot) set_xiaomi_dir ;; dir=/etc/storage
asusrouter) set_asus_dir ;; ;;
ng_snapshot) dir=/tmp/mnt ;; mi_snapshot)
set_xiaomi_dir
;;
asusrouter)
set_asus_dir
;;
ng_snapshot)
dir=/tmp/mnt
;;
*) *)
cecho " 1 在\033[32m/etc目录\033[0m下安装(适合root用户)" separator_line "="
cecho " 2 在\033[32m/usr/share目录\033[0m下安装(适合Linux系统)" btm_box "1) 在\033[32m/etc目录\033[0m下安装适合root用户" \
cecho " 3 在\033[32m当前用户目录\033[0m下安装(适合非root用户)" "2) 在\033[32m/usr/share目录\033[0m下安装适合Linux系统" \
cecho " 4 在\033[32m外置存储\033[0m安装" "3) 在\033[32m当前用户目录\033[0m安装适合非root用户" \
cecho " 5 手动设置安装目录" "4) 在\033[32m外置存储\033[0m中安装" \
cecho " 0 退出安装" "5) 手动设置安装目录" \
echo "----------------------------------------------" "" \
read -p "请输入相应数字 > " num "0) 退出安装"
read -r -p "请输入相应数字> " num
# 设置目录 # 设置目录
case "$num" in case "$num" in
1) 1)
@@ -135,7 +161,8 @@ set_crashdir() {
set_cust_dir set_cust_dir
;; ;;
*) *)
echo "安装已取消" msg_alert "安装已取消"
line_break
exit 1 exit 1
;; ;;
esac esac
@@ -143,11 +170,14 @@ set_crashdir() {
esac esac
if [ ! -w "$dir" ]; then if [ ! -w "$dir" ]; then
cecho "\033[31m没有$dir目录写入权限!请重新设置!\033[0m" msg_alert "\033[31m没有$dir目录写入权限!请重新设置!\033[0m"
sleep 1
else else
cecho "目标目录\033[32m$dir\033[0m空间剩余$(dir_avail "$dir" -h)" comp_box "目标目录\033[32m$dir\033[0m空间剩余$(dir_avail "$dir" -h)" \
read -p "确认安装?(1/0) > " res "" \
"是否确认安装?"
btm_box "1) 是" \
"0) 否"
read -r -p "请输入相应数字> " res
if [ "$res" = "1" ]; then if [ "$res" = "1" ]; then
CRASHDIR="$dir"/ShellCrash CRASHDIR="$dir"/ShellCrash
break break