forked from simrail/simrail.pro
fix(backend): escape regex
This commit is contained in:
parent
ff5b81b531
commit
479b2c27fd
@ -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[] = [];
|
||||
|
||||
|
@ -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[] = [];
|
||||
|
||||
|
@ -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
4
src/util/functions.ts
Normal 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, '\\$&');
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user