head 1.4; access; symbols; locks; strict; comment @# @; 1.4 date 2004.02.19.18.12.19; author i; state Exp; branches; next 1.3; 1.3 date 2004.02.19.17.58.55; author i; state Exp; branches; next 1.2; 1.2 date 2004.02.19.17.56.09; author i; state Exp; branches; next 1.1; 1.1 date 2004.02.19.12.37.59; author i; state Exp; branches; next ; desc @First version. Get all netblocks from colocall.net. Don't parse it. @ 1.4 log @Added simple documentation and copyright @ text @#!/bin/sh # $Id: squid-buildua,v 1.3 2004/02/19 17:58:55 i Exp $ # Формирование списка сетей UA-IX для дальнейшего использования # например в squid acl # Чего делает: # - лезет по ссылке $url за списком сетей в CIDR формате # - вычисляем мелкие блоки, для которых уже есть бОльшие префиксы # - формирует файл $net. # # ЗЫ: алгоритм работы с масками передран со скрипта на colocall.net # спасибо им за сыкономленные пару минут времени :) # url='http://www.colocall.net/ua/?list' out="./ua-nets.tmp" net="./ua-nets.net" fetch="/usr/local/bin/curl -s -o '$out' '$url'" eval $fetch # cp -v "$net" "$out" if [ $? ]; then sort -t / +1 +0 "$out" | perl -e ' my %ip; my $verbose = 0; my @@nets = <>; BLOCK: foreach $l (@@nets){ chomp $l; next BLOCK unless $l =~ /^(\d+\.\d+\.\d+\.\d+)\/(\d+)$/; # my ($cip,$mask)=split /\//, $l; my ($cip, $mask)=($1, $2); print STDERR ">> Read - $l ($cip / $mask\n" if $verbose; foreach $i (keys %ip){ my ($net,$msk)=split /\//, $i; my $poaddr=unpack("L",pack("C4",(split (/\./, $net)))); my $puaddr=unpack("L",pack("C4",(split (/\./, $cip)))); my $pmask=unpack("L",pack("B32",(1 x $msk))); if (($puaddr & $pmask)==($poaddr & $pmask)) { print STDERR "Network $cip/$mask already in $net/$msk\n" if $verbose; next BLOCK; } } $ip{$l}=($cip, $mask); print STDERR "Network $cip/$mask added\n" if $verbose; print "$cip/$mask\n"; } ' > "$out.tmp" cmp -s "$out.tmp" "$net" || ( echo Files changes... diff -u -0 --suppress-common-lines "$net" "$out" mv "$out.tmp" "$net" ) /bin/rm -f "$out" "$out.tmp" exit 0 else exit 127 fi # $Log: squid-buildua,v $ # Revision 1.3 2004/02/19 17:58:55 i # Added Log section :) # @ 1.3 log @Added Log section :) @ text @d2 1 a2 1 # $Id: squid-buildua,v 1.2 2004/02/19 17:56:09 i Exp i $ d4 10 d58 4 a61 1 # $Log$ @ 1.2 log @Check prefixes (small PA allocations) Sort prefices. Require Perl distributon @ text @d2 1 a2 1 # $Id$ d47 2 @ 1.1 log @Initial revision @ text @d2 1 d10 1 d12 26 a37 1 cmp -s "$out" "$net" || ( d40 1 a40 1 mv "$out" "$net" d42 2 a46 2 [ -f "$out" ] && /bin/rm -f "$out" exit 0 @