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,8 @@
service="KodExplorer"
appname="kodexplorer"
needver="0.0.1"
supports="linux_arm,linux_mips,linux_x86_64"
appinfo="可道云在线文档管理器需要entware环境"
newinfo="修复unzip命令缺失"
version="0.0.3"
version="0.0.4"

View File

@@ -0,0 +1,26 @@
#------------------【KodExplorer】--------------------
kodexplorer() {
eval `mbdb export kodexplorer`
source /etc/mixbox/bin/base
echo "********* $service ***********"
echo "[${appinfo}]"
echo "[如需使用ONMP请停止本插件]"
[ -z "$(mbdb show entware)" ] && echo "请先安装Entware插件" && return
readsh "启动${appname}服务[1/0] " "enable" "1"
if [ "$enable" == '1' ]; then
read -p "修改${appname}端口号(`mbdb get ${appname}.main.port || echo 81`)[1/0] " res
if [ "$res" == '1' ]; then
read -p "请输入${appname}端口号(默认81)" res
[ ! -z $res ] && mbdb set $appname.main.port="$res" || mbdb set $appname.main.port=81
fi
readsh "请输入${appname}管理目录" "path" "$mbdisk"
readsh "请输入${appname}外网访问配置[1/0]" "openport" "1"
${mbroot}/apps/${appname}/scripts/${appname}.sh restart
else
${mbroot}/apps/${appname}/scripts/${appname}.sh stop
fi
}
#------------------【KodExplorer】--------------------

View File

@@ -0,0 +1 @@
1.4.1

View File

