Mozilla / Thunderbird Update Service

Thunderbird and Firefox are updating very frequently with their new policy. Since we need a a few special addons for SOGo, it was quite hard to make sure our users didn’t use the automatic update to a newer version. To make the update to Thunderbird 10.0 ESR smoother and make sure we control future updates, I wanted to have an update server for Thunderbird. (Works with Firefox and other Mozilla products as well.) Since the documentation was quite thin and there wasn’t an easy ready solution, I’ll try to provide ours. We are going to use only Mozillas long term releases (ESR), so we only need to add security updates and every year a new Thunderbird version. I’m not sure how comfortable this is going to be if you need to manage a lot of updates.

Sources are a lot of googling and especially the following links:

To setup the Thunderbird update service, I wrote a simple PHP script. I setup an apache virtual host for this task, but a sub directory surely works as well. Make sure that in the apache config for this directory the following settings are set, either in the config or in the .htaccess:

[cc]
ForceType application/x-httpd-php
php_flag short_open_tag off

[/cc]

Now you need to change a config setting in Thunderbird (Preferences -> Advanced -> Config Editor) to let it know where to get the updates. Create the new setting „app.update.url.override“ (don’t just change app.update.url, it gets ignored) and set it to the following URL (adapt to your circumstances of course):
[cc]http://mozilla-updates.yourdomain.com/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml[/cc]
If you have an SSL certificate that is recognized by Thunderbird, best use a secure connection, but if it is self signed, you need to rely on http.

If you want using it company wide, the configuration of the client is surely better done automatically. We are using the SOGo-plugins that already include this possibility, but there should be other ways to do that. (If you know a good one, a comment would be nice as I didn’t research into that direction.)

Now put this script as „update“ (not update.php!) onto your web server. Read it and adapt it to your circumstances, the comments should be thoroughly enough.
[cc lang=“php“] /* Script to manage a small count of Thunderbird update files.
* Author: Jakob Lenfers <jakob@drss.de>
* This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
*/

header(„Content-type: text/xml“);
// set ‚php_flag short_open_tag off‘ for this to work
echo ‚‚;

// set this to the URL where the updates can be found, ideally the same web
// server as this script
$update_host = „http://mozilla-updates.yourdomain.com“;
// where the files lie in the filesystem. Important so the hash can be generated.
$updates_path = „/opt/mozilla-updates/“;

// get all the vars out of the URL
$url_params=explode(„/“,$_SERVER[„REQUEST_URI“]);
$product=$url_params[3];
$version=$url_params[4];
$build_id=$url_params[5];
$build_target=$url_params[6];
$locale=$url_params[7];
$channel=$url_params[8];
$os_version=$url_params[9];
$dist=$url_params[10];
$dist_version=$url_params[11];
$filename=$url_params[12];

//
// default values
//
// no update until we found a valid version
$update = false;
// per default use this version, usually the newest
$update_ver = „10.0.2“;
// not sure where this is used in TB
$update_type = „major“;
// is it a complete install file or a diff. If its a diff, set
// it to „partial“.
$update_patchType = „complete“;
// A simple HTML page that is shown during the update process. Usually
// contains new features or relevant information for the update.
$update_detailsURL = „http://yourwebserver/tb-update10.html“;
// default lang. Will be pushed regardless of the client language
// if not changed below.
$update_lang = „en-us“;

// we have only german and english language files. Remove or change
// this if you only plan to have the english update files or if you
// want to support other languages.
if($locale == „de“){
$update_lang = $locale;
}

// In the following block are the definitions for the update. We usually want to
// update straight to the newest version and don’t have partial updates, because
// bandwidth isn’t an issue in the internal network.
// You can change any setting that was set above as default here. If you want a
// different detailsURL on a partial update for example.
//
// we don’t update firefox atm, only thunderbird
if($product==“Thunderbird“){
// example for a partial update
/* if(version_compare($version, „10.0.1“, „=“)){
$update = true;
$update_patchType = „partial“;
// filename changes with the settings
}
*/
// if there are no more specific rules, upgrade all version to the
// current complete ESR version (default settings defined above)
if(version_compare($version, „10.0.2“, „<„)){
$update = true;
}
}

// set the update filename
$update_file = strtolower(„$product-$update_ver-$update_patchType-$build_target-update_lang.mar“);

