Apr 02

OpenwebRX / WebSDR aufsetzen

Elektronik, Fun, Ham, Linux Kommentare deaktiviert für OpenwebRX / WebSDR aufsetzen

Ziel: Einen SDR aufsetzen, der per Browser erreichbar ist.

Am Ende dieser Anleitung hat man einen WebSDR wie bspw. diesen: https://sdr.dj7nt.de

Neben der eigentlichen WebSDR-Funktionalität, bietet openwebRX u.a. die Möglichkeit, dass WSPR/FT8/FT4/etc. Signale automatisch im Hintergrund dekodiert und auch an die entsprechenden Portale wie pskreporter.info / wspr.rocks weitergeleitet werden. Sehr schön um Langzeitstudien des eigenen QTHs / der eigenen Antenne durchzuführen.

Zutaten:

  • Raspberry Pi 3 oder 4
  • Netzteil für den Pi (5V / 1,5A)
  • SD-Karte (min. 4 GB)
  • SDR-Hardware (Auswahl)
    • RTL-SDR (Für den Anfang ok, aber recht instabil / unsensitiv)
    • SDRPlay (RSPdx bspw.)
    • HackRF
    • PlutoSDR
  • PanAdapter, sofern der SDR an derselben Antenne wie der Shack-TRX betrieben werden soll
  • USB-Kabel
  • Antennenkabel

Kochrezept:

Zunächst openwebrx herunterladen und das ZIP entpacken. Anschliessend den “Raspberry Pi Imager” herunterladen und starten. Dort dann unter “OS wählen” die image-Datei aus dem openwebrx-ZIP auswählen. Da es einige – wenige – Dinge gibt, die wir direkt auf dem Pi ohne das WebInterface zu Anfang erledigen müssen nun auf das Zahnrad unten rechts clicken.

Hier kann bspw. der Hostname u.a. angegeben werden. Wichtig ist aber, dass ein Haken bei “SSH aktivieren” angeclickt wird, und bei “Benutzername und Passwort setzen”. Benutzername/PW ist frei wählbar, sollte man sich jedoch merken 😉

Wer fit in der Linux-Welt ist, kann natürlich auch seinen SSH-PublicKey hinterlegen. WiFi-Konfiguration kann man machen, muss man aber nicht. Ich bin ein Freund von LAN-Kabeln. Ist stabiler als WLAN.

Nun kann man die SD-Karte einlegen und im Imager die korrekte Karte auswählen. Anschliessend auf “schreiben” drücken. Jetzt wird das openwebrx-Image auf die Karte geschrieben.

Aufbau der Hardware hier wie folgt:

Während all das passiert können wir uns der Hardware widmen. Ich nutze hier einen SDRPlay-RSPdx, aber wie oben beschrieben funktioniert auch ein günstiger (<20 Euro) RTL-SDR-Stick. Beim RTL-SDR wird – um die Kurzwellenbänder zu Empfangen – noch ein UpConverter benötigt. Beispielsweise der HamItUp von Nooelec.

Szenario: SDR soll die selbe Antenne wie der Transceiver nutzen:

Blockschaltbild

Kurze Erklärung: Der Panadapter sorgt dafür, dass der SDR zur Antenne durchgeschaltet wird, so lange der TRX nicht auf Sendung ist. Wird am TRX PTT gedrückt, trennt der Panadapter instant das Signal zum SDR. Wird nicht gesendet, so bekommen sowohl SDR als auch TRX das Antennensignal. Ich habe mich für einen simplen Panadapter aus China entschieden. Bei meinem Model musste noch ein Jumper umgesteckt werden, damit die Trennung auch vollzogen wird. Der Adapter verfügt über eine HF-VOX (ich traue diesen VOX-Dingern nicht) oder aber über einen PTT-Cinch-Anschluss womit man den Adapter mit dem TRX verbinden kann (die aktuellen Transceiver haben alle ein PTT-Out). Es empfiehlt sich das ganze unbedingt vor Anschluss des SDRs zu testen. Im Worstcase geht die volle Leistung des TRX nämlich sonst in den SDR – und das wird der garantiert nicht mögen

Szenario: SDR bekommt eine eigene Antenne:

Das alles entfällt natürlich, wenn man dem SDR eine eigene Antenne gönnt. In dem Falle wird die (eigene) Antenne einfach an das SDR-Gerät geklemmt, und der SDR per USB an den RaspberryPi und fertig.

Der erste Start / Boot:

