SucheBlog abonnierenVerwaltung des BlogsKategorienKontaktMarkus Brückner |
Mittwoch, 17. Februar 2010Bester Spruch heute...Bester Kommentar eines Kollegen heute zu einem Passwort-Hash, den er mir geschickt hat: für die Beleidigung am Ende müsse er sich entschuldigen, das lag am Programm. Der Hash endete auf …fOzE.. Dienstag, 2. Februar 2010Interessanter NachtischWar mal wieder lecker Abendessen angesagt. Diesmal mit interessantem Nachtisch. Schmeckt eigentlich nur nach Schokolade, das Tierchen selbst hat keinen erkennbaren Eigengeschmack. Aber knusprig war's... Heuschrecke im Schokoladenmantel Freitag, 11. Dezember 2009Jabber-Probleme hinter DSL-RouterInteressante Erfahrung gerade: seit einem Neustart meines Jabber-Servers funktioniert der Kontakt dorthin nicht mehr aus meinem privaten Netz. Ein wenig Sucherei später stellt sich heraus, dass mein DSL-Router (bzw. der darauf laufende DNSMasq) DNS-Queries vom Typ SRV sperrt. Dazu muss man wissen, dass Jabberclients aus dem Domainpart der Jabber-ID mittels eines DNS-Queries ermitteln, auf welchem Server man sich einloggen muss. Sie fragen einfach nach _xmpp-client._tcp.domain.part mit RR-Type SRV und verbinden sich zu dem in der Antwort stehendem Server. Klappt das nicht lösen sie den Domainpart normal auf und verbinden sich dort hin. Nun hatte ich bisher nach einigen Umbauarbeiten immer noch eine Umleitung laufen, die ich aber im Zuge eines Systemupdates mal entfernt habe. Damit klappt das nicht mehr, dass man sich einfach auf die IP aus dem A-Record des Domainparts verbinden kann und den Jabberserver erreicht. In der Welt draußen kein Problem, gibt es doch einen passenden SRV-Record, der verrät, wie's geht. Dummerweise war mein DNSMasq hier mit der Option filterwin2k konfiguriert, was ihn dazu veranlasst (unter anderem) SRV-Records wegzufiltern. Nimmt man die raus funktioniert alles. Wieder was gelernt... Sonntag, 6. Dezember 2009Weihnachtszeit, KeksezeitKekse! Das Krümelmonster hätte bei uns gerade seine helle Freude. Nachdem gestern die Verwandschaft eingefallen war um traditionell (zählt zum dritten Mal in Folge schon als Tradition?) Kekse zu backen wurden wir heute durch Nikolausgeschenke aus unserem verrückten Freundeskreis inspiriert mal was anderes zu probieren: Windlichter. Essbare solche um genau zu sein. Einfach nen etwas festeren Teig (bspw. Weihnachtssterne), Wände draus gebaut und mit Ausstechformen Fenster reinstechen. Soweit, so gut. Richtig interessant wird's aber erst, wenn man klare Bonbons nimmt, diese mit dem Hammer zertrümmert (tierische Sauerei, trotz Tüte drumrum) und das Gekrümel in die ausgestochenen Löcher packt. Beim Backen im Ofen schmilzt das Zeug und läuft als Fenster zu einer Fläche zusammen. Sieht schick aus und schmeckt gut. Zuguterletzt werden die Wände noch mit heißem Zucker zu Windlichtern zusammengeklebt (noch viel größere Sauerei und außerdem muss man aufpassen, dass man sich nicht verbrennt). Ein solches mit einem Teelicht versehen leuchtet jetzt hier auf dem Tisch vor sich hin. Wenn's uns nicht mehr gefällt, dann essen wir es halt einfach auf. Schickes Windlicht Mittwoch, 18. November 2009Drei Stunden war der Laptop krank... (und außerdem russische Propaganda)... jetzt läuft er wieder, Gott sei Dank! Frei nach Wilhelm Busch mach ich grad drei Kreuze. Glücklicherweise habe ich mir mal irgendwann ein Thinkpad gegönnt. Ebenso glücklicherweise war bei IBM jemand mal der Meinung, dass man in eine Tastatur Ablaufkanäle einbauen müsse, falls mal Flüssigkeiten in die Tastatur kommen. Tja... ich bin heute offenbar nicht sooo geschickt und hab es geschafft, ein Glas Cola über meiner Tastatur zu entleeren. Während der größte Teil durch die dafür vorgesehenen Kanäle abgelaufen ist, musste ein relativ kleiner Teil gewaltsam aus dem größtenteils zerlegten Gerät entfernt werden. Nach einer gründlichen Dusche für die Tastatur (die funktioniert plötzlich wieder einwandfrei ohne zu knirschen und so...) scheint soweit wieder alles in Ordnung. Hoffen wir mal das beste... And now for something completely different: Panzerkreuzer Potemkin, ein Meisterwerk russische Propaganda. Gab's heute im Hochschulkino. Und weil das ganze ja ein Stummfilm ist und man heute audio-visuelle Berieselung gewohnt ist, haben sich die Jungs und Mädels vom HFC mit dem Kammerorchester der TU Ilmenau und der Jazzband nuzz zusammengetan und das ganze mit klassischer Musik unterlegt. Sehr interessante Erfahrung. Ich bin ja sonst nicht so für die Klassik, aber so ein komplettes Orchester hat schon was... Knusper, Knusper, Knäuschen...Ich hab gestern mal wieder feststellen müssen: in meinem Freundeskreis gibt es einige verrückte Leute. Aus ominösen Gründen darf ich mich ja seit Montag ganz offiziell alt fühlen. Das ist ja üblicherweise ein willkommener Grund für den Austausch einiger Glückwünsche und natürlich auch Geschenke. Dem Anlass gebührend gab es Haftcreme, Shampoo gegen Haarausfall, Zink+C-Tablette, ne Knieschiene etc.pp. (allein letzteres fand ich ja schon hinreichend verrückt). Definitiv den Vogel abgeschossen hat allerdings das letzte Geschenk: ein Haus. Also, kein richtiges, aber schon ziemlich nah an dem, in dem ich vielleicht gern mal wohnen will. Mit Unterstützung meiner Holden haben die Wahnsinnigen nämlich aus geschätzten 5kg Lebkuchen, Marzipan, Zuckerkleister und Schokolade ein Modell unseres — hoffentlich irgendwann mal zu bauenden — Haus gebastelt. Ich war geschüttelt^Wgerührt... Hier noch ein paar Bilder um mal einen Einblick zu bekommen... Einmal ein Luftbild Sogar an mein Schlagzeug wurde gedacht Danke an die fleißigen Erbauer :) Sonntag, 15. November 2009(K)Ubuntu in eine schon existierende LVM-Struktur installierenIch wollte aus verschiedenen Gründen meiner Linux-Installation mal einen kompletten Neustart gönnen und Kubuntu Karmic Koala frisch aufsetzen. Dabei wollte ich allerdings vorzugsweise darauf verzichten mein aktuell 83 GB schweres Home-Directory komplett aus dem Backup wieder einspielen zu müssen. Gedacht, ... fast getan. Backup wurde natürlich vorher gemacht (ich bin ja nicht wahnsinnig. Jedenfalls nicht wesentlich mehr, als üblich. Außerdem hatte jemand in der näheren Umgebung letztens erst den Fall, dass sämtliche Daten zwar noch da, aber dank Festplattenverschlüsselung mit kaputtem Keystore nicht mehr zugreifbar waren. Das wollte ich mir natürlich ersparen. Erstmal dazu, wie meine Platte grob aussieht:
/dev/sda
|
+---sda1 (/boot)
+---sda2 (dm-crypt-Volume)
|
+---ec_root (/)
+---ec_swap (swap)
+---ec_home (/home)
Soweit, so unpraktisch. Speziell /home sollte unbedingt erhalten bleiben. Erster Anlauf: ganz naiv den Installer gestartet und geschaut, was er so erkennt. Klappt natürlich nicht. Der sieht sda2 und interessiert sich kein bischen für die Innereien. Ok, zweiter Anlauf: Situation herstellen, die dem Installer erlaubt die Innereien zu erkennen: cryptsetup luksOpen /dev/sda2 sda2_crypt lvm vgchange -a y Das erste öffnet das verschlüsselte Volume, das zweite aktiviert die darin enthaltene Volume Group und alle logischen Volumes innerhalb dieser. Das ganze macht man am besten in einer zweiten Konsole, während der Installer gerade auf Nutzereingaben wartet (bspw. wenn er sich grad aufregt, dass er kein Netz findet). Danach kann man die Installation gemütlich weiterlaufen lassen und der Installer wird beruhigt die Volumes erkennen, so dass man in der manuellen Partitionierung (alles andere wäre Unsinn) alles entsprechend wieder zuweisen kann, wie es sein soll. Mir ist hier noch ne Kleinigkeit unangenehm aufgefallen: sda2 wird aus irgendeinem Grund als Swap eingestuft. Aus Sicherheitsgründen habe ich das komplett rausgenommen (also auch nicht als Crypto-Volume definiert), was zur Folge hatte, dass hinterher etwas Handarbeit angesagt war. Wenn die Installation durchgelaufen ist (auch das kann ein Problem sein, wenn das CD-Laufwerk auf einmal I/O-Error wie Kekse verteilt...), dann muss man noch einige kleinere Anpassungen machen um das System bootfähig zu machen. Was ist das Problem? Dadurch, dass das Crypto-Volume von Hand geöffnet wurde und der Installer so nichts davon weiß, fehlt der entsprechende Eintrag in der /etc/crypttab des frisch installierten Systems. Das wiederum führt dazu, dass das initrd nichts über die Verschlüsselung weiß und nicht nach dem Passwort fragt, was wiederum den Bootprozess einfach stillstehen lässt. Blöd. Eine Lösung muss her... Im Prinzip isses einfach: man macht das System von Hand bootfähig. Man mountet noch im laufenden Installersystem /dev und /proc mittels -o bind nach /target/dev und /target/proc (/target ist der Punkt, wo der Installer die Platte einhängt. Wenn nicht: einfach selbst machen), wechselt mittels chroot /target ins installierte System, passt die /etc/crypttab entsprechend an (sprich: man trägt in meinem Fall /dev/sda2 passend ein. Eventuell muss man die /etc/fstab auch noch anfassen, wenn man schonmal da ist.), ruft update-grub und update-initramfs auf, wechselt wieder raus, macht alle Mounts rückgängig und rebootet. Wenn man großes Glück hat, geht's danach. Wenn nicht, dann ist Fehlersuche angesagt. Für diese Sucherei hab ich heute dann doch etwas gebraucht. Vor allem immer unter der Prämisse: bloß nüscht kaputtmachen, sonst musst du das doofe Backup zurückspielen. Mittlerweile läuft alles, nur eine Warnung beim Systemstart bzgl. des Einbindens von /home irritiert mich noch. Hat zwar keine Auswirkungen, aber das will ich auch noch rauskriegen. Später... Donnerstag, 15. Oktober 2009State-Machine-Bibliothek für JavaLetzte Woche waren meine Holde und ich ja im Urlaub und wie das so ist kommt man da ja meist zu den Sachen, für die man sonst nie Zeit hat. Da ich schon seit längerer Zeit mal TDD ausprobieren wollte, war die Zeit also günstig. Herausgekommen ist ein kleines Spielzeug namens StateMachine (kreativere Namensvorschläge werden in den Kommentaren gern entgegengenommen): eine kleine Bibliothek für State Machines in Java. Brauch ich demnächst wahrscheinlich sowieso für verschiedene Dinge, so dass die Zeit nicht vergeudet war. Fazit der testgetriebenen Entwicklung? Anfangs etwas gewöhnungsbedürftig, weil man den klassischen Entwicklungsprozess (Entwickeln-Testen) quasi rumdreht. Für so Sachen wie die Entwicklung von Bibliotheken ist das allerdings ganz interessant, weil man relativ früh merkt, wenn die Schnittstellen murksig zu benutzen sind. Durch das "auf den grünen Test" hin programmieren hat man auch klar abgesteckte Aufgaben für jeden Entwicklungsschritt. Ich werd das also bei der Library (und auch sonst wo sich's lohnt) durchaus weiter ausprobieren. Ach ja: bitbucket.org ist richtig angenehm zu benutzen. So angenehm, dass ich zu faul war, den Kram selbst aufzusetzen. Mercurial ist eh geil. Sag ich ja meiner Frau immer, aber die hört ja nicht... Mittwoch, 7. Oktober 2009Nochmal entspannen vor SemesterstartSpontan (ein paar Tage Vorlauf) noch mal nen Kurzurlaub eingeschoben, bevor das neue Semester wieder losgeht (nicht dass ich Seminare besuchen müsste, aber halten...) Es hat uns ins Elbsandsteingebirge verschlagen. Ein wenig Wandern für nen freien Kopf. Schicke Gegend hier. Schnell noch ein paar Bilder (in order of appearance): ein 360°-Panorama vom Lilienstein (sehr empfehlenswerter Aufstieg, stückchenweise mit Höhenangst allerdings ein wenig Überwindung) und ein Blick in der Dämmerung auf die Festung Königstein (die hat mit 152m den zweittiefsten Brunnen Europas. Tiefer ist nur der auf dem Kyffhäuser. Auch ansonsten sehr sehenswertes Bauwerk) Ach ja, gestern abend waren wir essen. Auf dem Tisch stand folgende Werbung (wir haben gelacht): ![]() Trink! Mich! Aus! Dienstag, 1. September 2009Befreiung aus der Sklaverei...Endlich! Ok, für die Sklaven in den USA mag es damals um mehr gegangen sein, aber mir ist es trotzdem lieb, dass unser Haushalt seit gestern ein neues Mitglied hat. Auf zu neuen Kochexperimenten ohne den Aufwand hinterher! Ach ja: Sie gackert rum, dass ich ja eh nicht so oft abgewaschen hätte. Dem möchte ich entschieden widersprechen! Jawoll... ![]() Zauberkasten: Geschirr geht dreckig rein und kommt sauber raus. Und ich hab keine nassen Hände... Sonntag, 16. August 2009PHP-Session-Management unter DebianMan merkt, ich bin gerade am Umbauen/Aufräumen... Dabei ist mir aufgefallen, dass ich in einigen Webpräsenzen mehr Dateien habe, als gedacht. 467707 Dateien, die da nicht hingehören, um genau zu sein. Hinterlassenschaften des PHP-Sessionmanagement. Tja... Die Erklärung ist relativ einfach: zwecks Absicherung gegeneinander haben bei mir verschiedene Webpräsenzen eigene Session-Ordner. Normalerweise kein Problem, PHP kümmert sich via Garbage Collection darum, dass die abgelaufenen Sessions aufgeräumt werden. Unter Debian ist das ganze aufgrund von Sicherheitseinstellungen deaktiviert. Das Aufräumen geschieht dort via Cronjob. Der wiederum kümmert sich nur um /var/lib/php5/ und lässt damit die speziell eingerichteten Verzeichnisse natürlich brav in Ruhe. Die sammeln damit fleißig Dateien. 467707 bis jetzt... PostgreSQL weigert sich zu startenKleine Nettigkeit über die ich gerade gestolpert bin. Mein PostgreSQL 8.3 weigert sich zu starten. Er meldet: 2009-08-16 16:12:55 UTC WARNING: could not create listen socket for "localhost" 2009-08-16 16:12:55 UTC FATAL: could not create any TCP/IP sockets Die erste Zeile hat mich dann richtig raten lassen: wenn man mittels debootstrap ein Debian aufgesetzt hat, dann fehlt üblicherweise die /etc/hosts. Deswegen kann er localhost nicht auflösen und weigert sich, zu starten. Ergo: echo "127.0.0.1 localhost" >> /etc/hosts und schon sollte er wollen. Bei der Gelegenheit kann man auch gleich noch die IP des Servers auf den internen Namen mappen (bspw. echo "1.2.3.4 servername" >> /etc/hosts. Wenn man eh schonmal dran ist... Donnerstag, 13. August 2009Sound in Java unter Linux (speziell: JOSM)Man kann ja mittels OSMTracker während des Trackens Audioaufzeichnungen anfertigen um sich gewisse Sachen zu markieren (sehr praktisch zum Beispiel bei der Erfassung von Hausnummern). In JOSM geöffnet werden die Aufzeichnungen als kleine Icons in der Karte angezeigt und können via Klick abgespielt werden. JOSM ist ja ein Java-Programm und will als solches in einer JVM laufen. Nun habe ich standardmäßig Suns JVM installiert (unter Kubuntu: sun-java6-jre). Die hat aus irgendwelchen Gründen Probleme mit der Audioausgabe (Meldung: "Audio device unavailable"). Längeres suchen und probieren brachte mich darauf, die OpenSource-Variante der VM zu installieren (wieder unter Kubuntu: openjdk-6-jre). Die kann Audio. Theoretisch. Praktisch besteht das Problem, dass sie den PulseAudio-Server mit installiert und damit die Audioausgabe endgültig kaputtspielt. Keine Ahnung, was genau das Problem ist. Der Effekt ist folgender: sobald die JVM (oder das Flash-Plugin im Browser. Die scheinen die gleiche Infrastruktur zu nutzen) eine Audio-Ausgabe machen will, startet im Hintergrund der PulseAudio-Server. Danach geht gar kein Sound mehr. Liest man ein wenig im Netz rum, dann hat dieses Programm den Ruf nur Probleme zu verursachen. Die übliche Empfehlung: deinstallieren. Hab ich gemacht. Hilft. Plötzlich geht sowohl in der JVM, als auch im Flash der Sound völlig problemlos. Wenn ich jetzt noch ne Ahnung hätte, wozu das Audioverhinderungsprogramm PulseAudio genau da ist... Sonntag, 9. August 2009Zugriff auf die Dateien eines Windows Mobile Gerätes unter KubuntuMit vereinten Kräften gerade rausgefunden: um auf die Dateien eines Windows-Mobile-Gerätes von Ubuntu (in dem Fall Karmic, sollte aber auch mit Jaunty gehen) aus zugreifen zu können ist das Paket synce-kio-rapip-kde4 notwendig. Dieses enthält den notwendigen KIO-Slave, der einem erlaubt auf das WM6-Gerät zuzugreifen. Dummerweise ist dieses Paket nicht in den Standardquellen vorhanden (weder bei Jaunty, noch beim kommenden Karmic). Man kann sich behelfen, indem man folgendes in der /etc/apt/sources.list nachträgt: deb http://ppa.launchpad.net/synce/ubuntu jaunty main Danach kann man das Paket installieren und durch die Eingabe von rapip:/ in die Adresszeile des Dolphin auf die Dateien des WM6-Gerätes zugreifen. Ja, auch unter Karmic muss man jaunty in der Zeile stehen haben. Für Karmic gibt es (noch?) kein eigenes Repository. Macht aber nix: die Version von Jaunty lässt sich problemlos installieren (zumindest im Moment. Jetzt bloss kein Update!). So, jetzt aufgezeichnete GPS-Tracks von heute ziehen und wieder ein wenig was an OSM tun. Serendipity Shared Installation und mod_vhostUff, da hab ich mal wieder länger ringen müssen. Aus ominösen Gründen wollte ich mal wieder eine Instanz meiner bevorzugten Blogsoftware aufsetzen. Weil sich aber die Platte des Servers mittlerweile ganz gut mit Instanzen füllt, sollte diesmal eine Shared-Installation her, bei der sich früher oder später mal alle Instanzen eine Code-Basis teilen (weniger mangels Platz, sondern wegen des Pflegeaufwandes). Soweit der Plan... Nun gibt es dafür eine Anleitung, über der dick und fett steht: "WARNING: THIS FEATURE IS EXPERIMENTAL!". Experimentell ist es in der Tat, vor allem wenn die Anleitung und meine Vorstellung davon, was gewisse Dinge bedeuten, aufeinander treffen. Wenn man dann noch zusätzlich mod_vhost mit in den Ring schmeißt, dann ist das Chaos fast perfekt. Aber von vorn. Ziel der Aktion war folgendes: eine Subdomain blogs.example.com unter der man einfach und ohne Probleme neue Blogs anlegen kann. Dazu sollte nur eine Serendipity-Installation verwendet werden (kein Bock da mehrere zu pflegen). Gut, der Anfang ist einfach: mod_vhost ist schon aktiv, einen neuen VirtualHost im Apachen anlegen (ServerName blogs.example.com, ServerAlias *.blogs.example.com) und im DNS *.blogs.example.com auf die IP des VirtualHost zeigen lassen. In dem VirtualHost Ersetzt man nun noch DocumentRoot durch folgende Zeilen (vorausgesetzt die Bloginstallation liegt am Ende mal unter /home/blogs.example.com/: UseCanonicalName Off VirtualDocumentRoot /home/blogs.example.com/subdomains/%1 Nun kann man ganz einfach durch Anlegen eines neuen Verzeichnisses in /home/blogs.example.com/subdomains eine neue Subdomain anlegen. (Beispiel: test.blogs.example.com wird mit der Konfiguration auf /home/blogs.example.com/subdomains/test abgebildet). Ausprobieren, ob das Konstrukt funktioniert und dann weitermachen. Nächster Schritt: die Installation von Serendipity. Man lädt das normale Package runter (die LITE-Installation bringt die Dateien nicht mit, die man für die Shared-Installation-Geschichte braucht) und entpackt es nach /home/blogs.example.com/s9y. WICHTIG: der Pfad MUSS als letzten Teil s9y haben. Entpackt man die Dateien standardgemäß, dann landen sie in einem neuen Verzeichnis namens serendipity. Dessen Inhalt muss man nach s9y verschieben. Der Pfad ist im Code hart verdrahtet. Wenn man das Verzeichnis anders benennt, dann darf man sich auf unerklärliche Internal Server Errors freuen. Zuguterletzt muss man dem Apache noch sagen, wo er sich seine PHP-Dateien zusammensuchen soll. Tut man das nicht, dann findet der Deployment-Code (siehe unten) die Dateien der Shared Installation nicht. Dazu trägt man in den VirtualHost noch folgende Zeile ein (ob /usr/share/php und /usr/share/pear hier wirklich notwendig sind, weiß ich nicht. Eigentlich stehen die bei Debian im "Master Value" für include_path. Vielleicht weiß da jemand ja mehr...): php_value include_path ".:/usr/share/php:/usr/share/pear:/home/blogs.example.com:/home/blogs.example.com/s9y:/home/blogs.example.com/s9y/bundled-libs" Außerdem hilft es, wenn man dem Apache noch erlaubt die .htaccess-Dateien, die Serendipity so mitbringt auch zu interpretieren. Dazu muss man in den Block <Directory /home/blogs.example.com/subdomains>...<Directory> in der Apache-Config bei AllowOverride All eintragen. Damit darf die .htaccess innerhalb der Subdomain-Verzeichnisse alle möglichen Änderungen vornehmen. Wer das einschränken will muss rausfinden, was genau benötigt wird und das dann dort entsprechend angeben. Nun kann man mit folgendem Skript recht einfach eine neue Bloginstanz anlegen:
#! /bin/sh
BASE_DIR=/home/blogs.example.com
if [ x$1 == x ]; then
echo "Please supply a subdomain-name for the blog.";
exit 1;
fi
mkdir /home/$BASE_DIR/subdomains/$1
$(
cd /home/$BASE_DIR/subdomains/$1
cp -r ../../s9y/deployment/* .
ln -s ../../s9y/templates .
ln -s ../../s9y/htmlarea .
)
chown -R www-data.www-data /home/$BASE_DIR/subdomains/$1
su - postgres -c "createdb $1blogsexamplecom"
su - postgres -c "createuser -S -D -R -P -E $1blogsexamplecom"
Das Skript tut eigentlich nicht viel: es legt ein passendes Verzeichnis an um die Subdomain zu aktivieren, kopiert die Deployment-Dateien von Serendipity (ein paar kleine PHP-Dateien, die am Ende mal dafür sorgen, dass aus der Shared-Installation die gemeinsamen Dateien angesprungen werden), verlinkt templates und WYSIWYG-Editor passend und überträgt die Rechte an den Webserver-User. Die letzten beiden Zeilen legen noch die Datenbank und den passenden User zum neuen Blog an (Passwort wird erfragt). Das ist natürlich nur für die bei mir verwendete PostgreSQL gültig. Wer was anderes verwendet muss hier entsprechend anpassen. Tja, wenn das alles fehlerfrei durchgelaufen ist, dann kann man eigentlich schon die Domain http://<name>.blogs.example.com besuchen. Dort wird man vom Installationsskript von Serendipity begrüßt, welches den eben angelegten DB-Nutzer wissen will und dann seine Arbeit erledigt. Für das (doch eigentlich recht einfache) Vorgehen hab ich jetzt doch 2 Stunden gebraucht um's auszutüfteln.. P.S: Das in der Originalanleitung erwähnte open_basedir muss man leider weglassen, weil es nicht zusammen mit mod_vhost spielen mag. Speziell der Subdomain-spezifische Teil des Pfades würde hier Probleme machen.
(Seite 1 von 24, insgesamt 349 Einträge)
» nächste Seite
|