更新
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user