|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBS/WSH/JS - [решено] VBS| Ошибки при добавлении списка разрешенных IP в IIS |
|
VBS/WSH/JS - [решено] VBS| Ошибки при добавлении списка разрешенных IP в IIS
|
Новый участник Сообщения: 32 |
Профиль | Отправить 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! ПРОБЛЕМА: Этот VBS скрипт не работает, выдает ошибку: <...>\ip2.vbs(1741, 1) Microsoft VBScript runtime error: Invalid procedure call or argument НО: Если урезать список IP до, к примеру 25 штук ( http://sync.ministryofmp3.ru/ip.txt ) то все работает. Но мне надо полный список. ВОПРОС: Что делать и кто виноват? Есть ли еще пути решения проблемы русских IP для IIS? |
|
------- Отправлено: 20:26, 12-03-2007 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить 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
|
Профиль | Отправить PM | Цитировать >> Сколько элементов? вроде 1729...
Я не сомневался в таком ответе! Да, 1729 элементов, но VB создает массив от 0 до 1728! А не просто 1728 элементов, это эквивалентно Dim IPList (0 to 1728). Когда я об этом узнал, сам был немало удивлен. И, кстати, если будет превышение - выскочит ошибка. Проблема не в этом. Как мне посоветовали на форуме Microsoft - скорее всего, там есть пересекающиеся сети, и метод (!!!!!) IPGrant (да, это метод, что для меня было открытием, я ж почти не знаю VB, и не думал, что в нем есть перегрузка операторов) - не пропускает полученный список IP. С помощью различных тестов, я на 80% убедился, что это именно так. Таким образом получаем, что необходимо на основе данного списка IP сформировать новый, очищенный и нормализованный. За сим, тема закрыта. ПС: Обсуждение алгоритма получения "чистого" списка IP уношу в соседний топик. Ариведерчи. |
------- Отправлено: 13:27, 16-03-2007 | #3 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать ох уж этот vbs... постоянно там какие-то "приколы" :] уже не первый раз.
Тему пометил как решённую |
Отправлено: 16:08, 16-03-2007 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Зависает панель задач при добавлении ярлыка. | 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 |
|