├── META-INF └── com │ └── google │ └── android │ ├── update-binary │ ├── update-binary.sha256 │ ├── updater-script │ └── updater-script.sha256 ├── README.md ├── alist ├── customize.sh ├── dpkg ├── module.prop ├── service.sh ├── start.sh ├── stop.sh └── uninstall.sh /META-INF/com/google/android/update-binary: -------------------------------------------------------------------------------- 1 | ################# 2 | # Initialization 3 | ################# 4 | 5 | umask 022 6 | 7 | # echo before loading util_functions 8 | ui_print() { echo "$1"; } 9 | 10 | require_new_magisk() { 11 | ui_print "*******************************" 12 | ui_print " Please install Magisk v20.4+! " 13 | ui_print "*******************************" 14 | exit 1 15 | } 16 | 17 | ######################### 18 | # Load util_functions.sh 19 | ######################### 20 | 21 | OUTFD=$2 22 | ZIPFILE=$3 23 | 24 | [ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk 25 | . /data/adb/magisk/util_functions.sh 26 | [ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk 27 | 28 | install_module 29 | exit 0 30 | -------------------------------------------------------------------------------- /META-INF/com/google/android/update-binary.sha256: -------------------------------------------------------------------------------- 1 | 769ba7a056cb67e038acd3be99b813451b9c1e7232c3fa72e11c20a10b8b540d -------------------------------------------------------------------------------- /META-INF/com/google/android/updater-script: -------------------------------------------------------------------------------- 1 | #MAGISK 2 | -------------------------------------------------------------------------------- /META-INF/com/google/android/updater-script.sha256: -------------------------------------------------------------------------------- 1 | d2b8203193a083e43ad076fde01b9c7821e0aa521e1f8077b8628fb1cdb70c60 -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | A Magisk module for alist , with automatic update alist version 3 | 4 | 本模块是使用magisk在安卓arm设备上运行alist,带自动更新和备份恢复 5 | 6 | 支持32/64位的arm设备,自动检查更新,网络连接成功才会启动alist 7 | 8 | 用户名/密码admin(可通过卸载模块-重启-重新刷入-重启-来重置密码和数据) 9 | 10 | 更新频率:启动时 and 1次/天; 更新源:清华termux源 11 | 12 | 备份频率:启动后的5分钟和60分钟 and 后续1次/天 13 | 14 | 数据备份目录:/data/adb/Alist_online_backups/.卸载模块后(禁用不会)会清除备份目录 15 | 16 | [alist项目地址alist-org/alist](https://github.com/alist-org/alist) 17 | -------------------------------------------------------------------------------- /alist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zawos/magisk_alist/5d55d291cd758e68066ad95258cf0dde25644724/alist -------------------------------------------------------------------------------- /customize.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | 3 | 4 | ui_print "安装中,请稍等..." 5 | ui_print "AList是一款提供多个储存挂载服务的开源程序" 6 | ui_print "你可以挂载市面上大部分网盘如: 阿里云盘 百度网盘 蓝奏云等 使其便于管理" 7 | ui_print "Alist支持webdav协议使其可以桥接市面大部分观影阅读软件" 8 | ui_print "检测更新,数据备份: 1次/天" 9 | ui_print "地址:http://127.0.0.1:5244 账户 admin 密码 admin" 10 | 11 | sleep 1 12 | ui_print "安装已完成,重启生效" -------------------------------------------------------------------------------- /dpkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zawos/magisk_alist/5d55d291cd758e68066ad95258cf0dde25644724/dpkg -------------------------------------------------------------------------------- /module.prop: -------------------------------------------------------------------------------- 1 | id=Alist_online 2 | name=Alist_online 3 | version=v3.29.1 4 | versionCode=3291 5 | author=lxsy [auto version] 6 | description=支持32/64位的arm设备,自动检查更新,网络连接成功才会启动alist,用户名/密码admin,更新频率:1.启动时和1次/天 更新源:清华源 备份频率:1.启动后的5分钟和60分钟时2.后续1次/天,数据备份目录:/data/adb/Alist_online_backups/.卸载模块后(禁用不会)会清除备份目录 -------------------------------------------------------------------------------- /service.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | MODDIR=${0%/*} 3 | BUSYBOX="/data/adb/magisk/busybox" 4 | #MODDIR=/data/adb/modules/Alist_online 5 | cd $MODDIR/ 6 | chmod +x dpkg 7 | chmod 755 alist 8 | 9 | backup_alist() { 10 | cd $MODDIR/ 11 | mkdir -p /data/adb/Alist_online_backups/ 12 | cp -r $MODDIR/data/* /data/adb/Alist_online_backups/ 13 | cp $MODDIR/alist /data/adb/Alist_online_backups/ 14 | echo "$(date +%y-%m-%d-%T)的备份文件" >> /data/adb/Alist_online_backups/backup.log 15 | } 16 | 17 | restore_alist() { 18 | cd $MODDIR/ 19 | if [ -d /data/adb/Alist_online_backups/ ] 20 | then 21 | cp -r /data/adb/Alist_online_backups/* $MODDIR/data/ 22 | if [ -f /data/adb/Alist_online_backups/alist ] 23 | then 24 | cp /data/adb/Alist_online_backups/alist $MODDIR/ 25 | else 26 | echo "$(date +%y-%m-%d-%T)未发现备份的alist二进制文件,跳过此项" >> /data/adb/Alist_online_backups/backup.log 27 | continue 28 | fi 29 | chmod -R 777 $MODDIR/data/ 30 | echo "$(date +%y-%m-%d-%T)恢复数据成功" >> /data/adb/Alist_online_backups/backup.log 31 | else 32 | echo "$(date +%y-%m-%d-%T)第一次安装,跳过恢复数据" >> /data/adb/Alist_online_backups/backup.log 33 | $MODDIR/alist admin set admin 34 | fi 35 | } 36 | 37 | 38 | find_arch() { 39 | local abi=$(file_getprop /system/build.prop ro.product.cpu.abi); 40 | case $abi in 41 | arm64*) ARCH=aarch64;; 42 | arm*) ARCH=arm;; 43 | x86_64*) ARCH=x86_64;; 44 | x86*) ARCH=x86;; 45 | mips64*) ARCH=aarch64;; 46 | mips*) ARCH=arm;; 47 | *) ui_print "Unknown architecture: $abi"; abort;; 48 | esac; 49 | } 50 | file_getprop() { grep "^$2=" "$1" | tail -n1 | cut -d= -f2-; } 51 | 52 | 53 | 54 | start_alist() { 55 | #开始启动 56 | cd $MODDIR/ 57 | chmod 755 alist 58 | echo "现在时间$(date +%y-%m-%d-%T)" >> download.log 59 | echo "正在启动的alist版本信息: 60 | $($MODDIR/alist version)" >> download.log 61 | #网络连接成功才启动alist,持续检测 62 | echo "等待网络" >> download.log 63 | until [ "$(curl -Is qq.com)" ];do sleep 1s;done; 64 | echo "网络连接成功" >> download.log 65 | $MODDIR/alist server --data $MODDIR/data& 66 | #echo "PowerManagerService.noSuspend" > /sys/power/wake_lock 67 | } 68 | stop_alist() { 69 | kill $(pgrep alist) 70 | sleep 2s 71 | } 72 | 73 | check_alist() { 74 | if [ "$(pgrep alist)" ]; then 75 | echo "$(date +%y-%m-%d-%T) 健康检查:alist正在运行" >> download.log 76 | else 77 | echo "$(date +%y-%m-%d-%T) 健康检查:alist未运行" >> download.log 78 | fi 79 | } 80 | 81 | update_check() { 82 | cd $MODDIR/ 83 | sleep 1s 84 | echo "$(date +%y-%m-%d-%T) 检查更新" >> download.log 85 | find_arch 86 | echo "$(date +%y-%m-%d-%T) 本机架构${ARCH}" >> download.log 87 | 88 | #获取最新版本号 89 | url=$(timeout 50s curl -OL https://mirrors.tuna.tsinghua.edu.cn/termux/apt/termux-main/dists/stable/main/binary-${ARCH}/Packages && grep pool Packages |grep alist |awk '{print $2}') 90 | new_ver=$(grep -A 6 -i 'Package: alist' Packages|grep -iw "^version"|tr -d -c '[0-9] .') 91 | echo "最新版本为$new_ver" >> download.log 2>&1 92 | 93 | #如果能直接访问github,最新版本号可以这样获取curl -s "https://api.github.com/repos/alist-org/alist/releases/latest"|grep tag_name|tr -d -c '[0-9] .' 94 | cur_ver=$($MODDIR/alist version|grep -iw "^version"|tr -d -c '[0-9] .') 95 | #本模块会备份恢复上次运行alist的版本,所以模块自带的alist版本不会影响后续检测升级,使用的是上次升级后的版本 96 | echo "当前版本为$cur_ver" >> download.log 2>&1 97 | # 比较版本号 98 | if $MODDIR/dpkg --compare-versions "$cur_ver" lt "$new_ver"; then 99 | echo "需要升级。" >> download.log 100 | # 更新操作开始 101 | mkdir -p tmp/tmp_deb/ 102 | timeout 360s curl -L https://mirrors.tuna.tsinghua.edu.cn/termux/apt/termux-main/${url} -o tmp/tmp_deb/alist_latest.deb 103 | chmod 755 dpkg 104 | echo "现在开始解压deb" >> download.log 105 | # 解压deb包 106 | "${BUSYBOX}" ar -p tmp/tmp_deb/alist_latest.deb data.tar.xz > "tmp/tmp_deb/data.tar.xz" && 107 | "${BUSYBOX}" tar -xf "tmp/tmp_deb/data.tar.xz" -C "tmp/tmp_deb/" && 108 | 109 | # 将最新版本复制到工作目录 110 | echo "现在开始更新" >> download.log 111 | if [ -f tmp/tmp_deb/data/data/com.termux/files/usr/bin/alist ]; then 112 | echo "文件下载并解压成功" >> download.log 113 | stop_alist 114 | echo "在更新文件前,检查alist是否还在运行" >> download.log 115 | check_alist 116 | sleep 3s 117 | cp -f "${MODDIR}/tmp/tmp_deb/data/data/com.termux/files/usr/bin/alist" $MODDIR/ 118 | rm -rf tmp/tmp_deb/*; 119 | rm -f Packages; 120 | start_alist 121 | echo "$(date +%y-%m-%d-%T) 更新成功,正在重启alist" >> download.log 122 | else 123 | echo "文件下载失败,请重启设备再试" >> download.log 124 | fi 125 | # 更新操作结束 126 | else 127 | echo "$(date +%y-%m-%d-%T) 无需更新" >> download.log 128 | fi 129 | } 130 | 131 | #启动alist 132 | #stop_alist 133 | #修复模块安装过程中data目录数据被覆盖问题 134 | #这里是将上次的备份数据恢复到data目录,最快的一次备份数据也要启动5分钟后才有 135 | restore_alist 136 | sleep 1s 137 | start_alist 138 | check_alist 139 | update_check 140 | check_alist 141 | #5分钟后备份一次 142 | sleep 5m 143 | backup_alist 144 | #60分钟后备份一次的数据 145 | sleep 60m 146 | backup_alist 147 | #每天备份一次,同时进行检测更新 148 | while true; 149 | do 150 | sleep 1d 151 | backup_alist 152 | update_check 153 | sleep 1s 154 | check_alist 155 | done 156 | -------------------------------------------------------------------------------- /start.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | kill $(pgrep alist) && 3 | ./alist admin && 4 | ./alist server --data data& -------------------------------------------------------------------------------- /stop.sh: -------------------------------------------------------------------------------- 1 | #!/system/bin/sh 2 | kill $(pgrep alist) && 3 | echo "已关闭alist" -------------------------------------------------------------------------------- /uninstall.sh: -------------------------------------------------------------------------------- 1 | # 卸载模块时,删除运行过程中的备份文件 2 | rm -rf /data/adb/Alist_online_backups --------------------------------------------------------------------------------