修复删除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':
|
if request.method == 'POST':
|
||||||
# 删除文件
|
# 删除文件
|
||||||
try:
|
try:
|
||||||
|
# 删除CA证书和私钥文件
|
||||||
if os.path.exists(ca['cert_path']):
|
if os.path.exists(ca['cert_path']):
|
||||||
os.remove(ca['cert_path'])
|
os.remove(ca['cert_path'])
|
||||||
if os.path.exists(ca['key_path']):
|
if os.path.exists(ca['key_path']):
|
||||||
os.remove(ca['key_path'])
|
os.remove(ca['key_path'])
|
||||||
# 删除CA目录
|
|
||||||
|
# 删除CA目录及其所有内容
|
||||||
ca_dir = os.path.dirname(ca['cert_path'])
|
ca_dir = os.path.dirname(ca['cert_path'])
|
||||||
if os.path.exists(ca_dir):
|
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:
|
except OSError as e:
|
||||||
print(f"文件删除错误: {e}")
|
print(f"文件删除错误: {e}")
|
||||||
flash('删除文件时出错', 'danger')
|
flash(f'删除文件时出错: {str(e)}', 'danger')
|
||||||
return redirect(url_for('ca_detail', ca_id=ca_id))
|
return redirect(url_for('ca_detail', ca_id=ca_id))
|
||||||
|
|
||||||
# 删除数据库记录
|
# 删除数据库记录
|
||||||
@ -1666,12 +1685,16 @@ def delete_ca(ca_id):
|
|||||||
if conn:
|
if conn:
|
||||||
try:
|
try:
|
||||||
cursor = conn.cursor()
|
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,))
|
cursor.execute("DELETE FROM certificate_authorities WHERE id = %s", (ca_id,))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
flash('CA删除成功', 'success')
|
flash('CA删除成功', 'success')
|
||||||
return redirect(url_for('ca_list'))
|
return redirect(url_for('ca_list'))
|
||||||
except Error as e:
|
except Error as e:
|
||||||
print(f"Database error: {e}")
|
print(f"Database error: {e}")
|
||||||
|
conn.rollback()
|
||||||
flash('删除CA记录失败', 'danger')
|
flash('删除CA记录失败', 'danger')
|
||||||
return redirect(url_for('ca_detail', ca_id=ca_id))
|
return redirect(url_for('ca_detail', ca_id=ca_id))
|
||||||
finally:
|
finally:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user