pull/632/head
Mr Chen 6 months ago
parent 96fcdb8af3
commit 990199ec89
  1. 5
      new_cli.sh
  2. 100
      web/admin/__init__.py
  3. 1
      web/admin/dashboard/__init__.py
  4. 37
      web/admin/dashboard/ssh.py
  5. 39
      web/admin/ssh.py
  6. 27
      web/setting.py

@ -60,7 +60,7 @@ mw_start_debug(){
port=$(cat ${DIR}/data/port.pl)
fi
# gunicorn -b :${port} -k gevent -w 1 app:app
cd ${DIR}/web && gunicorn -b :${port} -w 1 app:app
cd ${DIR}/web && gunicorn -b :${port} -k eventlet -w 1 app:app
}
mw_start_panel(){
@ -68,7 +68,8 @@ mw_start_panel(){
if [ -f ${DIR}/data/port.pl ];then
port=$(cat ${DIR}/data/port.pl)
fi
cd ${DIR}/web && gunicorn -b :${port} -w 1 app:app
# cd ${DIR}/web && gunicorn -b :${port} -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 1 app:app
cd ${DIR}/web && gunicorn -b :${port} -k eventlet -w 1 app:app
}
mw_start_bgtask(){

@ -17,36 +17,27 @@ import logging
from datetime import timedelta
from flask import Flask
from flask import request
from flask import Response
from flask_socketio import SocketIO, emit, send
from flask import Flask, abort, current_app, session, url_for
from flask import Blueprint, render_template
from flask import render_template_string
from flask import request
from flask import Response
from flask_migrate import Migrate
from flask_caching import Cache
from werkzeug.local import LocalProxy
# from admin import model
from admin import setup
import thisdb
from admin.model import db as sys_db
import core.mw as mw
import config
import utils.config as utils_config
root_dir = mw.getRunDir()
socketio = SocketIO(manage_session=False, async_mode='threading',
logger=False, engineio_logger=False, debug=False,
ping_interval=25, ping_timeout=120)
import thisdb
app = Flask(__name__, template_folder='templates/default')
@ -79,6 +70,13 @@ app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
setup.init()
# webssh
socketio = SocketIO()
socketio.init_app(app)
from .ssh import websshRun
websshRun()
app.config['BASIC_AUTH_OPEN'] = False
try:
basic_auth = model.getOptionByJson('basic_auth', default={'open':False})
@ -158,68 +156,11 @@ def inject_global_variables():
return dict(config=g_config, data=data)
# from flasgger import Swagger
# api = Api(app, version='1.0', title='API', description='API 文档')
# Swagger(app)
# @app.route('/colors/<palette>/')
# def colors(palette):
# """
# 根据调色板名称返回颜色列表
# ---
# parameters:
# - name: palette
# in: path
# type: string
# enum: ['all', 'rgb', 'cmyk']
# required: true
# default: all
# definitions:
# Palette:
# type: object
# properties:
# palette_name:
# type: array
# items:
# $ref: '#/definitions/Color'
# Color:
# type: string
# responses:
# 200:
# description: 返回的颜色列表,可按调色板过滤
# schema:
# $ref: '#/definitions/Palette'
# examples:
# rgb: ['red', 'green', 'blue']
# """
# all_colors = {
# 'cmyk': ['cyan', 'magenta', 'yellow', 'black'],
# 'rgb': ['red', 'green', 'blue']
# }
# if palette == 'all':
# result = all_colorselse
# result = {palette: all_colors.get(palette)}
# return jsonify(result)
# Log the startup
app.logger.info('########################################################')
app.logger.info('Starting %s v%s...', config.APP_NAME, config.APP_VERSION)
app.logger.info('########################################################')
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)
# 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='0.0.0.0', port=PORT)
# def create_app(app_name = None):
#
@ -230,4 +171,11 @@ socketio.run(app, host=HOST, port=PORT)
# cli_mode = False
# if app_name.endswith('-cli'):
# cli_mode = True
# return app
# return app
# Log the startup
app.logger.info('########################################################')
app.logger.info('Starting %s v%s...', config.APP_NAME, config.APP_VERSION)
app.logger.info('########################################################')
app.logger.debug("Python syspath: %s", sys.path)

@ -11,4 +11,3 @@
from .dashboard import *
from .login import *
from .ssh import *

@ -1,37 +0,0 @@
# coding:utf-8
# ---------------------------------------------------------------------------------
# MW-Linux面板
# ---------------------------------------------------------------------------------
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
# ---------------------------------------------------------------------------------
# Author: midoks <midoks@163.com>
# ---------------------------------------------------------------------------------
from flask import request
from admin import socketio
from admin.common import isLogined
@socketio.on('webssh_websocketio')
def webssh_websocketio(data):
if not isLogined():
emit('server_response', {'data': '会话丢失,请重新登陆面板!\r\n'})
return
import utils.ssh.ssh_terminal as ssh_terminal
shell_client = ssh_terminal.ssh_terminal.instance()
shell_client.run(request.sid, data)
return
@socketio.on('webssh')
def webssh(data):
if not isLogined():
emit('server_response', {'data': '会话丢失,请重新登陆面板!\r\n'})
return None
import utils.ssh.ssh_local as ssh_local
shell = ssh_local.ssh_local.instance()
shell.run(data)
return

@ -0,0 +1,39 @@
# coding:utf-8
# ---------------------------------------------------------------------------------
# MW-Linux面板
# ---------------------------------------------------------------------------------
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
# ---------------------------------------------------------------------------------
# Author: midoks <midoks@163.com>
# ---------------------------------------------------------------------------------
from flask_socketio import SocketIO, emit, send
from flask import request
from admin import app,socketio
from .common import isLogined
def websshRun():
@socketio.on('webssh_websocketio')
def webssh_websocketio(data):
if not isLogined():
emit('server_response', {'data': '会话丢失,请重新登陆面板!\r\n'})
return
import utils.ssh.ssh_terminal as ssh_terminal
shell_client = ssh_terminal.ssh_terminal.instance()
shell_client.run(request.sid, data)
return
@socketio.on('webssh')
def webssh(data):
if not isLogined():
emit('server_response', {'data': '会话丢失,请重新登陆面板!\r\n'})
return None
import utils.ssh.ssh_local as ssh_local
shell = ssh_local.ssh_local.instance()
shell.run(data)
return

@ -33,25 +33,25 @@ if not os.path.exists(log_dir):
os.mkdir(log_dir)
# default port
mw_port = '7200'
panel_port = '7200'
default_port_file = panel_dir+'/data/port.pl'
if os.path.exists(default_port_file):
mw_port = mw.readFile(default_port_file)
mw_port.strip()
# else:
# import firewall_api
# import common
# common.initDB()
# mw_port = str(random.randint(10000, 65530))
# firewall_api.firewall_api().addAcceptPortArgs(mw_port, 'WEB面板', 'port')
# mw.writeFile('data/port.pl', mw_port)
panel_port = mw.readFile(default_port_file)
panel_port.strip()
else:
from utils.firewall import Firewall as MwFirewall
import common
common.initDB()
mw_port = str(random.randint(10000, 65530))
MwFirewall.instance().addAcceptPort(panel_port, 'WEB面板', 'port')
mw.writeFile('data/port.pl', panel_port)
bind = []
default_ipv6_file = panel_dir+'/data/ipv6.pl'
if os.path.exists(default_ipv6_file):
bind.append('[0:0:0:0:0:0:0:0]:%s' % mw_port)
bind.append('[0:0:0:0:0:0:0:0]:%s' % panel_port)
else:
bind.append('0.0.0.0:%s' % mw_port)
bind.append('0.0.0.0:%s' % panel_port)
if workers > 2:
workers = 1
@ -61,6 +61,7 @@ backlog = 512
reload = False
daemon = True
# worker_class = 'geventwebsocket.gunicorn.workers.GeventWebSocketWorker'
worker_class = 'eventlet'
timeout = 600
keepalive = 60
preload_app = True
@ -69,4 +70,4 @@ access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"'
loglevel = 'info'
errorlog = log_dir + '/panel_error.log'
accesslog = log_dir + '/panel.log'
pidfile = log_dir + '/mw.pid'
pidfile = log_dir + '/panel.pid'

Loading…
Cancel
Save