Springe zum Inhalt

Kommentar-Spam ist nichts Neues. Für fast jedes Content-Managment-System gibt es eine Erweiterung, die mehr oder weniger erfolgreich die Bots abwehrt. Oft wird auch geraten, die IP-Adressen mittels geeigneter Einträge in der Datei .htaccess auszusperren. Bei dieser Lösung muss jedoch immer erst der Webserver den Request behandeln, die Datei .htaccess parsen und anhand der IP-Adresse entscheiden, ob ein Zugriff auf die Webseite erlaubt ist. Eine andere Methode ist der Einsatz von iptables, welches bereits auf Kernelebene den Zugriff von bestimmten IP-Adressen auf den Server verhindern kann. Dadurch wird besonders auf stark frequentierten Webseiten Rechenzeit gespart und bleibt so für die echten Besucher übrig. ...weiterlesen "Spam-Bots mit iptables aussperren"

Vor kurzem trat beim Schreiben der Konfiguration meines Bintec-Router R1200w ein Fehler auf. Der Fehler war anscheinend so schwerwiegend, dass sich das Gerät nach einem Stacktrace in eine ewige Bootschleife verabschiedet hat. Eigentlich sollte der Fehler schnell wieder behoben werden können:

  • serielles Kabel anschließen
  • minicom oder eine entsprechende Alternative zum Ansteuern des seriellen Ports starten
  • Löschen der alten Konfiguration im Bootmenü
  • Neustart des Routers
  • wer nicht den Standard 192.168.2.1 weiter verwendet hat: Einstellen der zum lokalen Netzwerk gehörenden IP-Adresse
  • Zurückspeichern einer gespeicherten Konfiguration von einem TFTP-Server, welche mit put-all, also inkl. aller Passwörter erstellt wurde

Der Router quittiert das mit einem Fehler:

Im Router-Log wurde folgende Fehlermeldung angezeigt:

CONFIG: TFTP-file line#col 5#0: ERROR wrong decrypt password

Natürlich wurde die Konfiguration mit einem Passwort gespeichert. Allerdings enthalt SETUP in der SNMP-Shell und der aktuellen Version V.7.10 Rev. 1 (Patch 9) keine Eingabemöglichkeit für das erforderliche Passwort.

Erst über das FCI-Interface, also die Verwaltungswebseite des Routers ist die Eingabe des Passwortes und damit ein erfolgreiches Restore der gesicherten Konfiguration möglich:

Nachfolgende Funktion berechnet die Entfernung zwischen zwei in geographischer Länge und Breite angegebenen Punkten auf der Erde in Kilometer:

drop function if exists entfernung;
delimiter //
create function entfernung(lat1 double, lon1 double, lat2 double, lon2 double)
	returns double
	language sql
	contains sql
	comment 'Berechnet die Entfernung zwischen zwei Koordinaten'
begin
	declare erdradius double;

	declare lambda1 double;
	declare phi1 double;

	declare lambda2 double;
	declare phi2 double;

	declare x1 double;
	declare y1 double;
	declare z1 double;

	declare x2 double;
	declare y2 double;
	declare z2 double;

	declare entfernung double;

	set erdradius = 6371;

	set lambda1 = lon1 * pi() / 180;
	set phi1 = lat1 * pi() / 180;

	set lambda2 = lon2 * pi() / 180;
	set phi2 = lat2 * pi() / 180;

	set x1 = erdradius * cos(phi1) * cos(lambda1);
	set y1 = erdradius * cos(phi1) * sin(lambda1);
	set z1 = erdradius * sin(phi1);

	set x2 = erdradius * cos(phi2) * cos(lambda2);
	set y2 = erdradius * cos(phi2) * sin(lambda2);
	set z2 = erdradius * sin(phi2);

	set entfernung = 2 * erdradius * asin(sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2) + pow(z1 - z2, 2)) / (2 * erdradius));

	return entfernung;
end;
//

Update:
Folgende Funktion ist ca. 4 Mal schneller (getestet mit der MySQL-Funktion BENCHMARK(), Quelle)

DELIMITER //

DROP FUNCTION IF EXISTS DISTANCE; //

CREATE FUNCTION DISTANCE( lat1 DOUBLE, lon1 DOUBLE, lat2 DOUBLE, lon2 DOUBLE ) 
    RETURNS DOUBLE NO SQL DETERMINISTIC
    COMMENT 'counts distance (km) between 2 points on Earth surface'
BEGIN
    DECLARE dtor DOUBLE DEFAULT 57.295800;

    RETURN (6371 * acos(sin( lat1/dtor) * sin(lat2/dtor) +
        cos(lat1/dtor) * cos(lat2/dtor) * 
        cos(lon2/dtor - lon1/dtor)));
END; //

DELIMITER ;

7

Beim Benutzen von unterschiedlichen Filesystemen als Ablageort für Dateien von unterschiedlichen Betriebssystemen kann es vorkommen, dass Dateinamen mit Umlauten oder anderen Sonderzeichen nicht auf allen anderen Betriebssystemen gleich aussehen. Dies liegt einerseits daran, dass bei der Erstellung der Datei evtl. falsche Zeichensätze für das Dateisystem vorgegeben worden sind und das jeweilige andere Betriebssystem die Zeichen im Dateinamen dann falsch interpretiert. Hinzu kommen noch Netzwerkclients, die evtl. die erforderliche Konvertierung nicht ordnungsgemäß durchführen und so Dateinamen mit Sonderzeichen falsch auf dem Zielsystem erstellen. ...weiterlesen "Falsch dargestellt Umlaute im Dateinamen unter Linux korrigieren"