0,0 → 1,76 |
#!/usr/bin/perl -w |
# ---------------------------------------------------------------------- # |
# Copyright: (C) 2002 Leader.IT S.r.l. <http://leader.it> |
# Author: Guido Brugnara <gdo@leader.it> |
# |
# $Revision$ info@leader.it |
# ---------------------------------------------------------------------- # |
# |
# Prima bozza di redirector per squid |
# |
|
# set gid |
$)=getgrnam('cms'); |
$) == getgrnam('cms') or die "Don't change group 'cms'"; |
|
$0="squid_redirector $$"; |
$|=1; |
|
my $LOG='/var/log/squid_redirector.log'; |
open LOG, ">>$LOG" or die "on open file $LOG"; |
select LOG; |
$|=1; |
|
$SIG{INT} = \&My_exit; |
$SIG{KILL} = \&My_exit; |
$SIG{HUP} = sub { print LOG "$$ signal Hangup\n" }; |
|
sub My_exit{ |
my($sig) = @_; |
print LOG "$$ Close with signal $sig\n"; |
close LOG; |
exit 1; |
} |
|
print LOG "$$ Open\n" or die "on print file $LOG"; |
|
# apro la share |
use IPC::Shareable; |
my $glue = 'CMS0'; |
my %options = ( |
create => 1, |
exclusive => 0, |
mode => 0660, |
destroy => 0, |
); |
my %SHARED; |
tie %SHARED, 'IPC::Shareable', $glue, { %options } or die "client: tie failed\n"; |
|
# log attuale contenuto |
foreach $key (keys %SHARED){ |
print LOG "$$ host $key\n"; |
} |
|
# $SHARED{'test.leader.it'}=1; |
# $SHARED{'www.google.com'}=1; |
|
############################################################### LOOP |
while (defined ($_=<STDIN>)){ |
chomp; |
my($url, $ip_fqdn, $ident, $method) = split; |
$url = 'none' if !$url; |
my $host = lc $url; |
$host =~ s|.*//([\w\.]+)/.*|$1|; |
if($host =~ m|^http://-/(.*)$|){ |
print LOG "$$ redir command $1\n"; |
$url =~ s|//-/|//127.0.0.1/|; |
} |
if(defined $SHARED{$host}){ |
print LOG "$$ redir $url => "; |
$url = '301:http://www.leader.it/'; |
print LOG "$url\n"; |
} |
# print LOG "$$ URL $url\n"; |
print STDOUT "$url\n"; |
} |
print LOG "$$ Close normal\n"; |
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |
Added: svn:executable |
+* |
\ No newline at end of property |
Added: svn:keywords |
+Author Date Id Revision |
\ No newline at end of property |