修复删除CA失败问题
This commit is contained in:
parent
6f578be53e
commit
25add10b35
29
app.py
29
app.py
@ -1648,17 +1648,36 @@ def delete_ca(ca_id):
|
||||
if request.method == 'POST':
|
||||
# 删除文件
|
||||
try:
|
||||
# 删除CA证书和私钥文件
|
||||
if os.path.exists(ca['cert_path']):
|
||||
os.remove(ca['cert_path'])
|
||||
if os.path.exists(ca['key_path']):
|
||||
os.remove(ca['key_path'])
|
||||
# 删除CA目录
|
||||
|
||||
# 删除CA目录及其所有内容
|
||||
ca_dir = os.path.dirname(ca['cert_path'])
|
||||
if os.path.exists(ca_dir):
|
||||
os.rmdir(ca_dir)
|
||||
# 删除目录中的所有文件和子目录
|
||||
for filename in os.listdir(ca_dir):
|
||||
file_path = os.path.join(ca_dir, filename)
|
||||
try:
|
||||
if os.path.isfile(file_path) or os.path.islink(file_path):
|
||||
os.unlink(file_path)
|
||||
elif os.path.isdir(file_path):
|
||||
shutil.rmtree(file_path)
|
||||
except Exception as e:
|
||||
print(f'删除文件/目录失败 {file_path}. 原因: {e}')
|
||||
flash(f'删除文件/目录失败: {str(e)}', 'warning')
|
||||
|
||||
# 现在删除空目录
|
||||
try:
|
||||
os.rmdir(ca_dir)
|
||||
except OSError as e:
|
||||
print(f"删除目录失败: {e}")
|
||||
flash(f'删除目录失败: {str(e)}', 'warning')
|
||||
except OSError as e:
|
||||
print(f"文件删除错误: {e}")
|
||||
flash('删除文件时出错', 'danger')
|
||||
flash(f'删除文件时出错: {str(e)}', 'danger')
|
||||
return redirect(url_for('ca_detail', ca_id=ca_id))
|
||||
|
||||
# 删除数据库记录
|
||||
@ -1666,12 +1685,16 @@ def delete_ca(ca_id):
|
||||
if conn:
|
||||
try:
|
||||
cursor = conn.cursor()
|
||||
# 先删除CRL记录
|
||||
cursor.execute("DELETE FROM certificate_revocation_list WHERE ca_id = %s", (ca_id,))
|
||||
# 再删除CA记录
|
||||
cursor.execute("DELETE FROM certificate_authorities WHERE id = %s", (ca_id,))
|
||||
conn.commit()
|
||||
flash('CA删除成功', 'success')
|
||||
return redirect(url_for('ca_list'))
|
||||
except Error as e:
|
||||
print(f"Database error: {e}")
|
||||
conn.rollback()
|
||||
flash('删除CA记录失败', 'danger')
|
||||
return redirect(url_for('ca_detail', ca_id=ca_id))
|
||||
finally:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user