PHP-Push-2 icon indicating copy to clipboard operation
PHP-Push-2 copied to clipboard

Don't offer backends that don't exist

Open fortiko opened this issue 12 years ago • 12 comments

why does z-push "offer" Mail (on by default), Contacts (off by default), Calendars (on by default) and Reminders (on by default) even when I have caldav and imap backends disabled in backend/config.php?

fortiko avatar May 31 '12 13:05 fortiko

Could you paste the whole backend/config and combined/config.php ? Thanks!

dupondje avatar Jun 02 '12 22:06 dupondje

What do you mean with backend/config=

combined/config.php looks like this:

<?php
/***********************************************
* File      :   backend/combined/config.php
* Project   :   Z-Push
* Descr     :   configuration file for the
*               combined backend.
*
* Created   :   29.11.2010
*
* Copyright 2007 - 2010 Zarafa Deutschland GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation with the following additional
* term according to sec. 7:
*
* According to sec. 7 of the GNU Affero General Public License, version 3,
* the terms of the AGPL are supplemented with the following terms:
*
* "Zarafa" is a registered trademark of Zarafa B.V.
* "Z-Push" is a registered trademark of Zarafa Deutschland GmbH
* The licensing of the Program under the AGPL does not imply a trademark license.
* Therefore any rights, title and interest in our trademarks remain entirely with us.
*
* However, if you propagate an unmodified version of the Program you are
* allowed to use the term "Z-Push" to indicate that you distribute the Program.
* Furthermore you may use our trademarks where it is necessary to indicate
* the intended purpose of a product or service provided you use it in accordance
* with honest practices in industrial or commercial matters.
* If you want to propagate modified versions of the Program under the name "Z-Push",
* you may only do so if you have a written permission by Zarafa Deutschland GmbH
* (to acquire a permission please contact Zarafa at [email protected]).
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*
* Consult LICENSE file for details
************************************************/

class BackendCombinedConfig {

    // *************************
    //  BackendZarafa settings
    // *************************
    public static $BackendZarafa_config = array('MAPI_SERVER' => MAPI_SERVER);

    // *************************
    //  BackendIMAP settings
    // *************************
    public static $BackendIMAP_config = array(
        // Defines the server to which we want to connect
        'IMAP_SERVER' => IMAP_SERVER,
        // connecting to default port (143)
        'IMAP_PORT' => IMAP_PORT,
        // best cross-platform compatibility (see http://php.net/imap_open for options)
        'IMAP_OPTIONS' => IMAP_OPTIONS,
        // overwrite the "from" header if it isn't set when sending emails
        // options: 'username'    - the username will be set (usefull if your login is equal to your emailaddress)
        //        'domain'    - the value of the "domain" field is used
        //        '@mydomain.com' - the username is used and the given string will be appended
        'IMAP_DEFAULTFROM' => IMAP_DEFAULTFROM,
        // copy outgoing mail to this folder. If not set z-push will try the default folders
        'IMAP_SENTFOLDER' => IMAP_SENTFOLDER,
        // forward messages inline (default false - as attachment)
        'IMAP_INLINE_FORWARD' => IMAP_INLINE_FORWARD,
        // use imap_mail() to send emails (default) - if false mail() is used
        'IMAP_USE_IMAPMAIL' => IMAP_USE_IMAPMAIL,
    );

    // *************************
    //  BackendMaildir settings
    // *************************
    public static $BackendMaildir_config = array(
        'MAILDIR_BASE' => MAILDIR_BASE,
        'MAILDIR_SUBDIR' => MAILDIR_SUBDIR,
    );

    // *************************
    //  BackendVCardDir settings
    // *************************
    public static $BackendVCardDir_config = array('VCARDDIR_DIR' => VCARDDIR_DIR);

    // *************************
    //  BackendCalDAV settings
    // *************************
    public static $BackendCalDAV_config = array(
        'CALDAV_SERVER' => CALDAV_SERVER,
        'CALDAV_PORT' => CALDAV_PORT,
        'CALDAV_PATH' => CALDAV_PATH,
    );

    // *************************
    //  BackendLDAP settings
    // *************************
    public static $BackendLDAP_config = array(
        'LDAP_SERVER' => LDAP_SERVER,
        'LDAP_PORT' => LDAP_PORT,
        'LDAP_USER_DN' => LDAP_USER_DN,
        'LDAP_BASE_DNS' => LDAP_BASE_DNS,
    );

    // *************************
    //  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',
                    'config' => self::$BackendIMAP_config,
                ),
/*
                'z' => array(
                    'name' => 'BackendZarafa',
                    'config' => self::$BackendZarafa_config
                ),
                'm' => array(
                    'name' => 'BackendMaildir',
                    'config' => self::$BackendMaildir_config,
                ),
                'v' => array(
                    'name' => 'BackendVCardDir',
                    'config' => self::$BackendVCardDir_config,
                ),
*/
                'c' => array(
                    'name' => 'BackendCalDAV',
                    'config' => self::$BackendCalDAV_config,
                ),
                'l' => array(
                    'name' => 'BackendLDAP',
                    'config' => self::$BackendLDAP_config,
                ),
            ),
            '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 => 'l',
                SYNC_FOLDER_TYPE_NOTE => 'i',
                SYNC_FOLDER_TYPE_JOURNAL => 'i',
                SYNC_FOLDER_TYPE_OTHER => 'i',
                SYNC_FOLDER_TYPE_USER_MAIL => 'i',
                SYNC_FOLDER_TYPE_USER_APPOINTMENT => 'c',
                SYNC_FOLDER_TYPE_USER_CONTACT => 'l',
                SYNC_FOLDER_TYPE_USER_TASK => 'c',
                SYNC_FOLDER_TYPE_USER_JOURNAL => 'i',
                SYNC_FOLDER_TYPE_USER_NOTE => 'i',
                SYNC_FOLDER_TYPE_UNKNOWN => 'i',
            ),
            //creating a new folder in the root folder should create a folder in one backend
            'rootcreatefolderbackend' => 'i',
        );
    }
}
?>            

