Wie man Wordpress 2.3 schweigsamer macht
Kommentare: 12 - Date: 26. September 07 - Kategorien: Wordpress
Update:
Mein Plugin Anonymous Wordpress Plugin Updates ist nun im offiziellen Plugin-Verzeichnis zu finden und hat einen eigenen Post bekommen.
Zum Hintergrund:
Wie unter anderem der Nachtwächter berichtet hat, gibt es beim neuen Wordpress 2.3 ein Problem mit dem Datenschutz (s.a. bei nichts und Valentin). Die neue Funktion die automatisch nach Updates für Plugins sucht übermittelt einige unnötige Daten an wordpress.org.
Es gibt zwar ein Plugin um die Funktion abzuschalten, aber nachdem sie an sich ja ganz nützlich ist hab ich eine bessere Lösung gesucht.
Und siehe da, der Update-Service funktioniert auch noch wenn man die Blog-Adresse, Wordpress Version und Liste der aktiven Plugins nicht überträgt. Dazu ist es leider nötig die Funktion wp_update_plugins() in der Datei wp-admin/includes/update.php zu bearbeiten, aber die Änderungen sind überschaubar und sollten für jeden, der einen Texteditor bedienen kann, machbar sein. Warnung: Falls die API bei wordpress.org irgendwann mal umgestellt werden sollte kann es aber sein dass die Plugin-Update-Benachrichtigung nicht mehr funktioniert.
Der Rest dieses Beitrags dient zur Beschreibung des Patches, einfacher zu installieren ist mein Plugin Anonymous Wordpress Plugin Updates.
Diese Zeilen verhindern dass von den installierten Plugins mehr als Dateiname, Plugin-Name und Version übertragen werden und leeren die Liste der aktiven Plugins. Die ersten und letzten Zeilen sind unverändert, damit Du weisst wo das Stück einzufügen ist.
if (
isset( $current->last_checked ) &&
43200 > ( time() - $current->last_checked ) &&
!$plugin_changed
)
return false;
// BIS HIER IST UNVERÄNDERT
// mod: strip additional infos
$plugin_files = array_keys($plugins);
foreach ($plugin_files as $f) {
$keys = array_keys($plugins[$f]);
foreach ($keys as $k) {
if (!in_array($k, array('Name', 'Version'))) {
unset($plugins[$f][$k]);
}
}
}
$active = array();
// end of mod
// AB HIER IST WIEDER UNVERÄNDERT
$to_send->plugins = $plugins;
$to_send->active = $active;
$send = serialize( $to_send );
Um Deine Blog-Adresse und -Version zu verschleiern musst Du etwas weiter unten noch folgende Zeile
$http_request .= 'User-Agent: WordPress/' . $wp_version . '; ' . get_bloginfo('url') . "\r\n";
gegen
$http_request .= 'User-Agent: WordPress/1984; http://privacy.org' . "\r\n";
austauschen.
Das war’s für’s Erste. Vermutlich lässt sich das auch als Plugin realisieren indem man zunächst die originale wp_update_plugins deaktiviert und dann eine modifizierte Kopie davon aktiviert. Anregungen dazu bietet das Plugin Disable Wordpress Plugin Updates. (Siehe dazu auch das Update am Anfang des Artikels)
Nachtrag:
Ich habe inzwischen ein Plugin dafür geschrieben und auf wordpress.org zur Verfügung gestellt. Alles zum Plugin in einem dessen eigenem Post
Weiterer Nachtrag: Das verhindert nicht dass die Blog URL bei anderen Aktionen übertragen wird. Z.B. beim Pingen, bei der Suche nach Core-Updates (also einer neuen WP Version), den Feeds im Tellerrand/Dashboard, den eingehenden Links, Akismet, und und und.

