Files
MIXBOX-ARCHIVE/apps/entware/scripts/entware.sh
2020-03-05 00:08:40 +08:00

162 lines
4.8 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/sh
source /etc/mixbox/bin/base
eval `mbdb export entware`
# port=
BIN=/opt/etc/init.d/rc.unslung
[ -z "$path" ] && path="$mbdisk/.Entware"
# set_env() {
# echo "alias opkg=/opt/bin/opkg" >> ${mbroot}/config/profile
# logsh "【$service】" "已修改opkg配置请运行source /etc/profile生效"
# }
# clear_env() {
# sed -i '/alias opkg/d' ${mbroot}/config/profile
# }
init() {
logsh "$service" "初始化${appname}服务..."
if [ -z "$path" ]; then
logsh "$service" "未配置安装路径!"
exit
fi
[ ! -d /opt/bin ] && mount -o blind "$path" /opt > /dev/null 2>&1
result1=$(echo ${profilepath} | grep -c /opt/sbin)
result2=$(echo ${libpath} | grep -c /opt/lib)
[ "$result1" == '0' ] && mbdb set mixbox.main.profilepath="${profilepath}:/opt/bin:/opt/sbin"
[ "$result2" == '0' ] && mbdb set mixbox.main.libpath="${libpath}:/opt/lib"
if [ ! -f $path/etc/init.d/rc.unslung ]; then
logsh "$service" "检测到第一次运行${appname}服务,正在安装..."
mkdir -p $path > /dev/null 2>&1
[ $? -ne 0 ] && logsh "【Tools】" "创建目录失败,检查你的路径是否正确!" && end
umount -lf /opt > /dev/null 2>&1
mount -o blind $path /opt
if [ "$model" = "linux_arm" ]; then
if [ "$(uname -r | cut -d'.' -f1)" -ge '3' ]; then
wget -O - http://bin.entware.net/armv7sf-k3.2/installer/generic.sh | sh
else
wget -O - http://bin.entware.net/armv7sf-k2.6/installer/generic.sh | sh
fi
elif [ "$model" = "linux_mips" ]; then
wget -O - http://bin.entware.net/mipselsf-k3.4/installer/generic.sh | sh
elif [ "$model" = "linux_x86_64" ]; then
wget -O - http://bin.entware.net/x64-k3.2/installer/generic.sh | sh
else
logsh "【Tools】" "不支持你的设备!"
end
fi
if [ $? -ne 0 ]; then
logsh "【Tools】" "${appname}】服务安装失败"
umount -lf /opt
rm -rf $path
exit 1
fi
/opt/bin/opkg update
/opt/bin/opkg install curl
source /etc/profile > /dev/null 2>&1
logsh "$service" "安装完成请运行source /etc/profile使配置生效!"
logsh "$service" "如需安装ONMP参考https://github.com/mixbox/ONMP"
fi
# echo >> ${mbroot}/config/profile
#if [ -z "$(cat ${mbroot}/config/profile | grep "alias opkg")" ]; then
# echo "alias opkg=/opt/bin/opkg" >> ${mbroot}/config/profile
# set_env
#fi
}
start () {
result=$(ps | grep "{${appname}}" | grep -v grep | wc -l)
if [ "$result" -gt '2' ];then
logsh "$service" "${appname}已经在运行!"
exit 1
fi
logsh "$service" "正在启动${appname}服务... "
init
# open_port
# write_firewall_start
# ${mbroot}/apps/${appname}/bin start >> /tmp/messages 2>&1
logsh "$service" "启动依赖${appname}的所有插件..."
mbdb keys ${appname}.app | while read line
do
[ "$(mbdb get ${appname}.app.${line})" != '1' ] && continue
mbdb set ${line}.main.enable=1
${mbroot}/apps/${line}/scripts/${line}.sh status
if [ "$(mbdb get mixbox.${line}.status | cut -d'|' -f2)" = '0' ]; then
${mbroot}/apps/${line}/scripts/${line}.sh restart
fi
done
logsh "$service" "${appname}服务启动完成"
[ "$onmp" == '1' ] && sh -c "$(curl -kfsSl https://raw.githubusercontent.com/monlor/ONMP/master/oneclick.sh)"
}
stop () {
logsh "$service" "正在停止${appname}服务... "
[ "$enable" == '0' ] && destroy
# ${mbroot}/apps/${appname}/bin stop >> /tmp/messages 2>&1
[ -d /opt/bin ] && umountsh /opt
# ps | grep ${mbroot}/apps/${appname}/bin | grep -v grep | awk '{print$1}' | xargs kill -9 > /dev/null 2>&1
#
# clear_env
logsh "$service" "停止成功请运行source /etc/profile使配置生效!"
logsh "$service" "若要重置【${appname}】服务,删除$path文件并启动即可"
}
destroy() {
logsh "$service" "关闭依赖${appname}的所有插件..."
local uciname=app
mbdb keys $appname.app | while read line
do
[ "$(mbdb get $appname.app.${line})" != '1' ] && continue
${mbroot}/apps/${line}/scripts/${line}.sh stop
# 后将enable置为0不会运行destroy方法保存依赖entware的插件列表
mbdb set ${line}.main.enable=0
done
mbdb set mixbox.main.profilepath="$(echo "$profilepath" | sed -e 's/:\/opt\/bin:\/opt\/sbin//')"
mbdb set mixbox.main.libpath="$(echo "$libpath" | sed -e 's/:\/opt\/lib//')"
}
end() {
mbdb set $appname.main.enable=0
stop && exit 1
}
status() {
result1=$(echo ${libpath} | grep -c "/opt/lib")
result2=$(echo ${profilepath} | grep -c /opt/sbin)
if [ -d $path ] && [ "$result1" != '0' ] && [ "$result2" != '0' ] && [ -d /opt/bin ]; then
status="安装路径: $path|1"
else
status="未运行|0"
fi
mbdb set $appname.main.status="$status"
}
case "$1" in
start) start ;;
stop) stop ;;
restart) stop; start ;;
reload) close_port && open_port ;;
status) status ;;
esac