37 lines
No EOL
1.1 KiB
PHP
37 lines
No EOL
1.1 KiB
PHP
<?php
|
|
|
|
namespace ImageHeberg;
|
|
|
|
class HelperAbuse
|
|
{
|
|
/**
|
|
* Retourne le nombre d'images bloquées issues du même réseau IP
|
|
* @param string $remote_addr Adresse IP à tester
|
|
* @return int
|
|
*/
|
|
public static function checkIpReputation(string $remote_addr): int
|
|
{
|
|
$monRetour = 0;
|
|
|
|
// IPv4 - Filtrer sur un /24 || IPv6 - Filtrer sur un /56
|
|
$req = MaBDD::getInstance()->prepare(
|
|
'SELECT COUNT(*) AS nb
|
|
FROM images
|
|
WHERE isBloquee = 1
|
|
AND abuse_network = (
|
|
IF(LOCATE(\'.\', :remote_addr) != 0,
|
|
SUBSTRING(:remote_addr, 1, (LENGTH(:remote_addr) - LOCATE(\'.\', REVERSE(:remote_addr)))),
|
|
SUBSTRING(HEX(INET6_ATON(:remote_addr)), 1, 14)
|
|
)
|
|
)'
|
|
);
|
|
$req->bindValue(':remote_addr', $remote_addr);
|
|
$req->execute();
|
|
$resultat = $req->fetch();
|
|
if ($resultat !== false) {
|
|
$monRetour = (int)$resultat->nb;
|
|
}
|
|
|
|
return $monRetour;
|
|
}
|
|
} |