create a request validator engine

This commit is contained in:
mini-bomba
2025-04-25 19:38:54 +02:00
parent 920d288f0b
commit f7e5394a18
7 changed files with 269 additions and 45 deletions

View File

@@ -18,8 +18,9 @@ import { checkBanStatus } from "../utils/checkBan";
import axios from "axios";
import { getMaxResThumbnail } from "../utils/youtubeApi";
import { getVideoDetails } from "../utils/getVideoDetails";
import { canSubmitDeArrow, validSubmittedData } from "../utils/permissions";
import { canSubmitDeArrow } from "../utils/permissions";
import { parseUserAgent } from "../utils/userAgent";
import { isRequestInvalid } from "../utils/requestValidator";
enum BrandingType {
Title,
@@ -58,8 +59,19 @@ export async function postBranding(req: Request, res: Response) {
const hashedIP = await getHashCache(getIP(req) + config.globalSalt as IPAddress);
const isBanned = await checkBanStatus(hashedUserID, hashedIP);
if (!validSubmittedData(userAgent, req.headers["user-agent"])) {
Logger.warn(`Rejecting submission based on invalid data: ${hashedUserID} ${videoID} ${videoDuration} ${userAgent} ${req.headers["user-agent"]}`);
if (isRequestInvalid({
userAgent,
userAgentHeader: req.headers["user-agent"],
videoDuration,
userID,
service,
dearrow: {
title,
thumbnail,
downvote,
}
})) {
Logger.warn(`Rejecting submission based on invalid data: ${hashedUserID} ${videoID} ${videoDuration} ${userAgent} ${req.headers["user-agent"]} ${title.title} ${thumbnail.timestamp}`);
res.status(200).send("OK");
return;
}