View file adm_panel/ban_ip.php

File size: 3.74Kb
<?php

include_once '../sys/inc/start.php';
include_once COMPRESS;
include_once SESS;
include_once '../sys/inc/home.php';
include_once SETTINGS;
include_once DB_CONNECT;
include_once IPUA;
include_once FNC;
include_once ADM_CHECK;
include_once USER;

user_access('adm_ban_ip', null, 'index.php?' . SID);

$opsos = NULL;
$set['title'] = 'Бан по IP';

include_once THEAD;

title();

if (isset($_POST['min']) && isset($_POST['max'])) {
    if (!preg_match("#^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$#", $_POST['min']))
        $err[] = 'Неверный формат IP-адреса';

    if (!preg_match("#^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$#", $_POST['max']))
        $err[] = 'Неверный формат IP-адреса';

    $min = ip2long($_POST['min']);
    $max = ip2long($_POST['max']);

    if (ip2long($ip) >= $min && ip2long($ip) <= $max) {
        $err[] = 'Ваш IP входит в заданный диапазон';
    } elseif (!isset($err)) {
        dbquery("INSERT INTO `ban_ip` (`min`, `max`) values('$min', '$max')", $db);

        msg('Диапазон успешно забанен');
    }
}

if (isset($_GET['delmin']) && isset($_GET['delmax']) &&
        dbresult(dbquery("SELECT COUNT(*) FROM `ban_ip` WHERE `min` = '" . $_GET['delmin'] . "' AND `max` = '" . $_GET['delmax'] . "' LIMIT 1", $db), 0) != 0) {

    dbquery("DELETE FROM `ban_ip` WHERE `min` = '" . $_GET['delmin'] . "' AND `max` = '" . $_GET['delmax'] . "' LIMIT 1");
    dbquery("OPTIMIZE TABLE `ban_ip`");

    msg('Диапазон успешно удален');
}

err();
aut();

$k_post = dbresult(dbquery("SELECT COUNT(*) FROM `ban_ip`"), 0);
$k_page = k_page($k_post, $set['p_str']);
$page = page($k_page);
$start = $set['p_str'] * $page - $set['p_str'];
$q = dbquery("SELECT * FROM `ban_ip` LIMIT $start, $set[p_str]");

echo '<div class="list-group">';

if ($k_post == 0) {
    echo "<div class='list-group-item'>\n";
    echo "Нет результатов\n";
    echo "</div>\n";
}

while ($post = dbassoc($q)) {
    echo "<div class='list-group-item'>\n";

    echo long2ip($post['min']) . ' - ' . long2ip($post['max']);

    echo "<a href='?page=$page&amp;delmin=$post[min]&amp;delmax=$post[max]' title='Удалить' style='float:right'><i class='mdi mdi-delete'></i></a>\n";
    echo "</div>\n";
}


if ($k_page > 1) {
    str('?', $k_page, $page);
} // Вывод страниц

$min = NULL;
$max = NULL;

if (isset($_GET['min']) && preg_match("#^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$#", long2ip($_GET['min']))) {
    echo "HOST: " . gethostbyaddr(long2ip($_GET['min'])) . "<br />\n";

    $min = long2ip($_GET['min']);
    $max = long2ip($_GET['min']);

    if (isset($_GET['max']) && preg_match("#^([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3}).([0-9]{1,3})$#", long2ip($_GET['max']))) {
        $max = long2ip($_GET['max']);
    }
}

echo "<form method='post' class='list-group-item' action='?ban=$passgen'>\n";
echo "<div class='mb-3'>";
echo "<label class='form-label'>Начало</label>";
echo "<input name='min' class='form-control' value='$min' type='text' />\n";
echo "</div>\n";

echo "<div class='mb-3'>";
echo "<label class='form-label'>Конец</label>";
echo "<input name='max' class='form-control' value='$max' type='text' />\n";
echo "</div>\n";

echo '<button type="sybmit" class="btn btn-primary btn-sm">Забанить</button> ';
echo "</form>\n";

if (user_access('adm_panel_show')) {
    echo "<div class='list-group-item list-group-item-light'>\n";
    echo "<a href='index.php'><i class='mdi mdi-arrow-left'></i> Панель управления</a><br />";
    echo "</div>\n";
}
echo "</div>\n";

include_once TFOOT;
?>