mirror of
https://github.com/monlor/MIXBOX-ARCHIVE.git
synced 2026-03-13 08:51:34 +00:00
2018-12-31
This commit is contained in:
132
apps/mixbox/scripts/appmanage.sh
Normal file
132
apps/mixbox/scripts/appmanage.sh
Normal file
@@ -0,0 +1,132 @@
|
||||
#!/bin/sh
|
||||
#copyright by monlor
|
||||
source /etc/mixbox/bin/base
|
||||
appname="$2"
|
||||
[ -z "${appname}" ] && logsh "【Tools】" "请输入插件名!" && exit 1
|
||||
|
||||
get_app_byurl () {
|
||||
logsh "【Tools】" "下载插件安装文件..."
|
||||
wgetsh "${mbtmp}/${appname}.tar.gz" "$mburl/appstore/${appname}_${model}.tar.gz"
|
||||
if [ $? -eq 1 ]; then
|
||||
logsh "【Tools】" "文件下载失败!"
|
||||
exit
|
||||
fi
|
||||
logsh "【Tools】" "解压安装文件..."
|
||||
tar -zxvf ${mbtmp}/${appname}.tar.gz -C ${mbtmp} > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
logsh "【Tools】" "文件解压失败!"
|
||||
exit
|
||||
fi
|
||||
logsh "【Tools】" "赋予可执行文件..."
|
||||
chmod +x -R ${mbtmp}/${appname}/
|
||||
}
|
||||
|
||||
install () {
|
||||
|
||||
logsh "【Tools】" "开始安装【${appname}】插件..."
|
||||
get_app_byurl
|
||||
|
||||
# if [ "$model" = "armv7l" ]; then
|
||||
# rm -rf ${mbtmp}/${appname}/bin/*_mips
|
||||
# else
|
||||
# rm -rf ${mbtmp}/${appname}/bin/*_armv7l
|
||||
# fi
|
||||
# ls ${mbtmp}/${appname}/bin/ 2> /dev/null | while read line; do
|
||||
# [ -d ${mbtmp}/${appname}/bin/${line} ] && continue
|
||||
# mv ${mbtmp}/${appname}/bin/${line} ${mbtmp}/${appname}/bin/"$(echo ${line} | sed -e 's/_.*//g')"
|
||||
# done
|
||||
# 开始判断
|
||||
. ${mbtmp}/${appname}/config/${appname}.uci
|
||||
if [ -n "$(echo $supports | grep "$model")" ]; then
|
||||
logsh "【Tools】" "处理器架构符合安装要求"
|
||||
else
|
||||
logsh "【Tools】" "设备架构:$model,插件支持:$supports,无法安装!"
|
||||
rm -rf ${mbtmp}/${appname}
|
||||
rm -rf ${mbtmp}/${appname}.tar.gz
|
||||
exit 1
|
||||
fi
|
||||
|
||||
logsh "【Tools】" "检查工具箱版本..."
|
||||
if [ "$(versioncmp $needver $mbver)" = '-1' ]; then
|
||||
logsh "【Tools】" "工具箱版本过低!【${appname}】要求工具箱版本:$needver"
|
||||
logsh "【Tools】" "插件【${appname}】安装失败!清理文件..."
|
||||
rm -rf ${mbtmp}/${appname}
|
||||
rm -rf ${mbtmp}/${appname}.tar.gz
|
||||
exit 1
|
||||
else
|
||||
logsh "【Tools】" "工具箱版本[$mbver]满足安装要求"
|
||||
fi
|
||||
logsh "【Tools】" "检查插件的额外安装脚本..."
|
||||
if [ -f ${mbtmp}/${appname}/scripts/install.sh ]; then
|
||||
logsh "【Tools】" "运行插件安装脚本"
|
||||
${mbtmp}/${appname}/scripts/install.sh
|
||||
rm -rf ${mbtmp}/${appname}/scripts/install.sh
|
||||
fi
|
||||
|
||||
logsh "【Tools】" "初始化uci配置信息..."
|
||||
echo >> ${mbtmp}/${appname}/config/${appname}.uci # 防止最后一行读取不到
|
||||
cat ${mbtmp}/${appname}/config/${appname}.uci | while read line; do
|
||||
[ -z "$line" ] && continue
|
||||
local ucikey="$(echo $line | cut -d'=' -f1)"
|
||||
local ucivalue="$(echo $line | cut -d'=' -f2 | sed -e 's/\"//g')"
|
||||
mbdb set $appname.main."$ucikey"="$ucivalue"
|
||||
done
|
||||
[ "$app_enabled" = '1' ] && mbdb set ${appname}.main.enable='1'
|
||||
|
||||
logsh "【Tools】" "添加插件到工具箱..."
|
||||
sed -i "/^${appname}/d" ${mbroot}/config/applist.txt
|
||||
echo "${appname}|${appinfo}" >> ${mbroot}/config/applist.txt
|
||||
mkdir -p ${mbroot}/apps/${appname}
|
||||
cp -rf ${mbtmp}/${appname}/ ${mbroot}/apps/
|
||||
|
||||
#清除临时文件
|
||||
rm -rf ${mbtmp}/${appname}
|
||||
rm -rf ${mbtmp}/${appname}.tar.gz
|
||||
|
||||
logsh "【Tools】" "插件安装完成!"
|
||||
if [ -n "${newinfo}" ]; then
|
||||
echo -e "-----------------------------------------"
|
||||
echo -e "${newinfo}"
|
||||
echo -e "-----------------------------------------"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
upgrade() {
|
||||
|
||||
logsh "【Tools】" "开始更新【${appname}】插件..."
|
||||
!(checkuci ${appname}) && logsh "【Tools】" "插件【${appname}】未安装!" && exit 1
|
||||
logsh "【Tools】" "先停止【${appname}】插件..."
|
||||
app_enabled="$(mbdb get ${appname}.main.enable)"
|
||||
mbdb set ${appname}.main.enable=0
|
||||
${mbroot}/apps/${appname}/scripts/${appname}.sh stop
|
||||
install ${appname}
|
||||
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
|
||||
logsh "【Tools】" "开始卸载【${appname}】插件..."
|
||||
!(checkuci ${appname}) && logsh "【Tools】" "插件【${appname}】未安装!" && exit 1
|
||||
logsh "【Tools】" "先停止【${appname}】插件..."
|
||||
${mbroot}/apps/${appname}/scripts/${appname}.sh stop &> /dev/null
|
||||
#删除插件的配置
|
||||
logsh "【Tools】" "清除插件uci配置信息"
|
||||
mbdb clear ${appname}.*
|
||||
# 清除插件列表中的插件信息
|
||||
logsh "【Tools】" "从插件列表中移除..."
|
||||
sed -i "/^${appname}/d" ${mbroot}/config/applist.txt
|
||||
# 删除插件文件
|
||||
logsh "【Tools】" "清除所有插件文件"
|
||||
rm -rf ${mbroot}/apps/${appname} > /dev/null 2>&1
|
||||
logsh "【Tools】" "插件【${appname}】卸载完成"
|
||||
|
||||
}
|
||||
|
||||
|
||||
case "$1" in
|
||||
install) install;;
|
||||
upgrade) upgrade ;;
|
||||
uninstall) uninstall ;;
|
||||
*) echo "Usage: $0 {add|upgrade|del} appname"
|
||||
esac
|
||||
47
apps/mixbox/scripts/init.sh
Normal file
47
apps/mixbox/scripts/init.sh
Normal file
@@ -0,0 +1,47 @@
|
||||
#!/bin/sh
|
||||
#copyright by monlor
|
||||
source /etc/mixbox/bin/base
|
||||
|
||||
logsh "【Tools】" "工具箱初始化脚本启动..."
|
||||
[ ! -d "${mbroot}" ] && logsh "【Tools】" "未找到工具箱文件!" && exit 1
|
||||
# mount -o remount,rw /
|
||||
|
||||
result=`ps | grep {init.sh} | grep -v grep | wc -l`
|
||||
if [ "$result" -gt '2' ]; then
|
||||
logsh "【Tools】" "检测到初始化脚本已在运行"
|
||||
exit
|
||||
fi
|
||||
|
||||
logsh "【Tools】" "检查环境变量配置"
|
||||
result=$(cat /etc/profile | grep -c mixbox/config)
|
||||
if [ "$result" == 0 ]; then
|
||||
echo "source ${mbroot}/config/profile" >> /etc/profile
|
||||
fi
|
||||
|
||||
logsh "【Tools】" "检查定时任务配置"
|
||||
cru a monitor "*/5 * * * * ${mbroot}/scripts/monitor.sh"
|
||||
|
||||
logsh "【Tools】" "检查工具箱开机启动配置"
|
||||
result=$(cat /etc/firewall.user 2> /dev/null | grep init.sh | wc -l)
|
||||
if [ "$result" == '0' ]; then
|
||||
echo "${mbroot}/scripts/init.sh" >> /etc/firewall.user
|
||||
fi
|
||||
|
||||
logsh "【Tools】" "执行工具箱监控脚本"
|
||||
${mbroot}/scripts/monitor.sh
|
||||
|
||||
logsh "【Tools】" "防火墙重启插件检查"
|
||||
mbdb show mixbox.firewall | while read line; do
|
||||
reload="$(echo $line | cut -d'=' -f2)"
|
||||
if [ "$reload" = '1' ]; then
|
||||
appname="$(echo $line | cut -d'=' -f1)"
|
||||
${mbroot}/apps/${appname}/scripts/${appname}.sh reload
|
||||
fi
|
||||
done
|
||||
|
||||
# logsh "【Tools】" "启动工具箱监测程序..."
|
||||
# [ -z "$(pssh | grep ${mbroot}/bin/monitor)" ] && daemon ${mbroot}/bin/monitor
|
||||
|
||||
logsh "【Tools】" "运行用户自定义脚本"
|
||||
${mbroot}/scripts/userscript.sh
|
||||
|
||||
72
apps/mixbox/scripts/monitor.sh
Normal file
72
apps/mixbox/scripts/monitor.sh
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/bin/sh
|
||||
#copyright by monlor
|
||||
source /etc/mixbox/bin/base
|
||||
|
||||
detect_apps() {
|
||||
|
||||
applist installed -n| while read line
|
||||
do
|
||||
${mbroot}/apps/${line}/scripts/${line}.sh status
|
||||
result1="$(mbdb get ${line}.main.enable)"
|
||||
result2="$(mbdb get ${line}.main.status | cut -d'|' -f2)"
|
||||
if [ "$result1" = '1' ] && [ "$result2" = '0' ]; then
|
||||
${mbroot}/apps/${line}/scripts/${line}.sh restart
|
||||
fi
|
||||
done
|
||||
|
||||
}
|
||||
|
||||
detect_update() {
|
||||
if [ "$(mbdb get mixbox.main.autoupdate)" = '1' ]; then
|
||||
mixbox get_version 1> /dev/null
|
||||
toolsver="$(applist mixbox -v)"
|
||||
if [ -z "$toolsver" ]; then
|
||||
logsh "【Tools】" "未获取到工具箱版本信息!"
|
||||
else
|
||||
if [ "$(versioncmp $mbver $toolsver)" = '1' ]; then
|
||||
logsh "【Tools】" "检测到工具箱有更新!即将更新..." && sleep 2
|
||||
mixbox update
|
||||
fi
|
||||
fi
|
||||
applist installed -n | while read line; do
|
||||
[ "$(mbdb get ${line}.main.enable)" = '0' ] && continue
|
||||
appver_online="$(cat ${mbtmp}/versions.txt | grep "${line}" | cutsh 2)"
|
||||
appver_local="$(mbdb get mixbox.${line}.version)"
|
||||
[ -z "$appver_local" -o -z "$appver_online" ] && logsh "【Tools】" "未获取插件${line}的版本信息!" && continue
|
||||
if [ "$(versioncmp $appver_local $appver_online)" = '1' ]; then
|
||||
logsh "【Tools】" "检测到插件${line}有更新!即将更新..." && sleep 2
|
||||
${mbroot}/scripts/appmanage.sh upgrade ${line}
|
||||
${mbroot}/apps/${line}/scripts/${line}.sh restart
|
||||
fi
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
detect_others() {
|
||||
if [ -f "$mbdisk/uninstall_mixbox" ]; then
|
||||
logsh "【Tools】" "检测到工具箱出现问题,正在备份并卸载工具箱..."
|
||||
mixbox backup
|
||||
cp /etc/mbbackup.tar.gz $mbdisk/mbbackup.tar.gz
|
||||
mixbox uninstall || ${mbroot}/scripts/uninstall.sh
|
||||
echo "工具箱已卸载并备份了工具箱配置到这里:$mbdisk/mbbackup.tar.gz" > $mbdisk/uninstall_tools.txt
|
||||
rm -rf $mbdisk/uninstall
|
||||
fi
|
||||
if [ -f "$mbdisk/fix_dropbear" ]; then
|
||||
logsh "【Tools】" "检测到ssh出现问题,正在尝试修复..."
|
||||
killall -9 dropbear
|
||||
daemon ${mbroot}/apps/dropbear/bin/dropbear -p 3333 -d ${mbroot}/apps/dropbear/config/dropbear_dss_host_key -r ${mbroot}/apps/dropbear/config/dropbear_rsa_host_key
|
||||
# echo -e "123456/n123456" | passwd root
|
||||
echo "启动ssh服务器,登录地址:[ssh root@$lanip -p 3333],Have Fun!" > $mbdisk/fix_dropbear.txt
|
||||
rm -rf $mbdisk/fix_dropbear
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
if [ -z "$(pssh | grep -w ${mbroot}/bin/mixbox)" ]; then
|
||||
applist update
|
||||
detect_update
|
||||
detect_apps
|
||||
detect_others
|
||||
fi
|
||||
|
||||
|
||||
40
apps/mixbox/scripts/uninstall.sh
Normal file
40
apps/mixbox/scripts/uninstall.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
#copyright by monlor
|
||||
[ -n "$(uci -q get monlor.tools)" ] && echo "工具箱版本过低,此卸载程序已不再支持,请执行[$(uci -q get monlor.tools.path)/scripts/uninstall.sh]卸载工具箱后重新安装新的版本!" && exit 1
|
||||
source /etc/mixbox/bin/base
|
||||
|
||||
clear
|
||||
logsh "【Tools】" "即将卸载工具箱,按任意键继续(Ctrl + C 退出)."
|
||||
read answer
|
||||
|
||||
logsh "【Tools】" "正在卸载工具箱..."
|
||||
|
||||
logsh "【Tools】" "停止所有插件"
|
||||
|
||||
ls ${mbroot}/apps | while read line
|
||||
do
|
||||
result=$(mbdb get ${line}.main.enable)
|
||||
if [ "$result" == '1' ]; then
|
||||
mbdb set mixbox.${line}.enable='0'
|
||||
${mbroot}/apps/${line}/scripts/${line}.sh stop
|
||||
fi
|
||||
done
|
||||
|
||||
logsh "【Tools】" "删除定时任务"
|
||||
cru c
|
||||
|
||||
logsh "【Tools】" "删除所有工具箱配置信息"
|
||||
|
||||
result=$(cat /etc/profile | grep -c mixbox/config)
|
||||
if [ "$result" != 0 ]; then
|
||||
sed -i "/mixbox\/config/d" /etc/profile
|
||||
fi
|
||||
|
||||
result=$(cat /etc/firewall.user | grep init.sh | wc -l) > /dev/null 2>&1
|
||||
if [ "$result" != '0' ]; then
|
||||
sed -i "/init.sh/d" /etc/firewall.user
|
||||
fi
|
||||
|
||||
logsh "【Tools】" "See You!"
|
||||
|
||||
rm -rf ${mbroot} /etc/mixbox
|
||||
54
apps/mixbox/scripts/update.sh
Normal file
54
apps/mixbox/scripts/update.sh
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/bin/sh
|
||||
#copyright by monlor
|
||||
[ -n "$(uci -q get monlor.tools 2> /dev/null)" ] && echo "工具箱版本过低,此更新程序已不再支持,请执行[$(uci -q get monlor.tools.path)/scripts/uninstall.sh]卸载工具箱后重新安装新的版本!" && exit 1
|
||||
source /etc/mixbox/bin/base
|
||||
|
||||
logsh "【Tools】" "正在更新工具箱程序... "
|
||||
rm -rf ${mbtmp}/mixbox.tar.gz
|
||||
rm -rf ${mbtmp}/mixbox
|
||||
wgetsh "${mbtmp}/mixbox.tar.gz" "$mburl/appstore/mixbox_${model}.tar.gz" > /dev/null 2>&1
|
||||
[ $? -ne 0 ] && logsh "【Tools】" "工具箱文件下载失败!" && exit
|
||||
|
||||
logsh "【Tools】" "解压工具箱文件"
|
||||
tar -zxvf ${mbtmp}/mixbox.tar.gz -C ${mbtmp} > /dev/null 2>&1
|
||||
[ $? -ne 0 ] && logsh "【Tools】" "文件解压失败!" && exit
|
||||
|
||||
logsh "【Tools】" "更新工具箱文件"
|
||||
# 处理工具箱二进制文件
|
||||
|
||||
logsh "【Tools】" "初始化uci配置信息..."
|
||||
echo >> ${mbtmp}/mixbox/config/mixbox.uci # 防止最后一行读取不到
|
||||
source ${mbtmp}/mixbox/config/mixbox.uci
|
||||
cat ${mbtmp}/mixbox/config/mixbox.uci | while read line; do
|
||||
[ -z "$line" ] && continue
|
||||
ucikey="$(echo $line | cut -d'=' -f1)"
|
||||
ucivalue="$(echo $line | cut -d'=' -f2 | sed -e 's/\"//g')"
|
||||
mbdb set mixbox.main."$ucikey"="$ucivalue"
|
||||
done
|
||||
rm -rf ${mbtmp}/mixbox/scripts/userscript.sh
|
||||
cp -rf ${mbtmp}/mixbox/* ${mbroot}/
|
||||
logsh "【Tools】" "赋予可执行权限"
|
||||
chmod -R +x ${mbroot}/bin
|
||||
chmod -R +x ${mbroot}/scripts
|
||||
|
||||
# 执行初始化脚本
|
||||
|
||||
# ${mbroot}/scripts/init.sh
|
||||
|
||||
if [ -z "$(mbdb get mixbox.main.model)" ]; then
|
||||
model=$(uname -ms | tr ' ' '_' | tr '[A-Z]' '[a-z]')
|
||||
[ -n "$(echo $model | grep -E "linux.*arm.*")" ] && model="linux_arm"
|
||||
[ -n "$(echo $model | grep -E "linux.*mips.*")" ] && model="linux_mips"
|
||||
mbdb set mixbox.main.model="$model"
|
||||
fi
|
||||
|
||||
logsh "【Tools】" "工具箱更新完成!"
|
||||
if [ -n "${newinfo}" ]; then
|
||||
echo -e "-----------------------------------------"
|
||||
echo -e "${newinfo}"
|
||||
echo -e "-----------------------------------------"
|
||||
fi
|
||||
|
||||
#删除临时文件
|
||||
rm -rf ${mbtmp}/mixbox.tar.gz
|
||||
rm -rf ${mbtmp}/mixbox
|
||||
3
apps/mixbox/scripts/userscript.sh
Normal file
3
apps/mixbox/scripts/userscript.sh
Normal file
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
source /etc/mixbox/bin/base
|
||||
#Start line
|
||||
Reference in New Issue
Block a user