1.1, Eugene Marko (?), 15:51, 11/01/2006 [ответить]
| +/– |
не самый быстрый, и не самый оптимальный, но работающий перловый скрипт превращающий http://noc.ix.net.ua/ua-list.txt в удобоваримый для сквида вид.
<pre>
#!/usr/bin/perl
@uaix=<STDIN>;
#@uaix = ("192.168.0.0", "192.168.0.0/16");
undef @netz;
foreach $net (@uaix) {
chomp $net;
my ($addr,$mask)=split/\//,$net;
if ( $mask eq "" ) { $mask = 24; }
push (@netz, "$addr/$mask");
}
undef %saw;
@nethash{@netz} = ();
@uaix = sort keys %nethash;
foreach $net1 (@uaix) {
$overlapped = 0;
foreach $net2 (keys %nethash) {
if ((check4overlap($net1,$net2) == 1)and($net1 ne $net2)) { $overlapped = 1; }
}
if ($overlapped ==1) {
delete $nethash{$net1};
}
}
@uaix = sort keys %nethash;
foreach $net (@uaix) {
print "$net\n";
}
sub check4overlap {
($net1,$net2) =@_;
my ($addr1,$mask1)=split/\//,$net1;
my $paddrp1=pack("C4",(split (/\./, $addr1)));
my $paddr1=unpack("L",$paddrp1);
my $pmask1=unpack("L",pack("B32",(1 x $mask1)));
my $phmin1 = pack("B*",("0"x31) . "1") | $paddrp1;
my $phmax1 = pack("B*",("0"x $mask1) . ("1" x (31 - $mask1)) . "0" ) | $paddrp1;
my $pminaddr1 = unpack("L",$phmin1);
my $pmaxaddr1 = unpack("L",$phmax1);
my ($addr2,$mask2)=split/\//,$net2;
my $paddr2=unpack("L",pack("C4",(split (/\./, $addr2))));
my $pmask2=unpack("L",pack("B32",(1 x $mask2)));
my $ifmin1in2 = (($pminaddr1 & $pmask2)==($paddr2 & $pmask2));
my $ifmax1in2 = (($pmaxaddr1 & $pmask2)==($paddr2 & $pmask2));
if (($ifmin1in2==1)and($ifmax1in2==1)){
return 1;
}
return 0;
}
</pre> | |
1.3, MaxSvet (??), 12:16, 01/02/2006 [ответить]
| +/– |
выложу скриптик (копирайт mizzy :))разбирает в удобоваримый список украинских сетей:
#!/usr/bin/perl
use Net::Netmask;
$in = "/usr/local/bin/wget -O - http://colocall.net/ua/?list";
$out = "/usr/local/etc/uaprefixes";
$squid = "/usr/local/sbin/squid";
open(UA, "$in |") || die("Can't open $in!");
while (<UA>) {
next if !(/^\d+\.\d+\.\d+.\d+/);
chomp;
/(.*)\/\d+/;
$uanet = new Net::Netmask("$_");
$subnet = 0;
foreach $net (@uanets) {
if ($net->match("$1")) {
$subnet = 1;
last;
}
}
push(@uanets, $uanet) if ($subnet == 0);
}
close(UA);
open(UAS, ">$out") || die("Can't open $out!");
foreach $net (@uanets) {
print UAS $net->desc() . "\n";
}
close(UAS);
system("$squid -k reconfigure");
так как списки меняються, то в кроне выполнение каждые минут 20 :)
| |
1.4, MaxSvet (??), 12:29, 01/02/2006 [ответить]
| +/– |
да и вдогонку делай пулы после перезапуска сквида ранее наченые сесии закачивают по полной скорости (настройки слетают) :( | |
1.5, Толик (?), 14:46, 17/07/2007 [ответить]
| +/– |
А можно сделать так, чтобы squid давал качать только из укр. сетей, а с зарубежных не давал качать? | |
|
2.6, maxsvet (??), 14:56, 17/07/2007 [^] [^^] [^^^] [ответить]
| +/– |
>А можно сделать так, чтобы squid давал качать только из укр. сетей,
>а с зарубежных не давал качать?
можно
acl
http_access
строй | |
|
3.7, Толик (?), 15:43, 17/07/2007 [^] [^^] [^^^] [ответить]
| +/– |
Не, я имею ввиду, чтобы по самому зарубежному сайту можно было ходить, а вот качать с него файлы с определенными расширениями нельзя было. | |
3.8, Толик (?), 15:43, 17/07/2007 [^] [^^] [^^^] [ответить]
| +/– |
Не, я имею ввиду, чтобы по самому зарубежному сайту можно было ходить, а вот качать с него файлы с определенными расширениями нельзя было. | |
|
4.9, maxsvet (??), 15:47, 17/07/2007 [^] [^^] [^^^] [ответить]
| +/– |
>Не, я имею ввиду, чтобы по самому зарубежному сайту можно было ходить,
>а вот качать с него файлы с определенными расширениями нельзя было.
>
те же самые аклы
укажешь список с расширением файлов какие тебе не надо
и дальше разрешай+- запрещай кому хочешь | |
|
5.10, Толик (?), 15:54, 17/07/2007 [^] [^^] [^^^] [ответить]
| +/– |
Я не хочу показаться навязчивым,
но у меня сейчас как раз и работает по аклам, где указаны запрещенные расширения, которые нельзя качать.
Но я не совсем понимаю, как, к примеру, мне запретить людям качать файлы с этими расширениями с иностранных ресурсов, но при этом разрешить людям эти самые ресурсы просматривать. А вот с отечественных ресурсов разрешить качать такие файлы.
Можно ли разделить расширения по списку сетей. С одних разрешать качать, а с других нет? | |
|
|
|
|
|