Pit 35 Опубликовано: 2006-03-21 09:21:39 Share Опубликовано: 2006-03-21 09:21:39 Скрипт обновления сетей в таблицах ipfw. Требуеться модулб p5-libwww. /usr/ports/www/p5-libwww #!/usr/bin/perl # # Load and Update NETWORK ipfw table. 2006 # Формат сетей xxx.xxx.xxx.xxx/xx use LWP; $table=1; $ipfw="/sbin/ipfw"; $getipfwl=`$ipfw table $table list`; $url="http://www.colocall.net/ua/prefixes.txt"; my $ua=LWP::UserAgent->new(); $ua->agent("PerlUA/0.1"); my $document=$ua->request(HTTP::Request->new(GET => $url)); if ($document->is_success){ $uaix=($document->content); $uaix=~s/\s/\n/g; @uaix = split /\n/,$uaix; } else { print "Couldn't fetch $url\n"; exit; } $getipfwl =~s/\ \d//g; @tablenet = split /\n/,$getipfwl; ################################### %seen =(); @aonly =(); foreach $ip (@tablenet) { $seen{$ip} = 1; }; foreach $ip (@uaix) { unless (@uaix) { push(@aonly, $ip); } } my %seen; my @aonly; @seen{@tablenet} =(); foreach $ip (@uaix) { push(@aonly, $ip) unless exists $seen{$ip}; } foreach $ip (@aonly){ system("$ipfw table $table add $ip"); print("$ip add\n"); } #################################### %seen =(); @aonly =(); foreach $ip (@uaix) { $seen{$ip} = 1; }; foreach $ip (@tablenet) { unless (@tablenet) { push(@aonly, $ip); } } my %seen; my @aonly; @seen{@uaix} =(); foreach $ip (@tablenet) { push(@aonly, $ip) unless exists $seen{$ip}; } foreach $ip (@aonly){ print("$ip del\n"); system("$ipfw table $table delete $ip"); } Ссылка на сообщение Поделиться на других сайтах
Pit 35 Опубліковано: 2006-03-21 19:35:30 Автор Share Опубліковано: 2006-03-21 19:35:30 Что не пригодился никому? Ссылка на сообщение Поделиться на других сайтах
MaйeR 0 Опубліковано: 2006-03-22 07:15:49 Share Опубліковано: 2006-03-22 07:15:49 Что не пригодился никому? честно непонятно что это и зачем надо Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-03-24 05:59:44 Share Опубліковано: 2006-03-24 05:59:44 Я думаю, он может пригодиться для закрытиЯ/открытия только украины без мира. Ссылка на сообщение Поделиться на других сайтах
Pit 35 Опубліковано: 2006-03-24 06:11:28 Автор Share Опубліковано: 2006-03-24 06:11:28 Я думаю, он может пригодиться для закрытиЯ/открытия только украины без мира. Именно так. Или кончился у юсера мир, по skip to перекидываеи его на таблицу и получает оставшуюся украину. Ссылка на сообщение Поделиться на других сайтах
DZkik 0 Опубліковано: 2006-04-04 09:26:50 Share Опубліковано: 2006-04-04 09:26:50 логичнее пускать всегда на украину.. и отдельное пропускать на мир..деньги кончились коннекта нет на мир а Украина продолжает илдти..я подозреваю раза в 2 меньше писанины..=) Ссылка на сообщение Поделиться на других сайтах
centre-lan 1 Опубліковано: 2006-04-04 11:24:34 Share Опубліковано: 2006-04-04 11:24:34 логичнее пускать всегда на украину.. и отдельное пропускать на мир..деньги кончились коннекта нет на мир а Украина продолжает илдти..я подозреваю раза в 2 меньше писанины..=) логичней, конечно.. но то что ты сказал существует уже хрен знает сколько времени а реализовать его "просто" можно лишь с фриибсд последних версий (ipfw2) а вот правильней - покан а счету есть деньги - работает все.. как только деньги закончились - отключается все.. -- у меня утилиткой aggregate + скриптом формируется оптимизированный список украины в формате xi.. после него скрипт на перле (несколько строчек) - заносит его в table(1).. Ссылка на сообщение Поделиться на других сайтах
DZkik 0 Опубліковано: 2006-04-04 11:34:25 Share Опубліковано: 2006-04-04 11:34:25 с ipfw и 2 не работал стоит Pf но реально проблема решена таким образом таблица 1 таблица 2 нат таблица 1 в мир нат таблица 2 в лкальные ресурсы и потом просто работаем с таблицами у меня локальные ресурсы практически нахаляву так что их подключенным можно всегда...так что может из за этого я не вижу проблемы..тогда заранее извините =) Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-04-04 13:28:42 Share Опубліковано: 2006-04-04 13:28:42 2DZkik: Поясню - представь, что из фаера убрали такую штуку, как "таблица"... ) Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-04-09 09:55:53 Share Опубліковано: 2006-04-09 09:55:53 Перечитал скрипт, понял, что он сравнивает таблицу в фаерволе с таблицей с сайта. И удаляет/добавляет нужное. Очень удобно. Хотя мне интересно, если с агрегацией играться, не вызовет ли это проблем для сравнения? Ссылка на сообщение Поделиться на других сайтах
Lambert 5 Опубліковано: 2006-04-24 12:59:24 Share Опубліковано: 2006-04-24 12:59:24 ммм.. а кстати, как проходит раздельная тарификация украины/мира? взять список сетей с колокола, пропустить через aggregate и как-то втолкнуть в rules старгейзера? Ссылка на сообщение Поделиться на других сайтах
XoRe 0 Опубліковано: 2006-04-24 13:13:12 Share Опубліковано: 2006-04-24 13:13:12 2Lambert: http://local.com.ua/forum/index.php?showto...t=0entry31704 Ссылка на сообщение Поделиться на других сайтах
Pit 35 Опубліковано: 2006-04-24 16:48:30 Автор Share Опубліковано: 2006-04-24 16:48:30 Перечитал скрипт, понял, что он сравнивает таблицу в фаерволе с таблицей с сайта.И удаляет/добавляет нужное. Очень удобно. Хотя мне интересно, если с агрегацией играться, не вызовет ли это проблем для сравнения? Агрегируй входящий и с нимже сравнивай, лишнее убереться/добавиться Ссылка на сообщение Поделиться на других сайтах
vlad5503 1 Опубліковано: 2017-06-22 08:40:04 Share Опубліковано: 2017-06-22 08:40:04 Скрипт обновления сетей в таблицах ipfw. Требуеться модулб p5-libwww. /usr/ports/www/p5-libwww #!/usr/bin/perl # # Load and Update NETWORK ipfw table. 2006 # Формат сетей xxx.xxx.xxx.xxx/xx use LWP; $table=1; $ipfw="/sbin/ipfw"; $getipfwl=`$ipfw table $table list`; $url="http://www.colocall.net/ua/prefixes.txt"; my $ua=LWP::UserAgent->new(); $ua->agent("PerlUA/0.1"); my $document=$ua->request(HTTP::Request->new(GET => $url)); if ($document->is_success){ $uaix=($document->content); $uaix=~s/\s/\n/g; ...... foreach $ip (@aonly){ system("$ipfw table $table add $ip"); print("$ip add\n"); } ...... Вот тоже надо таблицами управлять, но не получилось....) Вот такой простейший скрипт: #!/usr/local/bin/perl print ("Content-type: text/html\n\n"); use strict; use CGI ':standard'; use Socket; my $date = localtime; my $log = "/usr/scripts/on.log"; my $key = param('key'); my $kod = param('kod'); my $ipfw = "/sbin/ipfw"; my $table = "2"; my $ip = "192.168.30.0/24"; my $metka = 0; my $id = param('id'); if ($key eq "euflfk") { if ($kod eq "vsem") { if ($id eq "10.10.10.2") { if (open(LOG, ">>$log")) { print LOG "$date"."_"."OPEN"."_"."$id"."_"."$kod"."\n"; close(LOG); system("$ipfw table $table add $ip"); } } } } exit 0; Что не так?.... Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас