Za jídlo, šaty a vzduch otročíme na programech z temných světů

ownCloud a ActiveSync

Vloni jsem vyhlásil program maximální možné osobní degooglizace. O tom, jak zdárně pokračuje se již brzy chystám napsat samostatný článek, dnes se chci věnovat jen jedné zcela konkrétní epizodce tohoto procesu.

Dokud mobilnímu světu vládl Windows Mobile, byl ActiveSync na serveru GMailu jednou z klíčových a často zmiňovaných vlastností, prostě normální kilink fýčr. V té době jsem používal Palm Centro a nadával, že s ním to nefunguje, i když sync proti Exchange serveru umí. Centro bylo v USA tou dobou dosti populární a stížností jsem po webu zaznamenal více. Google něco upravil, sync pár dní fungoval a pak zas přestal. Synchronizoval jsem tedy nadále pouze kabelem s desktopem a to až do doby, než jsem si v roce 2010 obstaral smartphone s Windows Mobile. Kontakty jsem nějak, už si ani nepamatuju jak, převedl z Palmu do GMailu a od té doby už je jen synchronizoval. Ovšem až do doby, kdy Windows Mobile světu kralovat přestaly, nahradil je googlí Android a Google se rozhodl podporu ActiveSync zrušit. Jelikož jsem tou dobou už měl telefon s Androidem, bylo mi to do velké míry jedno. Když už se ale přesouvám od Google jinam (tu ke konkurenci, tu sám k sobě), není důvod zašlou slávu ActiveSync neobnovit.

Je to v Cloudu!
A tak jsem se dostal k ownCloudu. Cloud sám je dokonalý buzzword a značná část populace jej má za mystérium tam někde v internetové dáli, které vyřeší všechny problémy. Ve skutečnosti nejde o nic jiného než o balík zcela konkrétních služeb, v případě ownCloudu je to úložiště kontaktů, kalendářů, dokumentů (včetně jejich online editace), fotek a vlastně i jakýchkoliv jiných souborů. Tyto služby jsou přístupné přes webové rozhraní, nativní aplikace (desktopové i mobilní) nebo prostřednictvím standardních formátů a protokolů (CardDAV, CalDAV, atd.).

Instalace je díky tomu, že je ownCloud napsaný v PHP, poměrně jednoduchá a je pěkně popsána v tomto článku na Root.cz, stejně jako je tam v jiném článku mnohem podrobněji řečeno, co vše ownCloud umí. Oba články sice již mají nějaký ten rok za sebou, verze ownCloudu mezitím poskočila ze 4.x na 6.x, nicméně kombinace článku a návodu v instalačním archivu mě k instalaci dovedla bez jakýchkoliv problémů. Webserverem je v mém případě Apache a databázový server používám MySQL.

Forky forků jiných forků
ownCloud je úspěšně naisntalován, nakonfigurován a jelikož chci prozatím z jeho služeb používat pouze úložiště kontaktů, exportuji je z Google Contacts ve formátu CSV VCF (viz diskuse) a importuji je pomocí webového rozhraní. V Androidu ruším kontakty od Google, instaluju CardDAV a za chvílu už mám v telefonu vše co předtím, jen z mého serveru. Přichází na řadu ActiveSync.

Projekt implementující ActiveSync v unixových operačních systémech se jmenuje Z-Push. Umí propojit kontakty, kalendáře a poštu z různých zdrojů a vše pushovat do zařízení prostřednictvím ActiveSyncu, takže příslušný windowsový smartphone je přesvědčen, že pracuje se serverem Exchange. Nad ním je postaven projekt nazvaný oczpush, který je určen přímo pro spolupráci s ownCloudem. Potíž je, že oczpush pracuje s ownCloudem ve verzi 4.x a jak jsem po pár hodinách pokusů a nezdarů zjistil, s šestkou se nedomluví.

Správným řešením je PHP-Push-2-owncloud, které je forkem PHP-Push-2, které je samo odvozeno přímo od Z-Push. Instalace je opět jednoduchá, stačí se držet postupu na úvodní stránce projektu na GitHubu.

Podstatná je následná úprava konfigurace /etc/httpd/conf/httpd.conf, kde je třeba nastavit práva a PHP příznaky adresáře v němž je PHP-Push-2-owncloud nainstalován a zejména alias pro URL, na který klient ActiveSync přistupuje:

Alias /Microsoft-Server-ActiveSync /var/www/html/cloud/PHP-Push-2-owncloud/index.php
                                                                                
<Directory "/var/www/html/cloud/PHP-Push-2-owncloud">               
        AllowOverride All                                                       
        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> 

Restartoval jsem Apache, nastavil ActiveSync klienta a voilà - kontakty se synchronizovaly tak, jako naposledy v roce 2012.


Android - synchronizovánoWindows Mobile - synchronizováno

Kontatky tedy mám na svém serveru a synchronizuju je pohodlně do obou platforem. V nejbližší budoucnosti mě čeká kompilace Apache s podporou SSL, protože momentálně se synchronizace odehrává po nezabezpečených kanálech, což pro průměrného paranoika není nic extra. A pak hned zkusím, zda se podaří synchronizovat i v úvodu zmiňované Centro.