VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Возможно ли разрешить доступ к какому-то конкретному разделу по IP? У нас форум для локалки создан и нужно в один раздел запретить доступ для всех, кроме пользователей с локальными IP-адресами 10.*.*.*. Как это можно реализовать? И может ли кто-то в этом помочь?
Adium, иди в админку -- Продукты и модули -- Добавить новый модуль -- заполняй форму:
Продукт = vBulletin
Местоположение модуля = global_setup_complete
Заголовок = Доступ к разделу по IP (или еще как на свой вкус)
Порядок выполнения = 1
Модуль включен = Да
Код PHP модуля =
PHP Code:
if (isset($foruminfo) AND $foruminfo['forumid'] == XXX AND !preg_match('/^10\./', $_SERVER['REMOTE_ADDR']))
{
eval(standard_error(fetch_error('forumdenybyip')));
}
в коде вместо XXX укажи ID нужного раздела форума (7, 10, 128 или еще какой там -- короче число). после этого жми кнопку "Сохранить". теперь там же в админке иди в раздел Языки и фразы -- Управление фразами -- жми кнопку "Добавить новую фразу" и заполняй форму:
Имя переменной = forumdenybyip
Текст = "Доступ к разделу разрешен только для пользователей с IP 10.0.0.0/8" (или иначе как)
остальные поля пусть остаются, какие есть
жми кнопку "Сохранить". вот вроде и все.
з.ы. если такое нужно для нескольких разделов, то вместо
где X1, X2, X3, X4 -- просто номера разделов через запятую.
@Adium
Продвинутый
Join Date: May 2008
Posts: 106
Версия vB: 4.1.x
Reputation:
Опытный 28
Репутация в разделе: 25
0
Хм... сделал все как написано. Включил TOR, зашел на форум и спокойно открыл нужный раздел. Что-то видимо не так... Форум видет пользователя с IP 87.118.104.203.
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1011
Репутация в разделе: 893
0
Adium, значит все-таки что-то сделал не так, т.к. я только что провел эксперимент: просто скопировал код с этой страницы (не набирал заново, а именно скопировал отсюда) к себе на форум и попробовал войти в раздел -- не пустило. проверяй сам или рассказывай, что и как делал.
Ghost добавил 19.05.2009 в 14:00
кстати, не проще ли сделать публичную группу, стать ее лидером и принимать в нее пользователей из локалки, а на нужный раздел средставми админки запретить доступ всем, кроме этой группы? а то получится, что пользователь из локалки, но хочет зайти с другого компа (на работе, например) а фига ему.
Last edited by Ghost : 05-19-2009 at 03:00 PM.
Reason: Добавлено сообщение
@Adium
Продвинутый
Join Date: May 2008
Posts: 106
Версия vB: 4.1.x
Reputation:
Опытный 28
Репутация в разделе: 25
0
Я добавил новый модуль, где в поле "Код PHP модуля" вставил
PHP Code:
if (isset($foruminfo) AND in_array($foruminfo['forumid'], array(134, 241, 242, 243, 528, 245, 246, 247, 248, 520, 249, 250, 251)) AND !preg_match('/^10\./', $_SERVER['REMOTE_ADDR']))
{
eval(standard_error(fetch_error('forumdenybyip')));
}
Все остальное заполнил один в один как написано выше.
Далее зашел на форум под своим логином, предварительно включив TOR. На форуме в сообщениям у меня теперь IP 87.118.104.203, но в разделы я все-равно могу зайти.
Adium добавил 19.05.2009 в 14:10
Quote:
Originally Posted by Ghost
кстати, не проще ли сделать публичную группу, стать ее лидером и принимать в нее пользователей из локалки, а на нужный раздел средставми админки запретить доступ всем, кроме этой группы? а то получится, что пользователь из локалки, но хочет зайти с другого компа (на работе, например) а фига ему.
к сожалению начальство попросило сделать, чтобы доступ к определенной группе разделов должен быть при выходе только с локалки, а с других IP туда пускать не должно
Adium добавил 19.05.2009 в 14:17
Вот какие настройки сделал.
Новый модуль:
Новая фраза:
Что тут не так?
Last edited by Adium : 05-19-2009 at 03:17 PM.
Reason: Добавлено сообщение
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1011
Репутация в разделе: 893
0
все так. проверено на 3.6.8 и 3.8.1 -- полет нормальный. единственное уточнение -- фразу нужно было вносить в группу "Сообщения об ошибках (fieldname = error)", но это не должно было повлиять на работу хака -- просто было бы выведено сообщение, что фраза "forumdenybyip" не найдена, но доступа к разделу бы все равно не было. давай проделаем такую штуку: поправим код модуля, вставив в него отладочные строки, и посмотрим, что он правильно проверяет, а что нет. добавь в самое начало кода модуля такие строки:
здесь вместо ZZZ укажи ID своего пользователя (чтобы другие эту отладку не видели). это вставим временно -- чтобы разобраться, что именно не работает. потом надо будет удалить.
@Adium
Продвинутый
Join Date: May 2008
Posts: 106
Версия vB: 4.1.x
Reputation:
Опытный 28
Репутация в разделе: 25
0
Добавил, попробовал зайти с использованием TOR и получил в ответ
Quote:
Array
(
[0] => $foruminfo exists
[1] => $foruminfo[134] in black list
[2] => IP 10.255.255.254 in white list
)
Если я верно понял, то при проверки доступа форум видит мой IP как 10.255.255.254 и это странно...
Adium добавил 19.05.2009 в 16:55
Попробовал сделать тоже самое, только заходили под акком знакомые у которых нет локалки и другой провайдер - у них выдает тоже самое, что [2] => IP 10.255.255.254 in white list, но на страничке online.php показывает их реальный IP... Честно говоря я в замешательстве небольшом...
Last edited by Adium : 05-19-2009 at 05:55 PM.
Reason: Добавлено сообщение
@Ghost
Гуру
Join Date: Feb 2008
Posts: 983
Версия vB: 3.8.1
Reputation:
Гуру 1011
Репутация в разделе: 893
1
Adium, пойди в админку -- Обслуживание -- Показать информацию о PHP: ищи там табличку "Apache Environment" и посмотри в ней, какая строка содержит твой реальный ip. Или в модуле замени везде
PHP Code:
$_SERVER['REMOTE_ADDR']
на
PHP Code:
fetch_alt_ip()
@Adium
Продвинутый
Join Date: May 2008
Posts: 106
Версия vB: 4.1.x
Reputation:
Опытный 28
Репутация в разделе: 25
0
Еще раз спасибо =) У меня работоспособен код
Quote:
if (isset($foruminfo) AND in_array($foruminfo['forumid'], array(134, 241, 242, 243, 528, 245, 246, 247, 248, 520, 249, 250, 251)) AND !preg_match('/^10\./', $_SERVER['HTTP_X_REAL_IP']))
{
eval(standard_error(fetch_error('forumdenybyip')));
}
Выполняет именно то, что мне нужно. Огромное спасибо.
Smalesh
В Черном списке
Join Date: Oct 2006
Награды в конкурсах:
Posts: 3,055
Версия vB: 3.8.7
Пол:
Reputation:
Мастер 3981
Репутация в разделе: 1320
0
А как добавить несколько диапазонов? 192 и 172 ?
Все, решил вроде:
PHP Code:
if (isset($foruminfo) AND in_array($foruminfo['forumid'], array(42, 43, 89, 85, 57)) AND !preg_match('/^(10|172|192\.168)\./', $_SERVER['HTTP_X_REAL_IP']))
{
eval(standard_error(fetch_error('forumdenybyip')));
}
Ну все хорошо, только работает по ID раздела. Напрямую в тему можно зайти.