Роскомсос - скрипт для определения IP госорганов

fenix6390

fenix6390

New Member
Отключите ошибки или обновите файл
Код:
    public function __construct($ip=false)
    {
        $this->d = $_SERVER['DOCUMENT_ROOT'].'/roscomsos/';
        if ($ip) $this->ip=$ip;
    }
Если вставить этот код вместо того что в инструкции то выдает

Parse error: syntax error, unexpected 'public' (T_PUBLIC) in /var/адрес/адрес/адрес/шаблон/index.php on line 20
 
Master

Master

Модератор
Сделайте так
Код:
    public function __construct()
    {
        $this->d = $_SERVER['DOCUMENT_ROOT'].'/roscomsos/';
        if ($ip) $this->ip=$ip;
    }
Скоро зальем обновление без ошибок.
 
fenix6390

fenix6390

New Member
Сделайте так
Код:
    public function __construct()
    {
        $this->d = $_SERVER['DOCUMENT_ROOT'].'/roscomsos/';
        if ($ip) $this->ip=$ip;
    }
в этом случае если залить указанный код после head или body то выдает просто как текст а если сразу после <?PHP то такую же ошибку
 
dunder

dunder

New Member
Пришлось отключить ошибки php. Ждем новую версию скрипта.
Где то больше месяца назад поставил на страницы сайта - вроде как роском отступил, пока тишина.
 
V

Vicol

New Member
Как проверить если скрипт работает?
то есть хочу проверить если на самом деле показывает сообщение что сайт закрыт...
Спасибо
 
N

netcenzure222

Member
Не понял, а как вы туда запишите, это же Клоудфларе передает.
Это если доступ будет разрешён только для клоудфларных серверов. В противном случае, если злоумышленнику станет известен реальный ip сервера, то никакой CloudFlare уже не спасёт от перезаписи заголовков, в том числе и HTTP_X_FORWARDED_FOR. Вообще всё, что приходит в куках, $_GET, $_POST и $_SERVER надо тщательно проверять.
 
moder

moder

Администратор
Команда форума
Можно реал_фром_айпи в Nginx прописать, хотя IP могут поменяться в Cloudflare. Тогда условие на самом сайте: если IP Cloudflare, тогда из заголовков вытаскиваем, если нет, обычный ремоте адрр.
 
moder

moder

Администратор
Команда форума
Чуть не забыл, cidr_match с небольшими поправками:

PHP:
function cidr_match($ip, $range)
{
    $e = explode('/', $range);
    if (empty($e[1])) {
        if ($ip === $range) { // если указан один ip, а не диапазон
            return true;
        }
      
        $ips = explode('-', $range);
        if(!empty($ips[1])){    // если диапазон
            $ip_long = sprintf("%u", ip2long($ip));
            $ip_long_start = sprintf("%u", ip2long($ips[0]));
            $ip_long_end = sprintf("%u", ip2long($ips[1]));
            return ($ip_long >= $ip_long_start and $ip_long <= $ip_long_end);
        }
    } else { // если CIDR
        list ($subnet, $bits) = $e;
        $ip_long = ip2long($ip);
        $subnet = ip2long($subnet);
        $mask = -1 << (32 - $bits);
        $subnet &= $mask;
        return ($ip_long & $mask) == $subnet;
    }
    return false;
}
Не понял, а в чем там правки?
У нас это реализовано двумя методами, можно конечно объединить в один но это уже детали.
Код:
    // Ищем IP в диапазоне, например, таком 155.39.133.161-155.39.133.174
    public function find_range($range)
    {
    $range=explode('-', $range);

    return ( ip2long($this->ip)>=ip2long($range[0]) && ip2long($this->ip)<=ip2long($range[1]) );
    }
   
    // Ищем IP в подсети, например, 151.224.182.0/23
    public function find_subnet($range)
    {
     list ($subnet, $bits) = explode('/', $range);
     
     $ip = ip2long($this->ip);
     $subnet = ip2long($subnet);
     
     $mask = -1 << (32 - $bits);
     $subnet &= $mask;
     
     return ($ip & $mask) == $subnet;
    }
