summaryrefslogtreecommitdiff
path: root/packages/backend/test-federation/daemon.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/test-federation/daemon.ts')
-rw-r--r--packages/backend/test-federation/daemon.ts38
1 files changed, 38 insertions, 0 deletions
diff --git a/packages/backend/test-federation/daemon.ts b/packages/backend/test-federation/daemon.ts
new file mode 100644
index 0000000000..46b6963c79
--- /dev/null
+++ b/packages/backend/test-federation/daemon.ts
@@ -0,0 +1,38 @@
+import IPCIDR from 'ip-cidr';
+import { Redis } from 'ioredis';
+
+const TESTER_IP_ADDRESS = '172.20.1.1';
+
+/**
+ * This should be same as {@link file://./../src/misc/get-ip-hash.ts}.
+ */
+function getIpHash(ip: string) {
+ const prefix = IPCIDR.createAddress(ip).mask(64);
+ return `ip-${BigInt('0b' + prefix).toString(36)}`;
+}
+
+/**
+ * This prevents hitting rate limit when login.
+ */
+export async function purgeLimit(host: string, client: Redis) {
+ const ipHash = getIpHash(TESTER_IP_ADDRESS);
+ const key = `${host}:limit:${ipHash}:signin`;
+ const res = await client.zrange(key, 0, -1);
+ if (res.length !== 0) {
+ console.log(`${key} - ${JSON.stringify(res)}`);
+ await client.del(key);
+ }
+}
+
+console.log('Daemon started running');
+
+{
+ const redisClient = new Redis({
+ host: 'redis.test',
+ });
+
+ setInterval(() => {
+ purgeLimit('a.test', redisClient);
+ purgeLimit('b.test', redisClient);
+ }, 200);
+}