Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
open-source
MetaGer
Commits
fe10112f
Commit
fe10112f
authored
Jan 09, 2019
by
Dominik Hebeler
Browse files
Reduced the amount of times users have to face captchas
parent
b61ff337
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
app/Http/Middleware/HumanVerification.php
View file @
fe10112f
...
...
@@ -40,42 +40,43 @@ class HumanVerification
return
$next
(
$request
);
}
$users
=
DB
::
select
(
'select * from humanverification where id = ?'
,
[
$id
]);
# Lock out everyone in a Bot network
# Find out how many requests this IP has made
$sum
=
0
;
foreach
(
$users
as
$userTmp
){
if
(
$uid
==
$userTmp
->
uid
){
foreach
(
$users
as
$userTmp
)
{
if
(
$uid
==
$userTmp
->
uid
)
{
$user
=
[
'uid'
=>
$userTmp
->
uid
,
'id'
=>
$userTmp
->
id
,
'unusedResultPages'
=>
intval
(
$userTmp
->
unusedResultPages
),
'whitelist'
=>
filter_var
(
$userTmp
->
whitelist
,
FILTER_VALIDATE_BOOLEAN
),
'whitelistCounter'
=>
$userTmp
->
whitelistCounter
,
'locked'
=>
filter_var
(
$userTmp
->
locked
,
FILTER_VALIDATE_BOOLEAN
),
"lockedKey"
=>
$userTmp
->
lockedKey
,
'updated_at'
=>
Carbon
::
now
(),
];
'id'
=>
$userTmp
->
id
,
'unusedResultPages'
=>
intval
(
$userTmp
->
unusedResultPages
),
'whitelist'
=>
filter_var
(
$userTmp
->
whitelist
,
FILTER_VALIDATE_BOOLEAN
),
'whitelistCounter'
=>
$userTmp
->
whitelistCounter
,
'locked'
=>
filter_var
(
$userTmp
->
locked
,
FILTER_VALIDATE_BOOLEAN
),
"lockedKey"
=>
$userTmp
->
lockedKey
,
'updated_at'
=>
Carbon
::
now
(),
];
$newUser
=
false
;
}
if
(
$userTmp
->
whitelist
===
0
)
if
(
$userTmp
->
whitelist
===
0
)
{
$sum
+=
$userTmp
->
unusedResultPages
;
}
}
# If this user doesn't have an entry we will create one
if
(
$user
===
null
)
{
$user
=
[
'uid'
=>
$uid
,
'id'
=>
$id
,
'unusedResultPages'
=>
0
,
'whitelist'
=>
false
,
'whitelistCounter'
=>
0
,
'locked'
=>
false
,
"lockedKey"
=>
""
,
'updated_at'
=>
Carbon
::
now
(),
];
'uid'
=>
$uid
,
'id'
=>
$id
,
'unusedResultPages'
=>
0
,
'whitelist'
=>
false
,
'whitelistCounter'
=>
0
,
'locked'
=>
false
,
"lockedKey"
=>
""
,
'updated_at'
=>
Carbon
::
now
(),
];
}
# A lot of automated requests are from websites that redirect users to our result page.
...
...
@@ -94,9 +95,11 @@ class HumanVerification
// Defines if this is the only user using that IP Adress
$alone
=
true
;
foreach
(
$users
as
$userTmp
){
if
(
$userTmp
->
uid
!=
$uid
&&
!
$userTmp
->
whitelist
)
foreach
(
$users
as
$userTmp
)
{
if
(
$userTmp
->
uid
!=
$uid
&&
!
$userTmp
->
whitelist
)
{
$alone
=
false
;
}
}
if
((
!
$alone
&&
$sum
>=
50
&&
!
$user
[
"whitelist"
])
||
$refererLock
)
{
$user
[
"locked"
]
=
true
;
...
...
@@ -127,7 +130,7 @@ class HumanVerification
# If the user shows activity on our result page the counter will be deleted
# Maybe I'll add a ban if the user reaches 100
if
(
$user
[
"unusedResultPages"
]
===
50
||
$user
[
"unusedResultPages"
]
===
75
||
$user
[
"unusedResultPages"
]
===
85
||
$user
[
"unusedResultPages"
]
>=
90
)
{
if
(
$user
[
"unusedResultPages"
]
===
50
||
(
$user
[
"unusedResultPages"
]
>
50
&&
$user
[
"unusedResultPages"
]
%
25
===
0
)
)
{
$user
[
"locked"
]
=
true
;
}
...
...
@@ -136,8 +139,8 @@ class HumanVerification
// Failure in contacting metager3.de
}
finally
{
// Update the user in the database
if
(
$update
){
if
(
$newUser
){
if
(
$update
)
{
if
(
$newUser
)
{
DB
::
table
(
'humanverification'
)
->
insert
(
[
'uid'
=>
$user
[
"uid"
],
...
...
@@ -150,7 +153,7 @@ class HumanVerification
'updated_at'
=>
$user
[
"updated_at"
],
]
);
}
else
{
}
else
{
DB
::
table
(
'humanverification'
)
->
where
(
'uid'
,
$uid
)
->
update
(
[
'uid'
=>
$user
[
"uid"
],
...
...
@@ -162,7 +165,7 @@ class HumanVerification
"lockedKey"
=>
$user
[
"lockedKey"
],
'updated_at'
=>
$user
[
"updated_at"
],
]
);
);
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment