Kalendář pro každého: DAViCAL – opensource implementace CalDAV serveru

Když jsme pracovali v týmu tří lidí na jednom nebo dvou projektech, vystačili jsme si s jednoduchým kalendářem uloženým na serveru a zpřístupněným přes WebDAV tak jak popisuji v článku “Kalendář dostupný odkudkoliv?” Postupem času jsme potřebovali víc funkcí než jednoduchý zápis do svého kalendáře a čtení kalendářů ostatních kolegů. Thunderbird(Lightning) sem tam poškodil kalendářové soubory, telefony nezvládaly synchronizovat kalendář s velkým počtem událostí. Po příchodu dalších kolegů nám začala chybět možnost sdílet kalendáře s různou úrovní oprávnění aby někdo mohl zapisovat, někdo jiný jen číst a někdo zase viděl jen stav “volno/zaneprázdněn”. Prostě nám přestal ical soubor na webdav serveru stačit.

Požadavky na kalendářový server

Před rokem jsem si pořídil Mac Mini a zjistil, že program iCal neumí rozumně pracovat s ical soubory přes webdav. Začal jsem tedy řešit přechod na CaDAv. Požadavky na kalendář se nám rozšířili na:

 

Přístup z:

  • Thunderbirdu – Linux i Windows
  • iPhone 3G
  • iCal v Mac OS x

Funkce:

  • Sdílení kalendářů
    • Sdílení osobních kalendářů
    • “globální” sdílení kalendáře
  • Různé úrovně přístupu ke sdíleným kalendářům
    • Nadřízený může vidět do kalendáře všem podřízeným a může jim tam zapsat
    • Všichni u všech vidí minimálně stav zda má někdo naplánovanou nějakou akci, ale nemají vidět obsah dané události
    • Zaměstnanci si mezi sebou mohou sdílet kalendář tak aby si v něm mohli číst případně i psát

Důležitou podmínkou byla možnost provozovat kalendář na vlastním serveru s OS Linux.

 

Po chvíli hledání jsem narazil na program DAViCal, free a opensource implementaci kalendářových služeb přes CalDAV protokol.

DAViCal

DAViCal umožňuje používat kalendáře přesně dle našich požadavků, je možné sdílet kalendáře, nastavovat oprávnění pro uživatele nebo jejich skupiny. Ke kalendáři lze přistupovat z různých klientů podporujících CalDAV případně WebDAV (pro webdav je doporučen pouze přístup pro čtení). Program je napsán v PHP a pro ukládání dat využívá PostgreSQL. DAViCal je pouze kalendářovým serverem, sám o sobě neobsahuje webového klienta. Přes web je dostupné administrační rozhraní.

 

Kromě protokolu CalDAV umožňuje DAViCal také ukládání kontaktů přes CardDAV.

Instalace a konfigurace DAViCal je srozumitelně popsána na domácí stránce projektu – http://davical.org/installation.php.

Webová administrace

Webové administrační rozhraní umožňuje spravovat uživatele, zdroje, skupiny a jejich oprávnění. Lze přes něj také zjistit jak velké jsou kalendáře případně je naplnit importem ze souboru (vhodné pro migraci).

 

Administrační rozhraní programu DAViCal

Připojení klientů ke kalendáři

Jak nakonfigurovat různé klienty je popsáno na webu projektu: http://davical.org/clients.php

Do Thunderbirdu je nutné každý kalendář ručně přidat, přidává se URL ve tvaru

http://calendar.example.net/caldav.php/username/home/

Při použití iCal stačí přidat účet, iCal stáhne seznam kalendářů a lze si naklikat kalendáře, které se mají zobrazovat.

Použití CardDAV

Abych mohl ukládat kontakty na server, musel jsem adresáři (Address Book.app na Mac OS X 10.6.6)trochu pomoc. Naklikal jsem si připojení k serveru, ale to nefungovalo. Proto jsem vlezl přímo do konfigurace a textovým editorem jí lehce upravil. Povolil jsem si zápis a správně nastavil cestu k DAViCal. Konfigurační soubor “Configuration.plist” je k nalezení v dresáři “~/Library/Application Support/AddressBook/Sources/VYGENEROVANYIDENTIFIKATOR/”

 

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>_className</key>
  <string>PHXCardDAVSource</string>
  <key>disabled</key>
  <integer>0</integer>
  <key>haveWriteAccess</key>
  <integer>1</integer>
  <key>isSharedABAccount</key>
  <integer>1</integer>
  <key>name</key>
  <string>Adresář</string>
  <key>refreshInterval</key>
  <integer>0</integer>
  <key>serverSupportsSearch</key>
  <integer>0</integer>
  <key>servername</key>
  <string>https://proj.klenot.eu:443/ical/caldav.php</string>
  <key>username</key>
  <string>tsunami</string>
  <key>usesKerberos</key>
  <integer>0</integer>
</dict>
</plist>

iPhone od verze firmware 4 by měl CardDAV také podporovat, ale zatím jsem to nezkoušel.