From 4d9a67881c22be51aae88db5c8e7d9de153c0387 Mon Sep 17 00:00:00 2001 From: Kinfe123 Date: Sat, 22 Jun 2024 22:19:43 +0300 Subject: [PATCH 1/9] fix: add ratelimter --- apps/www/app/api/limiter/route.ts | 18 ++++++++++++++++++ apps/www/package.json | 2 ++ apps/www/utils/ratelimit.ts | 8 ++++++++ packages/cli/dist/index.js | 0 pnpm-lock.yaml | 29 +++++++++++++++++++++++++++++ 5 files changed, 57 insertions(+) create mode 100644 apps/www/app/api/limiter/route.ts create mode 100644 apps/www/utils/ratelimit.ts mode change 100644 => 100755 packages/cli/dist/index.js diff --git a/apps/www/app/api/limiter/route.ts b/apps/www/app/api/limiter/route.ts new file mode 100644 index 00000000..60c059d0 --- /dev/null +++ b/apps/www/app/api/limiter/route.ts @@ -0,0 +1,18 @@ +import { NextRequest, NextResponse } from "next/server" +import { ratelimit } from "@/lib/rate-limit" +export async function POST(req: NextRequest, res: NextResponse) { + try { + const res = await req.json() + const ip = req.headers.get('x-forwarded-for') ?? '' + const data = await ratelimit.limit(ip) + if (!data.success) { + return new NextResponse("You can only send 1 req / 30min.", { + status: 429, + }) + } + return new Response("The data logged: " + JSON.stringify(res)) + + } catch (err) { + console.log('Error has occured : ', err) + } +} ''' diff --git a/apps/www/package.json b/apps/www/package.json index 6da3a723..989ea7c5 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -33,6 +33,8 @@ "@radix-ui/react-tooltip": "^1.0.7", "@tailwindcss/typography": "^0.5.0", "@types/babel__core": "^7.1.19", + "@upstash/ratelimit": "^1.2.1", + "@upstash/redis": "^1.31.6", "@usermaven/sdk-js": "^1.1.9", "@vercel/analytics": "^1.2.2", "axios": "^0.24.0", diff --git a/apps/www/utils/ratelimit.ts b/apps/www/utils/ratelimit.ts new file mode 100644 index 00000000..c3de4aca --- /dev/null +++ b/apps/www/utils/ratelimit.ts @@ -0,0 +1,8 @@ +import { Ratelimit } from "@upstash/ratelimit" +import { Redis } from "@upstash/redis" + +export const ratelimit = new Ratelimit({ + redis: Redis.fromEnv(), + limiter: Ratelimit.slidingWindow(1, "30 m") + +}) diff --git a/packages/cli/dist/index.js b/packages/cli/dist/index.js old mode 100644 new mode 100755 diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89853080..b420ccfc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -105,6 +105,12 @@ importers: '@types/babel__core': specifier: ^7.1.19 version: 7.20.5 + '@upstash/ratelimit': + specifier: ^1.2.1 + version: 1.2.1 + '@upstash/redis': + specifier: ^1.31.6 + version: 1.31.6 '@usermaven/sdk-js': specifier: ^1.1.9 version: 1.4.0 @@ -4440,6 +4446,25 @@ packages: resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} dev: true + /@upstash/core-analytics@0.0.9: + resolution: {integrity: sha512-9NXXxZ5y1/A/zqKLlVT7NsAWSggJfOjB0hG6Ffx29b4jbzHOiQVWB55h5+j2clT9Ib+mNPXn0iB5zN3aWLkICw==} + engines: {node: '>=16.0.0'} + dependencies: + '@upstash/redis': 1.31.6 + dev: false + + /@upstash/ratelimit@1.2.1: + resolution: {integrity: sha512-o01lV1yFS5Fzj5KONZmNyVch/Qrlj785B2ob+kStUmxn8F6xXk7IHTQqVcHE+Ce3CmT/qQIwvMxDZftyJ5wYpQ==} + dependencies: + '@upstash/core-analytics': 0.0.9 + dev: false + + /@upstash/redis@1.31.6: + resolution: {integrity: sha512-7sDQQqvVnnV+2PUVGjocITa34CULGLoWhmfSY/LtpxNYv24EsgOk9VXhmGXIyzJBcXxB614wOF6ccEN0Lr7fqQ==} + dependencies: + crypto-js: 4.2.0 + dev: false + /@usermaven/sdk-js@1.4.0: resolution: {integrity: sha512-6z+AmGDMotZQ7TFOYAMi+onnD4H8SLzFh97zX29jSWNb4/NeHt0Y3OCqyj2PU24s47M1Od8btX62vvzNTp+anQ==} dev: false @@ -5622,6 +5647,10 @@ packages: shebang-command: 2.0.0 which: 2.0.2 + /crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + dev: false + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} From b0f52170982754b1b922e50b7521967aa8939d76 Mon Sep 17 00:00:00 2001 From: Kinfe123 Date: Sat, 22 Jun 2024 22:28:10 +0300 Subject: [PATCH 2/9] fix: fixing weirdo sym --- apps/www/app/api/limiter/route.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/apps/www/app/api/limiter/route.ts b/apps/www/app/api/limiter/route.ts index 60c059d0..6ece4043 100644 --- a/apps/www/app/api/limiter/route.ts +++ b/apps/www/app/api/limiter/route.ts @@ -1,18 +1,17 @@ -import { NextRequest, NextResponse } from "next/server" -import { ratelimit } from "@/lib/rate-limit" +import { NextRequest, NextResponse } from "next/server"; +import { ratelimit } from "utils/ratelimit"; export async function POST(req: NextRequest, res: NextResponse) { try { - const res = await req.json() - const ip = req.headers.get('x-forwarded-for') ?? '' - const data = await ratelimit.limit(ip) + const res = await req.json(); + const ip = req.headers.get("x-forwarded-for") ?? ""; + const data = await ratelimit.limit(ip); if (!data.success) { return new NextResponse("You can only send 1 req / 30min.", { status: 429, - }) + }); } - return new Response("The data logged: " + JSON.stringify(res)) - + return new Response("The data logged: " + JSON.stringify(res)); } catch (err) { - console.log('Error has occured : ', err) + console.log("Error has occured : ", err); } -} ''' +} From 62fdb2615bbf873615ba4cab1a216617c7fb1a0f Mon Sep 17 00:00:00 2001 From: Kinfe123 Date: Sat, 22 Jun 2024 22:37:03 +0300 Subject: [PATCH 3/9] fix: vercel collet --- apps/www/app/api/limiter/route.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/www/app/api/limiter/route.ts b/apps/www/app/api/limiter/route.ts index 6ece4043..c4fcd44d 100644 --- a/apps/www/app/api/limiter/route.ts +++ b/apps/www/app/api/limiter/route.ts @@ -13,5 +13,6 @@ export async function POST(req: NextRequest, res: NextResponse) { return new Response("The data logged: " + JSON.stringify(res)); } catch (err) { console.log("Error has occured : ", err); + return new Response("Error has occured", { status: 404 }); } } From 1f5e0ec0020bc24c4b750cb7494df11ec3007c4b Mon Sep 17 00:00:00 2001 From: Kinfe123 Date: Sat, 22 Jun 2024 22:45:37 +0300 Subject: [PATCH 4/9] fix: acknowledging env --- apps/www/next.config.mjs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/www/next.config.mjs b/apps/www/next.config.mjs index 633429bf..e25cbc05 100644 --- a/apps/www/next.config.mjs +++ b/apps/www/next.config.mjs @@ -1,5 +1,5 @@ /** @type {import('next').NextConfig} */ -import {withContentlayer} from "next-contentlayer" +import { withContentlayer } from "next-contentlayer"; const nextConfig = { // async rewrites() { // return [ @@ -13,7 +13,9 @@ const nextConfig = { DATABASE_URL: process.env.DATABASE_URL, COMPONENT_REGISTERY_API_URL: process.env.COMPONENT_REGISTERY_API_URL, GITHUB_CLIENT_ID: process.env.GITHUB_CLIENT_ID, - GITHUB_CLIENT_SECRET: process.env.GITHUB_CLIENT_SECRET + GITHUB_CLIENT_SECRET: process.env.GITHUB_CLIENT_SECRET, + UPSTASH_REDIS_REST_URL: process.env.UPSTASH_REDIS_REST_URL, + UPSTASH_REDIS_REST_TOKEN: process.env.UPSTASH_REDIS_REST_TOKEN, }, images: { remotePatterns: [ @@ -41,11 +43,8 @@ const nextConfig = { protocol: "https", hostname: "github.com", }, - ], - }, - - + }, }; -export default withContentlayer(nextConfig) \ No newline at end of file +export default withContentlayer(nextConfig); From f714725f47eb92d2adbca19c29df4f4b4c69f85a Mon Sep 17 00:00:00 2001 From: Kinfe123 Date: Sat, 22 Jun 2024 23:03:02 +0300 Subject: [PATCH 5/9] fix: config --- apps/www/app/api/limiter/route.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/www/app/api/limiter/route.ts b/apps/www/app/api/limiter/route.ts index c4fcd44d..447c53c0 100644 --- a/apps/www/app/api/limiter/route.ts +++ b/apps/www/app/api/limiter/route.ts @@ -12,7 +12,7 @@ export async function POST(req: NextRequest, res: NextResponse) { } return new Response("The data logged: " + JSON.stringify(res)); } catch (err) { - console.log("Error has occured : ", err); + console.log("Error has occured ", err); return new Response("Error has occured", { status: 404 }); } } From af758c29bc009fbd3d0a132cbeb36b69f5b6aa4d Mon Sep 17 00:00:00 2001 From: Kinfe123 Date: Sat, 22 Jun 2024 23:23:08 +0300 Subject: [PATCH 6/9] fix: middleware naming --- apps/www/middlewware.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 apps/www/middlewware.ts diff --git a/apps/www/middlewware.ts b/apps/www/middlewware.ts deleted file mode 100644 index e69de29b..00000000 From 845b291ec3fc7b03a0bbb009ca5f18024ce29e2b Mon Sep 17 00:00:00 2001 From: Kinfe123 Date: Sat, 22 Jun 2024 23:28:12 +0300 Subject: [PATCH 7/9] fix: using inline api --- apps/www/app/api/limiter/route.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/www/app/api/limiter/route.ts b/apps/www/app/api/limiter/route.ts index 447c53c0..7ce0683e 100644 --- a/apps/www/app/api/limiter/route.ts +++ b/apps/www/app/api/limiter/route.ts @@ -1,6 +1,12 @@ import { NextRequest, NextResponse } from "next/server"; -import { ratelimit } from "utils/ratelimit"; +import { Redis } from "@upstash/redis"; +import { Ratelimit } from "@upstash/ratelimit"; +const ratelimit = new Ratelimit({ + redis: Redis.fromEnv(), + limiter: Ratelimit.slidingWindow(1, "30 m"), +}); export async function POST(req: NextRequest, res: NextResponse) { + try { const res = await req.json(); const ip = req.headers.get("x-forwarded-for") ?? ""; From 90d942a5035de6c63fe002f59491f6913a05f288 Mon Sep 17 00:00:00 2001 From: Kinfe123 Date: Sun, 23 Jun 2024 00:33:51 +0300 Subject: [PATCH 8/9] fix: updating import --- apps/www/app/(www)/login/_components/Login.tsx | 1 - apps/www/app/api/limiter/route.ts | 13 +++---------- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/apps/www/app/(www)/login/_components/Login.tsx b/apps/www/app/(www)/login/_components/Login.tsx index de5d27be..bb745efe 100644 --- a/apps/www/app/(www)/login/_components/Login.tsx +++ b/apps/www/app/(www)/login/_components/Login.tsx @@ -83,7 +83,6 @@ export default function FUILoginWithGridProvider() {