// if an update should be done and the file is readable, print the xml
// otherwise print just the empty update element
if($update && is_readable($updates_path . $update_file)){
// $update_file_hash = hash_file(„sha512“, $updates_path . $update_file); // doesn’t work with TB2
$update_file_hash = hash_file(„sha256″, $updates_path . $update_file);
$update_file_size = filesize($updates_path . $update_file);
echo “

„;
}
else{
echo „“;
}
?>
[/cc]

Finally you need the actual .mar (Mozilla Archive) files. They can contain diffs between two Thunderbird versions or the complete installation. We are pushing only the full installations since bandwidth isn’t an issue, but the partial updates are just as easy. Only generating them myself seemed quite tricky, so I copied the ones from mozilla. Find a mirror here, the mar files are in update subdirectories (like for example here.) Put all the different systems (Win/Linux/Mac) and languages you want to support to your webserver and rename them into this naming schema in lower case: „$product-$update_ver-$update_patchType-$build_target-update_lang.mar“. It looks like this on our web server:
[cc]
root@maunaloa:/opt/mozilla-updates# ls -1
thunderbird-10.0.2-complete-darwin_ppc-gcc3-de.mar
thunderbird-10.0.2-complete-darwin_ppc-gcc3-en-us.mar
thunderbird-10.0.2-complete-linux_x86_64-gcc3-de.mar
thunderbird-10.0.2-complete-linux_x86_64-gcc3-en-us.mar
thunderbird-10.0.2-complete-linux_x86-gcc3-de.mar
thunderbird-10.0.2-complete-linux_x86-gcc3-en-us.mar
thunderbird-10.0.2-complete-winnt_x86-msvc-de.mar
thunderbird-10.0.2-complete-winnt_x86-msvc-en-us.mar
update
root@maunaloa:/opt/mozilla-updates#
[/cc]

I hope this was helpful, please leave a comment if you have questions or ideas. In the next days I’m going to put together another article on our way to update our SOGo-Installations with Thunderbird2 and Thunderbird3 to Thunderbird10 including the addons.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

What do you think of this post?
  • Interesting (5)
  • Useful (3)
  • Awesome (1)
  • Boring (0)
  • Sucks (0)

tsclient no more in Ubuntu Oneiric 11.10

If you have to connect to Windows machines from time to time and have been an Ubuntu user like me, you most probably have been using tsclient to connect to it. But what I missed during the upgrade a couple of weeks ago was the fact that the previous Ubuntu standard tsclient has been removed. AFAIU because it’s not developed anymore and won’t get an upgrade to GTK3. Well, those reasons are all right, but the GNOME client can’t do shit, it’s utterly useless in my eyes. After a search on google I finally found the replacement for it: Remmina. Does what I need it to do, looks good and is included in Ubuntu. I just don’t understand why it isn’t automatically installed, like tsclient was before. If Ubuntu sees the need to remove a software, I think it would be good for users if they would replace it with something new, especially since it already exists in Ubuntu. They saw the need for a good RDP client in Ubuntu before, why not now?

What do you think of this post?
  • Interesting (6)
  • Awesome (3)
  • Useful (2)
  • Boring (0)
  • Sucks (0)

Just read: «Night of the Living Trekkies»

During my vacation I read the first two books Game of Thrones (magnificent! I loved it! Now I finally can watch the TV show. :-)) and two Pratchetts, but Game of Thrones and Pratchett are known enough as it is. Something that I bet isn’t as widely known is the first book I read during my vacation: «Night of the Living Trekkies» by Kevin David Anderson and Sam Stall.  It’s a mixture of Star Trek (from the fans point of view in the current time) and the zombie genre, which I’m really new to. Without knowing much about zombie movies and books, it seems to be the typical story, mixed in with a bunch of guys at a Star Trek convention, trying to survive. I like those parody books and it is especially fun to find it mixed into another genre. An example of the books style, I want to show you two things. The first is the disclaimer at the beginning:

Image at the beginning of the book

ATTENTION ALL STARFLEET PERSONNEL

The following text is an original work of fiction/horror/parody. Night of the Living Trekkies is not sponsored by, affiliated with, or endorsed by the owners of the Star Trek® brand. Any personnel claiming otherwise will be sentenced to one year of hard labor in the penal colony of Rura Penthe.

