Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
ufo-app-web
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
0
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
陈峰
6 years ago
Commit
189260809a4d0fec406b6d7d64372b70b588e10e
1 parent
de45986e
ua black list
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
61 additions
and
0 deletions
create-app.js
doraemon/middleware/backlist.js
create-app.js
View file @
1892608
...
...
@@ -39,6 +39,8 @@ exports.createApp = async(app) => {
res
.
status
(
200
).
end
();
});
app
.
use
(
require
(
'./doraemon/middleware/backlist'
));
const
logger
=
global
.
yoho
.
logger
;
if
(
app
.
locals
.
devEnv
)
{
...
...
doraemon/middleware/backlist.js
0 → 100644
View file @
1892608
const
_
=
require
(
'lodash'
);
const
cache
=
global
.
yoho
.
cache
.
master
;
const
logger
=
global
.
yoho
.
logger
;
const
uaMatch
=
(
list
,
ua
)
=>
{
let
result
=
false
;
_
.
each
(
list
,
(
item
)
=>
{
let
regexp
;
try
{
regexp
=
new
RegExp
(
item
);
}
catch
(
e
)
{
logger
.
error
(
e
);
}
if
(
regexp
.
test
(
ua
))
{
result
=
true
;
}
});
return
result
;
};
module
.
exports
=
async
(
req
,
res
,
next
)
=>
{
const
blackKey
=
'pc:limiter:ua:black'
;
const
whiteKey
=
'pc:limiter:ua:white'
;
try
{
const
results
=
await
Promise
.
all
([
cache
.
getAsync
(
blackKey
),
cache
.
getAsync
(
whiteKey
)
]);
const
ualist
=
_
.
concat
([],
...
_
.
map
(
results
,
args
=>
{
let
list
=
[];
try
{
list
=
JSON
.
parse
(
args
)
||
[];
}
catch
(
error
)
{
logger
.
error
(
error
);
}
return
list
;
}));
if
(
ualist
.
length
===
0
)
{
return
next
();
}
const
ua
=
req
.
get
(
'User-Agent'
);
if
(
uaMatch
(
ualist
,
ua
))
{
return
res
.
status
(
200
).
end
();
}
return
next
();
}
catch
(
error
)
{
logger
.
error
(
error
);
return
next
();
}
};
...
...
Please
register
or
login
to post a comment