From ec4fd5b049ac0af859ff05cf5ea485499a6466d2 Mon Sep 17 00:00:00 2001 From: Adrien Beudin Date: Wed, 24 Dec 2014 16:37:00 +0100 Subject: [PATCH] add baikal support --- conf/backend/config-caldav.php | 4 +- conf/backend/config-carddav.php | 6 +- conf/backend/config-imap.php | 160 ++++++++++++++++++++++++++++++++ scripts/install | 29 +++++- 4 files changed, 191 insertions(+), 8 deletions(-) create mode 100644 conf/backend/config-imap.php diff --git a/conf/backend/config-caldav.php b/conf/backend/config-caldav.php index 75dfc76..3592934 100644 --- a/conf/backend/config-caldav.php +++ b/conf/backend/config-caldav.php @@ -46,13 +46,13 @@ // ************************ // Server address -define('CALDAV_SERVER', 'https://beudi.nohost.me'); +define('CALDAV_SERVER', 'https://BAIKALDOMAIN'); // Port define('CALDAV_PORT', '443'); // Path -define('CALDAV_PATH', '/baikal/cal.php/calendars/%u/'); +define('CALDAV_PATH', 'BAIKALPATH/cal.php/calendars/%u/'); // Default CalDAV folder (calendar folder/principal). This will be marked as the default calendar in the mobile define('CALDAV_PERSONAL', 'default'); diff --git a/conf/backend/config-carddav.php b/conf/backend/config-carddav.php index 5fca94a..aa992dd 100644 --- a/conf/backend/config-carddav.php +++ b/conf/backend/config-carddav.php @@ -49,7 +49,7 @@ define('CARDDAV_PROTOCOL', 'https'); // Server name -define('CARDDAV_SERVER', 'beudi.nohost.me'); +define('CARDDAV_SERVER', 'BAIKALDOMAIN'); // Server port define('CARDDAV_PORT', '443'); @@ -63,7 +63,7 @@ define('CARDDAV_PORT', '443'); // %u: replaced with the username // %d: replaced with the domain // Add the trailing / -define('CARDDAV_PATH', '/baikal/card.php/addressbooks/%u/'); +define('CARDDAV_PATH', 'BAIKALPATH/card.php/addressbooks/%u/'); // Server path to the default addressbook @@ -71,7 +71,7 @@ define('CARDDAV_PATH', '/baikal/card.php/addressbooks/%u/'); // %u: replaced with the username // %d: replaced with the domain // Add the trailing / -define('CARDDAV_DEFAULT_PATH', '/baikal/card.php/addressbooks/%u/default'); +define('CARDDAV_DEFAULT_PATH', 'BAIKALPATH/card.php/addressbooks/%u/default'); // Server path to the GAL addressbook. This addressbook is readonly and searchable by the user, but it will NOT be synced. // If you don't want GAL, comment it diff --git a/conf/backend/config-imap.php b/conf/backend/config-imap.php new file mode 100644 index 0000000..9817661 --- /dev/null +++ b/conf/backend/config-imap.php @@ -0,0 +1,160 @@ +. +* +* Consult LICENSE file for details +************************************************/ + +// ************************ +// BackendIMAP settings +// ************************ + +// Defines the server to which we want to connect +define('IMAP_SERVER', 'localhost'); + +// connecting to default port (143) +define('IMAP_PORT', 143); + +// best cross-platform compatibility (see http://php.net/imap_open for options) +define('IMAP_OPTIONS', '/notls/norsh'); + +// overwrite the "from" header with some value +// options: +// '' - do nothing, use the From header +// 'username' - the username will be set (usefull if your login is equal to your emailaddress) +// 'domain' - the value of the "domain" field is used +// 'sql' - the username will be the result of a sql query. REMEMBER TO INSTALL PHP-PDO AND PHP-DATABASE +// 'ldap' - the username will be the result of a ldap query. REMEMBER TO INSTALL PHP-LDAP!! +// '@mydomain.com' - the username is used and the given string will be appended +define('IMAP_DEFAULTFROM', '@DOMAINTOCHANGE'); + +// DSN: formatted PDO connection string +// mysql:host=xxx;port=xxx;dbname=xxx +// USER: username to DB +// PASSWORD: password to DB +// OPTIONS: array with options needed +// QUERY: query to execute +// FIELDS: columns in the query +// FROM: string that will be the from, replacing the column names with the values +define('IMAP_FROM_SQL_DSN', ''); +define('IMAP_FROM_SQL_USER', ''); +define('IMAP_FROM_SQL_PASSWORD', ''); +define('IMAP_FROM_SQL_OPTIONS', serialize(array(PDO::ATTR_PERSISTENT => true))); +define('IMAP_FROM_SQL_QUERY', "select first_name, last_name, mail_address from users where mail_address = '#username@#domain'"); +define('IMAP_FROM_SQL_FIELDS', serialize(array('first_name', 'last_name', 'mail_address'))); +define('IMAP_FROM_SQL_FROM', '#first_name #last_name <#mail_address>'); +define('IMAP_FROM_SQL_FULLNAME', '#first_name #last_name'); + +// SERVER: ldap server +// SERVER_PORT: ldap port +// USER: dn to use for connecting +// PASSWORD: password +// QUERY: query to execute +// FIELDS: columns in the query +// FROM: string that will be the from, replacing the field names with the values +define('IMAP_FROM_LDAP_SERVER', 'localhost'); +define('IMAP_FROM_LDAP_SERVER_PORT', '389'); +define('IMAP_FROM_LDAP_USER', ''); +define('IMAP_FROM_LDAP_PASSWORD', ''); +define('IMAP_FROM_LDAP_BASE', 'dc=yunohost,dc=org'); +define('IMAP_FROM_LDAP_QUERY', '(mail=#username)'); +define('IMAP_FROM_LDAP_FIELDS', serialize(array('givenname', 'sn', 'mail'))); +define('IMAP_FROM_LDAP_FROM', '#givenname #sn <#mail>'); +define('IMAP_FROM_LDAP_FULLNAME', '#givenname #sn'); + + +// Root folder or prefix in your IMAP server (without the separator). For example, with courier it will be INBOX, and your folder will be INBOX.Sent +// You can use the real case +define('IMAP_FOLDER_ROOT', 'INBOX'); + +// copy outgoing mail to this folder. If not set z-push will try the default folders +// You can use the real case and the full path (INBOX.Sent) +define('IMAP_FOLDER_SENT', ''); + +// Draft folder +// You can use the real case and the full path (INBOX.Draft) +define('IMAP_FOLDER_DRAFT', ''); + +// Trash folder +// You can use the real case and the full path (INBOX.Trash) +define('IMAP_FOLDER_TRASH', ''); + +// forward messages inline (default true - inlined) +define('IMAP_INLINE_FORWARD', true); + +// list of folders we want to exclude from sync. Names, or part of it, separated by | +// example: dovecot.sieve|archive|spam +define('IMAP_EXCLUDED_FOLDERS', ''); + + +// Method used for sending mail +// mail => mail() php function +// sendmail => sendmail executable +// smtp => direct connection against SMTP +define('IMAP_SMTP_METHOD', 'mail'); + +global $imap_smtp_params; +// SMTP Parameters +// mail : no params +$imap_smtp_params = array(); +// sendmail +//$imap_smtp_params = array('sendmail_path' => '/usr/bin/sendmail', 'sendmail_args' => '-i'); +// smtp +// "host" - The server to connect. Default is localhost. +// "port" - The port to connect. Default is 25. +// "auth" - Whether or not to use SMTP authentication. Default is FALSE. +// "username" - The username to use for SMTP authentication. "imap_username" for using the same username as the imap server +// "password" - The password to use for SMTP authentication. "imap_password" for using the same password as the imap server +// "localhost" - The value to give when sending EHLO or HELO. Default is localhost +// "timeout" - The SMTP connection timeout. Default is NULL (no timeout). +// "verp" - Whether to use VERP or not. Default is FALSE. +// "debug" - Whether to enable SMTP debug mode or not. Default is FALSE. +// "persist" - Indicates whether or not the SMTP connection should persist over multiple calls to the send() method. +// "pipelining" - Indicates whether or not the SMTP commands pipelining should be used. +//$imap_smtp_params = array('host' => 'localhost', 'port' => 25, 'auth' => false); +// If you want to use SSL with port 25 or port 465 you must preppend "ssl://" before the hostname or IP of your SMTP server +// IMPORTANT: To use SSL you must use PHP 5.1 or later, install openssl libs and use ssl:// within the host variable +//$imap_smtp_params = array('host' => 'ssl://localhost', 'port' => 465, 'auth' => true, 'username' => 'imap_username', 'password' => 'imap_password'); + + +// If you are using IMAP_SMTP_METHOD = mail or sendmail and your sent messages are not correctly displayed you can change this to "\n". +// BUT, it doesn't comply with RFC 2822 and will break if using smtp method +define('MAIL_MIMEPART_CRLF', "\r\n"); + +?> diff --git a/scripts/install b/scripts/install index 829921e..80ff7a9 100644 --- a/scripts/install +++ b/scripts/install @@ -23,9 +23,32 @@ sudo cp -a ../sources/* $final_path sudo chown -R www-data: $final_path # Configuration -sudo cp ../conf/config.php $final_path/ -sudo sed -i "s^define('TIMEZONE', .*^define('TIMEZONE', '$(cat /etc/timezone)');^" $final_path/config.php -sudo sed -i "s@ALIASTOCHANGE@$final_path/@g" $final_path/config.php +sed -i "s^define('TIMEZONE', .*^define('TIMEZONE', '$(cat /etc/timezone)');^" ../conf/config*.php +sed -i "s@ALIASTOCHANGE@$final_path/@g" ../conf/config*.php + +# Enable caldav carddav support +sudo yunohost app list -f baikal --json | grep '"installed": true' +if [ "$?" -eq 0 ]; then + echo "Detected Baikal" + caldavdomain=$(sudo yunohost app setting baikal domain) + caldavpath=$(sudo yunohost app setting baikal path) + caldavpath=${caldavpath%/} + + # Configuration baikal + sed -i "s@BAIKALDOMAIN@$caldavdomain@g" ../conf/backend/config*.php + sed -i "s@BAIKALPATH@$caldavpath@g" ../conf/backend/config*.php + sed -i "s@DOMAINTOCHANGE@$domain@g" ../conf/backend/config-imap.php + + # Copy config + sudo cp ../conf/config-combined.php $final_path/config.php + sudo cp ../conf/backend/imap/config.php $final_path/backend/config-imap.php + sudo cp ../conf/backend/carddav/config.php $final_path/backend/config-carddav.php + sudo cp ../conf/backend/caldav/config.php $final_path/backend/config-caldav.php + sudo cp ../conf/backend/combined/config.php $final_path/backend/config-combined.php +else + # Copy config + sudo cp ../conf/config.php $final_path/ +fi # Create directory sudo mkdir -p /var/log/z-push