#!/usr/bin/perl -w # # Script zur automatischen Konfiguration von Squid. # (c) Bernd Burre 2002 # jegliche Nutzung erfolgt auf eigenes Risiko # weitere Informationen unter http://www.linux-hamburg.de # ($sek, $min, $std, $mtag, $mon, $jahr) = (localtime(time))[0,1,2,3,4,5]; $mon=$mon +1; if ($mtag < 10) { $mtag = "0" . "$mtag"; } if ($mon < 10) { $mon = "0" . "$mon"; } if ($sek < 10) { $sek = "0" . "$sek"; } if ($min < 10) { $min = "0" . "$min"; } $jahr=$jahr + 1900; $datum="$mtag.$mon.$jahr.$std.$min.$sek"; print "$datum\n"; # den Servernamen bestimmen open RC, "/etc/rc.config"; while () { if ( /^FQHOSTNAME=(.*)/) { $SERVERNAME="$1"; $SERVERNAME =~ s/"//g; } } close(RC); $SERVERNAME =~ m/^([^\.]+)\.(.*$)/; $SERVER=$1; $DOMAIN=$2; # # Sicherheitsabfrage, der Ausdruck "dummy" darf nicht # im Domainteil enthalten sein if ( $DOMAIN =~ /dummy/ ) { die "Das Netzwerk wurde nicht konfiguriert\n"; } # Den Servernamen setzen print `hostname $SERVER`; # Die Serverip und die Netzip bestimmen # $SERVIP=gethostbyname($SERVERNAME); ($IP1,$IP2,$IP3,$IP4)=unpack('C4',$SERVIP); # zum Debuggen # $IP1=192; # $IP2=168; # $IP3=2; # $IP4=3; # End Debug $NETIP="$IP1.$IP2.$IP3"; # $SERVERIP="$NETIP.$IP4"; undef($IP4); $NETIP="$IP1.$IP2"; # open FILE, "/etc/squid.conf"; @rc=; close (FILE); open FILE, "> /etc/squid.conf.$datum"; foreach (@rc) { print FILE; } close (FILE); open FILE, "> /etc/squid.conf"; foreach (@rc) { if ( m/^acl CONNECT method CONNECT/ ) { print FILE; print FILE "acl local src $NETIP.0.0/255.255.0.0\n"; } elsif ( m/^http_access deny all/ ) { print FILE "http_access allow local\n"; print FILE; } else { s/^(append_domain).*$/$1 .$DOMAIN/; print FILE; } } close (FILE);