Feb 01

Na premium. Setze mich heute morgen an den Rechner, und was sehe ich: Kein Internet !

Dass man Abstriche machen muss, wenn man knapp 2 Jahre lang Kabelmodem verwöhnt war, (Kein nervtötender Reconnect / NULL Ausfälle / Konstanter Up/Downstream etc.) hatte ich mir ja schon gedacht. Nunja, seit ca. 3 Wochen bin ich wieder PPP over Ethernet User (DSL) mit all seinen “netten” Nebeneffekten (siehe oben). Normalerweise reconnected der pppd auch fein nach jedem Disconnect – nur heute Nacht halt nicht.

Die Analyse (siehe Logauszug) ergibt zwei suspekte Dinge:

  1. “Rausschmiss” durch den Provider nach 574 Minuten (Normalerweise passiert das nach 24h)
  2. Reconnectversuch durch den PPPD, der jedoch mangels Antwort der Gegenstelle ins leere läuft.

Gerade Punkt 2 nervt hier – denn per default gibt der pppd nach 10 Versuchen auf. Nach etwas googlerei habe ich dann doch die richtige Option gefunden, mit der er unendlich “PADI”s schicken soll, um irgendwann dann mal ‘nen Connect hinzubekommen. Einfach ein “maxfail 0” in die /etc/ppp/peers/provider eintragen, und schon versucht es der Router bis zum St.Nimmerleinstag


Feb 1 03:03:04 pppd[530]: LCP terminated by peer
Feb 1 03:03:04 pppd[530]: Connect time 573.9 minutes.
Feb 1 03:03:04 pppd[530]: Sent [ne Menge] bytes, received
[noch viel mehr] bytes.
Feb 1 03:03:07 pppd[530]: Connection terminated.
Feb 1 03:03:07 pppd[530]: Modem hangup
Feb 1 03:04:12 pppd[530]: Timeout waiting for PADO packets
Feb 1 03:04:43 pppd[530]: PPP session is 350
Feb 1 03:04:43 pppd[530]: Using interface ppp0
Feb 1 03:04:43 pppd[530]: Connect: ppp0 <--> eth2
Feb 1 03:04:49 pppd[530]: Connection terminated.
Feb 1 03:04:49 pppd[530]: Modem hangup
Feb 1 03:05:54 pppd[530]: Timeout waiting for PADO packets
Feb 1 03:06:59 pppd[530]: Timeout waiting for PADO packets
Feb 1 03:08:04 pppd[530]: Timeout waiting for PADO packets
Feb 1 03:09:09 pppd[530]: Timeout waiting for PADO packets
Feb 1 03:10:14 pppd[530]: Timeout waiting for PADO packets
Feb 1 03:11:19 pppd[530]: Timeout waiting for PADO packets
Feb 1 03:12:24 pppd[530]: Timeout waiting for PADO packets
Feb 1 03:13:29 pppd[530]: Timeout waiting for PADO packets

Tagged with:
Mai 12

Sachverhalt: Zig dilettantisch benannte Dateien mit Leerzeichen und Umlauten in wiederrum zig Verzeichnissen (Windeutsch: Ordner).

Wunsch: umbennen der Files mit einem Schlage

Lösung:

Shellscript:

#!/bin/bash
find . -depth -execdir rename 's/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/ß/ss/g;s/ /_/g' "{}" \;
find . -depth -execdir rename 's/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ß/ss/g;s/ /_/g' "{}" \;

Tagged with:
Dez 29

Aufmerksam geworden durch diesen Artikel, mit dem ueber den Proxy geholte Webseiten (genauer gesagt werden alle Images einmal um 180 Grad gedreht) on the Fly manipuliert werden habe ich mir das ganze mal näher angesehen und optimiert.

Vorweg schonmal das Ergebnis (funktioniert TRANSPARENT mit allen JPGs, GIFs und PNGs). Transparent bedeutet in diesem Falle, dass der Anwender in keinerlei Weise mitbekommt, dass es sich hier um ein manipliertes Bild handelt. Die Requests werden quasi 1:1 durchgeleitet.

Wor moechten also alle Bilder, die aus dem LAN via Proxy angefordert werden, einmal um 180 Grad drehen. Folgende Ausgangssituation:

  • Transparenter Squid auf einem Router
  • Webserver auf einem etwas dickeren Rechner im LAN

in /etc/squid/squid.conf folgende Zeile einfügen:

url_rewrite_program /usr/bin/updwn.pl
url_rewrite_children 5

Das File /usr/bin/updwn.pl sollte wie folgt aussehen:

#!/usr/bin/perl
# Runs as proxy:proxy
# input - siehe unten (Array params)
# output - URL - transparent *invisble to Enduser :-) *
$|=1;
while (<>) {
chomp $_;
@params=split(/ /,$_);
# 0 = Request URL
# 1 = Requesting IP/-
# 2 = -
# 3 = Request Method
# 4 = myip= ?
# 5 = myport = ?
$url=$params[0];
if (!($params[1]=~/192\.168\.60\.200/)) { # Nicht rekursiv aufrufen (Boese !!)
$url='http://192.168.60.200/ppics/updwn.pl?u='.$url if ( ($url=~/gif/i) || ($url=~/jpg/i) || ($url=~/jpeg/i) || ($url=~/png/i));
}
print $url."\n";
$count++;
}

Wobei die 192.168.60.200 durch die IP des eigenen Webserver zu ersetzen waere. Die eigentliche “Magie” findet naemlich jetzt im updwn.pl auf dem Webserver statt. Das Ding benutzt, im gegensatz zu dem File, welches in dem Artikel beschrieben wurde, direkt die GD-Library und ruft keinerlei Executables mehr auf. Damit ist das Script ein wenig performanter

Hier der Inhalt von /var/www/ppics/updwn.pl:

use CGI qw/:standard/;
use LWP::UserAgent;
use GD;
binmode STDOUT;

$|=1;
my $url=param(“u”);

chomp $url;
my $ctype=”;
my $content=”;
get_content($url,\$ctype,\$content);
rotate(\$content,\$ctype) if ($ctype=~/image/i);
print “Content-Type: “.$ctype.”\n\n”;
print $content;
print “\n–magicalboundarystring\n” if ($ctype=~m/image/);

sub get_content {
my ($url,$ref_ctype,$ref_content)=@_;
my $ua = LWP::UserAgent->new;
$ua->agent(“MyApp/0.1 “);
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);
$$ref_ctype=$res->content_type;
$$ref_content=$res->content;
}

sub rotate {
my ($ref_content,$ref_header)=@_;
my $image=undef;
$image=newFromPngData GD::Image($$ref_content) if ($$ref_header=~/png/i);
$image=newFromJpegData GD::Image($$ref_content) if ($$ref_header=~/jpeg/i);
$image=newFromGifData GD::Image($$ref_content) if ($$ref_header=~/gif/i);
$image->rotate180();
$$ref_header=’image/png’;
$$ref_content=$image->png();
}
Wichtig: Die URL sollte nicht aus dem Internet erreichbar sein. Ansonsten hat man einen selbstgebastelten offenen Proxy…

Mithilfe der Parameter des Files /usr/bin/updwn.pl kann man sich jetzt sogar lustige ACLs bauen. (Rotiere nur fuer bestimmte IP’s oder fuer bestimmte URLs, etc…) Der Phantasie sind da keine Grenzen gesetzt.

Tagged with:
preload preload preload