diff --git a/web/admin/site/ssl.py b/web/admin/site/ssl.py index 15b6a129d..16378177e 100644 --- a/web/admin/site/ssl.py +++ b/web/admin/site/ssl.py @@ -32,6 +32,15 @@ def get_ssl(): ssl_type = request.form.get('ssl_type', '') return MwSites.instance().getSsl(site_name, ssl_type) +# 删除证书 +@blueprint.route('/delete_ssl', endpoint='delete_ssl', methods=['POST']) +@panel_login_required +def delete_ssl(): + site_name = request.form.get('site_name', '') + ssl_type = request.form.get('ssl_type', '') + return MwSites.instance().deleteSsl(site_name, ssl_type) + + # 获取证书列表 @blueprint.route('/get_cert_list', endpoint='get_cert_list', methods=['GET','POST']) @panel_login_required diff --git a/web/utils/site.py b/web/utils/site.py index 1e9265b11..d6a683ffb 100644 --- a/web/utils/site.py +++ b/web/utils/site.py @@ -1750,8 +1750,39 @@ location ^~ {from} {\n\ mw.writeFile(log_file, msg+"\n", "wb+") return True - def createAcmeMultiDomin(self): - pass + def deleteSsl(self,site_name,ssl_type): + path = self.sslDir + '/' + site_name + csr_path = path + '/fullchain.pem' + + file = self.getHostConf(site_name) + content = mw.readFile(file) + key_text = 'ssl_certificate' + status = True + if content.find(key_text) == -1: + status = False + + if ssl_type == 'now': + if status: + return mw.returnData(False, '使用中,先关闭再删除') + if os.path.exists(path): + mw.execShell('rm -rf ' + path) + else: + return mw.returnData(False, '还未申请!') + elif ssl_type == 'lets': + ssl_lets_dir = self.sslLetsDir + '/' + site_name + csr_lets_path = ssl_lets_dir + '/fullchain.pem' # 生成证书路径 + if mw.md5(mw.readFile(csr_lets_path)) == mw.md5(mw.readFile(csr_path)): + return mw.returnData(False, '使用中,先关闭再删除') + mw.execShell('rm -rf ' + ssl_lets_dir) + elif ssl_type == 'acme': + ssl_acme_dir = mw.getAcmeDomainDir(site_name) + csr_acme_path = ssl_acme_dir + '/fullchain.cer' # 生成证书路径 + if mw.md5(mw.readFile(csr_acme_path)) == mw.md5(mw.readFile(csr_path)): + return mw.returnData(False, '使用中,先关闭再删除') + mw.execShell('rm -rf ' + ssl_acme_dir) + + mw.restartWeb() + return mw.returnData(True, '删除成功') def createAcmeFile(self, site_name, domains, email, force, renew):