Brücke am KanalVor ein paar Wochen hatte ich mir auf meinem Handy die Apps CardDAV-Sync und CalDAV-Sync installiert, um die Daten aus meiner OwnCloud auf das Handy synchronisieren zu können. – Beide schlugen dabei mit je 2,59 Euro zu Buche. Kaum hatte ich das alles nun eingerichtet, kommt eine neue c’t (24/2013) mit einem ganz guten Artikel zum Synchronisieren von OwnCloud mit dem Android Handy über Active Sync heraus. (Seite 204)
Ganz kurz sei noch erwähnt, dass der ct-Artikel so wie dort beschrieben, nur mit der inzwischen veralteten OwnCloud-Version 4.5 funktioniert. :roll: Der Autor hätte das ruhig mal erwähnen können. Mit einem kleinen Hack kann man aber auch die OC-Version 5.0 benutzen, dazu gleich mehr.
zwischengeschobene Nachträge: Ab der OC-Version 6.0 ist das dann aber auch vorbei und spätestens ab der OC-Version 7.0 kann man OwnCloud sowieso nicht mehr empfehlen. :(

Nun aber weiter mit der Installation auf der aktuellen OC-Version 5.0:

cd /httpd
git clone https://github.com/gza/oczpush.git
  Cloning into 'oczpush'...
  remote: Counting objects: 809, done.
  remote: Compressing objects: 100% (574/574), done.
  remote: Total 809 (delta 295), reused 670 (delta 229)
  Receiving objects: 100% (809/809), 1.17 MiB | 542 KiB/s, done.
  Resolving deltas: 100% (295/295), done.
mkdir /var/lib/oczpush ; chown www-data:www-data /var/lib/oczpush
mkdir /var/log/oczpush ; chown www-data:www-data /var/log/oczpush
 
mv /httpd/oczpush/config.php /etc/owncloud/oczpush-config.php 
ln -s /etc/owncloud/oczpush-config.php /httpd/oczpush/config.php

vi /httpd/oczpush/config.php

212
213
214
215
216
217
218
219
...
    // **********************
    //  BackendOCCombined settings
    // **********************
    //define('OC_DIR', '/var/www/owncloud');
    define('OC_DIR', '/httpd/owncloud');
    // uncomment if you want to use a mail backend BackendMaildir -> m, BackendIMAP -> i
...

vi /etc/apache2/sites-available/oczpush.inc.conf

 
  Alias /oczpush "/httpd/oczpush"
  Alias /Microsoft-Server-ActiveSync "/httpd/oczpush/index.php"
 
  <Directory "/httpd/oczpush">
    Options -Indexes -MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
 
    php_flag magic_quotes_gpc off
    php_flag register_globals off
    php_flag magic_quotes_runtime off
    php_flag short_open_tag on
  </Directory>
Der Test-Aufruf brachte nach erfolgreiche Anmeldung dann aber doch noch eine Fehlermeldung im Log:

 PHP Fatal error:  Class 'OC_Contacts_Addressbook' not found in /httpd/oczpush/backend/occontacts.php on line 54

Das ‚oczpush‘-Paket ist inzwischen ja schon ein paar Tage alt und wurde für die OwnCloud Version 4.5 entwickelt. Scheinbar wurden in der Version 5 von OwnCloud (gegenüber der Ver.4.5) ein paar Klassennamen geändert. Nach ein wenig Sucherei, hatte Freund Google auch einen Tipp für mich:

host:/httpd/oczpush # cp -p backend/occontacts.php backend/occontacts.php.org
host:/httpd/oczpush # sed -i 's/OC_Contacts_/OCA\\Contacts\\/' backend/occontacts.php
host:/httpd/oczpush # diff backend/occontacts.php backend/occontacts.php.org
 ... 42 Zeilen
host:/httpd/oczpush #

an der PaddeDanach konnte ich dann auf dem Handy ein Exchange Active Sync-Konto einrichten und meine Kontakte und Termine zum Handy synchronisieren. ;)

Als ich dann ein paar Minuten später einen Blick ins log-Verzeichnis warf, war dort das log-File schon gut angewachsen und so habe ich auch gleich noch ein passendes Logratate-File erstellt.
vi /etc/logrotate.d/oczpush.up

/var/log/oczpush/oczpush.log /var/log/oczpush/oczpush-error.log {
        rotate 7
        daily
        missingok
        compress
        delaycompress
        notifempty
        create 644 www-data www-data
        sharedscripts
        postrotate
                /etc/init.d/apache2 reload > /dev/null
        endscript
}
Nachtrag:
:!: Wer auf das Active Sync angewiesen ist, sollte vorerst auf das OwnCloud-Upgrade auf die Version OC6.0 verzichten.