diff --git a/app/Http/Middleware/HumanVerification.php b/app/Http/Middleware/HumanVerification.php index 2a69dc31c564d0337c5f7ceebadb0cde4a972c40..ee1ceb335ac8e0f52e9760cecd08bf9682845fc2 100644 --- a/app/Http/Middleware/HumanVerification.php +++ b/app/Http/Middleware/HumanVerification.php @@ -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"], ] - ); + ); } } }