Nachdem alles wie oben beschrieben verkabelt/angeschlossen ist (LAN nicht vergessen ;), können wir den Pi das erste mal mit Strom über die USB-Buchse versehen. Sobald der Raspberry hochgefahren ist, suchen wir uns die IP-Adresse die das Gerät bekommen hat. Hier gibt es mehrere Wege, die von der Architektur des (Heim-)Netzwerks abhängen:

  • Suchen des Geräts in der Fritzbox/Speedport/Plastikrouter der die IPs im LAN vergibt und jeweilige IP merken.
  • Je nach Netzwerk ist der Pi sogar schon über den o.g. Hostnamen (siehe Kochrezept, zweiter Absatz) erreichbar.

Ein kurzer Test ob das Gerät anpingbar ist (ping [hostname] (s.o.) bzw. ping [IP] auf der Kommandozeile des PC’s/Mac) gibt Aufschluss ob die Maschine erreichbar ist. Jetzt wird es – für nicht Linuxer – ganz kurz etwas komplexer, denn wir müssen auf dem Pi einen neuen Nutzer/Kennwort für das Websdr anlegen.

Nutzer anlegen

Linux und Mac-User haben es einfach, hier wird ein Terminal/Shell aufgemacht und anschliessend kann man sich per ssh [user]@[hostname] (user/hostname bitte den verwenden, der unter Kochrezept Absatz 2 vergeben wurde) auf den Pi verbinden.

Als Windowsnutzer wird noch ein SSH-Client benötigt. Als Leichtgewichtig hat sich Putty herausgestellt. Also herunterladen und unter Host den Hostnamen bzw. die IP-Adresse eintragen, sowie anschliessend unten im Fenster auf “Connect”/”Verbinden” drücken.

Ist man auf der Shell des Pis angekommen, lässt sich nun ein Nutzer anlegen. Das geschieht durch die Eingabe des folgendes Befehls/Kommandos:

sudo openwebrx admin adduser adminuser

Es wird also ein neuer (Web-)Nutzer mit dem Namen “adminuser” angelegt. Andere Namen sind natürlich auch möglich. Nach dem Abschicken des Befehls fragt das Tool nach einem zu vergebenden Passwort. Ist das erledigt, kann man die Shell wieder schliessen (logout).

Damit wäre das komplizierteste geschafft.

Login/SetUp/Test

Unter http://[hostname oder IP] kann man sich nun auf dem WebSDR einloggen. Der zuvor genannte Admin-Nutzer wird für den Login der Settings-Seite (oben rechts im Webinterface) benötigt. Dort lassen sich Bänder/Profile und Co. für die jeweiligen SDR-Empfänger einstellen. Wer hier tiefer einsteigen mag, dem sei die Doku von openwebRX ans Herz gelegt. Auch Funktionen wie die eingangs erwähnte Dekodierung der DigiModes ist dort erklärt.

Weitere Dinge, wie bspw. Update des Raspberries oder explizite Konfiguration der SDRs sind in der Regel nicht erforderlich. Die Images von openwebRX werden sehr häufig aktualisiert, sodass man an sich immer eine aktuelle Version bei der Installation vorfindet. Die SDRs werden direkt beim booten erkannt, Feineinstellungen können über die bereits erwähnte Settings-Seite (Zahnrad oben rechts) erledigt werden.

Settings-Seite von openwebRX

Viel Spass mit dem eigenen WebSDR

Fallstricke:

Ein kleiner “Annex” über die Fallstricke, die es beim aufsetzen geben kann:

Problemggf. Abhilfe
Stick wird nicht erkannt– Stick im Webinterface nicht aktiv(iert) -> Aktivieren
– Pi neu booten
– tiefere Analyse auf der Shell durchführen (lsusb, syslog, etc.)
– Stick ggf. inkompatibel
WebSDR nicht aus dem Internet erreichbarWar auch nicht Teil dieser Anleitung 😉
Stichpunkte zum googlen / selber erarbeiten:
portforwarding, fritzbox, dyndns, ...
Bänder in der Auswahl fehlenBänder unter Setttings / passender SDR hinzufügen
Wasserfall zu “rot”/”dunkel”In Settings / “SDR Devices & Profiles” / passender SDR mit dem Wert “Gain” herumspielen
SDR wird erkannt, aber es wird kein/ein zu gedämpftes Signal angezeigtIn Settings / “SDR Devices & Profiles” / passender SDR über “Additional / Optional Settings” den richtigen Antenneneingang wählen (bspw. bei SDRPlay oder Geräten mit mehreren Antenneneingängen)
Dekodierung/Spotting funktioniert nicht.In Settings die Einstellungen zum “Background-Decoding” sowie “Spotting und Reporting” prüfen. Ferner unter “SDR Devices & Profiles” / passender SDR einen “Scheduler” hinzufügen und bei “Run Background-Services” einen Haken setzen.
Tagged with:
Jan 18

