Hinterlegte FTP-Zugangsdaten aus WordPress löschen.

Mit einer korrekt installierten WordPress-Umgebung gibt es bei den meisten Webhostern keine Probleme, aus der Administrationsoberfläche heraus dateioperative Dinge zu tun, die das Hochladen von zusätzlichen Dateien in die WordPress-Installation erfordern, beispielsweise die Installation von Plugins. Für Situationen, in denen das nicht funktioniert (beispielsweise aufgrund fehlender Rechte), haben die WordPress-Entwickler eine Hintertüre eingebaut, über die das per FTP erledigt werden kann.

Kann WordPress demnach nicht selbst Dateien hochladen, fragt es den Benutzer nach FTP-Zugangsdaten, die der Benutzer hinterlegen kann. Das Problem hierbei: Einmal hinterlegte FTP-Zugangsdaten kann man nicht mehr in der WordPress-Administrationsoberfläche löschen und die Daten auch nur dann ändern, wenn der Login fehlschlägt, denn nur dann blendet WordPress nochmal das Fenster zum Eingeben der FTP-Zugangsdaten ein. Das ist unkomfortabel, aber immerhin im Backend lösbar. Dazu ist allerdings Zugriff auf die WordPress-Datenbank per PHPmyAdmin notwendig.

Und gleich die obligatorische Warnung: Wer nicht fit mit PHPmyAdmin ist und wer nicht fit darin ist, Dinge aus der WordPress-Datenbank zu löschen, sollte hier bitte die Finger weglassen oder zumindest die Datenbank vor der Operation wegsichern. Ich habe es gesagt.

Und hier nun Punkt für Punkt:

  1. Genau das, was ich oben gesagt habe – zuerst die WordPress-Datenbank sichern. Jetzt. In PHPmyAdmin also oben auf die Registerkarte „Exportieren“ gehen, voreingestellt alle Tabellen der Datenbank markiert lassen. Weiter unten den Exporttyp auf „INSERT“ belassen und ganz unten in der „Senden“-Box eine Komprimierung wählen, damit die Exportdatei nicht allzu groß wird, „Zip“ dürfte seinen Zweck erfüllen.
  2. (Punkt 1 getan? Falls nein, bitte dann jetzt nachholen.)
  3. In der WordPress-Datenbank links in der Tabellenübersicht die Tabelle „wp_options“ mit einem Klick auswählen. Wer in seiner WordPress-Installation in der wp-config.php einen anderen Präfix für seine Tabellen in der WordPress-Datenbank angegeben hat, ersetzt das „wp“ mit seiner benutzerdefinierten Präfix.
  4. In der Tabellenübersicht zu „wp_options“ nun auf die Registerkarte „Suchen“ klicken.
  5. Nun eine „Suche über Beispielwerte“ starten, das ist der Kasten unten. Hier beim Feld „option_name“ rechts in der Spalte „Wert“ den Suchbegriff „ftp_credentials“ (ohne Anführungsstriche) eingeben und auf OK klicken. Das Suchergebnis wird dann ein Ergebnis aufführen, nämlich genau den Datensatz, der im Feld „option_name“ den Eintrag „ftp_credentials“ enthält. Dieser Datensatz enthält nun im Feld „option_value“ die FTP-Zugangsdaten.
  6. Den gefundenen Datensatz ersatzlos löschen, also vorne auf das rote Kreuzchenfeld klicken. Es wird nochmal von PHPmyAdmin gefragt, ob man das wirklich tun möchte. Bestätigen, ja, wir wollen das.

Ist dies getan, sind ab diesem Moment die hinterlegten FTP-Zugangsdaten aus der WordPress-Konfiguration entfernt. Sollte WordPress wieder FTP-Zugangsdaten anfragen, dann bedeutet dies, dass die WordPress-Installation keine Rechte hat, die jeweilige Dateioperation mit den Rechten des Webservers auszuführen.

Von schwankenden Netzwerken.