Kommentar von Peter Schmedtmann - 26. September 07 @ 15:04
Hi,
Dein Ansatz finde ich gut, aaber…
wäre nicht eine modifizierte update.php zum download anzubieten, einfacher gewesen?
Also ich finde keine Stelle wo ich das modifizierte einfügen sollte…
Direkt nach: function wp_update_plugins() {
oder nach: function wp_update_plugins() {
global $wp_version;
oder nach: function wp_update_plugins() {
global $wp_version;
if ( !function_exists(‘fsockopen’) )
return false;
$plugins = get_plugins();
$active = get_option( ‘active_plugins’ );
$current = get_option( ‘update_plugins’ );
und / oder was muss dann noch weg?
Und ich will das machen bevor ich Update auf 2.3.
Aber bei den Mikrosoft`schen Anwandlungen der Entwickler werde ich mich auch mal wieder nach anderer Blog-Software umsehen!
Kommentar von Hannes - 26. September 07 @ 15:36
Hallo Peter,
Du hast Recht, das ist nicht die optimale Art um einen Patch unters Volk zu bringen. Ich hab die Code-Stelle jetzt nochmal erweitert, sodass man sieht was vor und nach meiner Modifikation steht, damit sollte sich die Stelle in der Datei leicht finden lassen.
Es muss (beim ersten Stück) nichts ersetzt werden, sondern nur etwas eingefügt.
Ich schicke Dir auch mal das Plugin falls Du es testen magst.
Grüße,
Hannes
Kommentar von Peter Schmedtmann - 26. September 07 @ 16:30
Hallo,
das ging ja schnell!
Danke für mehr Übersichtlichkleit!
Jetzt werde wohl sogar ich das schaffen…
Bin gerade dabei von WP 2.2.3 auf 2.3 umzu stellen.
Das Plugin ist angekommen!
Grüße,
Peter
Kommentar von Putzlowitsch - 26. September 07 @ 18:34
Ich habe auch schon ein Plugin geschrieben :-)
http://schnurpsel.de/wordpress-23-anonym-up-to-date-bleiben-plugin-61/
Man kann es dort direkt runterladen, ich erkläre auch, wie es funktioniert, was es macht und was bei der Installtion zu beachten ist.
Kommentar von Hannes - 26. September 07 @ 18:41
Hallo Putzlowitsch,
ich hatte nur Deinen Hack gesehen, und den fand ich nicht so toll.
Und meines entfernt zusätzlich Daten wie die Beschreibung und Autor der Plugins, was den Check etwas schneller macht.
Allerdings gefällt mir wie Du die pre_option-filter benutzt, die kannte ich noch garnicht.
Grüße, Hannes
Kommentar von Peter Schmedtmann - 26. September 07 @ 20:30
Hi,
so fertig!
Habe mein Update auf WP2.3DE gemacht!
Vorher also in WP 2.2.3 noch die update.php wie oben beschrieben verändert und dann Dein Plugin eingebaut und aktiviert.
Und während des Updates auch aktiviert gelassen.
Tja, was soll ich dazu sagen?
Keine Probleme!
Kann ich denn irgendwie herausbekommen was die Updatefunktion sendet?
Eigentlich nicht oder?
Im Plugin-Verzeichnis waren nach dem Update einige Plugins gekennzeichnet, bzw. wurde darauf hingewiesen das es neuere Versionen gibt.
Das muss auch so sein, oder?
Ich gehe mal davon aus…
Na, dann kann ich ja jetzt meine, von mir betreuten, 2 anderen WP-Blogs updaten.
In der Gewissheit das ich nur das rausschicke was nötig ist.
Vielen Dank nochmal für die Modifikationen und das Plugin!
Grüße
Peter
Kommentar von Putzlowitsch - 26. September 07 @ 21:23
Hallo Hannes,
das was jetzt in meinem Plugin steht, ist ja nichts anderes als vorher in der my-hacks.php. Warum ich die Hack-Version bevorzugen würde, habe ich dort ja geschrieben.
Was mich mal interessieren würde, wie Du das mit der Pluginliste gelöst hast :-) Ich habe dort zumindest keinen Action- oder Filterhook gefunden, bei dem man sich einklinken könnte. Einzige Idee wäre, die wp_update_plugins-Funktion komplett durch eine eigene, modifizierte Version zu ersetzen. Was dann aber den Nachteil hätte, das man diese bei jedem Update wieder anpassen müßte, sofern sich da etwas ändert.
Gruß
Ingo
Kommentar von Hannes - 26. September 07 @ 21:36
Peter, ich schick Dir nochmal eine neue Version, bei der Dir beim Übertragen eine Mail mit den Daten geschickt wird. Dann kannst Du sie nochmal überprüfen.
Aber freut mich schonmal dass es anscheinend funktioniert.
Bei wordpress.org bin ich übrigens immer noch in der Warteschlange.
Kommentar von Hannes - 26. September 07 @ 21:40
Hallo Ingo,
kann man ein Plugin so schreiben dass es sich selbst aktiviert? Mit Hilfe von einem Initialisierungs-Hook oder so? Das würde das Problem bei einer 2.3 Neuinstallation lösen.
Ja, ich hab eine eigene Kopie der wp_update_plugins (mit den Mods von oben). Der Funktionsname enthält auch schon die WP-Version, also falls sich etwas daran ändern sollte kann man eine Funktion zwischenschalten die je nach WP-Version die richtige wp_update_plugins aufruft.
Ich schick Dir mein Plugin auch mal.
Grüße,
Hannes
Pingback von Wordpress - jetzt neu mit Spyware gratis | Adlerweb - 26. September 07 @ 23:46
[...] nimmt sich die Freiheit Pluginlisten und Blog-URL an die Wordpress-Server zu übermitteln. Dank State of the Nation sollte meine Installation diese Anrufe nach Hause erst mal [...]
Pingback von State of the Nation » Stille auf Knopfdruck (Anonyme Plugin Update Checks) - 27. September 07 @ 08:18
[...] macht nun Anonymous Wordpress Plugin Updates? Es ist nicht mehr als eine Verpackung für den gestern vorgestellten Patch. Die Installation ist dadurch zwar einfacher, aber leider hat das Plugin bei neuen Installationen [...]
Kommentar von Marc - 24. Oktober 07 @ 01:07
Super, das schützt einen doch wenigstens etwas vor der Ausspitzelei. Warum das mit dem Nachhausetelefonieren immer wieder sein muß…
Einen Kommentar hinterlassen