summaryrefslogtreecommitdiff
path: root/packages/backend/src/misc/get-ip-hash.ts
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2022-05-31 17:44:22 +0900
committerGitHub <noreply@github.com>2022-05-31 17:44:22 +0900
commitc05723ca6ad4f17b823662e83ed8b442fe10626a (patch)
treef38e26f44e7ef714d37e196a319d7129a0391962 /packages/backend/src/misc/get-ip-hash.ts
parentchore(meta): label Pull Requests containing tests (#8768) (diff)
downloadmisskey-c05723ca6ad4f17b823662e83ed8b442fe10626a.tar.gz
misskey-c05723ca6ad4f17b823662e83ed8b442fe10626a.tar.bz2
misskey-c05723ca6ad4f17b823662e83ed8b442fe10626a.zip
Fix IP address rate limit (#8758)
* Fix IP address rate limit * CHANGELOG * Tune getIpHash
Diffstat (limited to 'packages/backend/src/misc/get-ip-hash.ts')
-rw-r--r--packages/backend/src/misc/get-ip-hash.ts9
1 files changed, 9 insertions, 0 deletions
diff --git a/packages/backend/src/misc/get-ip-hash.ts b/packages/backend/src/misc/get-ip-hash.ts
new file mode 100644
index 0000000000..379325bb13
--- /dev/null
+++ b/packages/backend/src/misc/get-ip-hash.ts
@@ -0,0 +1,9 @@
+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);
+}