TTT – Trampel to Talk mit dem iCOM SM-30

Elektronik, Fun, Ham Kommentare deaktiviert für TTT – Trampel to Talk mit dem iCOM SM-30

Wenn es mal hektisch im PileUp wird, nervt es ziemlich, dass man die Hände nicht zum mitscribbeln/loggen frei hat.

Von einigen erfahrenen DXern hörte ich bereits von Fusspedalen. Kurz gegoogled und festgestellt dass es nichts bezahlbares “aus dem Regal” gibt. Aaaaaaber: Wofür hat man die Lizenz zum Löten? Selbstbau ist also angesagt. Vorweg: Der folgende Spaß hat unter 30 Euro gekostet.

Kurz mal das Innenleben und den Schaltplan des SM-30, sowie die iCOM-Steckerbelegung angesehen: Aha:

Wir wollen also Pin6 und Pin5 haben. Jetzt gibt es zwar fertige Kabel & Co. die die Pins herausführen, alllerdings scheinen da auch die Kontakte vergoldet zu sein – anders kann ich mir die Preise nicht erklären.

Mein Ansatz: Auf der Platine des SM30 ist ein Steckverbinder, wo alle Adern ankommen. Diese durchmessen. Bei mir war dann “blau” = PTT und der “obere schwarze” GND. An diese beiden Punkte habe ich mir eine Mono-3,5mm-Klinkenbuchse angelötet und diese im SM-30-Gehäuse festgeschraubt. Schaut dann so aus, und ist wirklich “minimalinvasiv” (Funktion des Mics in seiner Urform nachwievor gegeben):

Parallel habe ich mir – für einen schlanken Taler – einen Fusstaster für gerade mal 20 Euro geordert. Hier sollte man darauf achten, dass dieser möglichst schwer/massivst ist. In der Standardausführung kommt aus dem Taster eine Leitung mit drei Adern mit denen man den Taster wahlweise als “öffner” oder auch “schliesser” benutzen kann. Bei mir war “weiss” gegen “rot” die Schliesserfunktion. Sollte man – bei Nachbau – noch mal mit einem Multimeter prüfen. An das Ende der Leitung habe ich mir also einen 3,5mm Klinkenstecker gelötet und diesen dann in die neue Buchse des SM-30 gesteckt. Fertig ist der Fusstaster (TTT) mit dem man nun beim QSO die Hände frei hat.

Tagged with:
Feb 13

Zuletzt hab’ ich mir vor ca. 9Jahren radikales Umlernen angetan. Damals bin ich von dem German-Keyboard Layout auf US-ANSI umgestiegen. Die Sonderzeichen zum Coden waren einfach viel leichter zu erreichen. Waren etwa 3 Wochen Schmerz, danach lief es wie am Schnürchen. Ich will auch nicht mehr mit nem deutschen Keyboard arbeiten 🙂