Eine E-Mail eines Kunden verbreitete kürzlich ungeahnte Heiterkeit im Büro. Da fragte der Kunde, der ein umfangreiches Unternehmensnetzwerk mit vielen Filialen betreibt und am Hauptstandort eine Außenanbindung mit mehreren unabhängigen Upstream-Anbindungen zu verschiedenen Providern pflegt, was eine bestimmte BGP4-Konfiguration auf seinem zentralen Router bedeutet. Nämlich “neighbor x.x.x.x weight 100”.

Bei sowas schrillt der Alarm, denn am externen Routing herumzubasteln, gerade wenn man BGP4 zwecks mehreren Provider-Anbindungen einsetzt, ist das unqualifizierte Schrauben an solchen Einstellungen äquivalent zu Analogien, bei denen man während einem Flug von Frankfurt nach New York einfach mal die Cockpit-Steueranzeigen umkonfigurieren möchte.

Offensichtlich, so die Mail, passierte ähnliches. Der mutige Mitarbeiter entfernte einfach mal die betreffende Zeile in der Konfiguration einer Provider-Anbindung, was dazu führte, dass der nach außen gerichtete Datenverkehr plötzlich “flappte”, mal ging es zum einen Provider hinaus, mal zum anderen. Das Internet geriet (sinnbildlich) in Schieflage, Anbindungen zu anderen Unternehmen und Außenstellen brachen ab und das endete alles erst, als man die Zeile wieder hinzufügte. Ja, sowas hebt die Spannung in einer EDV-Abteilung ungemein. Ein Angriff der Klingonen, die mit romulanischen Tarnvorrichtungen bis direkt vor die Enterprise geflogen sind, ist vermutlich nichts dagegen.

”neighbor xxx weight 100” ist, um es jetzt mal sehr vereinfacht zu erklären, ein IOS-Befehl, der zur Gewichtung benutzt wird, welchen Upstream man eher benutzen möchte, als einen anderen. Das dient hauptsächlich dazu, um bei mehreren vorhandenen Anbindungen eine so weit für bestimmte Zieladressen (oder auch für alle) zu bevorzugen, bis diese eine Schwelle der Funktionalität unterschreitet, bevor der Router dann eine andere Anbindung nimmt.

Das besondere an diesem Befehl ist aber, dass die Gewichtung nur auf dem Router selbst passiert und nicht an andere Teilnehmer im Routing weitergegeben wird. Hat also ein Router mit der Gewichtung ein Problem, so nutzt das Netzwerk eben diesen Router nicht. Diese Gewichtung granuliert man sich deshalb äußerst fein auf die vorhandenen Anbindungen und bewertet das dann auch regelmäßig, um gegebenenfalls Gewichtungen anzupassen, denn im Normalfall muss das alles im laufenden Betrieb passieren.

Wenn plötzlich mehrere Anbindungen gleich für die gleichen Zieladressen bevorzugt werden sollen, so mag das vielleicht basisdemokratisch aussehen, führt aber zu katastrophalen Ergebnissen. Das hat unser Kunde jetzt verstanden. Ich gebe zu, ich habe das einst auch so gelernt. 😉

Laborieren mit der Fritzbox-Software.

Eigentlich eine hübsche Sache, die AVM da mit den so genannten Labor-Firmwares anbietet. Dabei handelt es sich um Firmware-Versionen für Fritzboxen, die sich noch im Beta-Stadium befindet und teilweise richtig gute Erneuerungen mit sich bringen. Für gewöhnlich gibt es alle paar Tage Updates dieser Labor-Firmwares, so dass man auch sehr schön sehen kann, wie bei AVM neue Features „wachsen“.

Leider geht AVM bei diesen Entwicklungsarbeiten mehrgleisig vor, so dass man etwas aufpassen muss, welche Version der Labor-Firmware man sich da einspielt. Denn AVM entwickelt mehrgleisig. Machen wir das mal am Beispiel der Fritzbox 7270 fest:

