Esempio n. 1
0
<?php

require_once __DIR__ . '/../incl/incl.php';
require_once __DIR__ . '/../incl/api.incl.php';
if (!isset($argv[1])) {
    DebugMessage("Enter IP to ban on command line.\n");
    exit(1);
}
$ip = trim($argv[1]);
if ($ip == false) {
    MCDelete(BANLIST_CACHEKEY);
    DebugMessage("Cleared banlist from memcache.\n");
    exit;
}
$ret = BanIP($ip);
if ($ret) {
    DebugMessage("{$ip} added to ban list.\n");
} else {
    if (IPIsBanned($ip)) {
        DebugMessage("{$ip} already on ban list.\n");
    } else {
        DebugMessage("{$ip} NOT added to ban list.\n");
    }
}
Esempio n. 2
0
require_once '../incl/api.incl.php';
$logFileName = isset($argv[1]) ? $argv[1] : '../logs/access.log';
if (!file_exists($logFileName)) {
    DebugMessage("Can't find log file: {$logFileName}\n");
    exit(1);
}
$ipHits = [];
$fh = fopen($logFileName, 'r');
if ($fh) {
    while (($line = fgets($fh, 4096)) !== false) {
        if (strpos($line, '"GET /api/') !== false) {
            //} && (strpos($line, '(X11; Ubuntu; Linux i686; rv:25.0') !== false)) {
            preg_match('/^\\S+/', $line, $res);
            if (!isset($ipHits[$res[0]])) {
                $ipHits[$res[0]] = 0;
            }
            $ipHits[$res[0]]++;
        }
    }
}
fclose($fh);
arsort($ipHits, SORT_NUMERIC);
$x = 0;
foreach ($ipHits as $ip => $hits) {
    if (!IPIsBanned($ip)) {
        echo "{$ip} - {$hits}\n";
        if (++$x > 30) {
            break;
        }
    }
}
Esempio n. 3
0
function BanIP($ip = false)
{
    $exitAfter = false;
    $addedBan = false;
    if ($ip === false && PHP_SAPI != 'cli') {
        $ip = $_SERVER['REMOTE_ADDR'];
        $exitAfter = true;
    }
    if (!$ip) {
        return false;
    }
    $ip = trim(strtolower($ip));
    if (!IPIsBanned($ip)) {
        file_put_contents(BANLIST_FILENAME, "\n{$ip} # " . date('Y-m-d H:i:s'), FILE_APPEND | LOCK_EX);
        MCDelete(BANLIST_CACHEKEY);
        MCDelete(BANLIST_CACHEKEY . '_' . $ip);
        $addedBan = true;
    }
    if ($exitAfter) {
        header('HTTP/1.1 429 Too Many Requests');
        exit;
    }
    return $addedBan;
}