This commit is contained in:
Mr Chen
2024-11-20 16:40:06 +08:00
parent 0eed51452a
commit 8ae54e30d0
20 changed files with 109 additions and 31 deletions
+3 -2
View File
@@ -18,10 +18,11 @@ from utils.crontab import crontab as MwCrontab
import core.mw as mw import core.mw as mw
import thisdb import thisdb
blueprint = Blueprint('crontab', __name__, url_prefix='/crontab', template_folder='../../templates/default') blueprint = Blueprint('crontab', __name__, url_prefix='/crontab', template_folder='../../templates')
@blueprint.route('/index', endpoint='index') @blueprint.route('/index', endpoint='index')
def index(): def index():
return render_template('crontab.html') name = thisdb.getOption('template', default='default')
return render_template('%s/crontab.html' % name)
# 计划任务列表 # 计划任务列表
@blueprint.route('/list', endpoint='list', methods=['POST']) @blueprint.route('/list', endpoint='list', methods=['POST'])
+2 -1
View File
@@ -30,7 +30,8 @@ blueprint = Blueprint('dashboard', __name__, url_prefix='/', template_folder='..
@blueprint.route('/') @blueprint.route('/')
@panel_login_required @panel_login_required
def index(): def index():
return render_template('default/index.html') name = thisdb.getOption('template', default='default')
return render_template('%s/index.html' % name)
# 安全路径 # 安全路径
@blueprint.route('/<path>',endpoint='admin_safe_path',methods=['GET']) @blueprint.route('/<path>',endpoint='admin_safe_path',methods=['GET'])
+4 -2
View File
@@ -21,12 +21,14 @@ from werkzeug.utils import secure_filename
from admin.user_login_check import panel_login_required from admin.user_login_check import panel_login_required
import core.mw as mw import core.mw as mw
import utils.file as file import utils.file as file
import thisdb
blueprint = Blueprint('files', __name__, url_prefix='/files', template_folder='../../templates/default') blueprint = Blueprint('files', __name__, url_prefix='/files', template_folder='../../templates')
@blueprint.route('/index', endpoint='index') @blueprint.route('/index', endpoint='index')
@panel_login_required @panel_login_required
def index(): def index():
return render_template('files.html') name = thisdb.getOption('template', default='default')
return render_template('%s/files.html' % name)
# 获取文件内容 # 获取文件内容
@blueprint.route('/get_body', endpoint='get_file_body', methods=['POST']) @blueprint.route('/get_body', endpoint='get_file_body', methods=['POST'])
+4 -2
View File
@@ -17,12 +17,14 @@ from admin.user_login_check import panel_login_required
from utils.firewall import Firewall as MwFirewall from utils.firewall import Firewall as MwFirewall
import core.mw as mw import core.mw as mw
import thisdb
blueprint = Blueprint('firewall', __name__, url_prefix='/firewall', template_folder='../../templates/default') blueprint = Blueprint('firewall', __name__, url_prefix='/firewall', template_folder='../../templates')
@blueprint.route('/index', endpoint='index') @blueprint.route('/index', endpoint='index')
@panel_login_required @panel_login_required
def index(): def index():
return render_template('firewall.html') name = thisdb.getOption('template', default='default')
return render_template('%s/firewall.html' % name)
# 防火墙列表 # 防火墙列表
+2 -2
View File
@@ -23,8 +23,8 @@ blueprint = Blueprint('logs', __name__, url_prefix='/logs', template_folder='../
@blueprint.route('/index', endpoint='index') @blueprint.route('/index', endpoint='index')
@panel_login_required @panel_login_required
def index(): def index():
return render_template('default/logs.html') name = thisdb.getOption('template', default='default')
return render_template('%s/logs.html' % name)
# 日志列表 # 日志列表
@blueprint.route('/get_log_list', endpoint='get_log_list', methods=['POST']) @blueprint.route('/get_log_list', endpoint='get_log_list', methods=['POST'])
+5 -2
View File
@@ -13,8 +13,11 @@ from flask import Blueprint, render_template
from admin.user_login_check import panel_login_required from admin.user_login_check import panel_login_required
blueprint = Blueprint('monitor', __name__, url_prefix='/monitor', template_folder='../../templates/default') import thisdb
blueprint = Blueprint('monitor', __name__, url_prefix='/monitor', template_folder='../../templates')
@blueprint.route('/index', endpoint='index') @blueprint.route('/index', endpoint='index')
@panel_login_required @panel_login_required
def index(): def index():
return render_template('monitor.html') name = thisdb.getOption('template', default='default')
return render_template('%s/monitor.html' % name)
+3 -2
View File
@@ -23,11 +23,12 @@ import utils.config as utils_config
import thisdb import thisdb
blueprint = Blueprint('plugins', __name__, url_prefix='/plugins', template_folder='../../templates/default') blueprint = Blueprint('plugins', __name__, url_prefix='/plugins', template_folder='../../templates')
@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') name = thisdb.getOption('template', default='default')
return render_template('%s/plugins.html' % name)
# 初始化检查,首页提示选择安装 # 初始化检查,首页提示选择安装
@blueprint.route('/init', endpoint='init', methods=['POST']) @blueprint.route('/init', endpoint='init', methods=['POST'])
+2 -1
View File
@@ -29,7 +29,8 @@ blueprint = Blueprint('setting', __name__, url_prefix='/setting', 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('default/setting.html') name = thisdb.getOption('template', default='default')
return render_template('%s/setting.html' % name)
@blueprint.route('/get_panel_list', endpoint='get_panel_list', methods=['POST']) @blueprint.route('/get_panel_list', endpoint='get_panel_list', methods=['POST'])
@panel_login_required @panel_login_required
+1 -1
View File
@@ -18,7 +18,7 @@ from admin.user_login_check import panel_login_required
from utils.plugin import plugin as MwPlugin from utils.plugin import plugin as MwPlugin
from utils.site import sites as MwSites from utils.site import sites as MwSites
import utils.site as site
import core.mw as mw import core.mw as mw
import thisdb import thisdb
+1 -1
View File
@@ -18,7 +18,7 @@ from admin.user_login_check import panel_login_required
from utils.plugin import plugin as MwPlugin from utils.plugin import plugin as MwPlugin
from utils.site import sites as MwSites from utils.site import sites as MwSites
import utils.site as site
import core.mw as mw import core.mw as mw
import thisdb import thisdb
+1 -1
View File
@@ -18,7 +18,7 @@ from admin.user_login_check import panel_login_required
from utils.plugin import plugin as MwPlugin from utils.plugin import plugin as MwPlugin
from utils.site import sites as MwSites from utils.site import sites as MwSites
import utils.site as site
import core.mw as mw import core.mw as mw
import thisdb import thisdb
+1 -1
View File
@@ -18,7 +18,7 @@ from admin.user_login_check import panel_login_required
from utils.plugin import plugin as MwPlugin from utils.plugin import plugin as MwPlugin
from utils.site import sites as MwSites from utils.site import sites as MwSites
import utils.site as site
import core.mw as mw import core.mw as mw
import thisdb import thisdb
+1 -1
View File
@@ -18,7 +18,7 @@ from admin.user_login_check import panel_login_required
from utils.plugin import plugin as MwPlugin from utils.plugin import plugin as MwPlugin
from utils.site import sites as MwSites from utils.site import sites as MwSites
import utils.site as site
import core.mw as mw import core.mw as mw
import thisdb import thisdb
+8 -1
View File
@@ -18,7 +18,6 @@ from admin.user_login_check import panel_login_required
from utils.plugin import plugin as MwPlugin from utils.plugin import plugin as MwPlugin
from utils.site import sites as MwSites from utils.site import sites as MwSites
import utils.site as site
import core.mw as mw import core.mw as mw
import thisdb import thisdb
@@ -136,6 +135,13 @@ def get_site_php_version():
siteName = request.form.get('siteName', '') siteName = request.form.get('siteName', '')
return MwSites.instance().getSitePhpVersion(siteName) return MwSites.instance().getSitePhpVersion(siteName)
# 获取站点PHP版本
@blueprint.route('/get_site_domains', endpoint='get_site_domains',methods=['POST'])
@panel_login_required
def get_site_domains():
site_id = request.form.get('id', '')
data = thisdb.getSitesDomainById(site_id)
return mw.returnData(True, 'OK', data)
# 设置站点PHP版本 # 设置站点PHP版本
@blueprint.route('/set_php_version', endpoint='set_php_version',methods=['POST']) @blueprint.route('/set_php_version', endpoint='set_php_version',methods=['POST'])
@@ -287,3 +293,4 @@ def set_default_site():
return MwSites.instance().setDefaultSite(name) return MwSites.instance().setDefaultSite(name)
+1 -1
View File
@@ -17,7 +17,7 @@ from admin.user_login_check import panel_login_required
from utils.plugin import plugin as MwPlugin from utils.plugin import plugin as MwPlugin
from utils.site import sites as MwSites from utils.site import sites as MwSites
import utils.site as site
import core.mw as mw import core.mw as mw
import thisdb import thisdb
-1
View File
@@ -18,7 +18,6 @@ from admin.user_login_check import panel_login_required
from utils.plugin import plugin as MwPlugin from utils.plugin import plugin as MwPlugin
from utils.site import sites as MwSites from utils.site import sites as MwSites
import utils.site as site
import core.mw as mw import core.mw as mw
import thisdb import thisdb
+7 -2
View File
@@ -18,14 +18,13 @@ from admin.user_login_check import panel_login_required
from utils.plugin import plugin as MwPlugin from utils.plugin import plugin as MwPlugin
from utils.site import sites as MwSites from utils.site import sites as MwSites
import utils.site as site
import core.mw as mw import core.mw as mw
import thisdb import thisdb
from .site import blueprint from .site import blueprint
# 删除代理配置 # 获取证书信息
@blueprint.route('/get_ssl', endpoint='get_ssl', methods=['POST']) @blueprint.route('/get_ssl', endpoint='get_ssl', methods=['POST'])
@panel_login_required @panel_login_required
def get_ssl(): def get_ssl():
@@ -33,6 +32,12 @@ def get_ssl():
ssl_type = request.form.get('ssl_type', '') ssl_type = request.form.get('ssl_type', '')
return MwSites.instance().getSsl(site_name, ssl_type) return MwSites.instance().getSsl(site_name, ssl_type)
# 获取证书列表
@blueprint.route('/get_cert_list', endpoint='get_cert_list', methods=['GET','POST'])
@panel_login_required
def get_cert_list():
return MwSites.instance().getCertList()
+4 -1
View File
@@ -13,8 +13,11 @@ from flask import Blueprint, render_template
from admin.user_login_check import panel_login_required from admin.user_login_check import panel_login_required
import thisdb
blueprint = Blueprint('soft', __name__, url_prefix='/soft', template_folder='../../templates') blueprint = Blueprint('soft', __name__, url_prefix='/soft', template_folder='../../templates')
@blueprint.route('/index', endpoint='index') @blueprint.route('/index', endpoint='index')
@panel_login_required @panel_login_required
def index(): def index():
return render_template('default/soft.html') name = thisdb.getOption('template', default='default')
return render_template('%s/soft.html' % name)
+16
View File
@@ -19,6 +19,22 @@ def getSitesCount():
def getSitesById(site_id): def getSitesById(site_id):
return mw.M('sites').field(__FIELD).where("id=?", (site_id,)).find() return mw.M('sites').field(__FIELD).where("id=?", (site_id,)).find()
def getSitesByName(site_name):
return mw.M('sites').field(__FIELD).where("name=?", (site_name,)).find()
def getSitesDomainById(site_id):
data = {}
domains = mw.M('domain').where('pid=?', (site_id,)).field('name,id').select()
binding = mw.M('binding').where('pid=?', (site_id,)).field('domain,id').select()
for b in binding:
t = {}
t['name'] = b['domain']
t['id'] = b['id']
domains.append(t)
data['domains'] = domains
data['email'] = mw.M('users').getField('email')
return data
def addSites(name, path): def addSites(name, path):
now_time = mw.getDateFromNow() now_time = mw.getDateFromNow()
insert_data = { insert_data = {
+43 -6
View File
@@ -1318,8 +1318,8 @@ location ^~ {from} {\n\
to_https = self.isToHttps(site_name) to_https = self.isToHttps(site_name)
sid = mw.M('sites').where("name=?", (site_name,)).getField('id') info = thisdb.getSitesByName(site_name)
domains = mw.M('domain').where("pid=?", (sid,)).field('name').select() domains = mw.M('domain').where("pid=?", (info['id'],)).field('name').select()
csr_path = path + '/fullchain.pem' # 生成证书路径 csr_path = path + '/fullchain.pem' # 生成证书路径
key_path = path + '/privkey.pem' # 密钥文件路径 key_path = path + '/privkey.pem' # 密钥文件路径
@@ -1330,11 +1330,19 @@ location ^~ {from} {\n\
key_path = self.sslLetsDir + '/' + site_name + '/privkey.pem' # 密钥文件路径 key_path = self.sslLetsDir + '/' + site_name + '/privkey.pem' # 密钥文件路径
elif ssl_type == 'acme': elif ssl_type == 'acme':
acme_dir = mw.getAcmeDomainDir(site_name) acme_dir = mw.getAcmeDomainDir(site_name)
csr_path = acme_dir + '/fullchain.cer' # 生成证书路径 csr_path = acme_dir + '/fullchain.cer' # ACME生成证书路径
key_path = acme_dir + '/' + site_name + '.key' # 密钥文件路径 key_path = acme_dir + '/' + site_name + '.key' # ACME密钥文件路径
if os.path.exists(key_path):
key = mw.readFile(key_path)
else:
key = ''
if os.path.exists(csr_path):
csr = mw.readFile(csr_path)
else:
csr = ''
key = mw.readFile(key_path)
csr = mw.readFile(csr_path)
cert_data = mw.getCertName(csr_path) cert_data = mw.getCertName(csr_path)
data = { data = {
'status': status, 'status': status,
@@ -1347,6 +1355,35 @@ location ^~ {from} {\n\
} }
return mw.returnData(True, 'OK', data) return mw.returnData(True, 'OK', data)
def getCertList(self):
try:
vpath = self.sslDir
if not os.path.exists(vpath):
os.system('mkdir -p ' + vpath)
data = []
for d in os.listdir(vpath):
# keyPath = self.sslDir + siteName + '/privkey.pem'
# certPath = self.sslDir + siteName + '/fullchain.pem'
keyPath = vpath + '/' + d + '/privkey.pem'
certPath = vpath + '/' + d + '/fullchain.pem'
if os.path.exists(keyPath) and os.path.exists(certPath):
self.saveCert(keyPath, certPath)
mpath = vpath + '/' + d + '/info.json'
if not os.path.exists(mpath):
continue
tmp = mw.readFile(mpath)
if not tmp:
continue
tmp1 = json.loads(tmp)
data.append(tmp1)
return mw.returnData(True, 'OK', data)
except:
return mw.returnData(True, 'OK', [])
def setPhpVersion(self, siteName, version): def setPhpVersion(self, siteName, version):
# nginx # nginx