重构Cookie监控系统:添加Web管理后台、Vue3前端界面、Cookie Cloud参数支持、5秒倒计时自动刷新、专业UI配色
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
"""
|
||||
Cookie管理路由
|
||||
"""
|
||||
from flask import Blueprint, request, jsonify
|
||||
from models.database import db, Cookie
|
||||
from datetime import datetime
|
||||
|
||||
cookie_bp = Blueprint('cookies', __name__)
|
||||
|
||||
|
||||
@cookie_bp.route('/websites/<int:website_id>', methods=['GET'])
|
||||
def get_cookies(website_id):
|
||||
"""获取网站的cookie"""
|
||||
cookies = Cookie.query.filter_by(website_id=website_id).all()
|
||||
return jsonify([cookie.to_dict() for cookie in cookies])
|
||||
|
||||
|
||||
@cookie_bp.route('/websites/<int:website_id>', methods=['POST'])
|
||||
def create_cookie(website_id):
|
||||
"""创建cookie"""
|
||||
data = request.json
|
||||
|
||||
cookie = Cookie(
|
||||
website_id=website_id,
|
||||
name=data.get('name'),
|
||||
value=data.get('value'),
|
||||
domain=data.get('domain'),
|
||||
path=data.get('path', '/'),
|
||||
expiry=datetime.fromisoformat(data.get('expiry')) if data.get('expiry') else None,
|
||||
secure=data.get('secure', 0),
|
||||
http_only=data.get('http_only', 0)
|
||||
)
|
||||
|
||||
db.session.add(cookie)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify(cookie.to_dict()), 201
|
||||
|
||||
|
||||
@cookie_bp.route('/<int:cookie_id>', methods=['PUT'])
|
||||
def update_cookie(cookie_id):
|
||||
"""更新cookie"""
|
||||
cookie = Cookie.query.get_or_404(cookie_id)
|
||||
data = request.json
|
||||
|
||||
cookie.name = data.get('name', cookie.name)
|
||||
cookie.value = data.get('value', cookie.value)
|
||||
cookie.domain = data.get('domain', cookie.domain)
|
||||
cookie.path = data.get('path', cookie.path)
|
||||
cookie.expiry = datetime.fromisoformat(data.get('expiry')) if data.get('expiry') else cookie.expiry
|
||||
cookie.secure = data.get('secure', cookie.secure)
|
||||
cookie.http_only = data.get('http_only', cookie.http_only)
|
||||
|
||||
db.session.commit()
|
||||
|
||||
return jsonify(cookie.to_dict())
|
||||
|
||||
|
||||
@cookie_bp.route('/<int:cookie_id>', methods=['DELETE'])
|
||||
def delete_cookie(cookie_id):
|
||||
"""删除cookie"""
|
||||
cookie = Cookie.query.get_or_404(cookie_id)
|
||||
|
||||
db.session.delete(cookie)
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({'message': 'Cookie已删除'})
|
||||
|
||||
|
||||
@cookie_bp.route('/websites/<int:website_id>', methods=['PUT'])
|
||||
def batch_update_cookies(website_id):
|
||||
"""批量更新网站的cookie"""
|
||||
data = request.json
|
||||
cookies_data = data.get('cookies', [])
|
||||
|
||||
# 删除该网站的所有现有cookie
|
||||
Cookie.query.filter_by(website_id=website_id).delete()
|
||||
|
||||
# 添加新的cookie
|
||||
for cookie_data in cookies_data:
|
||||
cookie = Cookie(
|
||||
website_id=website_id,
|
||||
name=cookie_data.get('name'),
|
||||
value=cookie_data.get('value'),
|
||||
domain=cookie_data.get('domain'),
|
||||
path=cookie_data.get('path', '/'),
|
||||
expiry=datetime.fromisoformat(cookie_data.get('expiry')) if cookie_data.get('expiry') else None,
|
||||
secure=cookie_data.get('secure', 0),
|
||||
http_only=cookie_data.get('http_only', 0)
|
||||
)
|
||||
db.session.add(cookie)
|
||||
|
||||
db.session.commit()
|
||||
|
||||
return jsonify({'message': 'Cookies已批量更新'})
|
||||
|
||||
|
||||
# 为Cookie模型添加to_dict方法
|
||||
def cookie_to_dict(self):
|
||||
return {
|
||||
'id': self.id,
|
||||
'website_id': self.website_id,
|
||||
'name': self.name,
|
||||
'value': self.value,
|
||||
'domain': self.domain,
|
||||
'path': self.path,
|
||||
'expiry': self.expiry.isoformat() if self.expiry else None,
|
||||
'secure': self.secure,
|
||||
'http_only': self.http_only,
|
||||
'created_at': self.created_at.isoformat() if self.created_at else None,
|
||||
'updated_at': self.updated_at.isoformat() if self.updated_at else None
|
||||
}
|
||||
|
||||
Cookie.to_dict = cookie_to_dict
|
||||
Reference in New Issue
Block a user