Files
autoclip/backend/utils/crypto.py
Kris Ka 92c2e8ede7 修复WebSocket进度更新和前端状态自动更新问题
- 修复WebSocketNotificationService.send_processing_progress方法参数不匹配问题
- 修复前端RealTimeStatus组件WebSocket消息处理逻辑
- 修复Celery Worker队列配置,确保任务正确路由到processing队列
- 修复Celery应用导入冲突,统一使用正确的celery_app配置
- 添加实时项目状态更新功能,前端无需手动刷新即可看到处理进度
- 完善系统启动脚本,修复PYTHONPATH未绑定变量错误
- 优化流水线处理逻辑,确保所有6个步骤正常执行
- 添加完整的项目文档和启动指南

测试结果:
- WebSocket进度更新正常工作(16%, 33%, 100%)
- 流水线处理完全正常(6个步骤全部成功)
- 前端状态自动更新正常
- 项目状态正确同步到数据库
2025-09-08 17:21:31 +08:00

53 lines
1.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""
加密工具
用于加密存储敏感信息如cookies
"""
import os
import base64
from cryptography.fernet import Fernet
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC
import logging
logger = logging.getLogger(__name__)
# 获取加密密钥
def get_encryption_key():
"""获取加密密钥"""
# 从环境变量获取密钥,如果没有则生成一个
key = os.getenv('ENCRYPTION_KEY')
if not key:
# 生成新密钥
key = Fernet.generate_key()
logger.warning("ENCRYPTION_KEY环境变量未设置使用临时密钥。请设置环境变量以保持数据安全。")
if isinstance(key, str):
key = key.encode()
return key
def encrypt_data(data: str) -> str:
"""加密数据"""
try:
key = get_encryption_key()
f = Fernet(key)
encrypted_data = f.encrypt(data.encode())
return base64.b64encode(encrypted_data).decode()
except Exception as e:
logger.error(f"加密数据失败: {str(e)}")
raise
def decrypt_data(encrypted_data: str) -> str:
"""解密数据"""
try:
key = get_encryption_key()
f = Fernet(key)
decoded_data = base64.b64decode(encrypted_data.encode())
decrypted_data = f.decrypt(decoded_data)
return decrypted_data.decode()
except Exception as e:
logger.error(f"解密数据失败: {str(e)}")
raise