diff --git a/backend/common/ngrok.js b/backend/common/ngrok.js index 149befa..a4ae647 100644 --- a/backend/common/ngrok.js +++ b/backend/common/ngrok.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const logs = require('../common/logs'); const log = new logs('Ngrok'); diff --git a/backend/common/sentry.js b/backend/common/sentry.js index fb045e2..0fa8557 100644 --- a/backend/common/sentry.js +++ b/backend/common/sentry.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const logs = require('../common/logs'); const log = new logs('Sentry'); diff --git a/backend/common/utils.js b/backend/common/utils.js index 08aa783..ebc802a 100644 --- a/backend/common/utils.js +++ b/backend/common/utils.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const CryptoJS = require('crypto-js'); const jwt = require('jsonwebtoken'); diff --git a/backend/config.template.js b/backend/config.template.js index 8e14806..b94032c 100644 --- a/backend/config.template.js +++ b/backend/config.template.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; module.exports = { App: { diff --git a/backend/lib/nodemailer.js b/backend/lib/nodemailer.js index b9b366a..6430a61 100644 --- a/backend/lib/nodemailer.js +++ b/backend/lib/nodemailer.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const logs = require('../common/logs'); const nodemailer = require('nodemailer'); diff --git a/backend/middleware/admin.js b/backend/middleware/admin.js index 56960e1..b6ca450 100644 --- a/backend/middleware/admin.js +++ b/backend/middleware/admin.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const utils = require('../common/utils'); const logs = require('../common/logs'); diff --git a/backend/middleware/api.js b/backend/middleware/api.js index b3d907f..95bd470 100644 --- a/backend/middleware/api.js +++ b/backend/middleware/api.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const utils = require('../common/utils'); const logs = require('../common/logs'); diff --git a/backend/middleware/auth.js b/backend/middleware/auth.js index c253bf1..9b358eb 100644 --- a/backend/middleware/auth.js +++ b/backend/middleware/auth.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const utils = require('../common/utils'); const logs = require('../common/logs'); diff --git a/backend/middleware/url.js b/backend/middleware/url.js new file mode 100644 index 0000000..d7cbe4c --- /dev/null +++ b/backend/middleware/url.js @@ -0,0 +1,19 @@ +'use strict'; + +const utils = require('../common/utils'); +const logs = require('../common/logs'); + +const log = new logs('URL'); + +const url = (err, req, res, next) => { + if (err instanceof URIError) { + log.error('Malformed URL', req.url); + res.status(400).send('Bad Request: Malformed URL'); + } else { + next(err); + } + + return next(); +}; + +module.exports = url; diff --git a/backend/middleware/validator.js b/backend/middleware/validator.js index 5af49f1..350eff3 100644 --- a/backend/middleware/validator.js +++ b/backend/middleware/validator.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const logs = require('../common/logs'); const log = new logs('Validator'); diff --git a/backend/models/room.js b/backend/models/room.js index ad76315..fa92187 100644 --- a/backend/models/room.js +++ b/backend/models/room.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const mongoose = require('mongoose'); diff --git a/backend/models/users.js b/backend/models/users.js index 660b8fa..4c533c7 100644 --- a/backend/models/users.js +++ b/backend/models/users.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const mongoose = require('mongoose'); diff --git a/backend/routes/room.js b/backend/routes/room.js index d472486..e5adec8 100644 --- a/backend/routes/room.js +++ b/backend/routes/room.js @@ -1,6 +1,7 @@ 'use strict'; const express = require('express'); +const url = require('../middleware/url'); const api = require('../middleware/api'); const auth = require('../middleware/auth'); const admin = require('../middleware/admin'); @@ -9,42 +10,42 @@ const router = express.Router(); const controllersRooms = require('../controllers/rooms'); //CREATE: /api/v1/room -router.post('/room', auth, validator, (req, res) => { +router.post('/room', auth, validator, url, (req, res) => { controllersRooms.roomCreate(req, res); }); //EXISTS: /api/v1/room/exists -router.post('/room/exists', api, (req, res) => { +router.post('/room/exists', api, url, (req, res) => { controllersRooms.roomExists(req, res); }); //GET: /api/v1/room/findBy/userId -router.get('/room/findBy/:userId', auth, (req, res) => { +router.get('/room/findBy/:userId', auth, url, (req, res) => { controllersRooms.roomFindBy(req, res); }); //DELETE: /api/v1/findBy/userId -router.delete('/room/findBy/:userId', auth, (req, res) => { +router.delete('/room/findBy/:userId', auth, url, (req, res) => { controllersRooms.roomDeleteFindBy(req, res); }); //GET: /api/v1/room/id -router.get('/room/:id', auth, (req, res) => { +router.get('/room/:id', auth, url, (req, res) => { controllersRooms.roomGet(req, res); }); //UPDATE: /api/v1/room/id -router.patch('/room/:id', auth, validator, (req, res) => { +router.patch('/room/:id', auth, validator, url, (req, res) => { controllersRooms.roomUpdate(req, res); }); //DELETE: /api/v1/room/id -router.delete('/room/:id', auth, (req, res) => { +router.delete('/room/:id', auth, url, (req, res) => { controllersRooms.roomDelete(req, res); }); //DELETE: /api/v1/room/deleteALL -router.delete('/room/deleteAll', admin, (req, res) => { +router.delete('/room/deleteAll', admin, url, (req, res) => { controllersRooms.roomDeleteALL(req, res); }); diff --git a/backend/routes/sms.js b/backend/routes/sms.js index b16032f..7798d2e 100644 --- a/backend/routes/sms.js +++ b/backend/routes/sms.js @@ -2,12 +2,13 @@ const express = require('express'); const auth = require('../middleware/auth'); +const url = require('../middleware/url'); //const admin = require('../middleware/admin'); const router = express.Router(); const controllersSmS = require('../controllers/sms'); //POST: /api/v1/sms -router.post('/sms', auth, (req, res) => { +router.post('/sms', auth, url, (req, res) => { controllersSmS.smsSend(req, res); }); diff --git a/backend/routes/token.js b/backend/routes/token.js index f096a24..af0d52d 100644 --- a/backend/routes/token.js +++ b/backend/routes/token.js @@ -1,13 +1,14 @@ 'use strict'; const express = require('express'); +const url = require('../middleware/url'); const auth = require('../middleware/auth'); const validator = require('../middleware/validator'); const router = express.Router(); const controllersToken = require('../controllers/token'); //GET: /api/v1/token/SFU/:token -router.get('/token/SFU/:token', auth, validator, (req, res) => { +router.get('/token/SFU/:token', auth, validator, url, (req, res) => { controllersToken.tokenSFU(req, res); }); diff --git a/backend/routes/users.js b/backend/routes/users.js index 0db492e..fde519f 100644 --- a/backend/routes/users.js +++ b/backend/routes/users.js @@ -1,6 +1,7 @@ 'use strict'; const express = require('express'); +const url = require('../middleware/url'); const auth = require('../middleware/auth'); const admin = require('../middleware/admin'); const api = require('../middleware/api'); @@ -9,52 +10,52 @@ const router = express.Router(); const controllersUsers = require('../controllers/users'); //CREATE: /api/v1/user -router.post('/user', validator, (req, res) => { +router.post('/user', validator, url, (req, res) => { controllersUsers.userCreate(req, res); }); //LOGIN: /api/v1/user/login -router.post('/user/login', validator, (req, res) => { +router.post('/user/login', validator, url, (req, res) => { controllersUsers.userLogin(req, res); }); //POST: /api/v1/user/isAuth/ -router.post('/user/isAuth', api, (req, res) => { +router.post('/user/isAuth', api, url, (req, res) => { controllersUsers.userIsAuth(req, res); }); //POST: /api/v1/user/isRoomAllowed/ -router.post('/user/isRoomAllowed', api, (req, res) => { +router.post('/user/isRoomAllowed', api, url, (req, res) => { controllersUsers.userIsRoomAllowed(req, res); }); //POST: /api/v1/user/allowedRooms/ -router.post('/user/roomsAllowed', api, (req, res) => { +router.post('/user/roomsAllowed', api, url, (req, res) => { controllersUsers.userRoomsAllowed(req, res); }); //GET: /api/v1/user/confirmation/?token= -router.get('/user/confirmation', auth, (req, res) => { +router.get('/user/confirmation', auth, url, (req, res) => { controllersUsers.userConfirmation(req, res); }); //GET: /api/v1/user/id -router.get('/user/:id', auth, (req, res) => { +router.get('/user/:id', auth, url, (req, res) => { controllersUsers.userGet(req, res); }); //UPDATE: /api/v1/user/id -router.patch('/user/:id', auth, validator, (req, res) => { +router.patch('/user/:id', auth, validator, url, (req, res) => { controllersUsers.userUpdate(req, res); }); //DELETE: /api/v1/user/id -router.delete('/user/:id', auth, (req, res) => { +router.delete('/user/:id', auth, url, (req, res) => { controllersUsers.userDelete(req, res); }); //DELETE: /api/v1/user/deleteALL -router.delete('/user/deleteALL', admin, (req, res) => { +router.delete('/user/deleteALL', admin, url, (req, res) => { controllersUsers.userDeleteALL(req, res); }); diff --git a/frontend/js/api.js b/frontend/js/api.js index 9ef6ace..d739547 100644 --- a/frontend/js/api.js +++ b/frontend/js/api.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; const apiPath = '/api/v1'; const userEmail = window.localStorage.email; diff --git a/frontend/js/client.js b/frontend/js/client.js index d47c06b..7142328 100644 --- a/frontend/js/client.js +++ b/frontend/js/client.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; /** * MiroTalk WebRTC - Client component @@ -9,7 +9,7 @@ * @license For private project or commercial purposes contact us at: license.mirotalk@gmail.com or purchase it directly via Code Canyon: * @license https://codecanyon.net/item/a-selfhosted-mirotalks-webrtc-rooms-scheduler-server/42643313 * @author Miroslav Pejic - miroslav.pejic.85@gmail.com - * @version 1.1.27 + * @version 1.1.28 */ const isMobile = !!/Android|webOS|iPhone|iPad|iPod|BB10|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test( diff --git a/frontend/js/swal.js b/frontend/js/swal.js index a299dab..53897ee 100644 --- a/frontend/js/swal.js +++ b/frontend/js/swal.js @@ -1,4 +1,4 @@ -'use-strict'; +'use strict'; function popupMessage(type, message, timer = 3000) { switch (type) { diff --git a/package.json b/package.json index b9754e5..d5836fc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mirotalkwebrtc", - "version": "1.1.27", + "version": "1.1.28", "description": "MiroTalk WebRTC admin", "main": "server.js", "scripts": { @@ -33,7 +33,7 @@ "license": "AGPL-3.0", "homepage": "https://github.com/miroslavpejic85/mirotalkwebrtc", "dependencies": { - "@sentry/node": "^8.45.0", + "@sentry/node": "^8.47.0", "axios": "^1.7.9", "bcryptjs": "^2.4.3", "colors": "1.4.0", @@ -44,7 +44,7 @@ "express": "^4.21.2", "jsonwebtoken": "^9.0.2", "js-yaml": "^4.1.0", - "mongoose": "^8.9.0", + "mongoose": "^8.9.2", "ngrok": "^5.0.0-beta.2", "nodemailer": "^6.9.16", "swagger-ui-express": "^5.0.1",