diff --git a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/calendar.inc.php b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/calendar.inc.php
index e4bff23b..d000f20f 100644
--- a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/calendar.inc.php
+++ b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/calendar.inc.php
@@ -1,32 +1,38 @@
diff --git a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/chwala.inc.php b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/chwala.inc.php
index 260e6234..1fd0a6be 100644
--- a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/chwala.inc.php
+++ b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/chwala.inc.php
@@ -1,163 +1,167 @@
array(
'driver' => 'seafile',
'host' => 'seacloud.cc',
// when username is set to '%u' current user name and password
// will be used to authenticate to this storage source
'username' => '%u',
),
'Public-Files' => array(
'driver' => 'webdav',
'baseuri' => 'https://some.host.tld/Files',
'username' => 'admin',
'password' => 'pass',
),
);
*/
// $config['fileapi_sources'] = array(
// 'Public-Files' => array(
// 'driver' => 'webdav',
// 'baseuri' => 'https://kolab.local/dav/drive/user/admin@kolab.local/',
// 'username' => '%u',
// 'password' => 'simple123',
// ),
// );
// Default values for sources configuration dialog.
// Note: use driver names as the array keys.
// Note: %u variable will be resolved to the current username.
/*
$config['fileapi_presets'] = array(
'seafile' => array(
'host' => 'seacloud.cc',
'username' => '%u',
),
'webdav' => array(
'baseuri' => 'https://some.host.tld/Files',
'username' => '%u',
),
);
*/
// Disables listing folders from the backend storage.
// This is useful when you configured an external source(s) and
// you want to use it exclusively, ignoring Kolab folders.
$config['fileapi_backend_storage_disabled'] = false;
// Manticore service URL. Enables use of WebODF collaborative editor.
// Note: this URL should be accessible from Chwala host and Roundcube host as well.
$config['fileapi_manticore'] = null;
// WOPI/Office service URL. Enables use of collaborative editor supporting WOPI.
// Note: this URL should be accessible from the Chwala host
$config['fileapi_wopi_office'] = getenv('FILEAPI_WOPI_OFFICE');
// Name of the user interface skin.
$config['file_api_skin'] = 'default';
// Chwala UI communicates with Chwala API via HTTP protocol
// The URL here is a location of Chwala API service. By default
// the UI location is used with addition of /api/ suffix.
# Force https if we're behind a proxy. Browsers don't allow mixed content.
$config['file_api_url'] = getenv('FILE_API_URL') ?: 'https://' . ($_SERVER['HTTP_HOST'] ?? null) . '/chwala/api/';
// URL for the wopi service to connect back to us (instead of file_api_url)
$config['file_api_server_url'] = getenv('FILE_API_SERVER_URL');
// Type of Chwala cache. Supported values: 'db', 'apc' and 'memcache'.
// Note: This is only for some additional data like WOPI capabilities.
$config['fileapi_cache'] = 'db';
// lifetime of Chwala cache
// possible units: s, m, h, d, w
$config['fileapi_cache_ttl'] = '1d';
// LDAP addressbook that would be searched for user names autocomplete.
// That should be an array refering to the Roundcube's $config['ldap_public']
// array key or complete addressbook configuration array.
// FIXME: replace with non ldap solution
// $config['fileapi_users_source'] = 'kolab_addressbook';
// The LDAP attribute which will be used as ACL user identifier
// $config['fileapi_users_field'] = 'mail';
// The LDAP search filter will be combined with search queries
// $config['fileapi_users_filter'] = '';
// Include groups in searching
// $config['fileapi_groups'] = false;
// Prefix added to the group name to build IMAP ACL identifier
// $config['fileapi_group_prefix'] = 'group:';
// The LDAP attribute (or field name) which will be used as ACL group identifier
// $config['fileapi_group_field'] = 'name';
// ------------------------------------------------
// SeaFile driver settings
// ------------------------------------------------
// Enables SeaFile Web API conversation log
$config['fileapi_seafile_debug'] = false;
// Enables caching of some SeaFile information e.g. folders list
// Note: 'db', 'apc' and 'memcache' are supported
$config['fileapi_seafile_cache'] = 'db';
// Expiration time of SeaFile cache entries
$config['fileapi_seafile_cache_ttl'] = '7d';
// Default SeaFile Web API host
// Note: http:// and https:// (default) prefixes can be used here
$config['fileapi_seafile_host'] = 'localhost';
// Enables SSL certificates validation when connecting
// with any SeaFile server
$config['fileapi_seafile_ssl_verify_host'] = false;
$config['fileapi_seafile_ssl_verify_peer'] = false;
// To support various Seafile configurations when fetching a file
// from Seafile server we proxy it via Chwala server.
// Enable this option to allow direct downloading of files
// from Seafile server to user browser.
$config['fileapi_seafile_allow_redirects'] = false;
// ------------------------------------------------
// WebDAV driver settings
// ------------------------------------------------
// Default URI location for WebDAV storage
$config['fileapi_webdav_baseuri'] = 'https://imap/dav';
?>
diff --git a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/config.inc.php b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/config.inc.php
index 92fd9a7f..33248bd2 100644
--- a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/config.inc.php
+++ b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/config.inc.php
@@ -1,214 +1,218 @@
2) {
array_shift($components);
}
$config['session_domain'] = implode('.', $components);
$config['des_key'] = getenv('DES_KEY');
$config['username_domain'] = getenv('APP_DOMAIN');
$config['use_secure_urls'] = true;
$config['mail_domain'] = '';
// IMAP Server Settings
$config['default_host'] = getenv('IMAP_HOST');
$config['default_port'] = getenv('IMAP_PORT');
$config['imap_delimiter'] = '/';
$config['imap_force_lsub'] = true;
if (str_contains(getenv('IMAP_HOST'), 'tls') || str_contains(getenv('IMAP_HOST'), 'ssl')) {
$config['imap_conn_options'] = [
'ssl' => [
'verify_peer_name' => false,
'verify_peer' => false,
'allow_self_signed' => true
],
'proxy_protocol' => getenv('IMAP_PROXY_PROTOCOL')
];
}
$config['proxy_whitelist'] = getenvlist('PROXY_WHITELIST');
// Caching and storage settings
$config['imap_cache'] = 'db';
$config['imap_cache_ttl'] = '10d';
$config['messages_cache'] = 'db';
$config['message_cache_ttl'] = '10d';
$config['session_storage'] = 'db';
// SMTP Server Settings
$config['smtp_server'] = getenv('MAIL_HOST');
$config['smtp_port'] = getenv('MAIL_PORT');
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['smtp_helo_host'] = $_SERVER["HTTP_HOST"] ?? null;
$config['smtp_conn_options'] = [
'ssl' => [
'verify_peer_name' => false,
'verify_peer' => false,
'allow_self_signed' => true
]
];
// Kolab specific defaults
$config['product_name'] = 'Kolab Groupware';
$config['quota_zero_as_unlimited'] = false;
$config['login_lc'] = 2;
$config['auto_create_user'] = true;
$config['enable_installer'] = false;
// The SMTP server does not allow empty identities
$config['mdn_use_from'] = true;
// Plugins
$plugins = [
'acl',
'archive',
'calendar',
'jqueryui',
'kolab_activesync',
'kolab_addressbook',
'kolab_files',
'managesieve',
'newmail_notifier',
'odfviewer',
'redundant_attachments',
'contextmenu',
'tasklist',
'enigma',
];
- // 'kolab_auth',
- // 'kolab_config',
- // 'kolab_delegation',
- // 'kolab_folders',
- // 'kolab_notes',
- // 'kolab_tags',
+
+ if (getenv('KOLABOBJECTS_COMPAT_MODE') == "true") {
+ $plugins[] = 'kolab_config';
+ $plugins[] = 'kolab_folders';
+ $plugins[] = 'kolab_notes';
+ $plugins[] = 'kolab_tags';
+
+ // These require ldap
+ // $plugins[] = 'kolab_auth';
+ // $plugins[] = 'kolab_delegation';
+ }
if ($disabledPlugins = getenvlist('DISABLED_PLUGINS')) {
$plugins = array_diff($plugins, $disabledPlugins);
}
if ($extraPlugins = getenvlist('EXTRA_PLUGINS')) {
$plugins = array_merge($plugins, $extraPlugins);
}
// contextmenu must be after kolab_addressbook (#444)
$plugins[] = 'contextmenu';
$config['plugins'] = $plugins;
// Do not show deleted messages, mark deleted messages as read,
// and flag them as deleted instead of moving them to the Trash
// folder.
$config['skip_deleted'] = true;
$config['read_when_deleted'] = true;
$config['flag_for_deletion'] = true;
$config['delete_always'] = true;
$config['session_lifetime'] = 180;
$config['password_charset'] = 'UTF-8';
$config['useragent'] = 'Kolab 16/Roundcube ' . RCUBE_VERSION;
$config['message_sort_col'] = 'date';
$config['spellcheck_engine'] = 'pspell';
$config['spellcheck_dictionary'] = true;
$config['spellcheck_ignore_caps'] = true;
$config['spellcheck_ignore_nums'] = true;
$config['spellcheck_ignore_syms'] = true;
$config['spellcheck_languages'] = array(
'da' => 'Dansk',
'de' => 'Deutsch',
'en' => 'English',
'es' => 'Español',
'fr' => 'Français',
'it' => 'Italiano',
'nl' => 'Nederlands',
'pt' => 'Português',
'ru' => 'Русский',
'sv' => 'Svenska'
);
$config['undo_timeout'] = 10;
$config['upload_progress'] = 2;
$config['address_template'] = '{street}
{locality} {zipcode}
{country} {region}';
$config['preview_pane'] = true;
$config['preview_pane_mark_read'] = 0;
$config['autoexpand_threads'] = 2;
$config['top_posting'] = 0;
$config['sig_above'] = false;
$config['mdn_requests'] = 0;
$config['mdn_default'] = false;
$config['dsn_default'] = false;
$config['reply_same_folder'] = false;
if (file_exists(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__))) {
include_once(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__));
}
// Re-apply mandatory settings here.
$config['debug_level'] = 1;
$config['devel_mode'] = false;
$config['log_driver'] = 'logfmt';
$config['per_user_logging'] = true;
$config['log_date_format'] = 'd-M-Y H:i:s,u O';
$config['smtp_log'] = false;
$config['log_logins'] = true;
$config['log_session'] = false;
$config['sql_debug'] = getenv('SQL_DEBUG');
$config['memcache_debug'] = getenv('MEMCACHE_DEBUG');
$config['imap_debug'] = getenv('IMAP_DEBUG');
$config['smtp_debug'] = getenv('SMTP_DEBUG');
$config['dav_debug'] = getenv('DAV_DEBUG');
$config['skin'] = 'kolab';
$config['skin_include_php'] = false;
$config['mime_magic'] = null;
$config['im_identify_path'] = '/usr/bin/identify';
$config['im_convert_path'] = '/usr/bin/convert';
$config['log_dir'] = 'logs/';
#$config['temp_dir'] = '/var/lib/roundcubemail/';
// Some additional default folders (archive plugin)
$config['archive_mbox'] = 'Archive';
// The Kolab daemon by default creates 'Spam'
$config['junk_mbox'] = 'Spam';
$config['default_folders'] = array('INBOX', 'Drafts', 'Sent', 'Spam', 'Trash', 'Archive');
// $config['address_book_type'] = 'ldap';
$config['autocomplete_min_length'] = 3;
$config['autocomplete_threads'] = 0;
$config['autocomplete_max'] = 15;
// Disable the default addressbook and use the dav addressbook by default
$config['address_book_type'] = '';
$config['autocomplete_single'] = true;
$config['htmleditor'] = 0;
$config['kolab_http_request'] = Array(
'ssl_verify_host' => false,
'ssl_verify_peer' => false,
);
@include('kolab_syncroton.inc.php');
@include('chwala.inc.php');
?>
diff --git a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/dav.inc.php b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/dav.inc.php
index 43dc1342..41e99607 100644
--- a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/dav.inc.php
+++ b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/dav.inc.php
@@ -1,54 +1,60 @@
. |
| |
+-------------------------------------------------------------------------+
*/
$config = array();
// The HTTP path to the iRony root directory.
// Set to / if the service is registered as document root for a virtual host
$config['base_uri'] = '/iRony/';
// User agent string written to kolab storage MIME messages
$config['useragent'] = 'Kolab DAV Server libkolab/' . RCUBE_VERSION;
+// Avoid loading the kolab_auth plugin (because of ldap)
+$config['kolabdav_plugins'] = [
+ 'libcalendaring',
+ 'libkolab'
+];
+
// Type of Auth cache. Supported values: 'db', 'apc' and 'memcache'.
// Note: This is only for username canonification map.
$config['kolabdav_auth_cache'] = 'db';
// lifetime of the Auth cache, possible units: s, m, h, d, w
$config['kolabdav_auth_cache_ttl'] = '1h';
// enable debug console showing the internal function calls triggered
// by http requests. This will write log to /var/log/iRony/console
$config['kolabdav_console'] = false;
// enable logging of full HTTP payload
// (bitmask of these values: 2 = HTTP Requests, 4 = HTTP Responses)
$config['kolabdav_http_log'] = 0;
// expose iTip invitations from email inbox in CalDAV scheduling inbox.
// this will make capable CalDAV clients process event invitations and
// as a result, the invitation messages are removed from the email inbox.
// WARNING: this feature is still experimental and not fully implemented.
// See https://git.kolab.org/T93 for details and implementation status.
$config['kolabdav_caldav_inbox'] = false;
diff --git a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_auth.inc.php b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_auth.inc.php
index 013267c7..759c6960 100644
--- a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_auth.inc.php
+++ b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_auth.inc.php
@@ -1,70 +1,42 @@
'Kolab Auth',
- 'hosts' => Array(getenv('LDAP_HOST')),
- 'port' => 389,
- 'use_tls' => false,
- 'user_specific' => true,
- 'base_dn' => 'dc=hosted,dc=com',
- 'bind_dn' => 'uid=kolab-service,ou=Special Users,dc=mgmt,dc=com',
- 'bind_pass' => getenv('LDAP_SERVICE_BIND_PW'),
- 'writable' => false,
- 'ldap_version' => 3, // using LDAPv3
- 'fieldmap' => Array(
- 'name' => 'displayname',
- 'email' => 'mail',
- 'email:alias' => 'alias',
- 'role' => 'nsroledn',
- ),
- 'sort' => 'displayname',
- 'scope' => 'sub',
- 'filter' => '(objectClass=*)',
- 'fuzzy_search' => true,
- 'sizelimit' => '0',
- 'timelimit' => '0',
- 'groups' => Array(
- 'base_dn' => 'dc=hosted,dc=com',
- 'filter' => '(|(objectclass=groupofuniquenames)(objectclass=groupofurls))',
- 'object_classes' => Array('top', 'groupOfUniqueNames'),
- 'member_attr' => 'uniqueMember',
- ),
- );
+ // Ends up being read by iRony even without the plugin configured, so must be empty
+ $config['kolab_auth_addressbook'] = "";
// This will overwrite defined filter
$config['kolab_auth_filter'] = '(&' . '(objectclass=inetorgperson)' . '(|(uid=%u)(mail=%fu)(alias=%fu)))';
// Use this fields (from fieldmap configuration) to get authentication ID
$config['kolab_auth_login'] = 'email';
// Use this fields (from fieldmap configuration) for default identity
$config['kolab_auth_name'] = 'name';
$config['kolab_auth_alias'] = 'alias';
$config['kolab_auth_email'] = 'email';
if (preg_match('/\/helpdesk-login\//', $_SERVER["REQUEST_URI"] ?? null) ) {
// Login and password of the admin user. Enables "Login As" feature.
$config['kolab_auth_admin_login'] = getenv('IMAP_ADMIN_LOGIN');
$config['kolab_auth_admin_password'] = getenv('IMAP_ADMIN_PASSWORD');
$config['kolab_auth_auditlog'] = true;
}
// Administrative role field (from fieldmap configuration) which must be filled with
// specified value which adds privilege to login as another user.
$config['kolab_auth_role'] = 'role';
$config['kolab_auth_role_value'] = 'cn=kolab-admin,dc=mgmt,dc=com';
// Administrative group name to which user must be assigned to
// which adds privilege to login as another user.
$config['kolab_auth_group'] = 'Kolab Helpdesk';
if (file_exists(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__))) {
include_once(RCUBE_CONFIG_DIR . '/' . ($_SERVER["HTTP_HOST"] ?? null) . '/' . basename(__FILE__));
}
?>
diff --git a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_syncroton.inc.php b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_syncroton.inc.php
index f8044bea..ec886699 100644
--- a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_syncroton.inc.php
+++ b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/kolab_syncroton.inc.php
@@ -1,129 +1,131 @@
Roundcube contact fields map for GAL search
/* Default: array(
'alias' => 'nickname',
'company' => 'organization',
'displayName' => 'name',
'emailAddress' => 'email',
'firstName' => 'firstname',
'lastName' => 'surname',
'mobilePhone' => 'phone.mobile',
'office' => 'office',
'picture' => 'photo',
'phone' => 'phone',
'title' => 'jobtitle',
);
*/
$config['activesync_gal_fieldmap'] = null;
// List of device types that will sync the LDAP addressbook(s) as a normal folder.
// For devices that do not support GAL searching, e.g. Outlook.
// Note: To make the LDAP addressbook sources working we need two additional
// fields ('uid' and 'changed') specified in the fieldmap array
// of the LDAP configuration ('ldap_public' option). For example:
// 'uid' => 'nsuniqueid',
// 'changed' => 'modifytimestamp',
// Examples:
// array('windowsoutlook') # enable for Oultook only
// true # enable for all
$config['activesync_gal_sync'] = false;
// GAL cache. As reading all contacts from LDAP may be slow, caching is recommended.
$config['activesync_gal_cache'] = 'db';
// TTL of GAL cache entries. Technically this causes that synchronized
// contacts will not be updated (queried) often than the specified interval.
$config['activesync_gal_cache_ttl'] = '1d';
// List of Roundcube plugins
// WARNING: Not all plugins used in Roundcube can be listed here
$config['activesync_plugins'] = array(
'libcalendaring',
'libkolab'
);
// Defines for how many seconds we'll sleep between every
// action for detecting changes in folders. Default: 60
$config['activesync_ping_timeout'] = 60;
// Defines maximum Ping interval in seconds. Default: 900 (15 minutes)
$config['activesync_ping_interval'] = 900;
// We start detecting changes n seconds since the last sync of a folder
// Default: 180
$config['activesync_quiet_time'] = 0;
// Defines maximum number of folders in a single Sync/Ping request. Default: 100.
$config['activesync_max_folders'] = 100;
// When a device is reqistered, by default a set of folders are
// subscribed for syncronization, i.e. INBOX and personal folders with
// defined folder type:
// mail.drafts, mail.wastebasket, mail.sentitems, mail.outbox,
// event, event.default,
// contact, contact.default,
// task, task.default
// This default set can be extended by adding following values:
// 1 - all subscribed folders in personal namespace
// 2 - all folders in personal namespace
// 4 - all subscribed folders in other users namespace
// 8 - all folders in other users namespace
// 16 - all subscribed folders in shared namespace
// 32 - all folders in shared namespace
$config['activesync_init_subscriptions'] = 21;
// Defines blacklist of devices (device type strings) that do not support folder hierarchies.
// When set to an array folder hierarchies are used on all devices not listed here.
// When set to null an old whitelist approach will be used where we do opposite
// action and enable folder hierarchies only on device types known to support it.
$config['activesync_multifolder_blacklist'] = array();
// Blacklist overwrites for specified object type. If set to an array
// it will have a precedence over 'activesync_multifolder_blacklist' list only for that type.
// Note: Outlook does not support multiple folders for contacts,
// in that case use $config['activesync_multifolder_blacklist_contact'] = array('windowsoutlook');
$config['activesync_multifolder_blacklist_mail'] = null;
$config['activesync_multifolder_blacklist_event'] = null;
$config['activesync_multifolder_blacklist_contact'] = array('windowsoutlook');
$config['activesync_multifolder_blacklist_note'] = null;
$config['activesync_multifolder_blacklist_task'] = null;
$config['activesync_protected_folders'] = array('windowsoutlook' => array('INBOX', 'Sent', 'Trash'));
// Enables adding sender name in the From: header of send email
// when a device uses email address only (e.g. iOS devices)
$config['activesync_fix_from'] = false;
diff --git a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/tasklist.inc.php b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/tasklist.inc.php
index 7e534503..24306e77 100644
--- a/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/tasklist.inc.php
+++ b/docker/roundcube/rootfs/opt/app-root/src/roundcubemail-config-templates/tasklist.inc.php
@@ -1,11 +1,15 @@