From 8ed2f6848b93d87b66e81f4e4ada2328a5a4e654 Mon Sep 17 00:00:00 2001 From: Mr Chen Date: Fri, 8 Nov 2024 19:26:16 +0800 Subject: [PATCH] update --- web/admin/site/__init__.py | 42 ++++++++++++++ web/static/app/site.js | 2 +- web/utils/site.py | 111 +++++++++++++++++++++++++++++++++++++ 3 files changed, 154 insertions(+), 1 deletion(-) diff --git a/web/admin/site/__init__.py b/web/admin/site/__init__.py index 9695c359c..060f6dede 100644 --- a/web/admin/site/__init__.py +++ b/web/admin/site/__init__.py @@ -76,6 +76,48 @@ def get_root_dir(): data['dir'] = mw.getWwwDir() return data +# 获取站点默认文档 +@blueprint.route('/get_index', endpoint='get_index',methods=['POST']) +@panel_login_required +def get_index(): + site_id = request.form.get('id', '') + data = {} + index = MwSites.instance().getIndex(site_id) + data['index'] = index + return data + +# 获取站点默认文档 +@blueprint.route('/set_index', endpoint='set_index',methods=['POST']) +@panel_login_required +def set_index(): + site_id = request.form.get('id', '') + index = request.form.get('index', '') + return MwSites.instance().setIndex(site_id, index) + +# 获取站点默认文档 +@blueprint.route('/get_limit_net', endpoint='get_limit_net',methods=['POST']) +@panel_login_required +def get_limit_net(): + site_id = request.form.get('id', '') + return MwSites.instance().getLimitNet(site_id) + +# 获取站点默认文档 +@blueprint.route('/set_limit_net', endpoint='set_limit_net',methods=['POST']) +@panel_login_required +def set_limit_net(): + site_id = request.form.get('id', '') + perserver = request.form.get('perserver', '') + perip = request.form.get('perip', '') + limit_rate = request.form.get('limit_rate', '') + return MwSites.instance().setLimitNet(site_id, perserver,perip,limit_rate) + +# 获取站点默认文档 +@blueprint.route('/close_limit_net', endpoint='close_limit_net',methods=['POST']) +@panel_login_required +def close_limit_net(): + site_id = request.form.get('id', '') + return MwSites.instance().closeLimitNet(site_id) + # 获取站点配置 @blueprint.route('/get_host_conf', endpoint='get_host_conf',methods=['POST']) @panel_login_required diff --git a/web/static/app/site.js b/web/static/app/site.js index cf7e05ae7..1284891a8 100755 --- a/web/static/app/site.js +++ b/web/static/app/site.js @@ -1246,7 +1246,7 @@ function saveLimitNet(id, type){ if(isChecked == undefined || type == 1 ){ var data = 'id='+id+'&perserver='+$("input[name='perserver']").val()+'&perip='+$("input[name='perip']").val()+'&limit_rate='+$("input[name='limit_rate']").val(); var loadT = layer.msg(lan.public.config,{icon:16,time:10000}) - $.post('/site/save_limit_net',data,function(rdata){ + $.post('/site/set_limit_net',data,function(rdata){ layer.close(loadT); limitNet(id); layer.msg(rdata.msg,{icon:rdata.status?1:2}); diff --git a/web/utils/site.py b/web/utils/site.py index 4636a6381..c1d05a092 100644 --- a/web/utils/site.py +++ b/web/utils/site.py @@ -115,6 +115,7 @@ class sites(object): def getIndexConf(self): return mw.getServerDir() + '/openresty/nginx/conf/nginx.conf' + # 路径处理 def getPath(self, path): if path[-1] == '/': @@ -297,6 +298,116 @@ class sites(object): data['phpversion'] = def_pver return data + def getIndex(self, site_id): + info = thisdb.getSitesById(site_id) + file = self.getHostConf(info['name']) + conf = mw.readFile(file) + rep = r"\s+index\s+(.+);" + tmp = re.search(rep, conf).groups() + return tmp[0].replace(' ', ',') + + def setIndex(self, site_id, index): + if index.find('.') == -1: + return mw.returnData(False, '默认文档格式不正确,例:index.html') + + index = index.replace(' ', '') + index = index.replace(',,', ',') + + if len(index) < 3: + return mw.returnData(False, '默认文档不能为空!') + + info = thisdb.getSitesById(site_id) + siteName = info['name'] + index_l = index.replace(",", " ") + file = self.getHostConf(siteName) + conf = mw.readFile(file) + if conf: + rep = r"\s+index\s+.+;" + conf = re.sub(rep, "\n\tindex " + index_l + ";", conf) + mw.writeFile(file, conf) + + mw.writeLog('网站管理', '站点[{1}]设置{2}成功', (siteName, index_l)) + return mw.returnJson(True, '设置成功!') + + def getLimitNet(self, site_id): + info = thisdb.getSitesById(site_id) + siteName = info['name'] + filename = self.getHostConf(siteName) + # 站点总并发 + data = {} + conf = mw.readFile(filename) + try: + rep = r"\s+limit_conn\s+perserver\s+([0-9]+);" + tmp = re.search(rep, conf).groups() + data['perserver'] = int(tmp[0]) + + # IP并发限制 + rep = r"\s+limit_conn\s+perip\s+([0-9]+);" + tmp = re.search(rep, conf).groups() + data['perip'] = int(tmp[0]) + + # 请求并发限制 + rep = r"\s+limit_rate\s+([0-9]+)\w+;" + tmp = re.search(rep, conf).groups() + data['limit_rate'] = int(tmp[0]) + except: + data['perserver'] = 0 + data['perip'] = 0 + data['limit_rate'] = 0 + return data + + def setLimitNet(self, site_id, perserver, perip, limit_rate): + str_perserver = 'limit_conn perserver ' + perserver + ';' + str_perip = 'limit_conn perip ' + perip + ';' + str_limit_rate = 'limit_rate ' + limit_rate + 'k;' + + info = thisdb.getSitesById(site_id) + siteName = info['name'] + + filename = self.getHostConf(siteName) + conf = mw.readFile(filename) + if(conf.find('limit_conn perserver') != -1): + # 替换总并发 + rep = r"limit_conn\s+perserver\s+([0-9]+);" + conf = re.sub(rep, str_perserver, conf) + + # 替换IP并发限制 + rep = r"limit_conn\s+perip\s+([0-9]+);" + conf = re.sub(rep, str_perip, conf) + + # 替换请求流量限制 + rep = r"limit_rate\s+([0-9]+)\w+;" + conf = re.sub(rep, str_limit_rate, conf) + else: + conf = conf.replace('#error_page 404/404.html;', "#error_page 404/404.html;\n " + + str_perserver + "\n " + str_perip + "\n " + str_limit_rate) + + mw.writeFile(filename, conf) + mw.restartWeb() + mw.writeLog('网站管理', '网站[{1}]流量限制已开启!', (siteName,)) + return mw.returnData(True, '设置成功!') + + def closeLimitNet(self, site_id): + info = thisdb.getSitesById(site_id) + siteName = info['name'] + + filename = self.getHostConf(siteName) + conf = mw.readFile(filename) + # 清理总并发 + rep = r"\s+limit_conn\s+perserver\s+([0-9]+);" + conf = re.sub(rep, '', conf) + + # 清理IP并发限制 + rep = r"\s+limit_conn\s+perip\s+([0-9]+);" + conf = re.sub(rep, '', conf) + + # 清理请求流量限制 + rep = r"\s+limit_rate\s+([0-9]+)\w+;" + conf = re.sub(rep, '', conf) + mw.writeFile(filename, conf) + mw.restartWeb() + mw.writeLog('网站管理', '网站[{1}]流量限制已关闭!', (siteName,)) + return mw.returnData(True, '已关闭流量限制!') def setPhpVersion(self, siteName, version): # nginx