And the second thing is this image you can find also at the beginning of the book here on the right. Those two things were enough for me to buy this book and if you like Star Trek or maybe Zombies, you should too! 🙂

What do you think of this post?
  • Awesome (2)
  • Interesting (1)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

Llama: Location based profiles

[qr]https://market.android.com/details?id=com.kebab.Llama[/qr]

Seit einigen Wochen nutze ich Llama auf meinem Android Handy und bin sehr zufrieden. Llama ermöglicht es Handy-Profile anhand von Standort, Uhrzeit, Ladegerät, verbundenem WLAN und noch vielen anderen Bedingungen zu aktivieren. Und so hab ich nun ein Profil, dass mein Handy auf gemäßigtere Lautstärke stellt, wenn ich bei der Arbeit bin. Auch zuhause ist es leiser, aber zusätzlich wird WLAN aktiviert und um 22:30 das Handy komplett lautlos gestellt. Wenn ich außerhalb von den definierten Gebieten bin, steht der Klingelton auf volle Lautstärke, damit ich das durch die Ledertasche und meine Hosentasche hören kann.

Anhand verschiedener Bedingungen aktiviert Llama Profile.

Solche Apps sind nicht neu, aber das besondere an Llama ist, dass es erstmal nur auf die Information des gerade eingewählten GSM-Turms, also dem Handy-Netz, zurückgreift. Das ist eine Information, die dem Handy sowieso vorliegen muss, um erreichbar zu sein und somit hat Llama keinen spürbaren Einfluss auf Akku-Laufzeit. Die Überprüfung alle x Minuten ob sich ein Profil ändert ist dann innerhalb von Millisekunden erledigt und sorgt dafür, dass das Handy immer im richtigen Profil ist.

Llama nutzt GSM-Funk-Zellen zur Bestimmung des Gebiets

Kleiner weiterer Pluspunkt ist die Möglichkeit überhaupt Profile zu definieren, da Android sie nativ nicht vorgesehen hat, bzw. schon immer externen Apps überlassen hat. Diese Profile kann man unterwegs, z.B. wenn man Essen geht sperren, so dass obwohl automatisch das Profil „Laut“ aktiviert wäre, man es im Restaurant für die nächsten 2,5 Stunden auf „Leise“ oder „Lautlos“ festsetzen kann.

Genau so eine Funktion wollte ich haben, als ich vor drei Jahren anfing nach Android-Handys zu suchen. Jedoch war mein G1 dann mit Apps wie Locale (GPS basiert) Akku-technisch komplett überfordert. Und als ich das Desire Z gekauft habe, kostete Locale schon rund um 7€, was ich dann doch zuviel fand. Deswegen freue ich mich besonders über diese App: Einfach, batterieschonend, aber dennoch mächtig genug für die wichtigsten Funktionen.

Wenn Llama euch neugierig gemacht habt, installiert es doch einfach mal. Mehr Informationen findet ihr auf der Homepage, die auch eine Anleitung bietet, falls ein Feature mal nicht selbsterklärend sein sollte.

What do you think of this post?
  • Useful (9)
  • Awesome (7)
  • Interesting (3)
  • Sucks (1)
  • Boring (0)

Google+ keine Chance gegen Diaspora?

Ja, eine reißerische Überschrift ich weiß. Ich will gleich auf den Punkt kommen: Nachdem ich letztens Diaspora auf meinem eigenen Server erfolgreich installieren konnte, verstärkt sich in mir das Gefühl, dass Diaspora doch langsam benutzbar wird und sehr bald zumindest technisch dazu fähig wäre, weit verbreitet genutzt zu werden. Warum sollte man Diaspora nutzen? Kurz: Deine Daten, Dein Server (oder wenigstens ein selbst gewählter.) Föderalisierte Struktur, so dass nicht alles einem Anbieter gehört und Du sogar selber für Dich und andere Anbieter sein kannst.

