cd /root
wget http://www.kamnet.cn/srv/Digest-MD5-2.36.tar.gz
wget http://www.kamnet.cn/srv/Digest-Perl-MD5-1.8.tar.gz
tar xvfz Digest-MD5-2.36.tar.gz
cd Digest-MD5-2.36
perl Makefile.PL
make
make install
cd ..
tar xvfz Digest-Perl-MD5-1.8.tar.gz
cd Digest-Perl-MD5-1.8
perl Makefile.PL
make
make install
源碼(checkkey.pl):
#!/usr/bin/perl -wl
use Digest::Perl::MD5 'md5_hex';
use POSIX qw(strftime);
$|=1;
my $password = 'IblessWoyo';
my $errurl = 'http://err.woyo.com/woyo.mp3';
my $result = 'http://err.woyo.com/woyo.wma';
while (<>) {
($uri,$client,$ident,$method) = ( );
($uri,$client,$ident,$method) = split; #解析Squid傳入的參數
my $time_from = strftime "%Y%m%d%H%M%S", localtime(time - 1*3600);
my $time_to = strftime "%Y%m%d%H%M%S", localtime(time + 1*3600);
next unless ($uri =~m/^http:\/\/(.+?)\/(.*)\?key=([0-9]{14})(.+)$/);
if (($4 eq md5_hex("/".$2.$3.$password)) && ($3 > $time_from) && ($3 < $time_to)) { #檢查md5和URL中包含的時間
$result = "http:\/\/$1:81\/$2";
} else {
$result = $errurl;
}
} continue {
print $result; #通知Squid防盜鏈檢查結果
}