Files
ipam/frontend/src/api/index.js
T
Your Name 9e34f6f0f9 feat(ips): 批量补全厂商功能 + MAC厂商替换为IEEE OUI数据库
前端:
- IPs.vue: 新增「补全厂商」按钮,选中网段后一键补全
- scanApi: 新增 batchFillVendor/batchDiscoverHostname + enable_netbios 参数

后端:
- enhanced_scan.py: 新增 POST /scan/batch/vendor 批量补全厂商端点
- enhanced_scan.py: 新增 POST /scan/batch/hostname 批量发现主机名端点
- scan_tasks.py: 透传 enable_netbios 参数
2026-07-18 10:59:27 +08:00

186 lines
4.3 KiB
JavaScript

import api from '@/utils/api'
// 网段管理
export const networkApi = {
// 获取网段列表
getList(params) {
return api.get('/networks', { params })
},
// 获取网段详情
getById(id) {
return api.get(`/networks/${id}`)
},
// 获取网段统计
getStats(id) {
return api.get(`/networks/${id}/stats`)
},
// 获取所有网段统计
getAllStats() {
return api.get('/networks/stats')
},
// 创建网段
create(data) {
return api.post('/networks', data)
},
// 更新网段
update(id, data) {
return api.put(`/networks/${id}`, data)
},
// 删除网段
delete(id) {
return api.delete(`/networks/${id}`)
},
// 获取网段下的IP
getIPs(id, params) {
return api.get(`/networks/${id}/ips`, { params })
}
}
// IP地址管理
export const ipApi = {
// 获取IP列表
getList(params) {
return api.get('/ips', { params })
},
// 获取IP详情
getById(id) {
return api.get(`/ips/${id}`)
},
// 更新IP信息
update(id, data) {
return api.put(`/ips/${id}`, data)
},
// 根据IP地址查询
getByIP(ip) {
return api.get(`/ips/address/${ip}`)
}
}
// 扫描管理
export const scanApi = {
// Ping扫描网段
pingNetwork(id) {
return api.post(`/scan/ping/${id}`)
},
// 综合扫描网段
// options: { enable_ping, enable_arp, enable_dns, enable_netbios, timeout }
// 单次调用覆盖全局 30s 超时,因为 /24 网段扫描要数分钟
comprehensiveScan(id, options = {}) {
const {
enable_ping = true,
enable_arp = true,
enable_dns = true,
enable_netbios = true,
timeout = 2
} = options
return api.post(`/scan/comprehensive/${id}`, {}, {
params: { enable_ping, enable_arp, enable_dns, enable_netbios, timeout },
timeout: 600000 // 10 分钟,足以应付 /16 级别网段
})
},
// 批量补全厂商信息
batchFillVendor(params) {
return api.post('/scan/batch/vendor', {}, { params })
},
// 批量发现主机名
batchDiscoverHostname(params) {
return api.post('/scan/batch/hostname', {}, { params })
},
// 单个IP扫描
scanIP(ipAddress) {
return api.post(`/scan/comprehensive/ip/${ipAddress}`)
},
// 获取统计摘要
getSummary() {
return api.get('/scan/statistics/summary')
}
}
// 告警管理
export const alertApi = {
// 获取告警列表
getList(params) {
return api.get('/alerts', { params })
},
// 获取告警统计
getStats() {
return api.get('/alerts/statistics/summary')
},
// 运行所有检测
runDetection() {
return api.post('/alerts/detect/run')
},
// 确认告警
acknowledge(id) {
return api.post(`/alerts/${id}/acknowledge`)
},
// 解决告警
resolve(id, notes) {
return api.post(`/alerts/${id}/resolve`, {}, { params: { notes } })
},
// 忽略告警
ignore(id) {
return api.post(`/alerts/${id}/ignore`)
},
// MAC白名单
getWhitelist(params) {
return api.get('/alerts/whitelist/macs', { params })
},
addToWhitelist(data) {
return api.post('/alerts/whitelist/macs', {}, { params: data })
},
removeFromWhitelist(id) {
return api.delete(`/alerts/whitelist/macs/${id}`)
}
}
// SNMP管理
export const snmpApi = {
// 凭据管理
getCredentials() {
return api.get('/snmp/credentials')
},
createCredential(data) {
return api.post('/snmp/credentials', {}, { params: data })
},
updateCredential(id, data) {
return api.put(`/snmp/credentials/${id}`, {}, { params: data })
},
deleteCredential(id) {
return api.delete(`/snmp/credentials/${id}`)
},
// 设备管理
getDevices(params) {
return api.get('/snmp/devices', { params })
},
createDevice(data) {
return api.post('/snmp/devices', {}, { params: data })
},
updateDevice(id, data) {
return api.put(`/snmp/devices/${id}`, {}, { params: data })
},
deleteDevice(id) {
return api.delete(`/snmp/devices/${id}`)
},
// SNMP操作
testConnection(id) {
return api.post(`/snmp/devices/${id}/test`)
},
pollDevice(id) {
return api.post(`/snmp/devices/${id}/poll`)
},
getARPTable(id) {
return api.post(`/snmp/devices/${id}/arp`)
},
getInterfaces(id) {
return api.post(`/snmp/devices/${id}/interfaces`)
},
// 获取统计
getStats() {
return api.get('/snmp/statistics/summary')
}
}