MailMig Teil 9: Simsalabim, dreimal blauer Donnervogel – Thunderbird autoconfig II

In MailMig Teil 6 (MailMig Teil 6: Hokus Pokus Fidibus – Thunderbird Konfiguration wie von Zauberhand) hatte ich beschrieben, wie man Thunderbird quasi automatisch konfigurieren kann. Das ganze funktioniert über eine Konfigurationsdatei die sich auf einem Server befindet. Sie ist dynamisch und dadurch für jeden Benutzer “einzigartig”.

In Teil 6 wurden damit diverse Grundeinstellungen, Mailkonten, Signaturen und Addressbücher konfiguriert. Mittlerweile hat GroupOffice gelernt seinen Kalender per CalDav zur Verfügung zu stellen – diese Erweiterung wurde von uns ( der Firma für die ich arbeite) in Auftrag gegeben um Thunderbird an den GroupOffice Kalender anbinden zu können. Das ganze funktioniert in Verbindung mit Lightning wirklich prima.

Tja, was wird jetzt wohl kommen? Klar, wie binde ich auch den Kalender per Autoconfig in Thunderbird ein!!

Erweiterung des Scripts

Um das ganze zu bewerkstelligen muss zuerst einmal das Script auf dem Webserver erweitert werden. Das ganze sieht so aus:

// Benutzer duerfen keine Updates einspielen
lockPref("app.update.enabled", false);
pref("extensions.update.enabled", false);
lockPref("browser.search.update", false);

# Calendar(s), get them, create config
$cal_query_url = "https://<groupoffice mailserver>/groupoffice/getcalurl.php?username=$db_username";
use LWP::Simple;
$response = get $cal_query_url;

# check if the response is correct (a https link)
if ( $response =~ /^https:/ ) {
# create calendar registry number
# so, we need for each user even the same uid for the calendar on every connect
#  for that, we create a uid out of the username by creating the hex code of it and fill up with 0s
(my $reg_uid = $db_username) =~ s/(.|\n)/sprintf("%02lx", ord $1)/eg;
$reg_uid=sprintf( "%036s", $reg_uid);

# Color for the private calendar
$cal_color="#FFA500";

# Name for the calendar

$calendar_name = "Groupoffice";

# print out the config

print qq#
// Private Calendar
lockPref("calendar.registry.$reg_uid.calendar-main-default", true);
lockPref("calendar.registry.$reg_uid.calendar-main-in-composite", true);
defaultPref("calendar.registry.$reg_uid.color", "$cal_color");
lockPref("calendar.registry.$reg_uid.imip.identity.key", "id1");
lockPref("calendar.registry.$reg_uid.name", "$calendar_name");
lockPref("calendar.registry.$reg_uid.type", "caldav");
lockPref("calendar.registry.$reg_uid.uri", "$response");
#;

$i++;
}

# DONE with calendar

print qq#
} catch(e) {
displayError("ARGL :-P", e);
}#;

$dbh->disconnect();
close LOG;

Achtung! HIer ist auch ein Teil vor und nach der Erweiterung abgebildet!

Besonderes

An sich ist die Erweiterung recht simpel und bedarf keiner großen Erklärung. Trotzdem gibt es den ein oder anderen Punkt zu eräutern:

  • $cal_color = die Farbe des Kalenders in Thunderbird
  • $reg_uid = das ist eine UID für den Kalender. Diese muss für den jeweiligen Benutzer / Kalender immer gleich sein, da sie auch die Referenz für Terminanfragen oder ähnliches darstellt. Die IDs die ich bisher gesehen habe waren immer in Hexadezimal und 32 Zeichen lang. Daher habe ich den Benutzernamen genommen, diesen in Hex umgewandelt und vorne mit Nullen aufgefüllt. Dem entsprechend ist die ID nun konform und wird für jeden Benutzer immer gleich vergeben.

getcal.php Script

Von Merijin Schering (Intermesh) habe ich ein Script bekommen, welches mir die URL zum Kalender aus GroupOffice zurück gibt. Die URLs sind anders nicht wirklich herauszufinden, da sie eine Nummer enthalten die nirgends in der Datenbank zu finden ist (könnt Ihr ja je nach dem auch selbst sehen). Das Script kann hier heruntergeladen werden und wird dann in /usr/share/groupoffice abgelegt.

3 Responses to MailMig Teil 9: Simsalabim, dreimal blauer Donnervogel – Thunderbird autoconfig II

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>