Skip to end of metadata
Go to start of metadata


The goal of the calendar project is to make it easier to find out what is going on at CCIS.

There are multiple calendar sources at CCIS. These sources include:

  • ACM (Drupal)
  • CISters (Google calendar)
  • Office (Zimbra)
  • CO-OP (Lotus Domino)

As it stands now, anyone wishing to find out what is going on at CCIS must subscribe to each calendar individually. The calendar project will provide a central place to find out about CCIS events.

The calendar project will output to many different formats including iCalendar and HTML. iCalendar export is intended for use with third party calendaring applications and HTML output is intended to provide a view of the calendar in a Web browser.



Zimbra will serve as the central repository. Zimbra provides a uniform API for importing and exporting data and is officially supported by Systems.

The ACM and CISters calendars are imported into Zimbra using the REST API. The API is documented on the Zimbra wiki under User Migration.

CO-OP import is being researched.


The import daemon, written in Ruby, imports iCalendar data from a remote source into Zimbra.

The daemon requires the yaml, openssl and net/http libraries, which are part of the Ruby 1.8 standard library. Note that the openssl library is not installed on the Solaris machines.

The daemon configuration is stored in a YAML file. The top configuration node is a Calendar, which contains any number of calendar name to calendar source pairs.


The daemon source code contains a number of configurable global variables.

CONFIG_FILE: location of the configuration file
PATH: path to the Zimbra resource
CALENDAR: destination calendar
USER: Zimbra resource username
PASSWORD: Zimbra resource password

The daemon is running on knoblauchwurst as mhoran and is located in /opt/calendar. The following cron job updates the calendar every 15 minutes:

*/15 * * * * /opt/calendar/daemon.rb >/dev/null 2>&1



Calendar data can be exported from Zimbra to iCalendar, Atom and RSS.<resource>/<calendar>.ics<resource>/<calendar>.atom<resource>/<calendar>.rss


Zimbra can render a calendar in HTML.

PHP iCalendar is an alternative.


Events will be displayed on the Windows machines using a script that renders current events in plain text for use with BgInfo.


John Mendelewski has adapted the Windows script for use on UNIX.


Deleted Events

Matt Horan is looking into how to delete events that are no longer present in a remote calendar. As of now, when a remove event is updated, the corresponding Zimbra event is updated. Events that are missing from the remote calendar are not deleted from Zimbra. One solution is to delete all events from the calendar upon import.


Although OpenSSL is installed on the Solaris and Linux machines, the Ruby OpenSSL library does not work. This prevents the UNIX command and daemon from running on these machines. To work around this problem, the UNIX command does not retrieve calendar data from Zimbra via HTTPS. As HTTPS is required by the daemon, the daemon has been moved to knoblauchwurst.

Event Notification

When importing Zimbra events into a calendar hosted on Zimbra, the event organizer is noticed that an attendee wishes to attend the event. This ensures that any updates to the event will automatically be propagated to attendees, but causes an unnecessary e-mail traffic.

  • No labels