summary refs log tree commit diff
path: root/src/routes
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes')
-rw-r--r--src/routes/auth/login.ts2
-rw-r--r--src/routes/auth/register.ts2
-rw-r--r--src/routes/guilds/#guild_id/widget.png.ts12
3 files changed, 10 insertions, 6 deletions
diff --git a/src/routes/auth/login.ts b/src/routes/auth/login.ts

index 2c4084ea..547d115b 100644 --- a/src/routes/auth/login.ts +++ b/src/routes/auth/login.ts
@@ -4,12 +4,14 @@ import bcrypt from "bcrypt"; import jwt from "jsonwebtoken"; import { Config, UserModel } from "@fosscord/server-util"; import { adjustEmail } from "./register"; +import RateLimit from "../../middlewares/RateLimit"; const router: Router = Router(); export default router; router.post( "/", + RateLimit({ count: 5, window: 60, onylIp: true }), check({ login: new Length(String, 2, 100), // email or telephone password: new Length(String, 8, 64), diff --git a/src/routes/auth/register.ts b/src/routes/auth/register.ts
index f39206f2..83f8dc8c 100644 --- a/src/routes/auth/register.ts +++ b/src/routes/auth/register.ts
@@ -6,11 +6,13 @@ import "missing-native-js-functions"; import { generateToken } from "./login"; import { getIpAdress, IPAnalysis, isProxy } from "../../util/ipAddress"; import { HTTPError } from "lambert-server"; +import RateLimit from "../../middlewares/RateLimit"; const router: Router = Router(); router.post( "/", + RateLimit({ count: 2, window: 60 * 60 * 12, onylIp: true, success: true }), check({ username: new Length(String, 2, 32), // TODO: check min password length in config diff --git a/src/routes/guilds/#guild_id/widget.png.ts b/src/routes/guilds/#guild_id/widget.png.ts
index ea947c5d..839a8129 100644 --- a/src/routes/guilds/#guild_id/widget.png.ts +++ b/src/routes/guilds/#guild_id/widget.png.ts
@@ -1,9 +1,8 @@ import { Request, Response, Router } from "express"; import { GuildModel } from "@fosscord/server-util"; import { HTTPError } from "lambert-server"; -import { Image } from "canvas"; import fs from "fs"; -import path from "path" +import path from "path"; const router: Router = Router(); @@ -35,7 +34,7 @@ router.get("/", async (req: Request, res: Response) => { const sizeOf = require("image-size"); // TODO: Widget style templates need Fosscord branding - const source = path.join(__dirname, "..", "..", "..", "..", "assets","widget", `${style}.png`) + const source = path.join(__dirname, "..", "..", "..", "..", "assets", "widget", `${style}.png`); if (!fs.existsSync(source)) { throw new HTTPError("Widget template does not exist.", 400); } @@ -85,16 +84,17 @@ router.get("/", async (req: Request, res: Response) => { }); async function drawIcon(canvas: any, x: number, y: number, scale: number, icon: string) { - const img = new Image(); + // @ts-ignore + const img = new require("canvas").Image(); img.src = icon; - + // Do some canvas clipping magic! canvas.save(); canvas.beginPath(); const r = scale / 2; // use scale to determine radius canvas.arc(x + r, y + r, r, 0, 2 * Math.PI, false); // start circle at x, and y coords + radius to find center - + canvas.clip(); canvas.drawImage(img, x, y, scale, scale);