From f16dfd6819c2f24c2c01e5b0123220b9e0063ccc Mon Sep 17 00:00:00 2001 From: Mr Chen Date: Tue, 10 Dec 2024 14:22:59 +0800 Subject: [PATCH] update --- web/admin/site/ssl.py | 16 +++++++++++++++- web/utils/site.py | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/web/admin/site/ssl.py b/web/admin/site/ssl.py index 5533ae972..17e3895c0 100644 --- a/web/admin/site/ssl.py +++ b/web/admin/site/ssl.py @@ -89,13 +89,27 @@ def set_cert_to_site(): cert_name = request.form.get('certName', '') return MwSites.instance().setCertToSite(site_name, cert_name) - +# 删除证书 @blueprint.route('/remove_cert', endpoint='remove_cert', methods=['GET','POST']) @panel_login_required def remove_cert(): cert_name = request.form.get('certName', '') return MwSites.instance().removeCert(cert_name) +# 强制开启HTTPS +@blueprint.route('/http_to_https', endpoint='http_to_https', methods=['GET','POST']) +@panel_login_required +def http_to_https(): + site_name = request.form.get('siteName', '') + return MwSites.instance().httpToHttps(site_name) + +# 强制关闭HTTPS +@blueprint.route('/close_to_https', endpoint='close_to_https', methods=['GET','POST']) +@panel_login_required +def close_to_https(): + site_name = request.form.get('siteName', '') + return MwSites.instance().closeToHttps(site_name) + diff --git a/web/utils/site.py b/web/utils/site.py index c208c0029..3be204b73 100644 --- a/web/utils/site.py +++ b/web/utils/site.py @@ -1129,6 +1129,40 @@ error_page 497 https://$host$request_uri;""" % (certPath, keyPath, http3Header) data['phpversion'] = def_pver return data + def httpToHttps(self, site_name): + file = self.getHostConf(site_name) + conf = mw.readFile(file) + if not conf: + return mw.returnData(False, '站点[{}]配置异常!'.format(site_name)) + + if conf.find('ssl_certificate') == -1: + return mw.returnData(False, '当前未开启SSL') + to = "#error_page 404/404.html;\n\ +#HTTP_TO_HTTPS_START\n\ +if ($server_port !~ 443){\n\ + rewrite ^(/.*)$ https://$host$1 permanent;\n\ +}\n\ +#HTTP_TO_HTTPS_END" + conf = conf.replace('#error_page 404/404.html;', to) + mw.writeFile(file, conf) + + mw.restartWeb() + return mw.returnData(True, '设置成功!') + + def closeToHttps(self, site_name): + file = self.getHostConf(site_name) + conf = mw.readFile(file) + if not conf: + return mw.returnData(False, '站点[{}]配置异常!'.format(site_name)) + rep = r"\n\s*#HTTP_TO_HTTPS_START(.|\n){1,300}#HTTP_TO_HTTPS_END" + conf = re.sub(rep, '', conf) + rep = r"\s+if.+server_port.+\n.+\n\s+\s*}" + conf = re.sub(rep, '', conf) + mw.writeFile(file, conf) + + mw.restartWeb() + return mw.returnData(True, '关闭HTTPS跳转成功!') + def getIndex(self, site_id): info = thisdb.getSitesById(site_id) file = self.getHostConf(info['name']) @@ -1158,7 +1192,7 @@ error_page 497 https://$host$request_uri;""" % (certPath, keyPath, http3Header) mw.writeFile(file, conf) mw.writeLog('网站管理', '站点[{1}]设置{2}成功', (siteName, index_l)) - return mw.returnJson(True, '设置成功!') + return mw.returnData(True, '设置成功!') def getLimitNet(self, site_id): info = thisdb.getSitesById(site_id)