|
@@ -4,9 +4,9 @@ const axios = require('axios');
|
|
|
const URL = require('url');
|
|
const URL = require('url');
|
|
|
const urlRegex = require('url-regex');
|
|
const urlRegex = require('url-regex');
|
|
|
const validator = require('express-validator/check');
|
|
const validator = require('express-validator/check');
|
|
|
-const { subHours } = require('date-fns/');
|
|
|
|
|
|
|
+const { differenceInMinutes, subHours } = require('date-fns/');
|
|
|
const { validationResult } = require('express-validator/check');
|
|
const { validationResult } = require('express-validator/check');
|
|
|
-const { addCooldown, banUser } = require('../db/user');
|
|
|
|
|
|
|
+const { addCooldown, banUser, getIPCooldown: getIPCooldownCount } = require('../db/user');
|
|
|
const { getBannedDomain, getBannedHost, urlCountFromDate } = require('../db/url');
|
|
const { getBannedDomain, getBannedHost, urlCountFromDate } = require('../db/url');
|
|
|
const subDay = require('date-fns/sub_days');
|
|
const subDay = require('date-fns/sub_days');
|
|
|
const { addProtocol } = require('../utils');
|
|
const { addProtocol } = require('../utils');
|
|
@@ -123,6 +123,19 @@ exports.cooldownCheck = async user => {
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+exports.ipCooldownCheck = async (req, res, next) => {
|
|
|
|
|
+ const cooldonwConfig = Number(process.env.NON_USER_COOLDOWN);
|
|
|
|
|
+ if (req.user || !cooldonwConfig) return next();
|
|
|
|
|
+ const cooldownDate = await getIPCooldownCount(req.realIp);
|
|
|
|
|
+ if (cooldownDate) {
|
|
|
|
|
+ const timeToWait = cooldonwConfig - differenceInMinutes(new Date(), cooldownDate);
|
|
|
|
|
+ return res
|
|
|
|
|
+ .status(400)
|
|
|
|
|
+ .json({ error: `Non-users are limited. Wait ${timeToWait} minutes or log in.` });
|
|
|
|
|
+ }
|
|
|
|
|
+ next();
|
|
|
|
|
+};
|
|
|
|
|
+
|
|
|
exports.malwareCheck = async (user, target) => {
|
|
exports.malwareCheck = async (user, target) => {
|
|
|
const isMalware = await axios.post(
|
|
const isMalware = await axios.post(
|
|
|
`https://safebrowsing.googleapis.com/v4/threatMatches:find?key=${
|
|
`https://safebrowsing.googleapis.com/v4/threatMatches:find?key=${
|