@@ -0,0 +1,229 @@
#!/bin/sh
source /etc/mixbox/bin/base
eval `mbdb export kodexplorer`
source /etc/mixbox/apps/entware/scripts/functions.sh
# port=81
PHPBIN=/opt/bin/spawn-fcgi
NGINXBIN=/opt/sbin/nginx
NGINXCONF=/opt/etc/nginx/nginx.conf
PHPCONF=/opt/etc/php.ini
WWW=/opt/share/nginx/html/kodexplorer
CONF="/opt/etc/nginx/vhost/kodexplorer.conf"
path=$(mbdb get ${appname}.main.path)
port=$(mbdb get ${appname}.main.port) || port=81
lanip=$(uci get network.lan.ipaddr)
opkg_list="php7-cgi php7-mod-curl php7-mod-gd php7-mod-iconv php7-mod-json php7-mod-mbstring php7-mod-opcache php7-mod-session php7-mod-zip nginx spawn-fcgi zoneinfo-core zoneinfo-asia libxml2 unzip"
config_php() {
logsh "$service" "修改php配置信息..."
result=$(/opt/bin/opkg list-installed | grep -c "^php7-cgi")
[ "$result" == '0' ] && logsh "$service" "php未安装" && end
cp $PHPCONF ${mbtmp}/php.ini
sed -i "/doc_root/d" ${mbtmp}/php.ini
sed -i "s#.*open_basedir.*#open_basedir = \"$WWW\"#" ${mbtmp}/php.ini
sed -i 's/memory_limit = 8M/memory_limit = 20M/' ${mbtmp}/php.ini
sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 2000M/' ${mbtmp}/php.ini
umountsh $PHPCONF
mount --bind ${mbtmp}/php.ini $PHPCONF
# echo "<?php phpinfo(); ?>" > $WWW/info.php
# rm -rf $WWW/index.html
}
config_nginx() {
logsh "$service" "生成nginx配置信息..."
#修改nginx配置文件
[ ! -x "$NGINXBIN" ] && logsh "$service" "nginx未安装" && end
cat > ${mbtmp}/nginx.conf <<-\EOF
user root;
pid /opt/var/run/nginx.pid;
worker_processes auto;
worker_rlimit_nofile 65535;
events {
worker_connections 1024;
}
http {
include mime.types;
sendfile on;
default_type application/octet-stream;
keepalive_timeout 65;
client_max_body_size 4G;
include /opt/etc/nginx/vhost/*.conf;
}
EOF
umountsh $NGINXCONF
mount --bind ${mbtmp}/nginx.conf $NGINXCONF
#生成配置文件
[ ! -d "/opt/etc/nginx/vhost" ] && mkdir -p /opt/etc/nginx/vhost
cat > ${mbtmp}/${appname}.conf <<-\EOF
server {
listen 81;
server_name kodexplorer;
location / {
root /opt/share/nginx/html/kodexplorer;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root /opt/share/nginx/html/kodexplorer;
fastcgi_pass 127.0.0.1:9009;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
sed -i "s/81/${port}/" ${mbtmp}/${appname}.conf
rm -rf /opt/etc/nginx/vhost/${appname}.conf
ln -s ${mbtmp}/${appname}.conf /opt/etc/nginx/vhost/${appname}.conf
}
detect_webfiles() {
if [ ! -d $WWW/app/kod/ ]; then
logsh "$service" "未检测到${appname}文件,正在下载"
[ ! -d $WWW ] && mkdir $WWW
wgetsh $WWW/kodexplorer.zip $mburl/appsbin/kodexplorer.zip
[ $? -ne 0 ] && logsh "$service" "${appname}文件下载失败" && stop
unzip $WWW/kodexplorer.zip -d $WWW
rm -rf $WWW/kodexplorer.zip
fi
}
detect_opkg() {
for i in $opkg_list
do
result=$(/opt/bin/opkg list-installed | grep -c "^$i")
[ "$result" == '0' ] && /opt/bin/opkg install $i
done
}
mount_admin_root() {
if [ -n "$path" ]; then
logsh "$service" "挂载${appname}管理目录"
if [ -d $WWW/data/User/admin/home ]; then
[ ! -d "$path" ] && mkdir -p $path
umountsh $WWW/data/User/admin/home
mount --bind "$path" $WWW/data/User/admin/home
else
logsh "$service" "检测到${appname}服务未配置,无法挂载管理目录"
fi
fi
}
start () {
result=$(ps | grep -E 'nginx|php-cgi' | grep -v sysa | grep -v grep | wc -l)
if [ "$result" != '0' -a -f /opt/etc/nginx/vhost/${appname}.conf ];then
logsh "$service" "${appname}已经在运行!"
exit 1
fi
# result=$(ps | grep entware.sh | grep -v grep | wc -l)
# if [ "$result" != '0' ];then
# logsh "【$service】" "检测到【Entware】正在运行现在启用${appname}可能会冲突"
# exit 1
# fi
logsh "$service" "正在启动${appname}服务... "
#检查entware状态
result1=$(mbdb show entware)
result2=$(ls /opt | grep etc)
if [ -z "$result1" ] || [ -z "$result2" ]; then
logsh "$service" "检测到【Entware】服务未启动或未安装"
end
else
result3=$(echo $PATH | grep opt)
[ -z "$result3" ] && export PATH=/opt/bin/:/opt/sbin:$PATH
fi
detect_opkg
config_nginx
config_php
detect_webfiles
mount_admin_root
#添加entware识别
auto_start_enable
open_port
write_firewall_start
/opt/etc/init.d/S80nginx stop &> /dev/null
/opt/etc/init.d/S80nginx start > /dev/null
if [ $? -ne 0 ]; then
logsh "$service" "启动nginx服务失败"
fi
daemon $PHPBIN -a 127.0.0.1 -p 9009 -C 2 -f /opt/bin/php-cgi > /dev/null
if [ $? -ne 0 ]; then
logsh "$service" "启动php服务失败"
fi
logsh "$service" "${appname}服务启动完成"
logsh "$service" "请在浏览器中访问[http://$lanip:${port}]配置"
}
stop () {
logsh "$service" "正在停止${appname}服务... "
[ "$enable" == '0' ] && destroy
result=$(mbdb get mixbox.httpfile.enable)
killall php-cgi &> /dev/null
# kill -9 $(ps | grep 'nginx' | grep -v sysa | grep -v grep | awk '{print$1}') > /dev/null 2>&1
close_port
remove_firewall_start
#清除关于entware配置
logsh "$service" "关闭或卸载不会删除opkg的软件包和${appname}的web文件"
umountsh $PHPCONF && rm -rf ${mbtmp}/php.ini
umountsh $NGINXCONF && rm -rf ${mbtmp}/nginx.conf
rm -rf ${mbtmp}/${appname}.conf /opt/etc/nginx/vhost/${appname}.conf
umountsh $WWW/data/User/admin/home
}
end() {
/opt/etc/init.d/S80nginx stop > /dev/null
stop && exit 1
}
destroy() {
#清除entware识别
auto_start_disable
}
status() {
result=$(pssh | grep -E 'nginx|php-cgi' | grep -v sysa | grep -v grep | wc -l)
if [ "$result" -ge '5' ] && [ -f "/opt/etc/nginx/vhost/${appname}.conf" ]; then
status="运行端口号: ${port}, 管理目录: $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