2018-12-31

This commit is contained in:
monlor
2018-12-31 23:47:47 +08:00
commit 3ae56f5e6e
1091 changed files with 173538 additions and 0 deletions

View 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

View 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

View 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

View 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

View 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

View File

@@ -0,0 +1,3 @@
#!/bin/sh
source /etc/mixbox/bin/base
#Start line