This commit is contained in:
Alex Yang
2026-03-30 01:04:46 +08:00
parent 050aa421b1
commit f627244b8f
5978 changed files with 1502187 additions and 2947 deletions
+96
View File
@@ -1280,6 +1280,96 @@ async function handleAddBlacklist(event) {
}
}
// 处理一键更新所有黑名单
async function handleUpdateAllBlacklists() {
try {
// 显示通知
showNotification('开始更新所有黑名单...', 'info');
// 获取当前所有黑名单
const response = await fetch('/api/shield/blacklists');
if (!response.ok) {
throw new Error(`获取黑名单失败: ${response.status}`);
}
const blacklists = await response.json();
// 确保blacklists是数组
const blacklistArray = Array.isArray(blacklists) ? blacklists : [];
if (blacklistArray.length === 0) {
showNotification('暂无黑名单可更新', 'info');
return;
}
// 更新所有黑名单的最后更新时间
const updatedBlacklists = blacklistArray.map(blacklist => ({
Name: blacklist.name,
URL: blacklist.url,
Enabled: blacklist.enabled,
LastUpdateTime: new Date().toISOString()
}));
// 显示所有黑名单的加载状态
blacklistArray.forEach(blacklist => {
updateStatus(blacklist.url, 'loading');
});
// 发送更新请求
const updateResponse = await fetch('/api/shield/blacklists', {
method: 'PUT',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(updatedBlacklists)
});
// 解析服务器响应
let responseData;
try {
responseData = await updateResponse.json();
} catch (jsonError) {
responseData = {};
}
// 根据服务器响应判断是否成功
if (updateResponse.ok && (responseData.status === 'success' || !responseData.status)) {
// 显示所有黑名单的成功状态
blacklistArray.forEach(blacklist => {
updateStatus(blacklist.url, 'success');
});
// 显示通知
showNotification('所有黑名单更新成功', 'success');
// 延迟重新加载黑名单和统计信息,让用户能看到成功状态
setTimeout(() => {
// 重新加载黑名单
loadRemoteBlacklists();
// 重新加载统计信息
loadShieldStats();
}, 3000);
} else {
// 显示所有黑名单的错误状态
blacklistArray.forEach(blacklist => {
updateStatus(blacklist.url, 'error', responseData.error || responseData.message || `更新失败: ${updateResponse.status}`);
});
showNotification(`更新失败: ${responseData.error || responseData.message || updateResponse.status}`, 'error');
// 延迟重新加载黑名单和统计信息
setTimeout(() => {
// 重新加载黑名单
loadRemoteBlacklists();
// 重新加载统计信息
loadShieldStats();
}, 3000);
}
} catch (error) {
console.error('更新所有黑名单失败:', error);
showNotification('更新所有黑名单失败: ' + error.message, 'error');
}
}
// 当前显示的规则类型:'local' 或 'remote'
@@ -1299,6 +1389,12 @@ function setupShieldEventListeners() {
saveBlacklistBtn.addEventListener('click', handleAddBlacklist);
}
// 一键更新所有黑名单事件
const updateAllBlacklistsBtn = document.getElementById('update-all-blacklists-btn');
if (updateAllBlacklistsBtn) {
updateAllBlacklistsBtn.addEventListener('click', handleUpdateAllBlacklists);
}
// 添加切换查看自定义规则和远程规则的事件监听
const viewLocalRulesBtn = document.getElementById('view-local-rules-btn');
if (viewLocalRulesBtn) {