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 { PipelineStage } from 'mongoose';
|
||||||
import { MProfile, raw_schema } from '../../mongo/profile.js';
|
import { MProfile, raw_schema } from '../../mongo/profile.js';
|
||||||
import { GitUtil } from '../../util/git.js';
|
import { GitUtil } from '../../util/git.js';
|
||||||
|
import { escapeRegexString } from '../../util/functions.js';
|
||||||
|
|
||||||
const generateSearch = (regex: RegExp) => [
|
const generateSearch = (regex: RegExp) => [
|
||||||
{
|
{
|
||||||
@ -20,7 +21,7 @@ export class LeaderboardRoute {
|
|||||||
const app = Router();
|
const app = Router();
|
||||||
|
|
||||||
app.get('/train', async (req, res) => {
|
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[] = [];
|
const filter: PipelineStage[] = [];
|
||||||
|
|
||||||
@ -52,7 +53,7 @@ export class LeaderboardRoute {
|
|||||||
|
|
||||||
|
|
||||||
app.get('/station', async (req, res) => {
|
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[] = [];
|
const filter: PipelineStage[] = [];
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import { PipelineStage } from 'mongoose';
|
|||||||
import { MBlacklist } from '../../mongo/blacklist.js';
|
import { MBlacklist } from '../../mongo/blacklist.js';
|
||||||
import { SteamUtil } from '../../util/SteamUtil.js';
|
import { SteamUtil } from '../../util/SteamUtil.js';
|
||||||
import { GitUtil } from '../../util/git.js';
|
import { GitUtil } from '../../util/git.js';
|
||||||
|
import { escapeRegexString } from '../../util/functions.js';
|
||||||
|
|
||||||
const generateSearch = (regex: RegExp) => [
|
const generateSearch = (regex: RegExp) => [
|
||||||
{
|
{
|
||||||
@ -30,7 +31,7 @@ export class StationsRoute {
|
|||||||
const app = Router();
|
const app = Router();
|
||||||
|
|
||||||
app.get('/', async (req, res) => {
|
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[] = [];
|
const filter: PipelineStage[] = [];
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import { MTrainLog, raw_schema } from '../../mongo/trainLogs.js';
|
|||||||
import { MBlacklist } from '../../mongo/blacklist.js';
|
import { MBlacklist } from '../../mongo/blacklist.js';
|
||||||
import { SteamUtil } from '../../util/SteamUtil.js';
|
import { SteamUtil } from '../../util/SteamUtil.js';
|
||||||
import { GitUtil } from '../../util/git.js';
|
import { GitUtil } from '../../util/git.js';
|
||||||
|
import { escapeRegexString } from '../../util/functions.js';
|
||||||
|
|
||||||
const generateSearch = (regex: RegExp) => [
|
const generateSearch = (regex: RegExp) => [
|
||||||
{
|
{
|
||||||
@ -27,7 +28,7 @@ export class TrainsRoute {
|
|||||||
const app = Router();
|
const app = Router();
|
||||||
|
|
||||||
app.get('/', async (req, res) => {
|
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[] = [];
|
const filter: PipelineStage[] = [];
|
||||||
|
|
||||||
@ -69,7 +70,7 @@ export class TrainsRoute {
|
|||||||
})
|
})
|
||||||
|
|
||||||
app.get('/leaderboard/', async (req, res) => {
|
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)
|
const data = Object.keys(raw_schema)
|
||||||
.reduce((o, key) => ({ ...o, [key]: `$${key}` }), {});
|
.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