Aber viel wichtiger scheint mir die Frage: Warum sollte ich Google+ nutzen? Ich mag Google und G+. Aber es ist für mich persönlich wieder mehr Twitter als Facebook: Bei Twitter konnte ich auch nur vereinzelte Leute motivieren mit zu machen, bei Facebook ist jeder, seit etwa 12-18 Monaten auch ich. Und nachdem ich wegen G+ aufgehört hatte Facebook zu nutzen, hab ich zu meinem Geburtstag mal wieder reinschauen (müssen), nur um festzustellen dass all meine Freunde dort fleißig posten und selbst die, die einen G+-Account haben, 99% ihrer Aktivität dort haben. Also: Warum sollte ich G+ nutzen? Es ist ein weiteres zentrales Netz, und auch wenn ich Google im Gegensatz zu Facebook eher vertraue, ist es doch so: Sicher sein kann ich mir nicht, dass mit meinen Daten nicht irgendwann was negatives passiert. Außerdem bin ich ein wenig enttäuscht, dass G+ sich so viel Zeit mit der API zum Entwickeln externer Clients und Programme braucht. Ich denke das ist ein sehr wichtiges Feature, so dass Menschen Multi-Seiten-Clients nutzen können und alles in einer Zeitleiste sehen können. Facebook dagegen kopiert munter die wichtigsten G+ Features und meine Freunde sind auch schon dort.

Diaspora dagegen unterscheidet sich von G+ ziemlich wenig: Ähnliche Features, ähnlich leer. Aber wenigstens habe ich wirkliche Kontrolle über meine Daten. Und da frage ich mich doch: Sollte ich nicht lieber meine Aktivitäten auf Facebook und Diaspora verteilen, mit dem Versuch Leute zu Diaspora zu migrieren? Ich denke zwar, dass das genauso erfolgreich laufen wird wie meine wenig genutzten Jabber-Accounts. Auch da hoffte ich, nach jahrelanger Nutzung, dass mit Googles starker Position und dem kompatiblen Google Talk die weniger technische Gesellschaft durchdrungen werden würde und ich da mal eine vollere Kontaktliste haben würde. Die hängt aber immer noch bei ICQ, MSN und neuerdings WhatsApp rum. 🙁

Zum Abschluss noch versöhnliche Worte G+ gegenüber: Ich mag es echt. Und mein Feed ist wirklich interessant, gefüllt mit Inhalt von bekannteren Netzpersönlichkeiten und weniger bekannten Menschen, die ich einfach so gefunden habe. Nur Persönliches finde ich leider eher selten.

What do you think of this post?
  • Interesting (1)
  • Boring (1)
  • Awesome (0)
  • Useful (0)
  • Sucks (0)

VDR verwalten und Live-TV auf dem Android Tablet

[qr]https://market.android.com/details?id=de.androvdr[/qr]

Ich möchte in Zukunft hier Apps vorstellen, die mir auf meinem Android Tablet besonders gut gefallen haben. Am besten ist es, wenn die App schon für Honeycomb optimiert ist, aber alles was sich auf dem Tablet-Display gut macht qualifiziert sich für mich.

Heute beginne ich mit etwas speziellerem: AndroVDR. AndroVDR kann man zum Steuern eines VDRs benutzten. Es ersetzt wie schon einige Apps zuvor eine Fernbedienung (dazu muss svdrphosts.conf am VDR konfiguriert sein!), kann aber noch vieles mehr: Sie zeigt das komplette EPG des VDRs an, wie auch die Liste der Timer und Aufnahmen. Natürlich können auch neue Timer direkt aus dem EPG gesetzt werden. Auch das ist alles toll, aber noch nicht so überwältigend. Wo die Anwendung richtig auftrumpft sind folgende sicherlich nicht normale Features:

  • Live-Streaming, mit Hilfe des lange verfügbaren und sehr stabilen streamdev-server Plugins für den VDR. Ich nutze dieses Plugin schon seit Jahren um zwischen VDRs zuhause zu streamen. Dazu empfehlen sich der Daroon Player oder der (kostenpflichtige) VPlayer zum Abspielen der Streams. Bei schlechtem Empfang ruckelt es ein wenig bei mir, aber ich sollte vielleicht meinen 8 Jahre alten 10MBit-WLAN-Router austauschen… 🙂
  • WakeOnLAN
  • Steuerung mehrer VDRs: Die meisten VDR Nutzer haben wenn dann auch gleich mehr als einen. 😉
  • Suche im EPG mit Hilfe des epgsearch-Plugins des VDR.
  • Automatischen SSH-Tunnel um auf all diese Funktionen auch aus dem Internet zuzugreifen, bei entsprechendem Upload und passenden Einstellungen zum Umrechnen beim streamdev-server sogar Live-TV.