Или принципиально что-то не так в коде?
 
moder

moder

Администратор
Команда форума
Скрипт обновили.
Тестовый скрипт, как здесь, тоже, только в архиве он называется test.php.
Добавили еще админку для кодировки Windows-1251 (см. инструкцию).
 
dunder

dunder

New Member
Спасибо за обновленный скрипт.
В инструкции написано:

/////////////////
require_once("/roscomsos/roscomsos.php");
$Roscomsos=new Roscomsos();
$check_gos_ip=$Roscomsos->check_ip($_SERVER['REMOTE_ADDR']);

if ($check_gos_ip==true) { echo 'Извините, проводятся технические работы'; exit; }
/////////////////

Чтоб работал пришлось прописать как было:

require_once($_SERVER['DOCUMENT_ROOT']."/roscomsos/roscomsos.php");
 
fenix6390

fenix6390

New Member
Аналогично

что бы заработало так же пришлось прописать

require_once($_SERVER['DOCUMENT_ROOT']."/roscomsos/roscomsos.php");

p.s.
dunder спасибо )
 
S

sibsdf

New Member
Коллеги, всем доброго дня!
Спасибо за ваш скрипт!
Вопрос - как-то можно скрыть админку, ограничить доступ к папке со скриптом?(.htaccess, допустим)
А еще может ли получится так, что пройдет время и возможно контора с помощью гугла найдет все сайты с установленным скриптом?
 
moder

moder

Администратор
Команда форума
Вопрос - как-то можно скрыть админку, ограничить доступ к папке со скриптом?(.htaccess, допустим)
А еще может ли получится так, что пройдет время и возможно контора с помощью гугла найдет все сайты с установленным скриптом?
Можете через .htaccess установить пароль на папку или переименовать саму папку. Пароль еще в самой админке не забудьте поменять.
Можно запрет индексации папки задать.
 
S

sibsdf

New Member
Можете через .htaccess установить пароль на папку или переименовать саму папку. Пароль еще в самой админке не забудьте поменять.
Можно запрет индексации папки задать.
А как пароль на админке поменять? У меня нет пароля, открывается без пароля по /roscomsos/admin.php
 
moder

moder

Администратор
Команда форума
Быть такого не может, чтобы без пароля открывалось.
В коде есть строчка.
$password='Ltdfqlth5'; // Поменять пароль на свой
 
S

sibsdf

New Member
Быть такого не может, чтобы без пароля открывалось.
В коде есть строчка.
$password='Ltdfqlth5'; // Поменять пароль на свой
нашел. спасибо. в инструкции просто на нашел вообще информации о пароле.
Но я любой пароль могу ввести, нажать "Отправить" и попадаю в админку.
Что-то не так...
 
D

d24192

New Member
Допустим, я делаю страницу с чистым контентом для работника РКН, и что бы работнику РКН не было видно, что ему выдается страница с чистым контентом, а не запрашиваемая, использую iframe:
{echo '<iframe src="mysite.ru/чистый контент" height="100%" width="100%" frameborder="0" scrolling="yes">'; exit; }
Как вы считаете, могу ли я получить за это бан от гугла/яндекса? Как поисковики относятся к вашему скрипту?
Наткнулся на пост https://plus.google.com/+AndreyLipattsev/posts/Ca6Cd9Yt22Q что Гугл банит за редиректы.
Какие могут быть другие варианты выдачи "чистого контента"?
 
Последнее редактирование модератором:
dunder

dunder

New Member
На счет фреймов не в курсе. Я картинку поставил "Сайт на обновлении" - никаких проблем со стороны поисковиков не возникало.
 
Н

Наталья

New Member
Привет. А можно ли сделать запрет не ко всему сайту, а лишь к определенным страницам? сайт на cms..
 
dunder

dunder

New Member
joomla 3,6 и instantvideo
Лично я не работал с этими CMS. Лично мое мнение - трудновато будет, если только на определенные страницы, и к тому же не статические.
Если ставить - то на все в главном файле index. Или экспериментировать.
Впрочем, может кто другого мнения.
 
Сверху