fix(backend): escape regex

This commit is contained in:
Aleksander Wilczyński 2024-11-17 02:08:52 +01:00
parent ff5b81b531
commit 479b2c27fd
Signed by untrusted user: alekswilc
GPG Key ID: D4464A248E5F27FE
4 changed files with 12 additions and 5 deletions

View File

@ -5,6 +5,7 @@ import { msToTime } from '../../util/time.js';
import { PipelineStage } from 'mongoose';
import { MProfile, raw_schema } from '../../mongo/profile.js';
import { GitUtil } from '../../util/git.js';
import { escapeRegexString } from '../../util/functions.js';
const generateSearch = (regex: RegExp) => [
{
@ -20,7 +21,7 @@ export class LeaderboardRoute {
const app = Router();
app.get('/train', async (req, res) => {
const s = req.query.q?.toString().split(',').map(x => new RegExp(x, "i"));
const s = req.query.q?.toString().split(',').map(x => new RegExp(escapeRegexString(x), "i"));
const filter: PipelineStage[] = [];
@ -52,7 +53,7 @@ export class LeaderboardRoute {
app.get('/station', async (req, res) => {
const s = req.query.q?.toString().split(',').map(x => new RegExp(x, "i"));
const s = req.query.q?.toString().split(',').map(x => new RegExp(escapeRegexString(x), "i"));
const filter: PipelineStage[] = [];

View File

@ -6,6 +6,7 @@ import { PipelineStage } from 'mongoose';
import { MBlacklist } from '../../mongo/blacklist.js';
import { SteamUtil } from '../../util/SteamUtil.js';
import { GitUtil } from '../../util/git.js';
import { escapeRegexString } from '../../util/functions.js';
const generateSearch = (regex: RegExp) => [
{
@ -30,7 +31,7 @@ export class StationsRoute {
const app = Router();
app.get('/', async (req, res) => {
const s = req.query.q?.toString().split(',').map(x => new RegExp(x, "i"));
const s = req.query.q?.toString().split(',').map(x => new RegExp(escapeRegexString(x), "i"));
const filter: PipelineStage[] = [];

View File

@ -6,6 +6,7 @@ import { MTrainLog, raw_schema } from '../../mongo/trainLogs.js';
import { MBlacklist } from '../../mongo/blacklist.js';
import { SteamUtil } from '../../util/SteamUtil.js';
import { GitUtil } from '../../util/git.js';
import { escapeRegexString } from '../../util/functions.js';
const generateSearch = (regex: RegExp) => [
{
@ -27,7 +28,7 @@ export class TrainsRoute {
const app = Router();
app.get('/', async (req, res) => {
const s = req.query.q?.toString().split(',').map(x => new RegExp(x, "i"));
const s = req.query.q?.toString().split(',').map(x => new RegExp(escapeRegexString(x), "i"));
const filter: PipelineStage[] = [];
@ -69,7 +70,7 @@ export class TrainsRoute {
})
app.get('/leaderboard/', async (req, res) => {
const s = req.query.q?.toString().split(',').map(x => new RegExp(x, "i"));
const s = req.query.q?.toString().split(',').map(x => new RegExp(escapeRegexString(x), "i"));
const data = Object.keys(raw_schema)
.reduce((o, key) => ({ ...o, [key]: `$${key}` }), {});

4
src/util/functions.ts Normal file
View File

@ -0,0 +1,4 @@
// https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
export const escapeRegexString = (str: string) => {
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}