feat(nftables):add nftables support for nftables

This commit is contained in:
2025-05-15 14:35:01 +00:00
parent cf96ff8a47
commit a2e3e38025
22 changed files with 2331 additions and 201 deletions

View File

@ -209,18 +209,18 @@ export function matchIpPattern(pattern: string, ip: string): boolean {
* Match an IP against allowed and blocked IP patterns
*
* @param ip IP to check
* @param allowedIps Array of allowed IP patterns
* @param blockedIps Array of blocked IP patterns
* @param ipAllowList Array of allowed IP patterns
* @param ipBlockList Array of blocked IP patterns
* @returns Whether the IP is allowed
*/
export function isIpAuthorized(
ip: string,
allowedIps: string[] = ['*'],
blockedIps: string[] = []
ipAllowList: string[] = ['*'],
ipBlockList: string[] = []
): boolean {
// Check blocked IPs first
if (blockedIps.length > 0) {
for (const pattern of blockedIps) {
if (ipBlockList.length > 0) {
for (const pattern of ipBlockList) {
if (matchIpPattern(pattern, ip)) {
return false; // IP is blocked
}
@ -228,13 +228,13 @@ export function isIpAuthorized(
}
// If there are allowed IPs, check them
if (allowedIps.length > 0) {
if (ipAllowList.length > 0) {
// Special case: if '*' is in allowed IPs, all non-blocked IPs are allowed
if (allowedIps.includes('*')) {
if (ipAllowList.includes('*')) {
return true;
}
for (const pattern of allowedIps) {
for (const pattern of ipAllowList) {
if (matchIpPattern(pattern, ip)) {
return true; // IP is allowed
}