From d53cb88a923ac181b4246c75b166fb3cac1fcf10 Mon Sep 17 00:00:00 2001 From: jkaberg Date: Mon, 11 Aug 2014 19:08:02 +0200 Subject: [PATCH] update z-push with carddav and caldav support --- conf/zpush_backend_combined.php | 103 ++++++++++++++++++++++++++++++++ setup/zpush.sh | 34 ++++++++--- 2 files changed, 128 insertions(+), 9 deletions(-) create mode 100644 conf/zpush_backend_combined.php diff --git a/conf/zpush_backend_combined.php b/conf/zpush_backend_combined.php new file mode 100644 index 00000000..47550c31 --- /dev/null +++ b/conf/zpush_backend_combined.php @@ -0,0 +1,103 @@ +. +* +* Consult LICENSE file for details +************************************************/ + +class BackendCombinedConfig { + + // ************************* + // BackendCombined settings + // ************************* + /** + * Returns the configuration of the combined backend + * + * @access public + * @return array + * + */ + public static function GetBackendCombinedConfig() { + //use a function for it because php does not allow + //assigning variables to the class members (expecting T_STRING) + return array( + //the order in which the backends are loaded. + //login only succeeds if all backend return true on login + //sending mail: the mail is sent with first backend that is able to send the mail + 'backends' => array( + 'i' => array( + 'name' => 'BackendIMAP', + ), + 'c' => array( + 'name' => 'BackendCalDAV', + ), + 'd' => array( + 'name' => 'BackendCardDAV', + ), + ), + 'delimiter' => '/', + //force one type of folder to one backend + //it must match one of the above defined backends + 'folderbackend' => array( + SYNC_FOLDER_TYPE_INBOX => 'i', + SYNC_FOLDER_TYPE_DRAFTS => 'i', + SYNC_FOLDER_TYPE_WASTEBASKET => 'i', + SYNC_FOLDER_TYPE_SENTMAIL => 'i', + SYNC_FOLDER_TYPE_OUTBOX => 'i', + SYNC_FOLDER_TYPE_TASK => 'c', + SYNC_FOLDER_TYPE_APPOINTMENT => 'c', + SYNC_FOLDER_TYPE_CONTACT => 'd', + SYNC_FOLDER_TYPE_NOTE => 'c', + SYNC_FOLDER_TYPE_JOURNAL => 'c', + SYNC_FOLDER_TYPE_OTHER => 'i', + SYNC_FOLDER_TYPE_USER_MAIL => 'i', + SYNC_FOLDER_TYPE_USER_APPOINTMENT => 'c', + SYNC_FOLDER_TYPE_USER_CONTACT => 'd', + SYNC_FOLDER_TYPE_USER_TASK => 'c', + SYNC_FOLDER_TYPE_USER_JOURNAL => 'c', + SYNC_FOLDER_TYPE_USER_NOTE => 'c', + SYNC_FOLDER_TYPE_UNKNOWN => 'i', + ), + //creating a new folder in the root folder should create a folder in one backend + 'rootcreatefolderbackend' => 'i', + ); + } +} +?> \ No newline at end of file diff --git a/setup/zpush.sh b/setup/zpush.sh index 32135495..23dd578e 100755 --- a/setup/zpush.sh +++ b/setup/zpush.sh @@ -19,25 +19,41 @@ apt_install \ php5enmod imap # Copy Z-Push into place. - if [ ! -d /usr/local/lib/z-push ]; then - ZPUSH=z-push-2.1.3-1892 - wget -qO /tmp/zpush.tgz http://download.z-push.org/final/2.1/$ZPUSH.tar.gz - tar -C /tmp -zxf /tmp/zpush.tgz - mv /tmp/$ZPUSH /usr/local/lib/z-push + rm -f /tmp/zpush.zip + wget -qO /tmp/zpush.zip https://github.com/fmbiete/Z-Push-contrib/archive/master.zip + unzip /tmp/zpush.zip -d /usr/local/lib/ + mv /usr/local/lib/Z-Push-contrib-master /usr/local/lib/z-push ln -s /usr/local/lib/z-push/z-push-admin.php /usr/sbin/z-push-admin ln -s /usr/local/lib/z-push/z-push-top.php /usr/sbin/z-push-top - rm /tmp/zpush.tgz; + rm /tmp/zpush.zip; fi -# Configure. Tell is to connect to email via IMAP using SSL. Since we connect on +# Configure default config +# TODO: Add timezone etc? +sed -i "s/define('BACKEND_PROVIDER', .*/define('BACKEND_PROVIDER', 'BackendCombined');/" /usr/local/lib/z-push/config.php + +# Configure BACKEND +rm -f /usr/local/lib/z-push/backend/combined/config.php +cp conf/zpush_backend_combined.php /usr/local/lib/z-push/backend/combined/config.php + +# Configure IMAP. Tell is to connect to email via IMAP using SSL. Since we connect on # localhost, the certificate won't match (it may be self-signed and invalid anyway) # so don't check the cert. -sed -i "s/define('BACKEND_PROVIDER', .*/define('BACKEND_PROVIDER', 'BackendIMAP');/" /usr/local/lib/z-push/config.php -#sed -i "s/define('IMAP_SERVER', .*/define('IMAP_SERVER', '$PRIMARY_HOSTNAME');/" /usr/local/lib/z-push/backend/imap/config.php +sed -i "s/define('IMAP_SERVER', .*/define('IMAP_SERVER', 'localhost');/" /usr/local/lib/z-push/backend/imap/config.php sed -i "s/define('IMAP_PORT', .*/define('IMAP_PORT', 993);/" /usr/local/lib/z-push/backend/imap/config.php sed -i "s/define('IMAP_OPTIONS', .*/define('IMAP_OPTIONS', '\/ssl\/norsh\/novalidate-cert');/" /usr/local/lib/z-push/backend/imap/config.php +# Configure CardDav +sed -i "s/define('CARDDAV_PROTOCOL', .*/define('CARDDAV_PROTOCOL', 'https');/" /usr/local/lib/z-push/backend/carddav/config.php +sed -i "s/define('CARDDAV_SERVER', .*/define('CARDDAV_SERVER', 'localhost');/" /usr/local/lib/z-push/backend/carddav/config.php +sed -i "s/define('CARDDAV_PORT', .*/define('CARDDAV_PORT', '443');/" /usr/local/lib/z-push/backend/carddav/config.php +sed -i "s/define('CARDDAV_PATH', .*/define('CARDDAV_PATH', '/remote.php/carddav/addressbooks/%u/');/" /usr/local/lib/z-push/backend/carddav/config.php + +# Configure CalDav +sed -i "s/define('CALDAV_SERVER', .*/define('CALDAV_SERVER', 'https://localhost');/" /usr/local/lib/z-push/backend/caldav/config.php +sed -i "s/define('CALDAV_PORT', .*/define('CALDAV_PORT', '443');/" /usr/local/lib/z-push/backend/caldav/config.php +sed -i "s/define('CALDAV_PATH', .*/define('CALDAV_PATH', '/remote.php/caldav/calendars/%u/');/" /usr/local/lib/z-push/backend/caldav/config.php # Some directories it will use.