summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/backend/src/misc/get-ip-hash.ts15
1 files changed, 10 insertions, 5 deletions
diff --git a/packages/backend/src/misc/get-ip-hash.ts b/packages/backend/src/misc/get-ip-hash.ts
index 379325bb13..70e61aef8c 100644
--- a/packages/backend/src/misc/get-ip-hash.ts
+++ b/packages/backend/src/misc/get-ip-hash.ts
@@ -1,9 +1,14 @@
import IPCIDR from 'ip-cidr';
export function getIpHash(ip: string) {
- // because a single person may control many IPv6 addresses,
- // only a /64 subnet prefix of any IP will be taken into account.
- // (this means for IPv4 the entire address is used)
- const prefix = IPCIDR.createAddress(ip).mask(64);
- return 'ip-' + BigInt('0b' + prefix).toString(36);
+ try {
+ // because a single person may control many IPv6 addresses,
+ // only a /64 subnet prefix of any IP will be taken into account.
+ // (this means for IPv4 the entire address is used)
+ const prefix = IPCIDR.createAddress(ip).mask(64);
+ return 'ip-' + BigInt('0b' + prefix).toString(36);
+ } catch (e) {
+ const prefix = IPCIDR.createAddress(ip.replace(/:[0-9]+$/, '')).mask(64);
+ return 'ip-' + BigInt('0b' + prefix).toString(36);
+ }
}