pull/628/head
Mr Chen 7 months ago
parent 2804d0ed24
commit d988ce55b1
  1. 3
      requirements.txt
  2. 77
      web/admin/__init__.py
  3. 5
      web/admin/dashboard/__init__.py
  4. 6
      web/admin/site/__init__.py
  5. 2
      web/app.py
  6. 77
      web/core/mw.py

@ -14,7 +14,8 @@ gevent>=22.10.2
gevent-websocket==0.10.1 gevent-websocket==0.10.1
psutil==5.9.1 psutil==5.9.1
chardet==3.0.4 chardet==3.0.4
flask-sqlalchemy==2.3.2 sqlalchemy==1.4.47
flask-sqlalchemy==2.5.1
pyOpenSSL==23.2.0 pyOpenSSL==23.2.0
cryptography>=40.0.2 cryptography>=40.0.2
configparser==5.2.0 configparser==5.2.0

@ -16,6 +16,8 @@ from flask import Flask, abort, request, current_app, session, url_for
from werkzeug.local import LocalProxy from werkzeug.local import LocalProxy
from flask import Blueprint, render_template from flask import Blueprint, render_template
from flask import render_template_string from flask import render_template_string
import core.mw as mw
import setting import setting
socketio = SocketIO(manage_session=False, async_mode='threading', socketio = SocketIO(manage_session=False, async_mode='threading',
@ -29,6 +31,16 @@ socketio.init_app(app, cors_allowed_origins="*")
from whitenoise import WhiteNoise from whitenoise import WhiteNoise
app.wsgi_app = WhiteNoise(app.wsgi_app, root="../web/static/", prefix="static/", max_age=604800) app.wsgi_app = WhiteNoise(app.wsgi_app, root="../web/static/", prefix="static/", max_age=604800)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///tmp/example.db' # 使用 SQLite 数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# print(mw.getRunDir())
# 加载模块 # 加载模块
from .submodules import get_submodules from .submodules import get_submodules
for module in get_submodules(): for module in get_submodules():
@ -37,13 +49,6 @@ for module in get_submodules():
app.register_blueprint(module) app.register_blueprint(module)
# Log the startup
app.logger.info('########################################################')
app.logger.info('Starting %s v%s...', setting.APP_NAME, setting.APP_VERSION)
app.logger.info('########################################################')
app.logger.debug("Python syspath: %s", sys.path)
@app.after_request @app.after_request
def requestAfter(response): def requestAfter(response):
response.headers['soft'] = setting.APP_NAME response.headers['soft'] = setting.APP_NAME
@ -56,6 +61,64 @@ def page_unauthorized(error):
return render_template_string('404 not found', error_info=error), 404 return render_template_string('404 not found', error_info=error), 404
# 设置模板全局变量
@app.context_processor
def inject_global_variables():
config = {
'version': setting.APP_VERSION
}
return dict(config=config)
# from flasgger import Swagger
# 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...', setting.APP_NAME, setting.APP_VERSION)
app.logger.info('########################################################')
app.logger.debug("Python syspath: %s", sys.path)
# def create_app(app_name = None): # def create_app(app_name = None):
# #
# if not app_name: # if not app_name:

@ -15,3 +15,8 @@ blueprint = Blueprint('dashboard', __name__, url_prefix='/', template_folder='..
@blueprint.route('/') @blueprint.route('/')
def index(): def index():
return render_template('index.html', data = {}) return render_template('index.html', data = {})
@blueprint.route('/check_login')
def check_login():
return "0"

@ -14,4 +14,8 @@ from flask import Blueprint, render_template
blueprint = Blueprint('site', __name__, url_prefix='/site', template_folder='../../templates/default') blueprint = Blueprint('site', __name__, url_prefix='/site', template_folder='../../templates/default')
@blueprint.route('/index', endpoint='index') @blueprint.route('/index', endpoint='index')
def index(): def index():
return render_template('site.html', data={}) return render_template('site.html', data={})
@blueprint.route('/get_site_types', endpoint='get_site_types',methods=['POST'])
def get_site_types():
return []

@ -37,4 +37,4 @@ def main():
) )
if __name__ == '__main__': if __name__ == '__main__':
main() app.run(debug=True)

@ -0,0 +1,77 @@
# coding:utf-8
# ---------------------------------------------------------------------------------
# MW-Linux面板
# ---------------------------------------------------------------------------------
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
# ---------------------------------------------------------------------------------
# Author: midoks <midoks@163.com>
# ---------------------------------------------------------------------------------
# ---------------------------------------------------------------------------------
# 核心方法库
# ---------------------------------------------------------------------------------
import os
import sys
import time
import string
import json
import hashlib
import shlex
import datetime
import subprocess
import glob
import base64
import re
from random import Random
def execShell(cmdstring, cwd=None, timeout=None, shell=True):
if shell:
cmdstring_list = cmdstring
else:
cmdstring_list = shlex.split(cmdstring)
if timeout:
end_time = datetime.datetime.now() + datetime.timedelta(seconds=timeout)
sub = subprocess.Popen(cmdstring_list, cwd=cwd, stdin=subprocess.PIPE,
shell=shell, bufsize=4096, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
while sub.poll() is None:
time.sleep(0.1)
if timeout:
if end_time <= datetime.datetime.now():
raise Exception("Timeout:%s" % cmdstring)
if sys.version_info[0] == 2:
return sub.communicate()
data = sub.communicate()
# python3 fix 返回byte数据
if isinstance(data[0], bytes):
t1 = str(data[0], encoding='utf-8')
if isinstance(data[1], bytes):
t2 = str(data[1], encoding='utf-8')
return (t1, t2)
def getTracebackInfo():
import traceback
errorMsg = traceback.format_exc()
return errorMsg
def getRunDir():
return os.getcwd()
def dbSqitePrefix():
WIN = sys.platform.startswith('win')
if WIN: # 如果是 Windows 系统,使用三个斜线
prefix = 'sqlite:///'
else: # 否则使用四个斜线
prefix = 'sqlite:////'
return prefix
Loading…
Cancel
Save