################################################################################ # # Dieser Squid-Redirector ist eine Komponente von FilterSurf # Details und Verwendungshinweise gibt es unter http://www.filtersurf.de/ # # Bitte lesen Sie Informationen in dieser Datei sowie die ausführlichen # Erklärungen in der Konfigurationsdatei. # # Copyright (C) 2004-2006 # FilterSurf GbR: Christian Ludwig, Dominik Herrmann (mail@filtersurf.de) # # $Id: redirector.pl 744 2006-12-23 14:43:54Z luchr $ # # # LIZENZBEDINGUNGEN: GNU GENERAL PUBLIC LICENSE (GPL) # # This program is free software; you can redistribute it and/or modify it under # the terms of the GNU General Public License as published by the Free Software # Foundation; either version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be useful, but WITHOUT # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public License along with # this program; if not, write to the Free Software Foundation, Inc., 59 Temple # Place, Suite 330, Boston, MA 02111-1307 USA # # # VERWENDUNG UND AUFRUF # # Der FilterSurf-Redirector wird als redirect_program im Proxy-Server Squid # eingebunden. Er kann jedoch zu Testzwecken auch direkt in einer Shell # gestartet werden (s. unten). Vor der Verwendung sollten Sie die Config-Datei # an Ihre Bedürfnisse anpassen. # # a) ./redirector.pl # Verwendet die Konfigurationsdatei redirector.conf im aktuellen # Verzeichnis # # b) ./redirector.pl /pfad/zur/redirector.conf # Verwendet die angegebene Konfigurationsdatei # # # TEST DER FUNKTIONSFÄHIGKEIT (Z.B. UNTER LINUX): # # * wget www.filtersurf.de/downloads/redirector.pl (redirector herunterladen) # * chmod a+x redirector.pl (allen Benutzern das Ausführen erlauben) # * ./redirector.pl (redirector starten) # - Wenn sich der redirector sofort wieder beendet, liegt ein Fehler vor! Mit # tail /var/log/messages oder tail /var/log/syslog in den Logs nachsehen. # - Mögliche Fehlerursachen: Ein Perl-Modul konnte nicht geladen werden, der # shared cache konnte nicht angelegt werden, Perl-Version ist zu alt, # DNS Anfrage für fsredir.dyndns.org war nicht möglich # * Wenn der redirector läuft, eine Test-Anfrage von Hand stellen (z.B.): # http://www.google.de/ # Wenn alles klappt, erscheint kurz darauf eine Zeile tiefer # http://www.google.de/ # * Dann noch eine Test-Anfrage stellen, die geblockt wird (z.B.): # http://www.sex.de # Es sollte eine URL erscheinen, die so ähnlich aussieht: # http://fsredir.dyndns.org/accessdenied.php?u=2&v=11&req=http%3a%2f%2fsex.de # * Zum Beenden des Tests Ctrl-D drücken, nun wie in der Installationsanleitung # auf der FilterSurf-Homepage nachzulesen den redirector in squid integrieren # # # CHANGELOG: # * TODO neuer Konfigurationsparamter: deny_ip_hosts # -> Alle URLs mit IPs als Host sperren # # Version 2.15 (22.12.2006) # * Wenn Redirector beendet wird, gibt es einen log-Eintrag # * Für den Bypass wird jetzt die URL bypass.filtersurf.de verwendet # (die alte URL "filtersurf.bypass" konnte nicht aufgelöst werden, so dass # dieses Feature nur hinter einem Proxy funktionierte) # # Version 2.14b - nicht-veröffentlichte Version (01.12.2006) # Klaus Thilman # * Bei Verwendung einer Squid-Auth-Loesung (z.B. an LDAP) wird # jetzt bei "ACCDENY" der Benutzernamen mit in das LOG geschrieben # # Version 2.14 (12.03.06) # * Redirector leert beim Start den shared cache (rc4) # * Redirector loggt immer seine PID (rc3) # * Beim Start loggt Redirector parent PID (rc3) # * Bei Verwendung von fs_server_host wird kontrolliert, # ob fs_server_host leer ist und in diesem Fall # conf::filtersurfserver verwendet (rc2) # * Code aufräumen und dokumentieren (rc1) # * fscached vollständig in Redirector integriert (rc1) # * neuer Konfigurationsparameter: fscached_max_entries (rc1) # # Version 2.13 - nicht-veröffentlichte Version (07.01.06) # * Die conf-Datei kann ab V2.13 auch mit dem Tool unter der URL # http://www.filtersurf.de/configurator.php erstellt werden. # * conf-File kann jetzt als 1. Command Line Argument übergeben werden. # * Ein Fallback-Server kann im conf-File definiert werden. Dieser springt # dann ein, wenn der Haupt-Server nicht erreichbar ist oder ausgefallen ist. # * Falls erforderlich, kann ein Username zusätzlich zur ID definiert werden. # * Das Verbindungs-Timeout ist nun in der conf-Datei einstellbar. # * Einstellbare default action, wenn kein FilterSurf-Server erreichbar sein # sollte oder die Lizenz ungültig ist. # * Bugfixes beim Laden des conf-Files. # * Voraussetzungen für die benutzerdefinierte Access-Denied-Seite geschaffen. # * Ab jetzt wird das lokale Caching durch den fscached (FilterSurf Cache # Daemon) durchgeführt (default: keinen fscached verwenden). # * Der Pfad zum conf-File ist jetzt im Redirector einstellbar. # * Lokale Blacklisten und Whitelisten können nun in eigene Dateien ausgelagert # werden. Hierzu muss im conf-File die includefile-Funktion verwendet werden. # # Version 2.12 (21.05.05) # * Änderungen am DNS-Lookup-Code: # Wenn der initiale DNS-Lookup fehlschlägt (bei Konfiguration ohne # Proxy-Server), beendet sich der Redirector ab jetzt nicht mehr # sofort. Stattdessen versucht er nach kurzem Warten erneut. Erst # nach einigen Fehlversuchen gibt er auf und beendet sich. # * Google SafeSearch Unterstützung: # Der Redirector unterstützt nun die Safesearch-Funktion von google. # Dadurch werden unerwünschte Seiten (üblicherweise Kategorie adult/porn) # schon gar nicht mehr in den Ergebnislisten angezeigt. # Standardmäßig ist die Verwendung von SafeSearch ab jetzt aktiviert. Sie # lässt sich jedoch über die Konfigurationsdatei ausschalten. # * Bugfix: zwischen den Parametern m und i muss ein & stehen! # # Neues in 2.11 (01.02.05) # Diese Version ist ein größeres Update mit vielen neuen Features... # * Neues Caching-Verfahren mit Cache::FastMmap, falls auf dem System vorhanden # Andernfalls wird wie bisher ein lokaler, dedizierter Cache für jeden # Redirector verwendet. # * Einfache Tests zur Überprüfung der Funktionsfähigkeit am Anfang des # Redirector-Skripts hinzugefügt. # * Vereinheitlichte (englische) Log-Meldungen ausformuliert. # * Einige einfache Sanity Checks vorm Absenden eines Requests an den Server. # * Führendes "www." wird nun für die Filter-Entscheidung komplett ignoriert. # * Integration der GNU Public License in den Source-Code. # * Bei jedem DNS-Update wird der lokale Cache geleert. # * Änderungen am Protokoll: # - Die maximale Länge des Pfads (inkl. Teil hinter dem ?) ist begrenzt # - Wenn ein ACCESS_GRANT_NOCACHE empfangen wird, ist die URL zwar erlaubt, # sie darf jedoch nicht gecached werden, weil einige Pfade unter dieser # URL geblockt werden sollen # * Neue Konfigurationsoption: Der Redirector kann alle Zugriffe in einer # Logdatei protokollieren (Zeit, Source-IP, Adresse, Filter-Ergebnis) # * Die Syslog Facility kann konfiguriert werden (default: local0). # * In der Konfigurationsdatei kann nun die User-ID eingetragen werden, # die nach Ablauf des Pilotprojekts zur Authentifizierung erforderlich ist. # * Der zu verwendende FilterSurf-Server kann ebenfalls konfiguriert werden. # # Neues in 2.10 # * Whitelist, die lokal gepflegt werden kann # * Unterstützung für Kategorien # # Neues in 2.9 # * Bugfix: Der Redirector beendet sich nun nicht mehr mit einer # Perl-Fehlermeldung, wenn die erste DNS-Abfrage nach dem Starten ergebnislos # blieb (z.B. wegen falschen Routen oder Internet-Einstellungen) # * Zusätzlicher timeout in http_request, ob bei gelungem # Verbindungsaufbau eine Antwort in annehmbarer Zeit kommt. # * Bugfix: URLs mit Sonderzeichen werden nun lesbarer geloggt. # # Neues in 2.8 # * Proxy-Support (wenn http-Anfragen über proxy laufen sollen) # * redirector.conf Datei mit Konfigurationen für Zwangsproxy # * lokale Liste mit zu sperrenden Domains (seit Version 2.6) # ist auch in dieses File gewandert. # # Neues in 2.7 # * Ein Bugfix für URLs mit Großbuchstaben wurde eingebaut. # * Der Timeout für die Verbindung zum FilterSurf Server wurde auf 5 Sek. # hochgesetzt (wichtig für ISDN-Verbindungen). # # Neues in 2.6 # * Es wird nun eine in diesem File veränderbare Liste von # Domains unterstützt, die (ohne den FilterSurf-Server zu fragen) # gesperrt werden sollen. [Implementiert auf Wunsch von J. Hasselbeck] # # Neues in 2.5 # * Im lokalen Cache werden nur noch die Hostnamen gespeichert # * Suche im Cache durch Perl's grep ersetzt # # Neues in 2.4 # * Kosmetische Änderung: $q entfernt # * Verwendung von gethostbyname zur DNS-Abfrage, jetzt wird die IP auch # korrekt aktualisiert # # Neues in 2.3 # * Der DNS-Lookup auf filtersurf.de wird ab jetzt nicht mehr nur beim Starten # einmalig durchgeführt, sondern alle 12 Stunden. Es wird also 2x am Tag ein # DNS-Lookup durchgeführt, der die aktuelle IP ermittelt. Wenn der Server also # wieder einmal seine IP ändert, dann bekommt der Redirector spätestens 1 Tag # danach dies automatisch mit und ist wieder voll funktionsfähig. # * Für die URL-Requests wird nun nicht mehr www.filtersurf.de verwendet, # sondern fsredir.dyndns.org. Dadurch wird für die Betreiber des FilterSurf- # Servers und die Benutzer des FilterSurf-Redirectors das automatische # Umschalten auf einen zweiten Server erleichtert, um z.B. am ersten Server # in Ruhe Wartungsarbeiten durchführen zu können. # * Die accessdenied-Seite wurde aktualisiert. Sie zeigt nun die Version des # verwendeten Redirectors an. # # Neues in 2.2 (nicht veröffentlicht) # * Diese Version kommt mit möglichst wenigen Modulen aus. Dazu wurde der # EventLog-Support unter Windows wieder entfernt. Fehlermeldungen # werden stattdessen direkt auf STDERR ausgegeben. Sie werden dadurch # an die Squid Log-Datei unter /log/cache.log angehängt # Unter Linux wird weiterhin der Syslog verwendet. # * Die Version des Redirectors wird im HTTP-Request (User Agent) übermittelt # Dadurch kann auf dem Server ausgewertet werden, welche Versionen in Umlauf # sind. # * Aufräumarbeiten und viele Kommentare eingefügt # * Erste Version, die es als ausführbare EXE-Datei für Windows gibt. # (noch nicht veröffentlicht) # # Neues in 2.1 (nicht veröffentlicht) # * Unterstützung für ActiveState ActivePerl hinzugefügt # Dazu: Perl-Modul Syslog wird nur unter Linux geladen, unter Windows # werden die Meldungen in die Windows Ereignisanzeige geschrieben # (dazu wird das Modul EventLog verwendet). # # Neues in 2.0 # * Vollkommener Verzicht auf das CGI-Modul. Das URL-Escapen erfolgt # jetzt durch eine Regexp (http://forums.devshed.com/archive/t-26950) # * Der GET-Request-Teil (hinter dem ?) einer URL wird nicht mehr # zum filtersurf Server mitgeschickt. Spart Bandbreite und ist # aus Datenschutzgesichtspunkten sicherer. # * Es wird nur beim Starten 1x ein DNS Lookup auf den filtersurf.de # Server durchgeführt, um Zeit zu sparen. # # Neues in 1.9 # * Bugfix: Bei Socketfehlern syslog Eintrag statt STDOUT # * Timeout beim Connect auf 2 Sekunden reduziert # # Neues in 1.8: # * Verzicht auf das LWP-Modul; Verwendung von IO::Socket stattdessen # * Neue Methode http_request # * => erheblicher Geschwindigkeitsvorteil (ca. Faktor 2 bis 3) # * Cache von 50 auf 150 Domain-Cache-Entries erhöht # # Neues in 1.7: # * Es wurde auf use strict; umgestellt, # um Fehler schneller entdecken zu können. # # Neues in 1.6: # * CGI start ohne Kommandozeilenparameter von der Konsole # # Neues in 1.5: # * Bug im Cache-Algorithmus entfernt # # Neues in 1.4: # * Bei Anfrage wird Version des redirectors mitgeschickt: # Format: V1.4 => u=1&v=4 # # Neues in 1.3: # * lokaler Cache mit Arrays # # Neues in 1.2: # * Deutsche Kommentare # Zeitmessung für Request; bei über 3 Sekunden => log # ################################################################################