feat: use generic error message for denied hosts in HTTP node

This commit is contained in:
chungyau97 2025-07-21 20:26:35 +08:00
parent 97db0f7b15
commit 9fecbdc158
1 changed files with 9 additions and 4 deletions

View File

@ -233,14 +233,21 @@ class HTTP_Agentflow implements INode {
} }
private isDeniedIP(ip: string, denyList: string[]): void { private isDeniedIP(ip: string, denyList: string[]): void {
const parsedIp = ipaddr.parse(ip)
for (const entry of denyList) { for (const entry of denyList) {
if (entry.includes('/')) { if (entry.includes('/')) {
try { try {
if (ipaddr.parse(ip).match(ipaddr.parseCIDR(entry))) throw new Error(`IP given is in deny list: ${ip}`) const [range, _] = entry.split('/')
const parsedRange = ipaddr.parse(range)
if (parsedIp.kind() === parsedRange.kind()) {
if (parsedIp.match(ipaddr.parseCIDR(entry))) {
throw new Error('Access to this host is denied by policy.')
}
}
} catch (error) { } catch (error) {
throw new Error(`isDeniedIP: ${error}`) throw new Error(`isDeniedIP: ${error}`)
} }
} else if (ip === entry) throw new Error(`IP given is in deny list: ${ip}`) } else if (ip === entry) throw new Error('Access to this host is denied by policy.')
} }
} }
@ -253,8 +260,6 @@ class HTTP_Agentflow implements INode {
const hostname = urlObj.hostname const hostname = urlObj.hostname
if (httpDenyList.includes(hostname)) throw new Error(`Hostname given is in deny list: ${hostname}`)
if (ipaddr.isValid(hostname)) { if (ipaddr.isValid(hostname)) {
this.isDeniedIP(hostname, httpDenyList) this.isDeniedIP(hostname, httpDenyList)
} else { } else {