Subversion Repositories cms

Compare Revisions

No changes between revisions

Ignore whitespace Rev 4 → Rev 5

/trunk/bin/squid_redirector
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