@samitouri / QOSami-HFS / commits / 326902c2

CIDR netmask support for ! and | operators

Massimo Melina committed May 8, 2023 at 12:53 UTC 326902c2e09f7b5936dfea330c7e2c8516bdf4f9
1 file changed +10 -3
src/misc.ts
+10 -3
@@ -178,9 +178,16 @@ export function isLocalHost(c: Connection | Koa.Context) {
178 }
179
180 export function makeNetMatcher(mask: string, emptyMaskReturns=false) {
181 - return !mask ? () => emptyMaskReturns
182 - : mask.includes('/') ? (ip: string) => cidr.contains(mask, ip)
183 - : makeMatcher(mask)
181 + if (!mask)
182 + return () => emptyMaskReturns
183 + if (!mask.includes('/'))
184 + return makeMatcher(mask)
185 + const all = mask.split('|')
186 + const neg = all[0]?.[0] === '!'
187 + if (neg)
188 + all[0] = all[0]!.slice(1)
189 + return (ip: string) =>
190 + neg !== all.some(x => cidr.contains(x, ip))
191 }
192
193 export function makeMatcher(mask: string, emptyMaskReturns=false) {