update
This commit is contained in:
		| @@ -13,7 +13,8 @@ import { | ||||
|   trackConnection, | ||||
|   removeConnection, | ||||
|   cleanupExpiredRateLimits, | ||||
|   parseBasicAuthHeader | ||||
|   parseBasicAuthHeader, | ||||
|   normalizeIP | ||||
| } from './security-utils.js'; | ||||
|  | ||||
| /** | ||||
| @@ -78,7 +79,15 @@ export class SharedSecurityManager { | ||||
|    * @returns Number of connections from this IP | ||||
|    */ | ||||
|   public getConnectionCountByIP(ip: string): number { | ||||
|     return this.connectionsByIP.get(ip)?.connections.size || 0; | ||||
|     // Check all normalized variants of the IP | ||||
|     const variants = normalizeIP(ip); | ||||
|     for (const variant of variants) { | ||||
|       const info = this.connectionsByIP.get(variant); | ||||
|       if (info) { | ||||
|         return info.connections.size; | ||||
|       } | ||||
|     } | ||||
|     return 0; | ||||
|   } | ||||
|    | ||||
|   /** | ||||
| @@ -88,7 +97,19 @@ export class SharedSecurityManager { | ||||
|    * @param connectionId - The connection ID to associate | ||||
|    */ | ||||
|   public trackConnectionByIP(ip: string, connectionId: string): void { | ||||
|     trackConnection(ip, connectionId, this.connectionsByIP); | ||||
|     // Check if any variant already exists | ||||
|     const variants = normalizeIP(ip); | ||||
|     let existingKey: string | null = null; | ||||
|      | ||||
|     for (const variant of variants) { | ||||
|       if (this.connectionsByIP.has(variant)) { | ||||
|         existingKey = variant; | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|      | ||||
|     // Use existing key or the original IP | ||||
|     trackConnection(existingKey || ip, connectionId, this.connectionsByIP); | ||||
|   } | ||||
|    | ||||
|   /** | ||||
| @@ -98,7 +119,15 @@ export class SharedSecurityManager { | ||||
|    * @param connectionId - The connection ID to remove | ||||
|    */ | ||||
|   public removeConnectionByIP(ip: string, connectionId: string): void { | ||||
|     removeConnection(ip, connectionId, this.connectionsByIP); | ||||
|     // Check all variants to find where the connection is tracked | ||||
|     const variants = normalizeIP(ip); | ||||
|      | ||||
|     for (const variant of variants) { | ||||
|       if (this.connectionsByIP.has(variant)) { | ||||
|         removeConnection(variant, connectionId, this.connectionsByIP); | ||||
|         break; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|    | ||||
|   /** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user