moxbox init

This commit is contained in:
monlor
2020-03-05 00:08:40 +08:00
commit 76dbe98978
856 changed files with 170708 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
service=Entware
appname="entware"
needver="0.0.1"
supports="linux_arm,linux_mips,linux_x86_64"
newinfo="修复了ONMP无法使用的问题"
appinfo="一款开源且强大的包管理工具,许多功能都通过它来实现"
version="0.0.4"

View File

@@ -0,0 +1,21 @@
#------------------【Entware】--------------------
entware() {
eval `mbdb export entware`
source /etc/mixbox/bin/base
echo "********* $service ***********"
echo "[${appinfo}]"
readsh "启动${appname}服务[1/0] " "enable" "1"
if [ "$enable" == '1' ]; then
readsh "请输入${appname}安装路径" "path" "$mbdisk/.Entware"
echo "安装ONMP后请勿安装工具箱插件HttpFile和KodExplorer"
read -p "启动ONMP安装程序[1/0] " res
[ "$res" == '1' ] && mbdb set $appname.main.onmp="1" || mbdb set $appname.main.onmp="0"
${mbroot}/apps/${appname}/scripts/${appname}.sh restart
else
${mbroot}/apps/${appname}/scripts/${appname}.sh stop
fi
}
#------------------【Entware】--------------------

View File

@@ -0,0 +1,161 @@
#!/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

View File

@@ -0,0 +1,34 @@
auto_start_enable() {
[ -z "$1" ] && return 1
mbdb set entware.app."$1" "1"
}
auto_start_disable() {
[ -z "$1" ] && return 1
mbdb del entware.app."$1"
}
detect_entware() {
result1=$(mbdb show entware)
result2=$(ls /opt | grep etc)
if [ -z "$result1" ] || [ -z "$result2" ]; then
logsh "$service" "检测到【Entware】服务未启动或未安装"
return 1
else
result3=$(echo $PATH | grep opt)
[ -z "$result3" ] && export PATH=/opt/bin:/opt/sbin:$PATH
fi
return 0
}
install_entware_app() {
for i in $@; do
result=$(/opt/bin/opkg list-installed | grep -c "^$i")
if [ "$result" == '0' ]; then
/opt/bin/opkg install $i
[ $? -ne 0 ] && logsh "$service" "程序$i安装失败" && return 1
fi
done
return 0
}