mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-09 22:29:25 +08:00
update
This commit is contained in:
@@ -3,5 +3,6 @@ PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin:/usr/loc
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
|
||||||
find . -name .DS_Store | xargs rm -rf
|
find . -name .DS_Store | xargs rm -rf
|
||||||
find . -type d -name "*.pyc" | xargs rm -rf
|
find . -type d -name "*.pyc" | xargs rm -rf
|
||||||
@@ -29,6 +29,7 @@ from admin import setup
|
|||||||
|
|
||||||
import core.mw as mw
|
import core.mw as mw
|
||||||
import setting
|
import setting
|
||||||
|
import utils.config as utils_config
|
||||||
|
|
||||||
root_dir = mw.getRunDir()
|
root_dir = mw.getRunDir()
|
||||||
|
|
||||||
@@ -114,13 +115,13 @@ def inject_global_variables():
|
|||||||
if mw.isDebugMode():
|
if mw.isDebugMode():
|
||||||
ver = ver + str(time.time())
|
ver = ver + str(time.time())
|
||||||
|
|
||||||
# print(ver)
|
data = utils_config.getGlobalVar()
|
||||||
config = {
|
config = {
|
||||||
'version': ver,
|
'version': ver,
|
||||||
'title' : '面板',
|
'title' : '面板',
|
||||||
'ip' : '127.0.0.1'
|
'ip' : '127.0.0.1'
|
||||||
}
|
}
|
||||||
return dict(config=config)
|
return dict(config=config, data=data)
|
||||||
|
|
||||||
|
|
||||||
# from flasgger import Swagger
|
# from flasgger import Swagger
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ from flask import Blueprint, render_template
|
|||||||
blueprint = Blueprint('config', __name__, url_prefix='/config', template_folder='../../templates/default')
|
blueprint = Blueprint('config', __name__, url_prefix='/config', template_folder='../../templates/default')
|
||||||
@blueprint.route('/index', endpoint='index')
|
@blueprint.route('/index', endpoint='index')
|
||||||
def index():
|
def index():
|
||||||
return render_template('config.html', data={})
|
return render_template('config.html')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,4 +14,4 @@ from flask import Blueprint, render_template
|
|||||||
blueprint = Blueprint('control', __name__, url_prefix='/control', template_folder='../../templates/default')
|
blueprint = Blueprint('control', __name__, url_prefix='/control', template_folder='../../templates/default')
|
||||||
@blueprint.route('/index', endpoint='index')
|
@blueprint.route('/index', endpoint='index')
|
||||||
def index():
|
def index():
|
||||||
return render_template('control.html', data={})
|
return render_template('control.html',)
|
||||||
@@ -17,7 +17,7 @@ from admin.model import Crontab
|
|||||||
blueprint = Blueprint('crontab', __name__, url_prefix='/crontab', template_folder='../../templates/default')
|
blueprint = Blueprint('crontab', __name__, url_prefix='/crontab', template_folder='../../templates/default')
|
||||||
@blueprint.route('/index', endpoint='index')
|
@blueprint.route('/index', endpoint='index')
|
||||||
def index():
|
def index():
|
||||||
return render_template('crontab.html', data={})
|
return render_template('crontab.html')
|
||||||
|
|
||||||
# 插件列表
|
# 插件列表
|
||||||
@blueprint.route('/list', endpoint='list', methods=['GET','POST'])
|
@blueprint.route('/list', endpoint='list', methods=['GET','POST'])
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import core.mw as mw
|
|||||||
blueprint = Blueprint('dashboard', __name__, url_prefix='/', template_folder='../../templates')
|
blueprint = Blueprint('dashboard', __name__, url_prefix='/', template_folder='../../templates')
|
||||||
@blueprint.route('/')
|
@blueprint.route('/')
|
||||||
def index():
|
def index():
|
||||||
return render_template('default/index.html', data = {})
|
return render_template('default/index.html')
|
||||||
|
|
||||||
|
|
||||||
# ---------------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------------
|
||||||
@@ -26,7 +26,7 @@ def index():
|
|||||||
|
|
||||||
@blueprint.route('/login')
|
@blueprint.route('/login')
|
||||||
def login():
|
def login():
|
||||||
return render_template('default/login.html', data = {})
|
return render_template('default/login.html')
|
||||||
|
|
||||||
# 检查是否登录
|
# 检查是否登录
|
||||||
@blueprint.route('/check_login',methods=['GET','POST'])
|
@blueprint.route('/check_login',methods=['GET','POST'])
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ import utils.file as file
|
|||||||
blueprint = Blueprint('files', __name__, url_prefix='/files', template_folder='../../templates/default')
|
blueprint = Blueprint('files', __name__, url_prefix='/files', template_folder='../../templates/default')
|
||||||
@blueprint.route('/index', endpoint='index')
|
@blueprint.route('/index', endpoint='index')
|
||||||
def index():
|
def index():
|
||||||
return render_template('files.html', data={})
|
return render_template('files.html')
|
||||||
|
|
||||||
# 获取文件内容
|
# 获取文件内容
|
||||||
@blueprint.route('/get_body', endpoint='get_file_body', methods=['POST'])
|
@blueprint.route('/get_body', endpoint='get_file_body', methods=['POST'])
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import core.mw as mw
|
|||||||
blueprint = Blueprint('firewall', __name__, url_prefix='/firewall', template_folder='../../templates/default')
|
blueprint = Blueprint('firewall', __name__, url_prefix='/firewall', template_folder='../../templates/default')
|
||||||
@blueprint.route('/index', endpoint='index')
|
@blueprint.route('/index', endpoint='index')
|
||||||
def index():
|
def index():
|
||||||
return render_template('firewall.html', data={})
|
return render_template('firewall.html')
|
||||||
|
|
||||||
|
|
||||||
# 防火墙列表
|
# 防火墙列表
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ import utils.adult_log as adult_log
|
|||||||
blueprint = Blueprint('logs', __name__, url_prefix='/logs', template_folder='../../templates')
|
blueprint = Blueprint('logs', __name__, url_prefix='/logs', template_folder='../../templates')
|
||||||
@blueprint.route('/index', endpoint='index')
|
@blueprint.route('/index', endpoint='index')
|
||||||
def index():
|
def index():
|
||||||
return render_template('default/logs.html', data={})
|
return render_template('default/logs.html')
|
||||||
|
|
||||||
|
|
||||||
# 日志列表
|
# 日志列表
|
||||||
|
|||||||
+4
-180
@@ -9,186 +9,10 @@
|
|||||||
# ---------------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
from flask_sqlalchemy import SQLAlchemy
|
from .initdb import *
|
||||||
# from flask_security import UserMixin, RoleMixin
|
from .logs import addLog
|
||||||
import setting
|
from .option import getOption,getOptionByJson,setOption
|
||||||
|
from .sites import getSitesCount
|
||||||
SCHEMA_VERSION = 1
|
|
||||||
|
|
||||||
|
|
||||||
db = SQLAlchemy(
|
|
||||||
engine_options={
|
|
||||||
'pool_size': setting.CONFIG_DATABASE_CONNECTION_POOL_SIZE,
|
|
||||||
'max_overflow': setting.CONFIG_DATABASE_CONNECTION_MAX_OVERFLOW
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class Version(db.Model):
|
|
||||||
"""用于参考/升级的版本号"""
|
|
||||||
__tablename__ = 'version'
|
|
||||||
name = db.Column(db.String(32), primary_key=True)
|
|
||||||
value = db.Column(db.Integer(), nullable=False)
|
|
||||||
|
|
||||||
class Role(db.Model):
|
|
||||||
"""定义安全角色"""
|
|
||||||
__tablename__ = 'role'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
name = db.Column(db.String(128), unique=True, nullable=False)
|
|
||||||
description = db.Column(db.String(256), nullable=False)
|
|
||||||
|
|
||||||
class Option(db.Model):
|
|
||||||
"""定义类型"""
|
|
||||||
__tablename__ = 'option'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
name = db.Column(db.String(128), unique=True, nullable=False, comment="配置名称")
|
|
||||||
type = db.Column(db.String(50), unique=False, nullable=False, default='common',comment="计划类型:common/hook/web")
|
|
||||||
value = db.Column(db.TEXT, unique=False, nullable=False, comment="内容")
|
|
||||||
|
|
||||||
class Users(db.Model):
|
|
||||||
"""定义登录用户"""
|
|
||||||
__tablename__ = 'users'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
name = db.Column(db.String(128), unique=True, nullable=False, comment="用户名")
|
|
||||||
password = db.Column(db.String(128), unique=False, nullable=False, comment="密码")
|
|
||||||
login_ip = db.Column(db.String(128), unique=False, nullable=True, comment="登录IP")
|
|
||||||
login_time = db.Column(db.String(128), unique=False, nullable=True, comment="登录时间")
|
|
||||||
phone = db.Column(db.String(20), unique=False, nullable=False,comment="手机")
|
|
||||||
email = db.Column(db.String(320), nullable=False, comment="邮件")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
|
||||||
|
|
||||||
class Crontab(db.Model):
|
|
||||||
"""定义计划任务"""
|
|
||||||
__tablename__ = 'crontab'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
name = db.Column(db.TEXT, unique=True, nullable=False, comment="任务名称")
|
|
||||||
type = db.Column(db.String(128), unique=False, nullable=False, comment="计划类型")
|
|
||||||
where1 = db.Column(db.TEXT, unique=False, nullable=True, comment="执行条件")
|
|
||||||
where_hour = db.Column(db.TEXT, unique=False, nullable=True, comment="执行条件/小时")
|
|
||||||
where_minute = db.Column(db.TEXT, unique=False, nullable=True, comment="执行条件/分钟")
|
|
||||||
echo = db.Column(db.TEXT, unique=False, nullable=True, comment="脚本保存名称")
|
|
||||||
sname = db.Column(db.TEXT, unique=False, nullable=True, default='',comment="名称")
|
|
||||||
sbody = db.Column(db.TEXT, unique=False, nullable=True, default='',comment="脚本")
|
|
||||||
stype = db.Column(db.TEXT, unique=False, nullable=True, default='',comment="脚本类型")
|
|
||||||
url_address = db.Column(db.TEXT, unique=False, nullable=True, default='',comment="URL访问地址")
|
|
||||||
backup_to = db.Column(db.TEXT, unique=False, nullable=True, comment="备份地址")
|
|
||||||
save = db.Column(db.Integer, unique=False, nullable=True, default=3,comment="备份数量")
|
|
||||||
status = db.Column(db.Integer, unique=False, nullable=True, default=1, comment="状态")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
|
||||||
|
|
||||||
class Logs(db.Model):
|
|
||||||
"""定义日志"""
|
|
||||||
__tablename__ = 'logs'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
uid = db.Column(db.Integer(), unique=True, nullable=False, comment="用户ID")
|
|
||||||
type = db.Column(db.String(128), unique=False, nullable=False, comment="日志类型")
|
|
||||||
log = db.Column(db.TEXT, unique=False, nullable=True, comment="日志内容")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
|
|
||||||
class Firewall(db.Model):
|
|
||||||
"""定义防火墙"""
|
|
||||||
__tablename__ = 'firewall'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
port = db.Column(db.Integer(), unique=False, nullable=False, comment="端口")
|
|
||||||
protocol = db.Column(db.Integer(), unique=False, nullable=False, comment="协议/tcp/udp")
|
|
||||||
ps = db.Column(db.TEXT, unique=False, nullable=False, comment="备注")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
|
||||||
|
|
||||||
|
|
||||||
class Backup(db.Model):
|
|
||||||
"""定义备份"""
|
|
||||||
__tablename__ = 'backup'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
pid = db.Column(db.Integer(), unique=False, nullable=False, comment="父级ID")
|
|
||||||
type = db.Column(db.String(128), unique=False, nullable=False, comment="备份类型")
|
|
||||||
name = db.Column(db.TEXT, unique=False, nullable=False, comment="名称")
|
|
||||||
filename = db.Column(db.TEXT, unique=False, nullable=False, comment="文件绝对位置")
|
|
||||||
size = db.Column(db.Integer(), unique=False, nullable=False, comment="大小")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
|
|
||||||
class Sites(db.Model):
|
|
||||||
"""定义计划任务"""
|
|
||||||
__tablename__ = 'sites'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
name = db.Column(db.TEXT, unique=False, nullable=False, comment="网站名称")
|
|
||||||
path = db.Column(db.TEXT, unique=False, nullable=False, comment="网站路径")
|
|
||||||
index = db.Column(db.TEXT, unique=False, nullable=False, comment="")
|
|
||||||
ps = db.Column(db.TEXT, unique=False, nullable=False, comment="备注")
|
|
||||||
edate = db.Column(db.TEXT, unique=False, nullable=False, comment="到期时间")
|
|
||||||
type_id = db.Column(db.TEXT, unique=False, nullable=False, comment="分类ID")
|
|
||||||
status = db.Column(db.Integer(), unique=False, nullable=True, default=1, comment="状态")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
|
||||||
|
|
||||||
class SiteType(db.Model):
|
|
||||||
"""定义站点类型"""
|
|
||||||
__tablename__ = 'site_type'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
name = db.Column(db.TEXT, unique=False, nullable=False, comment="类型名称")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
|
||||||
|
|
||||||
class Domain(db.Model):
|
|
||||||
"""定义站点域名"""
|
|
||||||
__tablename__ = 'domain'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
pid = db.Column(db.Integer(), unique=False, nullable=False, comment="站点ID")
|
|
||||||
name = db.Column(db.TEXT, unique=False, nullable=False, comment="域名")
|
|
||||||
port = db.Column(db.Integer(), unique=False, nullable=False, comment="端口")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
|
|
||||||
class Binding(db.Model):
|
|
||||||
"""定义站点绑定"""
|
|
||||||
__tablename__ = 'binding'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
pid = db.Column(db.Integer(), unique=False, nullable=False, comment="站点ID")
|
|
||||||
domain = db.Column(db.TEXT, unique=False, nullable=False, comment="域名")
|
|
||||||
path = db.Column(db.TEXT, unique=False, nullable=False, comment="路径")
|
|
||||||
port = db.Column(db.Integer(), unique=False, nullable=False, comment="端口")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
|
|
||||||
|
|
||||||
class Tasks(db.Model):
|
|
||||||
"""定义任务"""
|
|
||||||
__tablename__ = 'tasks'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
name = db.Column(db.TEXT, unique=False, nullable=False, comment="任务名称")
|
|
||||||
type = db.Column(db.TEXT, unique=False, nullable=False, comment="域名")
|
|
||||||
execstr = db.Column(db.TEXT, unique=False, nullable=False, comment="执行命令")
|
|
||||||
start = db.Column(db.Integer(), unique=False, nullable=True, comment="开始执行时间")
|
|
||||||
end = db.Column(db.Integer(), unique=False, nullable=True, comment="结束执行时间")
|
|
||||||
status = db.Column(db.Integer(), unique=False, nullable=True, default=1, comment="状态")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
|
|
||||||
|
|
||||||
class TempLogin(db.Model):
|
|
||||||
"""定义临时登录"""
|
|
||||||
__tablename__ = 'temp_login'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
token = db.Column(db.TEXT, unique=False, nullable=False, comment="token")
|
|
||||||
salt = db.Column(db.TEXT, unique=False, nullable=False, comment="salt")
|
|
||||||
state = db.Column(db.Integer(), unique=False, nullable=False, comment="状态")
|
|
||||||
login_time = db.Column(db.Integer(), unique=False, nullable=True, comment="登录时间")
|
|
||||||
login_addr = db.Column(db.Integer(), unique=False, nullable=True, comment="登录地址")
|
|
||||||
logout_time = db.Column(db.Integer(), unique=False, nullable=True, comment="登出时间")
|
|
||||||
expire = db.Column(db.Integer(), unique=False, nullable=True, comment="过期时间")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
|
|
||||||
class Panel(db.Model):
|
|
||||||
"""定义其他面板"""
|
|
||||||
__tablename__ = 'panel'
|
|
||||||
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
|
||||||
title = db.Column(db.TEXT, unique=False, nullable=False, comment="标题")
|
|
||||||
url = db.Column(db.TEXT, unique=False, nullable=False, comment="地址")
|
|
||||||
username = db.Column(db.Integer(), unique=False, nullable=False, comment="用户名")
|
|
||||||
password = db.Column(db.Integer(), unique=False, nullable=True, comment="密码")
|
|
||||||
click = db.Column(db.Integer(), unique=False, nullable=True, comment="点击次数")
|
|
||||||
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,194 @@
|
|||||||
|
# coding:utf-8
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# MW-Linux面板
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# Author: midoks <midoks@163.com>
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
from flask_sqlalchemy import SQLAlchemy
|
||||||
|
# from flask_security import UserMixin, RoleMixin
|
||||||
|
import setting
|
||||||
|
|
||||||
|
SCHEMA_VERSION = 1
|
||||||
|
|
||||||
|
|
||||||
|
db = SQLAlchemy(
|
||||||
|
engine_options={
|
||||||
|
'pool_size': setting.CONFIG_DATABASE_CONNECTION_POOL_SIZE,
|
||||||
|
'max_overflow': setting.CONFIG_DATABASE_CONNECTION_MAX_OVERFLOW
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
class Version(db.Model):
|
||||||
|
"""用于参考/升级的版本号"""
|
||||||
|
__tablename__ = 'version'
|
||||||
|
name = db.Column(db.String(32), primary_key=True)
|
||||||
|
value = db.Column(db.Integer(), nullable=False)
|
||||||
|
|
||||||
|
class Role(db.Model):
|
||||||
|
"""定义安全角色"""
|
||||||
|
__tablename__ = 'role'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
name = db.Column(db.String(128), unique=True, nullable=False)
|
||||||
|
description = db.Column(db.String(256), nullable=False)
|
||||||
|
|
||||||
|
class Option(db.Model):
|
||||||
|
"""定义类型"""
|
||||||
|
__tablename__ = 'option'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
name = db.Column(db.String(128), unique=True, nullable=False, comment="配置名称")
|
||||||
|
type = db.Column(db.String(50), unique=False, nullable=False, default='common',comment="计划类型:common/hook/web")
|
||||||
|
value = db.Column(db.TEXT, unique=False, nullable=False, comment="内容")
|
||||||
|
|
||||||
|
class Users(db.Model):
|
||||||
|
"""定义登录用户"""
|
||||||
|
__tablename__ = 'users'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
name = db.Column(db.String(128), unique=True, nullable=False, comment="用户名")
|
||||||
|
password = db.Column(db.String(128), unique=False, nullable=False, comment="密码")
|
||||||
|
login_ip = db.Column(db.String(128), unique=False, nullable=True, comment="登录IP")
|
||||||
|
login_time = db.Column(db.String(128), unique=False, nullable=True, comment="登录时间")
|
||||||
|
phone = db.Column(db.String(20), unique=False, nullable=False,comment="手机")
|
||||||
|
email = db.Column(db.String(320), nullable=False, comment="邮件")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
||||||
|
|
||||||
|
class Crontab(db.Model):
|
||||||
|
"""定义计划任务"""
|
||||||
|
__tablename__ = 'crontab'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
name = db.Column(db.TEXT, unique=True, nullable=False, comment="任务名称")
|
||||||
|
type = db.Column(db.String(128), unique=False, nullable=False, comment="计划类型")
|
||||||
|
where1 = db.Column(db.TEXT, unique=False, nullable=True, comment="执行条件")
|
||||||
|
where_hour = db.Column(db.TEXT, unique=False, nullable=True, comment="执行条件/小时")
|
||||||
|
where_minute = db.Column(db.TEXT, unique=False, nullable=True, comment="执行条件/分钟")
|
||||||
|
echo = db.Column(db.TEXT, unique=False, nullable=True, comment="脚本保存名称")
|
||||||
|
sname = db.Column(db.TEXT, unique=False, nullable=True, default='',comment="名称")
|
||||||
|
sbody = db.Column(db.TEXT, unique=False, nullable=True, default='',comment="脚本")
|
||||||
|
stype = db.Column(db.TEXT, unique=False, nullable=True, default='',comment="脚本类型")
|
||||||
|
url_address = db.Column(db.TEXT, unique=False, nullable=True, default='',comment="URL访问地址")
|
||||||
|
backup_to = db.Column(db.TEXT, unique=False, nullable=True, comment="备份地址")
|
||||||
|
save = db.Column(db.Integer, unique=False, nullable=True, default=3,comment="备份数量")
|
||||||
|
status = db.Column(db.Integer, unique=False, nullable=True, default=1, comment="状态")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
||||||
|
|
||||||
|
class Logs(db.Model):
|
||||||
|
"""定义日志"""
|
||||||
|
__tablename__ = 'logs'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
uid = db.Column(db.Integer(), unique=True, nullable=False, comment="用户ID")
|
||||||
|
type = db.Column(db.String(128), unique=False, nullable=False, comment="日志类型")
|
||||||
|
log = db.Column(db.TEXT, unique=False, nullable=True, comment="日志内容")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
|
||||||
|
class Firewall(db.Model):
|
||||||
|
"""定义防火墙"""
|
||||||
|
__tablename__ = 'firewall'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
port = db.Column(db.Integer(), unique=False, nullable=False, comment="端口")
|
||||||
|
protocol = db.Column(db.Integer(), unique=False, nullable=False, comment="协议/tcp/udp")
|
||||||
|
ps = db.Column(db.TEXT, unique=False, nullable=False, comment="备注")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
||||||
|
|
||||||
|
|
||||||
|
class Backup(db.Model):
|
||||||
|
"""定义备份"""
|
||||||
|
__tablename__ = 'backup'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
pid = db.Column(db.Integer(), unique=False, nullable=False, comment="父级ID")
|
||||||
|
type = db.Column(db.String(128), unique=False, nullable=False, comment="备份类型")
|
||||||
|
name = db.Column(db.TEXT, unique=False, nullable=False, comment="名称")
|
||||||
|
filename = db.Column(db.TEXT, unique=False, nullable=False, comment="文件绝对位置")
|
||||||
|
size = db.Column(db.Integer(), unique=False, nullable=False, comment="大小")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
|
||||||
|
class Sites(db.Model):
|
||||||
|
"""定义计划任务"""
|
||||||
|
__tablename__ = 'sites'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
name = db.Column(db.TEXT, unique=False, nullable=False, comment="网站名称")
|
||||||
|
path = db.Column(db.TEXT, unique=False, nullable=False, comment="网站路径")
|
||||||
|
index = db.Column(db.TEXT, unique=False, nullable=False, comment="")
|
||||||
|
ps = db.Column(db.TEXT, unique=False, nullable=False, comment="备注")
|
||||||
|
edate = db.Column(db.TEXT, unique=False, nullable=False, comment="到期时间")
|
||||||
|
type_id = db.Column(db.TEXT, unique=False, nullable=False, comment="分类ID")
|
||||||
|
status = db.Column(db.Integer(), unique=False, nullable=True, default=1, comment="状态")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
||||||
|
|
||||||
|
class SiteType(db.Model):
|
||||||
|
"""定义站点类型"""
|
||||||
|
__tablename__ = 'site_type'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
name = db.Column(db.TEXT, unique=False, nullable=False, comment="类型名称")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
update_time = db.Column(db.TEXT, nullable=False, comment="更新时间")
|
||||||
|
|
||||||
|
class Domain(db.Model):
|
||||||
|
"""定义站点域名"""
|
||||||
|
__tablename__ = 'domain'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
pid = db.Column(db.Integer(), unique=False, nullable=False, comment="站点ID")
|
||||||
|
name = db.Column(db.TEXT, unique=False, nullable=False, comment="域名")
|
||||||
|
port = db.Column(db.Integer(), unique=False, nullable=False, comment="端口")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
|
||||||
|
class Binding(db.Model):
|
||||||
|
"""定义站点绑定"""
|
||||||
|
__tablename__ = 'binding'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
pid = db.Column(db.Integer(), unique=False, nullable=False, comment="站点ID")
|
||||||
|
domain = db.Column(db.TEXT, unique=False, nullable=False, comment="域名")
|
||||||
|
path = db.Column(db.TEXT, unique=False, nullable=False, comment="路径")
|
||||||
|
port = db.Column(db.Integer(), unique=False, nullable=False, comment="端口")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
|
||||||
|
|
||||||
|
class Tasks(db.Model):
|
||||||
|
"""定义任务"""
|
||||||
|
__tablename__ = 'tasks'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
name = db.Column(db.TEXT, unique=False, nullable=False, comment="任务名称")
|
||||||
|
type = db.Column(db.TEXT, unique=False, nullable=False, comment="域名")
|
||||||
|
execstr = db.Column(db.TEXT, unique=False, nullable=False, comment="执行命令")
|
||||||
|
start = db.Column(db.Integer(), unique=False, nullable=True, comment="开始执行时间")
|
||||||
|
end = db.Column(db.Integer(), unique=False, nullable=True, comment="结束执行时间")
|
||||||
|
status = db.Column(db.Integer(), unique=False, nullable=True, default=1, comment="状态")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
|
||||||
|
|
||||||
|
class TempLogin(db.Model):
|
||||||
|
"""定义临时登录"""
|
||||||
|
__tablename__ = 'temp_login'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
token = db.Column(db.TEXT, unique=False, nullable=False, comment="token")
|
||||||
|
salt = db.Column(db.TEXT, unique=False, nullable=False, comment="salt")
|
||||||
|
state = db.Column(db.Integer(), unique=False, nullable=False, comment="状态")
|
||||||
|
login_time = db.Column(db.Integer(), unique=False, nullable=True, comment="登录时间")
|
||||||
|
login_addr = db.Column(db.Integer(), unique=False, nullable=True, comment="登录地址")
|
||||||
|
logout_time = db.Column(db.Integer(), unique=False, nullable=True, comment="登出时间")
|
||||||
|
expire = db.Column(db.Integer(), unique=False, nullable=True, comment="过期时间")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
|
||||||
|
class Panel(db.Model):
|
||||||
|
"""定义其他面板"""
|
||||||
|
__tablename__ = 'panel'
|
||||||
|
id = db.Column(db.Integer(), primary_key=True,autoincrement=True, comment="ID")
|
||||||
|
title = db.Column(db.TEXT, unique=False, nullable=False, comment="标题")
|
||||||
|
url = db.Column(db.TEXT, unique=False, nullable=False, comment="地址")
|
||||||
|
username = db.Column(db.Integer(), unique=False, nullable=False, comment="用户名")
|
||||||
|
password = db.Column(db.Integer(), unique=False, nullable=True, comment="密码")
|
||||||
|
click = db.Column(db.Integer(), unique=False, nullable=True, comment="点击次数")
|
||||||
|
add_time = db.Column(db.TEXT, nullable=False, comment="添加时间")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
# coding:utf-8
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# MW-Linux面板
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# Author: midoks <midoks@163.com>
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
from admin.model import db, Sites
|
||||||
|
|
||||||
|
|
||||||
|
def getSitesCount():
|
||||||
|
return Sites.query.count()
|
||||||
|
|
||||||
@@ -25,7 +25,7 @@ blueprint = Blueprint('plugins', __name__, url_prefix='/plugins', template_folde
|
|||||||
@blueprint.route('/index', endpoint='index')
|
@blueprint.route('/index', endpoint='index')
|
||||||
@panel_login_required
|
@panel_login_required
|
||||||
def index():
|
def index():
|
||||||
return render_template('plugins.html', data={})
|
return render_template('plugins.html')
|
||||||
|
|
||||||
# 初始化检查,首页提示选择安装
|
# 初始化检查,首页提示选择安装
|
||||||
@blueprint.route('/init', endpoint='init', methods=['POST'])
|
@blueprint.route('/init', endpoint='init', methods=['POST'])
|
||||||
|
|||||||
@@ -45,4 +45,16 @@ def init_option():
|
|||||||
|
|
||||||
# 首页展示初始化
|
# 首页展示初始化
|
||||||
option.setOption('display_index', '[]')
|
option.setOption('display_index', '[]')
|
||||||
|
|
||||||
|
# 监控默认配置
|
||||||
|
option.setOption('monitor_status', 'open', type='monitor')
|
||||||
|
option.setOption('monitor_day', '30', type='monitor')
|
||||||
|
option.setOption('monitor_only_netio', 'open', type='monitor')
|
||||||
|
|
||||||
|
# 初始化安全路径
|
||||||
|
option.setOption('admin_path', mw.getRandomString(8))
|
||||||
|
option.setOption('server_ip', '127.0.0.1')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return True
|
return True
|
||||||
@@ -10,19 +10,49 @@
|
|||||||
|
|
||||||
|
|
||||||
from flask import Blueprint, render_template
|
from flask import Blueprint, render_template
|
||||||
|
from flask import request
|
||||||
|
|
||||||
from utils.mwplugin import MwPlugin
|
from utils.mwplugin import MwPlugin
|
||||||
|
|
||||||
|
import core.mw as mw
|
||||||
|
from admin.model import Sites
|
||||||
|
|
||||||
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')
|
||||||
|
|
||||||
# 插件列表
|
# 插件列表
|
||||||
@blueprint.route('/list', endpoint='list', methods=['GET','POST'])
|
@blueprint.route('/list', endpoint='list', methods=['GET','POST'])
|
||||||
def list():
|
def list():
|
||||||
pg = MwPlugin.instance()
|
p = request.form.get('p', '1')
|
||||||
# print(pg.getList())
|
limit = request.form.get('limit', '10')
|
||||||
return pg.getList()
|
type_id = request.form.get('type_id', '0').strip()
|
||||||
|
search = request.form.get('search', '').strip()
|
||||||
|
|
||||||
|
count = Sites.query.count()
|
||||||
|
pagination = Sites.query.paginate(page=int(p), per_page=int(limit))
|
||||||
|
|
||||||
|
site_list = []
|
||||||
|
for item in pagination.items:
|
||||||
|
t = {}
|
||||||
|
t['id'] = item.id
|
||||||
|
t['name'] = item.name
|
||||||
|
t['path'] = item.path
|
||||||
|
t['index'] = item.index
|
||||||
|
t['ps'] = item.ps
|
||||||
|
t['edate'] = item.edate
|
||||||
|
t['type_id'] = item.type_id
|
||||||
|
t['status'] = item.status
|
||||||
|
t['add_time'] = item.add_time
|
||||||
|
t['update_time'] = item.update_time
|
||||||
|
site_list.append(t)
|
||||||
|
|
||||||
|
data = {}
|
||||||
|
data['data'] = site_list
|
||||||
|
data['page'] = mw.getPage({'count':count,'tojs':'getWeb','p':p, 'row':limit})
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
@blueprint.route('/get_site_types', endpoint='get_site_types',methods=['POST'])
|
@blueprint.route('/get_site_types', endpoint='get_site_types',methods=['POST'])
|
||||||
def get_site_types():
|
def get_site_types():
|
||||||
|
|||||||
@@ -14,4 +14,4 @@ from flask import Blueprint, render_template
|
|||||||
blueprint = Blueprint('soft', __name__, url_prefix='/soft', template_folder='../../templates/default')
|
blueprint = Blueprint('soft', __name__, url_prefix='/soft', template_folder='../../templates/default')
|
||||||
@blueprint.route('/index', endpoint='index')
|
@blueprint.route('/index', endpoint='index')
|
||||||
def index():
|
def index():
|
||||||
return render_template('soft.html', data={})
|
return render_template('soft.html')
|
||||||
@@ -14,6 +14,7 @@ from flask import request
|
|||||||
|
|
||||||
import core.mw as mw
|
import core.mw as mw
|
||||||
import utils.system as sys
|
import utils.system as sys
|
||||||
|
import admin.model.option as option
|
||||||
|
|
||||||
blueprint = Blueprint('system', __name__, url_prefix='/system', template_folder='../../templates')
|
blueprint = Blueprint('system', __name__, url_prefix='/system', template_folder='../../templates')
|
||||||
|
|
||||||
@@ -102,7 +103,52 @@ def get_network_io():
|
|||||||
def set_control():
|
def set_control():
|
||||||
stype = request.form.get('type', '')
|
stype = request.form.get('type', '')
|
||||||
day = request.form.get('day', '')
|
day = request.form.get('day', '')
|
||||||
return mw.returnData(True, "设置成功!")
|
|
||||||
|
if stype == '0':
|
||||||
|
option.setOption('monitor_status', 'close', type='monitor')
|
||||||
|
return mw.returnData(True, "设置成功!")
|
||||||
|
elif stype == '1':
|
||||||
|
_day = int(day)
|
||||||
|
if _day < 1:
|
||||||
|
return mw.returnData(False, "设置失败!")
|
||||||
|
option.setOption('monitor_day', day, type='monitor')
|
||||||
|
elif stype == '2':
|
||||||
|
option.setOption('monitor_only_netio', 'close', type='monitor')
|
||||||
|
return mw.returnData(True, "设置成功!")
|
||||||
|
elif stype == '3':
|
||||||
|
option.setOption('monitor_only_netio', 'open', type='monitor')
|
||||||
|
return mw.returnData(True, "设置成功!")
|
||||||
|
elif stype == 'del':
|
||||||
|
if not mw.isRestart():
|
||||||
|
return mw.returnData(False, '请等待所有安装任务完成再执行')
|
||||||
|
os.remove("data/system.db")
|
||||||
|
|
||||||
|
sql = db.Sql().dbfile('system')
|
||||||
|
csql = mw.readFile('data/sql/system.sql')
|
||||||
|
csql_list = csql.split(';')
|
||||||
|
for index in range(len(csql_list)):
|
||||||
|
sql.execute(csql_list[index], ())
|
||||||
|
return mw.returnData(True, "监控服务已关闭")
|
||||||
|
else:
|
||||||
|
monitor_status = option.getOption('monitor_status', default='open', type='monitor')
|
||||||
|
monitor_day = option.getOption('monitor_day', default='30', type='monitor')
|
||||||
|
monitor_only_netio = option.getOption('monitor_only_netio', default='open', type='monitor')
|
||||||
|
data = {}
|
||||||
|
data['day'] = monitor_day
|
||||||
|
if monitor_status == 'open':
|
||||||
|
data['status'] = True
|
||||||
|
else:
|
||||||
|
data['status'] = False
|
||||||
|
if monitor_only_netio == 'open':
|
||||||
|
data['stat_all_status'] = True
|
||||||
|
else:
|
||||||
|
data['stat_all_status'] = False
|
||||||
|
|
||||||
|
return data
|
||||||
|
|
||||||
|
return mw.returnData(False, "异常!")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# 升级检测
|
# 升级检测
|
||||||
|
|||||||
@@ -12,6 +12,8 @@
|
|||||||
from flask import Blueprint, render_template
|
from flask import Blueprint, render_template
|
||||||
|
|
||||||
blueprint = Blueprint('task', __name__, url_prefix='/task', template_folder='../../templates/default')
|
blueprint = Blueprint('task', __name__, url_prefix='/task', template_folder='../../templates/default')
|
||||||
|
|
||||||
|
|
||||||
@blueprint.route('/count', endpoint='task_count')
|
@blueprint.route('/count', endpoint='task_count')
|
||||||
def task_count():
|
def task_count():
|
||||||
return "0"
|
return "0"
|
||||||
@@ -14,6 +14,6 @@ def panel_login_required(func):
|
|||||||
|
|
||||||
@wraps(func)
|
@wraps(func)
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
print('panel_login_required', args, kwargs)
|
# print('panel_login_required', args, kwargs)
|
||||||
return func(*args, **kwargs)
|
return func(*args, **kwargs)
|
||||||
return wrapper
|
return wrapper
|
||||||
@@ -421,6 +421,17 @@ def getPageObject(args, result='1,2,3,4,5,8'):
|
|||||||
|
|
||||||
return (page.GetPage(info, result), page)
|
return (page.GetPage(info, result), page)
|
||||||
|
|
||||||
|
|
||||||
|
def getHostPort():
|
||||||
|
if os.path.exists('data/port.pl'):
|
||||||
|
return readFile('data/port.pl').strip()
|
||||||
|
return '7200'
|
||||||
|
|
||||||
|
|
||||||
|
def setHostPort(port):
|
||||||
|
file = getPanelDir() + '/data/port.pl'
|
||||||
|
return writeFile(file, port)
|
||||||
|
|
||||||
def isAppleSystem():
|
def isAppleSystem():
|
||||||
if getOs() == 'darwin':
|
if getOs() == 'darwin':
|
||||||
return True
|
return True
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ $('#site_search').click(function(){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
if(body.length < 10){
|
if(body.length < 10){
|
||||||
body = "<tr><td colspan='9'>当前没有站点数据</td></tr>";
|
body = "<tr><td colspan='9' style='text-align: center;'>当前没有站点数据</td></tr>";
|
||||||
// $(".dataTables_paginate").hide();
|
// $(".dataTables_paginate").hide();
|
||||||
$("#webBody").html(body);
|
$("#webBody").html(body);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,7 +77,7 @@
|
|||||||
<ul class="clearfix text-center" id='index_overview'>
|
<ul class="clearfix text-center" id='index_overview'>
|
||||||
<li class="sys-li-box col-xs-3 col-sm-3 col-md-3 col-lg-3">
|
<li class="sys-li-box col-xs-3 col-sm-3 col-md-3 col-lg-3">
|
||||||
<p class="name f15 c9">网站</p>
|
<p class="name f15 c9">网站</p>
|
||||||
<div class="val"><a class="btlink" href="/site">{{data['site_count']}}</a></div>
|
<div class="val"><a class="btlink" href="/site/index">{{data['site_count']}}</a></div>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="renderer" content="webkit">
|
<meta name="renderer" content="webkit">
|
||||||
<title>{{config['title']}}</title>
|
<title>{{data['title']}}</title>
|
||||||
<link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon" />
|
<link rel="shortcut icon" href="/static/favicon.ico" type="image/x-icon" />
|
||||||
<link href="/static/bootstrap-3.3.5/css/bootstrap.min.css?v={{config.version}}" rel="stylesheet">
|
<link href="/static/bootstrap-3.3.5/css/bootstrap.min.css?v={{config.version}}" rel="stylesheet">
|
||||||
<link href="/static/css/site.css?v={{config.version}}" rel="stylesheet">
|
<link href="/static/css/site.css?v={{config.version}}" rel="stylesheet">
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
<div class="sidebar-scroll">
|
<div class="sidebar-scroll">
|
||||||
<div class="sidebar-auto">
|
<div class="sidebar-auto">
|
||||||
<div id="task" class="task cw" onclick="messageBox();"></div>
|
<div id="task" class="task cw" onclick="messageBox();"></div>
|
||||||
<h3 class="mypcip"><span class="f14 cw">{{config['ip']}}</span></h3>
|
<h3 class="mypcip"><span class="f14 cw">{{data['ip']}}</span></h3>
|
||||||
<ul class="menu">
|
<ul class="menu">
|
||||||
<li id="memuA"><a class="menu_home" href="/">首页</a></li>
|
<li id="memuA"><a class="menu_home" href="/">首页</a></li>
|
||||||
<li id="memuAsite"><a class="menu_web" href="/site/index">网站</a></li>
|
<li id="memuAsite"><a class="menu_web" href="/site/index">网站</a></li>
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# coding:utf-8
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# MW-Linux面板
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# copyright (c) 2018-∞(https://github.com/midoks/mdserver-web) All rights reserved.
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# Author: midoks <midoks@163.com>
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
from admin.model import getOption,getSitesCount
|
||||||
|
|
||||||
|
import core.mw as mw
|
||||||
|
|
||||||
|
def getGlobalVar():
|
||||||
|
'''
|
||||||
|
获取全局变量
|
||||||
|
'''
|
||||||
|
data = {}
|
||||||
|
data['title'] = getOption('title', default='后羿面板')
|
||||||
|
data['ip'] = getOption('server_ip', default='127.0.0.1')
|
||||||
|
|
||||||
|
data['site_path'] = getOption('site_path', default=mw.getFatherDir()+'/wwwroot')
|
||||||
|
data['backup_path'] = getOption('backup_path', default=mw.getFatherDir()+'/backup')
|
||||||
|
data['admin_path'] = '/'+getOption('admin_path', default='')
|
||||||
|
data['site_count'] = getSitesCount()
|
||||||
|
data['port'] = mw.getHostPort()
|
||||||
|
|
||||||
|
# 服务器时间
|
||||||
|
sformat = 'date +"%Y-%m-%d %H:%M:%S %Z %z"'
|
||||||
|
data['systemdate'] = mw.execShell(sformat)[0].strip()
|
||||||
|
|
||||||
|
return data
|
||||||
Reference in New Issue
Block a user