update
This commit is contained in:
parent
2804d0ed24
commit
d988ce55b1
|
|
@ -14,7 +14,8 @@ gevent>=22.10.2
|
|||
gevent-websocket==0.10.1
|
||||
psutil==5.9.1
|
||||
chardet==3.0.4
|
||||
flask-sqlalchemy==2.3.2
|
||||
sqlalchemy==1.4.47
|
||||
flask-sqlalchemy==2.5.1
|
||||
pyOpenSSL==23.2.0
|
||||
cryptography>=40.0.2
|
||||
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 flask import Blueprint, render_template
|
||||
from flask import render_template_string
|
||||
|
||||
import core.mw as mw
|
||||
import setting
|
||||
|
||||
socketio = SocketIO(manage_session=False, async_mode='threading',
|
||||
|
|
@ -29,6 +31,16 @@ socketio.init_app(app, cors_allowed_origins="*")
|
|||
from whitenoise import WhiteNoise
|
||||
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
|
||||
for module in get_submodules():
|
||||
|
|
@ -37,13 +49,6 @@ for module in get_submodules():
|
|||
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
|
||||
def requestAfter(response):
|
||||
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
|
||||
|
||||
|
||||
# 设置模板全局变量
|
||||
@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):
|
||||
#
|
||||
# if not app_name:
|
||||
|
|
|
|||
|
|
@ -15,3 +15,8 @@ blueprint = Blueprint('dashboard', __name__, url_prefix='/', template_folder='..
|
|||
@blueprint.route('/')
|
||||
def index():
|
||||
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.route('/index', endpoint='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__':
|
||||
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…
Reference in New Issue