Files
Aether/frontend/src/api/security.ts

84 lines
1.7 KiB
TypeScript
Raw Normal View History

2025-12-10 20:52:44 +08:00
/**
* IP API
*/
import apiClient from './client'
export interface IPBlacklistEntry {
ip_address: string
reason: string
ttl?: number
}
export interface IPWhitelistEntry {
ip_address: string
}
export interface BlacklistStats {
available: boolean
total: number
error?: string
}
export interface WhitelistResponse {
whitelist: string[]
total: number
}
/**
* IP
*/
export const blacklistApi = {
/**
* IP
*/
async add(data: IPBlacklistEntry) {
const response = await apiClient.post('/api/admin/security/ip/blacklist', data)
return response.data
},
/**
* IP
*/
async remove(ip_address: string) {
const response = await apiClient.delete(`/api/admin/security/ip/blacklist/${encodeURIComponent(ip_address)}`)
return response.data
},
/**
*
*/
async getStats(): Promise<BlacklistStats> {
const response = await apiClient.get('/api/admin/security/ip/blacklist/stats')
return response.data
}
}
/**
* IP
*/
export const whitelistApi = {
/**
* IP
*/
async add(data: IPWhitelistEntry) {
const response = await apiClient.post('/api/admin/security/ip/whitelist', data)
return response.data
},
/**
* IP
*/
async remove(ip_address: string) {
const response = await apiClient.delete(`/api/admin/security/ip/whitelist/${encodeURIComponent(ip_address)}`)
return response.data
},
/**
*
*/
async getList(): Promise<WhitelistResponse> {
const response = await apiClient.get('/api/admin/security/ip/whitelist')
return response.data
}
}