Die derzeitige, offizielle Firmware-Version der Fritzbox 7270 ist lautet 54.04.70. Derzeit (Stand: 3. März 2009) gibt es als Labor-Firmware zwei Firmware-Versionen, nämlich die Version 54.04.94 mit dem Entwicklungsschwerpunkt IPv6-Unterstützung und die Version 54.04.98 mit dem Entwicklungsschwerpunkt der Verbesserung des WLAN-Monitors.

Eingespielt sind die Labor-Firmwares schnell, die bestehenden Konfigurationen werden nahtlos übernommen. Das Problem ist jedoch, dass der Rückwärtsweg umso steiniger ist. Zwar lassen sich alte Firmware-Versionen einspielen, jedoch können Konfigurationsdateien, die aus neueren Firmware-Versionen stammen, nicht in Fritzboxen mit früherer Firmware-Version eingespielt werden.

Das wäre ja jetzt auch nur ein kleines Problem, allerdings erlaubt sich AVM irgendwann den Spaß, dass sie mehrere Entwicklungszweige wieder vereinigen und dann nicht, wie man eigentlich erwarten könnte, nicht einfach die Versionsnummer eines bestehenden Zweiges genommen wird, sondern eine neue, die höher ist, als die aller vereinigten Entwicklungszweige.

So kann es nämlich passieren, dass wenn man nun die Labor-Firmware 54.04.98 installiert und AVM irgendwann diesen Entwicklungszweig mit der Version 54.04.94 vereinigt und dann die Versionsnummer 54.04.94 weiterführt, man danach die Fritzbox neu konfigurieren darf, weil die Konfigurationsdatei aus einer höheren Version stammt.

Telefonbuch aus der Fritzbox exportieren.

Wer die Fritzbox zum Telefonieren verwendet, hat sicherlich auch schon dem Komfort des zentralen Telefonbuches entdeckt, das man in der Fritzbox anlegen und verwalten kann. Gerade mit der Fritzbox 7270 und mehreren DECT-Mobilteilen ist das eine wirklich angenehme Sache, da alle Mobilteile so auf das gleiche, zentrale Telefonbuch zugreifen können.

Ein Wermutstropfen des Telefonbuches ist, dass man es nicht ohne weiteres exportieren und in eine andere Fritzbox importieren kann. Will man das Telefonbuch in eine andere Box übernehmen, funktioniert das nur, wenn man die gesamte Konfiguration abspeichert und übernimmt und auch das funktioniert nur, wenn die andere Fritzbox exakt die gleiche Firmware an Bord hat, als die Fritzbox, aus der die Konfiguration kommt. Noch auswegloser wird es, wenn die andere Fritzbox aus einer anderen Modellreihe kommt, denn auch da lässt sich die Konfigurationsdatei einer anderen Box nicht importieren. Also hilft nur das Extrahieren der Telefonbuchdaten aus einer Konfigurationsdatei und das ist leider nicht ganz so einfach.

Zuerst brauchen wir einmal so eine Konfigurationsdatei. Die lässt sich (in der Fritzbox 7270) in den Erweiterten Einstellungen, dort unter System und dort dann unter Einstellungen sichern erzeugen und auf den lokalen Computer abspeichern. Ergebnis ist eine Textdatei mit der Dateiendung „.export“, die die Konfiguration der Fritzbox enthält, teilweise in Klartext, teilweise verschlüsselt (beispielsweise Benutzerdaten) und teilweise komplett codierte Bereiche. Darunter auch das Telefonbuch, das sich weiter unten in der Konfigurationsdatei in einem Block befindet, der folgendermaßen gekapselt ist:

**** BINFILE:phonebook
3C3F786D6C0 [..] 3C736572766963
**** END OF FILE ****

