Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - [решено] VBS| Ошибки при добавлении списка разрешенных IP в IIS

Ответить
Настройки темы
VBS/WSH/JS - [решено] VBS| Ошибки при добавлении списка разрешенных IP в IIS

Новый участник


Сообщения: 32
Благодарности: 1

Профиль | Отправить PM | Цитировать


Задача - закрыть доступ к серверу (WS2003) с иностранных IP
Решение - закрыть доступ всем, потом внести список российских подсетей в список разрешенных. Список есть по адресу http://noc.masterhost.ru/allrunet/runet
Реализация:
Поскольку вбивать ручками все это нереально, был написан скрипт на PHP, который генерит скрипт на VBS для добваления IP в список рарешенных для IIS. Скрипт на PHP писался из-за незнания VBS.

Получилось:
Код: Выделить весь код
<?php
echo "'Getting IP list... ";
$ip_array=file("http://noc.masterhost.ru/allrunet/runet");
echo "IP List Loaded.\r\n";
$ip_count=count($ip_array);
echo "'Subnets count: $ip_count\r\n";
echo "'Converting masks... ";
for ($i=0; $i<$ip_count; ++$i)
{
$ip_array[$i]=str_ireplace("/8\n",",255.0.0.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/9\n",",255.128.0.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/10\n",",255.192.0.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/11\n",",255.224.0.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/12\n",",255.240.0.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/13\n",",255.248.0.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/14\n",",255.252.0.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/15\n",",255.254.0.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/16\n",",255.255.0.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/17\n",",255.255.128.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/18\n",",255.255.192.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/19\n",",255.255.224.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/20\n",",255.255.240.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/21\n",",255.255.248.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/22\n",",255.255.252.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/23\n",",255.255.254.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/24\n",",255.255.255.0",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/25\n",",255.255.224.128",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/26\n",",255.255.255.192",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/27\n",",255.255.255.224",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/28\n",",255.255.255.240",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/29\n",",255.255.255.248",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/30\n",",255.255.255.252",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/31\n",",255.255.255.254",$ip_array[$i]);
$ip_array[$i]=str_ireplace("/32\n",",255.255.255.255",$ip_array[$i]);
}
echo "Done.\r\n";
echo "'Writing IIS config script...\r\n";
?>
'------------------------------------------------------------
Dim IIsWebVirtualDirObj
Dim IIsIPSecurityObj
Set IIsWebVirtualDirObj = GetObject("IIS://localhost/W3SVC/793577/Root")
Set IIsIPSecurityObj = IIsWebVirtualDirObj.IPSecurity
IIsIPSecurityObj.GrantByDefault = false
<?php
$ip_count--;
echo "Dim IPList ($ip_count)\r\n";
$i=0;
foreach ($ip_array as $ip)
{
echo "IPList ($i) = \"$ip\"\r\n";
$i++;
}
?>
IIsIPSecurityObj.IPGrant = IPList
IIsWebVirtualDirObj.IPSecurity = IIsIPSecurityObj
IIsWebVirtualDirObj.SetInfo
WScript.Echo("Granted access from:")
for each IP in IIsIPSecurityObj.IPGrant
WScript.Echo(IP)
next
'------------------------------------------------------------
'Done!
Результатом работы является: http://sync.ministryofmp3.ru/ip2.txt

ПРОБЛЕМА:

Этот VBS скрипт не работает, выдает ошибку:
<...>\ip2.vbs(1741, 1) Microsoft VBScript runtime error: Invalid procedure call or argument

НО:

Если урезать список IP до, к примеру 25 штук ( http://sync.ministryofmp3.ru/ip.txt )
то все работает. Но мне надо полный список.

ВОПРОС:
Что делать и кто виноват?
Есть ли еще пути решения проблемы русских IP для IIS?

-------
Не пытайтесь представить n-мерный куб. Представить еще никто не смог, а в дурдом переехали многие.


Отправлено: 20:26, 12-03-2007

 

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


>> Dim IPList (1728)
>> IPList (0) = "144.206.0.0,255.255.0.0"
>> ...
>> IPList (1728) = "91.76.0.0,255.252.0.0"

Сколько элементов? вроде 1729...

Отправлено: 11:35, 16-03-2007 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 32
Благодарности: 1

Профиль | Отправить PM | Цитировать


>> Сколько элементов? вроде 1729...

Я не сомневался в таком ответе! Да, 1729 элементов, но VB создает массив от 0 до 1728! А не просто 1728 элементов, это эквивалентно Dim IPList (0 to 1728). Когда я об этом узнал, сам был немало удивлен.
И, кстати, если будет превышение - выскочит ошибка.

Проблема не в этом. Как мне посоветовали на форуме Microsoft - скорее всего, там есть пересекающиеся сети, и метод (!!!!!) IPGrant (да, это метод, что для меня было открытием, я ж почти не знаю VB, и не думал, что в нем есть перегрузка операторов) - не пропускает полученный список IP. С помощью различных тестов, я на 80% убедился, что это именно так.
Таким образом получаем, что необходимо на основе данного списка IP сформировать новый, очищенный и нормализованный.
За сим, тема закрыта.

ПС: Обсуждение алгоритма получения "чистого" списка IP уношу в соседний топик. Ариведерчи.

-------
Не пытайтесь представить n-мерный куб. Представить еще никто не смог, а в дурдом переехали многие.


Отправлено: 13:27, 16-03-2007 | #3


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


ох уж этот vbs... постоянно там какие-то "приколы" :] уже не первый раз.

Тему пометил как решённую

Отправлено: 16:08, 16-03-2007 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - [решено] VBS| Ошибки при добавлении списка разрешенных IP в IIS

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Зависает панель задач при добавлении ярлыка. Mura1708 Microsoft Windows 7 2 19-01-2010 11:02
Любой язык - [решено] Нужен скрипт cmd,vbs,PowerShell для проверки списка пользователей и их удаление из AD alex_frog Скриптовые языки администрирования Windows 6 22-07-2009 18:41
FreeBSD - [решено] Ошибка при добавлении пользователя через sysinstall _soldat_ Общий по FreeBSD 7 02-08-2008 17:51
[решено] Ошибка при добавлении DC в AD VBoris Microsoft Windows NT/2000/2003 2 12-05-2008 09:46
[решено] Ошибка при добавлении пользователя в ActiveDirectory (Win2k) Dear Friend Microsoft Windows NT/2000/2003 5 19-08-2007 16:40




 
Переход