...
|
...
|
@@ -15,25 +15,6 @@ const captchaPolicy = require('./policies/captcha'); |
|
|
|
|
|
// const reporterPolicy = require('./policies/reporter');
|
|
|
|
|
|
const IP_WHITE_LIST = [
|
|
|
'106.38.38.146', // 北京办公区域
|
|
|
'106.38.38.147', // 北京办公区域
|
|
|
'106.39.86.227', // 北京办公区域
|
|
|
'218.94.75.58', // 南京办公区域
|
|
|
'218.94.75.50', // 南京办公区域
|
|
|
'218.94.77.166', // 南京办公区域
|
|
|
|
|
|
// '222.73.196.18', // B站合作方单击次数快加白名单
|
|
|
'123.206.73.107', // 腾讯云出口IP
|
|
|
'139.199.35.21', // 腾讯云出口IP
|
|
|
'139.199.29.44', // 腾讯云出口IP
|
|
|
'123.206.21.19' // 腾讯云出口IP
|
|
|
];
|
|
|
|
|
|
const IP_WHITE_SEGMENT = [
|
|
|
'10.66.', // 内网IP段
|
|
|
'192.168.' // 内网IP段
|
|
|
];
|
|
|
|
|
|
const limiter = (rule, policy, context) => {
|
|
|
return rule(context, policy);
|
...
|
...
|
@@ -42,15 +23,12 @@ const limiter = (rule, policy, context) => { |
|
|
// 排除条件:ip白名单/路径白名单/异步请求/登录用户
|
|
|
const _excluded = (req) => {
|
|
|
let remoteIp = req.yoho.clientIp || '';
|
|
|
let remoteIpSegment = `${remoteIp.split('.').slice(0, 2).join('.')}.`;
|
|
|
|
|
|
return co(function* () {
|
|
|
let atWhiteList = yield ipWhiteList(remoteIp);
|
|
|
let atIPWhiteList = yield ipWhiteList(remoteIp);
|
|
|
|
|
|
return Boolean(
|
|
|
atWhiteList ||
|
|
|
_.includes(IP_WHITE_LIST, remoteIp) ||
|
|
|
_.includes(IP_WHITE_SEGMENT, remoteIpSegment) ||
|
|
|
atIPWhiteList ||
|
|
|
_.includes(pathWhiteList(), req.path) ||
|
|
|
req.xhr ||
|
|
|
!_.isEmpty(_.get(req, 'user.uid'))
|
...
|
...
|
|