diff --git a/scripts/old/install.sh b/scripts/old/install.sh new file mode 100644 index 000000000..6bd55eaa9 --- /dev/null +++ b/scripts/old/install.sh @@ -0,0 +1,178 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/opt/homebrew/bin +export PATH +# LANG=en_US.UTF-8 +is64bit=`getconf LONG_BIT` + +VERSION=0.17.3 + +LOG_FILE=/var/log/mw-install.log + +{ + +if [ -f /etc/motd ];then + echo "welcome to mdserver-web panel" > /etc/motd +fi + +startTime=`date +%s` + +_os=`uname` +echo "use system: ${_os}" + +if [ ${_os} == "Darwin" ]; then + OSNAME='macos' +elif grep -Eqi "openSUSE" /etc/*-release; then + OSNAME='opensuse' + zypper refresh + zypper install cron wget curl zip unzip +elif grep -Eqi "FreeBSD" /etc/*-release; then + OSNAME='freebsd' + pkg install -y wget curl zip unzip unrar rar +elif grep -Eqi "EulerOS" /etc/*-release || grep -Eqi "openEuler" /etc/*-release; then + OSNAME='euler' + yum install -y wget curl zip unzip tar crontabs +elif grep -Eqi "CentOS" /etc/issue || grep -Eqi "CentOS" /etc/*-release; then + OSNAME='rhel' + yum install -y wget curl zip unzip tar crontabs +elif grep -Eqi "Fedora" /etc/issue || grep -Eqi "Fedora" /etc/*-release; then + OSNAME='rhel' + yum install -y wget curl zip unzip tar crontabs +elif grep -Eqi "Rocky" /etc/issue || grep -Eqi "Rocky" /etc/*-release; then + OSNAME='rhel' + yum install -y wget curl zip unzip tar crontabs +elif grep -Eqi "AlmaLinux" /etc/issue || grep -Eqi "AlmaLinux" /etc/*-release; then + OSNAME='rhel' + yum install -y wget curl zip unzip tar crontabs +elif grep -Eqi "Amazon Linux" /etc/issue || grep -Eqi "Amazon Linux" /etc/*-release; then + OSNAME='amazon' + yum install -y wget curl zip unzip tar crontabs +elif grep -Eqi "Debian" /etc/issue || grep -Eqi "Debian" /etc/os-release; then + OSNAME='debian' + apt update -y + apt install -y wget curl zip unzip tar cron +elif grep -Eqi "Ubuntu" /etc/issue || grep -Eqi "Ubuntu" /etc/os-release; then + OSNAME='ubuntu' + apt update -y + apt install -y wget curl zip unzip tar cron +else + OSNAME='unknow' +fi + +if [ "$EUID" -ne 0 ] && [ "$OSNAME" != "macos" ];then + echo "Please run as root!" + exit +fi + + +# HTTP_PREFIX="https://" +# LOCAL_ADDR=common +# ping -c 1 github.com > /dev/null 2>&1 +# if [ "$?" != "0" ];then +# LOCAL_ADDR=cn +# HTTP_PREFIX="https://mirror.ghproxy.com/" +# fi + +HTTP_PREFIX="https://" +LOCAL_ADDR=common +cn=$(curl -fsSL -m 10 -s http://ipinfo.io/json | grep "\"country\": \"CN\"") +if [ ! -z "$cn" ] || [ "$?" == "0" ] ;then + LOCAL_ADDR=cn + HTTP_PREFIX="https://mirror.ghproxy.com/" +fi + +echo "local:${LOCAL_ADDR}" + +if [ $OSNAME != "macos" ];then + if id www &> /dev/null ;then + echo "" + else + groupadd www + useradd -g www -s /usr/sbin/nologin www + fi + + mkdir -p /www/server + mkdir -p /www/wwwroot + mkdir -p /www/wwwlogs + mkdir -p /www/backup/database + mkdir -p /www/backup/site + + # https://cdn.jsdelivr.net/gh/midoks/mdserver-web@latest/scripts/install.sh + if [ ! -d /www/server/mdserver-web ];then + if [ "$LOCAL_ADDR" == "common" ];then + curl --insecure -sSLo /tmp/master.zip ${HTTP_PREFIX}github.com/midoks/mdserver-web/archive/refs/tags/${VERSION}.zip + cd /tmp && unzip /tmp/master.zip + mv -f /tmp/mdserver-web-master /www/server/mdserver-web + rm -rf /tmp/master.zip + rm -rf /tmp/mdserver-web-master + else + # curl --insecure -sSLo /tmp/master.zip https://code.midoks.icu/midoks/mdserver-web/archive/master.zip + wget --no-check-certificate -O /tmp/master.zip https://code.midoks.icu/midoks/mdserver-web/archive/master.zip + cd /tmp && unzip /tmp/master.zip + mv -f /tmp/mdserver-web /www/server/mdserver-web + rm -rf /tmp/master.zip + rm -rf /tmp/mdserver-web + fi + + + fi + + # install acme.sh + if [ ! -d /root/.acme.sh ];then + if [ "$LOCAL_ADDR" != "common" ];then + curl --insecure -sSLo /tmp/acme.tar.gz https://gitee.com/neilpang/acme.sh/repository/archive/master.tar.gz + tar xvzf /tmp/acme.tar.gz -C /tmp + cd /tmp/acme.sh-master + bash acme.sh install + fi + + if [ ! -d /root/.acme.sh ];then + curl https://get.acme.sh | sh + fi + fi +fi + +echo "use system version: ${OSNAME}" +if [ "${OSNAME}" == "macos" ];then + curl --insecure -fsSL https://code.midoks.icu/midoks/mdserver-web/raw/branch/master/scripts/install/macos.sh | bash +else + cd /www/server/mdserver-web && bash scripts/install/${OSNAME}.sh +fi + +if [ "${OSNAME}" == "macos" ];then + echo "macos end" + exit 0 +fi + +cd /www/server/mdserver-web && bash cli.sh start +isStart=`ps -ef|grep 'gunicorn -c setting.py app:app' |grep -v grep|awk '{print $2}'` +n=0 +while [ ! -f /etc/rc.d/init.d/mw ]; +do + echo -e ".\c" + sleep 1 + let n+=1 + if [ $n -gt 20 ];then + echo -e "start mw fail" + exit 1 + fi +done + +cd /www/server/mdserver-web && bash /etc/rc.d/init.d/mw stop +cd /www/server/mdserver-web && bash /etc/rc.d/init.d/mw start +cd /www/server/mdserver-web && bash /etc/rc.d/init.d/mw default + +sleep 2 +if [ ! -e /usr/bin/mw ]; then + if [ -f /etc/rc.d/init.d/mw ];then + ln -s /etc/rc.d/init.d/mw /usr/bin/mw + fi +fi + +endTime=`date +%s` +((outTime=(${endTime}-${startTime})/60)) +echo -e "Time consumed:\033[32m $outTime \033[0mMinute!" + +} 1> >(tee $LOG_FILE) 2>&1 + +echo -e "\nInstall completed. If error occurs, please contact us with the log file mw-install.log ." +echo "安装完毕,如果出现错误,请带上同目录下的安装日志 mw-install.log 联系我们反馈." \ No newline at end of file diff --git a/web/admin/__init__.py b/web/admin/__init__.py index 8d40a7f32..20495c45d 100644 --- a/web/admin/__init__.py +++ b/web/admin/__init__.py @@ -215,6 +215,12 @@ app.logger.debug("Python syspath: %s", sys.path) # OK socketio.init_app(app, cors_allowed_origins="*") +from gevent.pywsgi import WSGIServer +from geventwebsocket.handler import WebSocketHandler +http_server = WSGIServer(('0.0.0.0', config.DEFAULT_SERVER_PORT), app, handler_class=WebSocketHandler) +http_server.serve_forever() +socketio.run(app, host=HOST, port=PORT) + # def create_app(app_name = None): # # if not app_name: diff --git a/web/admin/dashboard/ssh.py b/web/admin/dashboard/ssh.py index f68d661ee..86bfd30b0 100644 --- a/web/admin/dashboard/ssh.py +++ b/web/admin/dashboard/ssh.py @@ -8,6 +8,8 @@ # Author: midoks # --------------------------------------------------------------------------------- +from flask import request + from admin import socketio from admin.common import isLogined diff --git a/web/admin/plugins/__init__.py b/web/admin/plugins/__init__.py index 77baaf6f1..8092e015a 100644 --- a/web/admin/plugins/__init__.py +++ b/web/admin/plugins/__init__.py @@ -17,10 +17,10 @@ from flask import request from utils.plugin import plugin as MwPlugin from admin.user_login_check import panel_login_required -from admin import model import core.mw as mw import utils.config as utils_config +import thisdb blueprint = Blueprint('plugins', __name__, url_prefix='/plugins', template_folder='../../templates/default') @@ -131,7 +131,7 @@ def menu(): pg = MwPlugin.instance() tag = request.args.get('tag', '') - hook_menu = model.getOptionByJson('hook_menu',type='hook',default=[]) + hook_menu = thisdb.getOptionByJson('hook_menu',type='hook',default=[]) content = '' for menu_data in hook_menu: if tag == menu_data['name'] and 'path' in menu_data: diff --git a/web/utils/plugin.py b/web/utils/plugin.py index 3c0bf683e..a9b4a9a55 100644 --- a/web/utils/plugin.py +++ b/web/utils/plugin.py @@ -14,8 +14,6 @@ import json import threading import multiprocessing -from admin import model - import core.mw as mw import thisdb