mirror of
https://github.com/monlor/MIXBOX-ARCHIVE.git
synced 2026-03-10 23:41:27 +00:00
moxbox init
This commit is contained in:
7
apps/entware/config/entware.uci
Normal file
7
apps/entware/config/entware.uci
Normal 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"
|
||||
21
apps/entware/config/mixbox.conf
Normal file
21
apps/entware/config/mixbox.conf
Normal 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】--------------------
|
||||
161
apps/entware/scripts/entware.sh
Normal file
161
apps/entware/scripts/entware.sh
Normal 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
|
||||
34
apps/entware/scripts/functions.sh
Normal file
34
apps/entware/scripts/functions.sh
Normal 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
|
||||
}
|
||||
Reference in New Issue
Block a user