fortiko avatar Jun 02 '12 23:06 fortiko

You PHP-Push will sync the following items: 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 => 'l', SYNC_FOLDER_TYPE_NOTE => 'i', SYNC_FOLDER_TYPE_JOURNAL => 'i', SYNC_FOLDER_TYPE_OTHER => 'i', SYNC_FOLDER_TYPE_USER_MAIL => 'i', SYNC_FOLDER_TYPE_USER_APPOINTMENT => 'c', SYNC_FOLDER_TYPE_USER_CONTACT => 'l', SYNC_FOLDER_TYPE_USER_TASK => 'c', SYNC_FOLDER_TYPE_USER_JOURNAL => 'i', SYNC_FOLDER_TYPE_USER_NOTE => 'i', SYNC_FOLDER_TYPE_UNKNOWN => 'i',

Its quite logic it advertises all those types then.

dupondje avatar Jun 03 '12 20:06 dupondje

I just changed config.php to read as follows, and still all backends (mail, contacts, calendars, reminders) are offered when I add the account on iOS 5.1.1, so there is clearly something broken, because contacts etc are now not even mentioned in folderbackend:

            '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 => 'l',
                SYNC_FOLDER_TYPE_NOTE => 'z',
                SYNC_FOLDER_TYPE_JOURNAL => 'z',
                SYNC_FOLDER_TYPE_OTHER => 'i',
*/
                SYNC_FOLDER_TYPE_USER_MAIL => 'i',
/*
                SYNC_FOLDER_TYPE_USER_APPOINTMENT => 'c',
                SYNC_FOLDER_TYPE_USER_CONTACT => 'l',
                SYNC_FOLDER_TYPE_USER_TASK => 'c',
                SYNC_FOLDER_TYPE_USER_JOURNAL => 'z',
                SYNC_FOLDER_TYPE_USER_NOTE => 'z',
                SYNC_FOLDER_TYPE_UNKNOWN => 'i',
*/
            ),

fortiko avatar Jun 19 '12 13:06 fortiko

Latest trunk, based in 2.0final: I changed config.php to read as shown in the previous comment and still all backends (mail, contacts, calendars, reminders) are offered when I add the account on iOS 5.1.1, even though only Mail should show up.

Something is clearly broken here. Please reopen this issue.

fortiko avatar Jun 29 '12 13:06 fortiko

There seem to be 2 issues here:

  1. Backends are offered, even though they are not configured in backend/combined/config.php, as shown below: in theory only mail should be offered, in practice all 4 (mail, contacts, calendar, tasks) are offered.

  2. Mail works as expected and configured. Surprisingly, even Contacts work (browsable, searchable etc) with the configuration below, even though it should not, because SYNC_FOLDER_TYPE_CONTACT does not even have a value...?

            '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 => 'l',
                SYNC_FOLDER_TYPE_NOTE => 'z',
                SYNC_FOLDER_TYPE_JOURNAL => 'z',
                SYNC_FOLDER_TYPE_OTHER => 'i',
*/
                SYNC_FOLDER_TYPE_USER_MAIL => 'i',
/*
                SYNC_FOLDER_TYPE_USER_APPOINTMENT => 'c',
                SYNC_FOLDER_TYPE_USER_CONTACT => 'l',
                SYNC_FOLDER_TYPE_USER_TASK => 'c',
                SYNC_FOLDER_TYPE_USER_JOURNAL => 'z',
                SYNC_FOLDER_TYPE_USER_NOTE => 'z',
                SYNC_FOLDER_TYPE_UNKNOWN => 'i',
*/
            ),

fortiko avatar Jun 29 '12 15:06 fortiko

Will investigate!

dupondje avatar Jun 29 '12 21:06 dupondje

Was this solved? I'm having the same issue.

ghost avatar Aug 08 '15 23:08 ghost

@Y-ME369 You should look to this: http://github.com/fmbiete/Z-Push-contrib , dupondje repo it's not maintained anymore and in mine you will find all these backends.

fmbiete avatar Aug 10 '15 14:08 fmbiete

Hi fmbiete, I am using your repo at the moment (its great thanks!), but have the same issue of z-push offering other services when I have selected backendIMAP only. Any ideas? :/

ghost avatar Aug 10 '15 14:08 ghost

All the services will be offered to the devices, always. If you only want backendIMAP don't use backendCombined; put in your config.php BackendIMAP and you are ready to go.

fmbiete avatar Aug 10 '15 14:08 fmbiete

Ah, so there is no way to stop the other services from being offered to the device? Shame. Thanks, I am using backedIMAP exclusively as it is, I thought it might a bug somewhere. Cheers for your help.

ghost avatar Aug 10 '15 14:08 ghost