Professionelle Codeschnupfer erkennen zwischen den Zeilen „BINFILE“ und „END OF FILE“ Zeichenfolgen, die darauf schließen lassen, dass hier etwas hexadezimal codiert wurde und man ja spasseshalber diese Inhalte einmal in binäre Schreibweise konvertieren könnte. Dazu gibt es genügend Software, aber auch Dienste im Web, beispielsweise einen Universalübersetzer von Paul Schou. Man nehme also den Inhalt aus dem „BINFILE:phonebook“ der Konfigurationsdatei, lasse die Zeilen „BINFILE“ und „END OF FILE“ weg, kopiere das Substrat in den obigen Universalübersetzer in die vierte Textbox namens „HEX“ (oberste Reihe ganz rechts) und klicke auf den darunter liegenden Button namens „DECODE“. Nach wenigen Sekunden erscheint dann in der linken Box namens „TEXT“ der decodierte Inhalt. Und Bingo, der decodierte Inhalt ist lesbar und nichts anderes wie in hexadezimale Schreibweise übersetzter XML-Code. Dieser XML-Code ist sogar vollständig, fast korrekt (dazu kommen wir gleich), allerdings nicht hübsch formatiert, so dass die XML-Verschachtelung nicht sichtbar ist. Das machen wir im nächsten Schritt, wenn einem diese Ansicht zum Abschreiben nicht genügt. Denn darauf läuft es leider hinaus, es gibt keine eingebaute Importfunktion für das Telefonbuch.

Wer also den XML-Code übersichtlich verschachtelt haben möchte, kopiert deshalb einfach aus dem Fenster den Code erst einmal heraus, diesen in eine Textdatei und speichert das dann ab. Diese Textdatei benennt man dann sinnvollerweise mit der Dateiendung „.xml“, um es dem nächsten Schritt leichter zu machen. Da nämlich der XML-Code einen syntaktischen Fehler und zudem am Ende des Telefonbuches noch ein Teil hat, der eigentlich gar nicht zum Telefonbuch gehört, wird es nun etwas schmutzig. Zwei Dinge sind zu tun:

  1. In der ersten Zeile erscheint folgender Text:
    <?xml version="1.0" encoding="iso-8859-1">
    Diese XML-Einführungszeile ist falsch und muss folgendermaßen aussehen. Man beachte das neu hinzugekommene Fragezeichen als vorletztes Zeichen:
    <?xml version="1.0" encoding="iso-8859-1"?>
  2. Im Text nach folgender Zeichenfolge suchen:
    <phonebook owner="255">
    Der Inhalt, der nach dieser Zeichenfolge folgt, sind Telefonbucheinträge von internen Geräten, beispielsweise der Anrufbeantworter oder angemeldeten Mobilteile. Da diese Einträge nicht erforderlich sind und zudem auch noch falsch verschachtelt, einfach alles ab der obigen Zeichenfolge bis zum Ende der Datei löschen, inklusive der obigen Zeichenfolge.

Nun dürfte der XML-Code korrekt sein, bitte abspeichern. Am ehesten sehen wir das, wenn wir nun einen echten XML-Editor mit Syntax-Überprüfung einsetzen. Unter Windows gibt es den kostenlos herunterladbaren Microsoft XML-Editor, der dies kann, grundsätzlich tut es aber jeder andere XML-Editor auch. Also den XML-Editor der Wahl öffnen und die XML-Datei öffnen. Ist der XML-Code korrekt, gibt es hier keine Fehler und nun können hier, wenn der Editor einigermaßen brauchbar ist, die Einträge bequem angezeigt werden:

Fritzbox-Telefonbuch im XML-Editor

Mit Drag’n’Drop kann man nun die einzelnen Inhalte in die neue Fritzbox und in deren Telefonbuch übernehmen. Richtig schön ist das alles nicht, aber immerhin kommt man so zumindest an das alte Telefonbuch heran. Vielleicht mag ja AVM auch mal meine Verbesserungsvorschläge lesen und zu Herzen nehmen, die eine bequemere Ex- und Importfunktion als Wunsch beinhalten.