mirror of
https://github.com/midoks/mdserver-web.git
synced 2026-10-09 20:29:26 +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 . -type d -name "*.pyc" | xargs rm -rf
|
||||
@@ -29,6 +29,7 @@ from admin import setup
|
||||
|
||||
import core.mw as mw
|
||||
import setting
|
||||
import utils.config as utils_config
|
||||
|
||||
root_dir = mw.getRunDir()
|
||||
|
||||
@@ -114,13 +115,13 @@ def inject_global_variables():
|
||||
if mw.isDebugMode():
|
||||
ver = ver + str(time.time())
|
||||
|
||||
# print(ver)
|
||||
data = utils_config.getGlobalVar()
|
||||
config = {
|
||||
'version': ver,
|
||||
'title' : '面板',
|
||||
'ip' : '127.0.0.1'
|
||||
}
|
||||
return dict(config=config)
|
||||
return dict(config=config, data=data)
|
||||
|
||||
|
||||
# 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.route('/index', endpoint='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.route('/index', endpoint='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.route('/index', endpoint='index')
|
||||
def index():
|
||||
return render_template('crontab.html', data={})
|
||||
return render_template('crontab.html')
|
||||
|
||||
# 插件列表
|
||||
@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.route('/')
|
||||
def index():
|
||||
return render_template('default/index.html', data = {})
|
||||
return render_template('default/index.html')
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------------
|
||||
@@ -26,7 +26,7 @@ def index():
|
||||
|
||||
@blueprint.route('/login')
|
||||
def login():
|
||||
return render_template('default/login.html', data = {})
|
||||
return render_template('default/login.html')
|
||||
|
||||
# 检查是否登录
|
||||
@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.route('/index', endpoint='index')
|
||||
def index():
|
||||
return render_template('files.html', data={})
|
||||
return render_template('files.html')
|
||||
|
||||
# 获取文件内容
|
||||
@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.route('/index', endpoint='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.route('/index', endpoint='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 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="添加时间")
|
||||
|
||||
|
||||
from .initdb import *
|
||||
from .logs import addLog
|
||||
from .option import getOption,getOptionByJson,setOption
|
||||
from .sites import getSitesCount
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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')
|
||||
@panel_login_required
|
||||
def index():
|
||||
return render_template('plugins.html', data={})
|
||||
return render_template('plugins.html')
|
||||
|
||||
# 初始化检查,首页提示选择安装
|
||||
@blueprint.route('/init', endpoint='init', methods=['POST'])
|
||||
|
||||
@@ -45,4 +45,16 @@ def init_option():
|
||||
|
||||
# 首页展示初始化
|
||||
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
|
||||
@@ -10,19 +10,49 @@
|
||||
|
||||
|
||||
from flask import Blueprint, render_template
|
||||
from flask import request
|
||||
|
||||
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.route('/index', endpoint='index')
|
||||
def index():
|
||||
return render_template('site.html', data={})
|
||||
return render_template('site.html')
|
||||
|
||||
# 插件列表
|
||||
@blueprint.route('/list', endpoint='list', methods=['GET','POST'])
|
||||
def list():
|
||||
pg = MwPlugin.instance()
|
||||
# print(pg.getList())
|
||||
return pg.getList()
|
||||
p = request.form.get('p', '1')
|
||||
limit = request.form.get('limit', '10')
|
||||
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'])
|
||||
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.route('/index', endpoint='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 utils.system as sys
|
||||
import admin.model.option as option
|
||||
|
||||
blueprint = Blueprint('system', __name__, url_prefix='/system', template_folder='../../templates')
|
||||
|
||||
@@ -102,7 +103,52 @@ def get_network_io():
|
||||
def set_control():
|
||||
stype = request.form.get('type', '')
|
||||
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
|
||||
|
||||
blueprint = Blueprint('task', __name__, url_prefix='/task', template_folder='../../templates/default')
|
||||
|
||||
|
||||
@blueprint.route('/count', endpoint='task_count')
|
||||
def task_count():
|
||||
return "0"
|
||||
@@ -14,6 +14,6 @@ def panel_login_required(func):
|
||||
|
||||
@wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
print('panel_login_required', args, kwargs)
|
||||
# print('panel_login_required', args, kwargs)
|
||||
return func(*args, **kwargs)
|
||||
return wrapper
|
||||
@@ -421,6 +421,17 @@ def getPageObject(args, result='1,2,3,4,5,8'):
|
||||
|
||||
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():
|
||||
if getOs() == 'darwin':
|
||||
return True
|
||||
|
||||
@@ -122,7 +122,7 @@ $('#site_search').click(function(){
|
||||
});
|
||||
}
|
||||
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();
|
||||
$("#webBody").html(body);
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
<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">
|
||||
<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>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<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 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">
|
||||
@@ -37,7 +37,7 @@
|
||||
<div class="sidebar-scroll">
|
||||
<div class="sidebar-auto">
|
||||
<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">
|
||||
<li id="memuA"><a class="menu_home" href="/">首页</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