Wer gerne seinen VDR mit dem Tablet steuern will, sollte mit dieser Anwendung glücklich werden. Obwohl sie für Tablets angepasst ist, gibt es auch eine Version für Handy-Displays, so dass man LiveTV nicht nur am Tablet, sondern auch am Handy „genießen“ kann. Besonders gut gefallen hat mir die Tatsache, dass die App sich auch nach VDR anfühlt. Sie nutzt bekannte Plugins aus dem VDR Bereich für bestimmte Aufgaben und bietet so einen bekannten Funktionsumfang.

What do you think of this post?
  • Awesome (15)
  • Interesting (4)
  • Sucks (2)
  • Useful (1)
  • Boring (0)

Acer Iconia A500 Honeycomb 3.1 root

Noch ein kurzer schneller Beitrag: Das Rooten von meinem [amazon_link id=“B004X4QB84″ target=“_blank“ ]Acer Iconia A500[/amazon_link] ist soviel einfacher gewesen als das Rooten meines [amazon_link id=“B0043232Q0″ target=“_blank“ ]HTC Desire Z[/amazon_link] (welches übrigens nun sooo viel günstiger ist…):

Einfach die bei xda-developers entwickelte App installieren, ausführen und root sein. Ich hab zwar kein Bedürfnis nach einem Custom Rom momentan, aber so einige Kleinigkeiten gehen mit der Möglichkeit root-Rechte zu bekommen besser. 🙂

What do you think of this post?
  • Awesome (0)
  • Interesting (0)
  • Useful (0)
  • Boring (0)
  • Sucks (0)

Eduroam mit Android Honeycomb 3.1

Ich hatte mich entweder verschrieben oder eine Einstellung falsch gesetzt und konnte mich deshalb nicht mit dem Eduroam-WLAN bei der Arbeit verbinden. Und suchte dann Ewigkeiten im Netz. Aber eigentlich funktioniert Eduroam auf Android 3.1 doch sehr gut, zur Sicherheit hab ich mal hier meine Einstellungen für die Uni Bremen abgelichtet:

Einstellungen für Eduroam an der Uni Bremen
What do you think of this post?
  • Useful (1)
  • Awesome (0)
  • Interesting (0)
  • Boring (0)
  • Sucks (0)

Netvault 8 & Ubuntu 10.04 64bit

Today I had to add a new server to our backup. It was the first 64bit installation of Ubuntu (10.04 LTS), because all the other virtual machines were still running 32bit. (Why? I cannot remember.) The backup system is a Netvault from BakBone, running on a Ubuntu 08.04 LTS 32bit.

Two things I discovered today, that might be important for some of you:

  • Even though you normally don’t do that, I had the installation script in a path that contained a space. The install script is sadly badly enough written that it didn’t work with that. But that is easily corrected.
  • The second problem is that without deeper knowledge on that topic it seems as if the 64bit client package from Netvault contains 32bit binaries. So the installation fails because some 32bit libraries are missing. Running getlibs revealed that the following packages need to be installed prior to installing netvault, because the install scripts already calls them: ia32-libs lib32bz2-1.0 lib32nss-mdns lib32z1 lib32ncurses5 lib32asound2
    I’m not sure if they are all needed, but it works now without any problems.
What do you think of this post?
  • Awesome (3)
  • Useful (3)
  • Interesting (0)
  • Boring (0)
  • Sucks (0)

Reaction Buttons: Cache plugin support

I released a new version of my wordpress plugin Reaction Buttons. Next to some internal changes related to cookies (which where a bit problematic in the last versions), there is now an option to let Reaction Buttons work better with performance or cache plugins. It simply calls a function to refresh the page cache of the page where a button was clicked. For now only W3 Total Cache is supported, but if you want me to add support for another cache addon, open a thread in the wordpress forums. I’ll try to add it into the next version as soon as I got time for the plugin again. If you want it faster, please help me and search the documentation of the plugin for a function to clear the cache (best for a specific page) or check with their developers.

And as always: Please don’t forget to vote for it on the wordpress plugin page. Thanks! 🙂

What do you think of this post?
  • Awesome (10)
  • Interesting (5)
  • Useful (5)
  • Sucks (4)
  • Boring (3)