Einzig die Eigenheiten von OSX/Linux/Windows haben etwas genervt (Win: Layout per ALT-SHIFT_L umschalten um Umlaute tippern zu können // OSX: Sehr angenehm per Modifier-Key (Mod-” und dann a,u oder o))

Dummerweise ist mein Model-M damals auf der Strecke geblieben, und musste einem Mac-Keyboard weichen. Hab zwar noch mal ein paar Anläufe gestartet, und die Keycaps auf US-INTL gewechselt, war aber irgendwie nichts…

Nun ist es mal wieder an der Zeit etwas neues auszuprobieren. Ein 60% Mechanical-Keyboard. Ca. 2 Monate bin ich um das HHKB herumgetingelt und hab mich am Ende dann doch gegen das Teil entschieden. Hängengeblieben bin ich Schlussendlich beim Vortex Pok3r, für knapp 150Euro – nicht gerade billig.

vortex

Gut, was gibt es fürs Geld?

  • MX-Schalter (in jeglicher Ausprägung, meine Wahl fiel auf blues)
  • Backlight.
  • Ordentliche (+replaceable) Keycaps.
  • 4 Layer, die schnell umschaltbar sind und bis auf einen frei programmierbar sind (ohne Treiber, oder sonstigen Foo). Die Programmierung lässt, neben Makros, die freie Belegung von Tasten zu.
  • Alu-“Wanne” in der die Tastatur befestigt ist.
  • Austauschbare USB-Strippe (Die Poker 3 selbst verfügt über einen Mini (NICHT Micro!) USB Port)
  • All in all: Eine extrem wertige Tastatur (und wenn ich wertig sage, meine ich das auch. Also wertig im Sinne von: “MacBook Unibody ist gut verarbeitet…”.
  • 500g solide Tastatur halt.

Was gibt es nicht, bzw. was macht den Reiz aus?

  • F-Tasten – die fehlen komplett. Sind aber bspw. per “FN+1” (=F1) erreichbar. Das hatte ich mir persönlich schwieriger vorgestellt. Klappt aber super.
  • Multimedia-Keys. Hab ich – bis auf Laut/Leise – eh immer für extrem überflüssig gehalten. Am besten noch ‘ne EMailtaste, oder wie? Dank der Programmierbarkeit kann man sich den Kram auch auf FN+Irgendwas legen.
  • Cursor-Tasten. Das ist – ehrlich gesagt – der grösste Einschnitt. Ich kämpfe nun nach ca. 3 Tagen immer noch. Da ich recht viel im vim Arbeite, habe ich mich dazu entschieden das Cursormovement auf HJKL zu legen. Jetzt rächt es sich, dass ich Jahrelang im vi mit den “normalen” Cursorkeys navigiert habe. Gut, das wird sicher schon. Alternativ kann man sich, wenn man viel navigieren muss, immer noch die Cursortasten nativ (also ohne FN) auf Layer2 und dann WASD legen. Ein nettes Feature, dass ich gestern Abend erst entdeckt habe: R_ALT+Space macht R_CTRL,PN,FN und R_SHIFT zu Cursortasten. Nochmal auf R_ALT+Space gedrückt, und die Tasten sind wieder das, womit sie beschriftet sind.
  • Der gesamte Block Home/End/PgUp/PgDn fehlt ebenfalls. Auch hier übe ich noch mit FN+N (zB für End).

Das Teil macht derartig laune, dass ich gar nicht aufhören möchte zu tippen. Man wird auch echt kreativ damit (das war ja der Zweck des Spiels). Bspw. habe ich mir für den Chrome das vimium-Plugin installiert. Mit dem Teil bedient man den Chrome weitesgehends per Keyboard über die bekannten vim-KeyBindings. Das auf der Bash “set -o vi” da schon obligatorisch ist, versteht sich vermutlich von selbst 🙂

Wer sich also selbst mal wieder einen Tritt verpassen will, um vielleicht mehr vim-Keybindings in den Kopf zu bekommen, mehr Platz auf dem Schreibtisch zu haben, Rechnerunabhängige Makros bauen will oder auch einfach nur eine extrem feine mechanische Tastatur sein Eigen nennen möchte, dem sei die Pok3r ans Herz gelegt.

Weiterführende Links? Klar:

  • Reddit-Post, in dem beschrieben wird, wie man das Ding möglichst vim-gerecht umkonfiguriert.
  • Hersteller (Vortex) – dort gibt es manual und firmware-update – Treiber sind, wie oben beschrieben – nicht notwendig.
  • Vergleich der verschiedenen MX-Schalter.
  • Blog über mechanische Keyboards (gute Einstiegsmaterie)

[Update 28.02.2015]

So, nun habe ich das gute Stück seit ca. 2 Wochen. Was soll ich sagen? Jedesmal, wenn ich eine Rubberdome in den Fingern habe (auch so ein flaches Apple-Dings), denke ich: OMG! Mit anderen Worten ausgedrückt gewöhnt man sich sehr schnell (wieder) an mechanische Tasten. Einzig das Profil der KeyCaps ist etwas ungewohnt. Liebäugele momentan mit DSA-KeyCaps (z.B. diese hier von Signature Plastics). Haken ist: Der Markt für Caps existiert – ernstzunehmend – scheinbar ausschliesslich in den Staaten. In Europa bekommt man nur Ducky/Shiny-Caps. Die mögen für Gamer recht sein, für “Vieltipper” nicht.

So richtig geblickt habe ich das mit den unterschiedlichen Profilen aber noch nicht. Bei Logitech gibt man die Profile in “R”ows an, bei SP in DSA, SA, usw. Ein guter Anlaufpunkt, bei dem man aber definitiv Geduld mitbringen sollte, ist massdrop. Massdrop ist so eine Art Genossenschaftseinkauf. D.h. mehrere Interessenten schliessen sich zusammen, und wenn 200 Leute zusammengekommen sind, geht man auf den Hersteller zu, sodass dieser eine Kleinserie auflegt. Mal schauen, ob da was für mich dabei ist.

Tagged with:
Mai 19

Eigentlich hab ich mich ja immer gewehrt den schönen “Experimentiercomputer” RaspberryPi zum “MediaCenter” zu degradieren. Andererseits hatte ich ein wenig Not hier. Bis vor 2 Jahren hatte ich ‘nen MacMini am TV-Gerät. Der ist dann irgendwann rausgeflogen und musste einem AppleTV (3) weichen.

Dummerweise kann das ATV3 sich nur bei Apple bedienen. Sprich alle fein säuberlich gekauften Filme und MP3s auf dem Fileserver konnten nur umständlich abgespielt werden, in dem immer irgendein olles iTunes auf dem Arbeitsplatzrechner lief. Zeit das zu ändern. Also Pi bestellt und RaspBMC draufgeknallt. Erster Begeisterung folgte direkt die Ernüchterung. Zu langsam, und zu buggy. Wenn bspw. der Pi hängt, hilft nur noch Strom raus und wieder rein, was die SD-Karte mit “Could not mount Root-FS” oder so quittiert. Blöd alles. Doch es gibt eine Lösung für alles.

Ziel sollte es sein im Raspberry nur noch den Bootloader auf der SD-Karte zu haben (den braucht der leider, da der Pi kein Bootp/PXE beherrscht), und diese am besten auch noch mit ‘nem Schreibschutz zu versehen. Gesagt getan. Was ist also notwendig?

  • 2GB SD-Karte fürs erste Setup
  • 32MB SD-Karte für den späteren Betrieb
  • Fileserver mit NFS-fähigkeit
  • Irgend ‘ne Linux-Büchse um die Karten entsprechend zu präparieren (Mit OSX oder Windows ist das echt Schmerz)

Vorgehensweise:

  1. RaspBMC ganz normal auf der 2GB Karte installieren (dd if=[imagefile] of=/dev/sdz bsize=16M) wobei sdz das SD-Kartendevice ist.
  2. Rasbperry ans Netz hängen und booten/Erstkonfig durchführen.
  3. Während der konfiguriert setzen wir den NFS-Server auf (gehe mal davon aus, dass die Grundlagen zu NFS dem Leser bekannt sind)
    1. Directory, in dem das Rasberry-Rootfs wohnen soll erstellen (mkdir /rasberryrootfs)
    2. Directory in die /etc/exports aufnehmen:/rasberryrootfs          IP.VOM.RASP.BERRY(rw,async,no_root_squash,no_subtree_check,anonuid=65534,anongid=65534,insecure)
    3. exportfs -rv aufrufen
  4. Wenn Raspberry fertig, dann:
    1. per ssh einloggen (pi/raspberry)
    2. xbmc stoppen: sudo sudo initctl xbmc stop
    3. NFS-Filesystem mounten: mount IP.VOM.FILE.SERVER:/raspberryrootfs /mnt
    4. Kram umkopieren (sudo cp -axv /. /mnt/.
      sudo cp -axv /dev/. /mnt/dev/.
      )
    5. In der /mnt/etc/fstab folgende Zeile AUSkommentieren (also ein “#” davorschreiben):
      /dev/mmcblk0p2  /               ext4    defaults,noatime 0       0
    6. NFS-Filesystem umounten (sudo umount /mnt)
    7. Raspberry herunterfahren (sudo init 0)
    8. Karte entnehmen und in die o.g. Linuxbüchse stecken, sowie das vfat-Filesystem der Karte mounten.
    9. Kram aus dem vfat-Filesystem irgend wo auf die Platte kopieren.
    10. Karte umounten / Brauchen wir jetzt nicht mehr.
    11. Jetzt die 32MB Karte in die o.g. Linuxbüchse stecken und ein vfat-Dateisystem auf einer Primären Partition vom Typ “MSDOS/VFAT” erstellen.
    12. Den Krempel aus 9 auf die Karte kopieren.
    13. Jetzt noch die Datei cmdline.txt auf der 32MB Karte wie folgt anpassen:
      dwc_otg.lpm_enable=0 root=/dev/nfs rootfstype=nfs nfsroot=192.168.1.100:/raspberryrootfs,v3 ip=192.168.1.49:192.168.1.1:192.168.1.0:255.255.255.0:rpi:eth0:off smsc95xx.turbo_mode=N noatime rootwait loglevel=1 zram.num_devices=2
      Wobei folgendes gilt:

      1. Anstelle der 192.168.1.49 die IP des Raspberrys eintragen
      2. Anstelle der 192.168.1.100 die IP des NFS-Servers eintragen
      3. Anstelle der 192.168.1.1 die IP des Routers eintragen
      4. Anstelle der 192.168.1.0 die Netztadresse des Heimnetzes eintragen
    14. Karte umounten
    15. In den Pi stecken, und freuen 🙂

Wenn alles klappt, noch den nupsi für den Schreibschutz an der 32MB Karte aktivieren, und dann geht das Filesystem dort garantiert nicht mehr kaputt. Noch ein paar Tipps/Anmerkungen zur Performance von dem XBMC:

  • Alle überflüssigen Visualisierung sollten (so schick sie auch sein mögen) deaktiviert werden.
  • Krimskrams wie Samba-Server, Avahi, ftp auf dem Pi auch deaktivieren.

Viel Spass damit.

Tagged with:
Jul 03
Zeche Zollverein / Eingang KokereiGuiding LightFinally pressed 1993Dynamisches TrioKoksofenBlue Escalator

Zeche Zollverein, a set on Flickr.

Auf Tour mal wieder. Diesesmal “Zeche Zollverein” mit Essen. Bescheidenes Wetter (Himmel bedeckt bis hintengegen) haben der Fotoausbeute nicht gerade geholfen…

Tagged with:
Jan 24

Absolut aussichtslos die Autobahntrasse, im Benachbarten Feld/Wald/Wiesenviertel, zu verhindern ?

Kein Weiterkommen bei der Bürgerinitiative gegen die Verlängerung der Rollbahn des Flughafens ?

Hier gibts die Lösung – Feldhamsterverleih !

Jan 14

Einfach nur Göttlich

Jan 03

… für Menschen denen selbst das Benutzen von Google zu kompliziert ist. Frage eingeben, Link kopieren, und beim nächsten mal kommen garantiert keine Fragen mehr 🙂

Guckst Du hier: http://lmgtfy.com/

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:
Dez 28

Oh wie wahr….

Apr 04

Ja nett, was man so alles findet, wenn man sich die Pinnwand beim Kunden mal näher anschaut.

Siehe hier:

vhs-rotenburg_kurse

Feb 08

1. Komisch…
2. Nie von gehört
3. Gestern ging es noch
4. Nun, das Programm muss hier und dort noch abgeändert werden
5. Wie kann das sein ?
6. Die Plattform/Maschine ist kaputt
7. Da hat wohl einer das OS geupdated
8. Der Anwender hat schon wieder einen Fehler gemacht.
9. Da stimmt was mit deinen Testdaten nicht
10. Das Modul habe ich nicht angefasst
11. Ja, das schaffe ich schon in der vorgegebenen Zeit
12. Du hattest die falsche Version zum testen
13. Oh, das ist ein Feature, kein Bug
14. Ich bin fast fertig
15. Sicher, nur noch ein paar änderungen…
16. Ich kann ja nicht alles testen
17. DIESES Programm kann DAS nicht
18. Ich dachte dass wäre schon gelöst…
19. Ich habe es schon fertig und es funktioniert – ist nur noch nicht getestet…
20. Irgendwer hat in meinem Code rumgepfuscht
21. Da muss ein Virus in der Applikation sein.

Passend dazu: Wie unterscheidet man Guten von schlechtem Code:

Antwort: Nach “What the fu..”s per Minute 😉

WTF per Minute

Jan 25

Als Richard Dean Anderson Fan (Ja, ich gebe es zu – MacGyver und Stargate habe ich immer gern geschaut), darf ich euch das nicht vorenthalten. Meiner Meinung nach: Das ultimative Multitool. (Mensch, womit man alles Geld verdienen kann … tss)

Leider ist auf dem Fundstück kein Preisschild zu finden – würd mich aber doch mal interessieren.

Nov 14

Gestatten:

Ich bin der neue Gatekeeper der hier aufs Blog aufpasst. An mir kommt kein SYN vorbei, denn ich gebe hier die ACKs 😉

Gatekeeper

Okt 30

Ich denke das Symbol für Windows-Rechner in der Netzwerkumgebung vom neuen OSX spricht für sich, oder ??

preload preload preload