Projects
Kolab:Winterfell
kolab-syncroton
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 35
View file
kolab-syncroton.spec
Changed
@@ -36,8 +36,8 @@ %global _ap_sysconfdir %{_sysconfdir}/%{httpd_name} Name: kolab-syncroton -Version: 2.3.8 -Release: 2%{?dist} +Version: 2.3.9 +Release: 1%{?dist} Summary: ActiveSync for Kolab Groupware Group: Applications/Internet @@ -47,11 +47,6 @@ Source0: https://mirror.kolabenterprise.com/pub/releases/%{name}-%{version}.tar.gz Source1: kolab-syncroton.logrotate -Patch0001: 0001-Remove-activesync_user_debug-also-from-sample-config.patch -Patch0002: 0002-Fix-logging-with-per_user_logging-true.patch -Patch0003: 0003-Do-not-forget-to-bump-the-version.patch -Patch0004: 0004-Fix-redundant-GETMETADATA-requests-when-listing-fold.patch - BuildArch: noarch # Use this build requirement to make sure we are using @@ -99,11 +94,6 @@ %prep %setup -q -n %{name}-%{version} -%patch0001 -p1 -%patch0002 -p1 -%patch0003 -p1 -%patch0004 -p1 - %build %install @@ -205,6 +195,9 @@ %attr(0770,%{httpd_user},%{httpd_group}) %{_var}/log/%{name} %changelog +* Fri Mar 2 2018 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 2.3.9-1 +- Release 2.3.9 + * Fri Feb 2 2018 Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> - 2.3.8-3 - Fix redundant GETMETADATA requests for mail folders
View file
0001-Remove-activesync_user_debug-also-from-sample-config.patch
Deleted
@@ -1,26 +0,0 @@ -From 25fe73820c89e4098d9e415c2b9d57998126c8f0 Mon Sep 17 00:00:00 2001 -From: Aleksander Machniak <machniak@kolabsys.com> -Date: Thu, 11 Jan 2018 08:15:41 +0100 -Subject: [PATCH 1/3] Remove activesync_user_debug also from sample config file - ---- - config/config.inc.php.dist | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/config/config.inc.php.dist b/config/config.inc.php.dist -index 61a4fd8..1b9b011 100644 ---- a/config/config.inc.php.dist -+++ b/config/config.inc.php.dist -@@ -8,9 +8,6 @@ $config['activesync_debug'] = true; - // Enables logging to a separate directory for every user/device - $config['activesync_user_log'] = false; - --// Enable per-user debugging only if /var/log/kolab-syncroton/<username>/ folder exists --$config['activesync_user_debug'] = false; -- - // If specified all ActiveSync-related logs will be saved to this file - // Note: This doesn't change Roundcube Framework log locations - $config['activesync_log_file'] = null; --- -2.14.3 -
View file
0002-Fix-logging-with-per_user_logging-true.patch
Deleted
@@ -1,134 +0,0 @@ -From bbec0775f0aae33d8cbf13f1c4a4ee018c4e59fa Mon Sep 17 00:00:00 2001 -From: Aleksander Machniak <machniak@kolabsys.com> -Date: Tue, 23 Jan 2018 18:12:41 +0000 -Subject: [PATCH 2/3] Fix logging with per_user_logging=true - -Also don't enable debug automatically, for consistence with Roundcube Framework -where per_user_logging do not enable any debug. ---- - lib/kolab_sync.php | 49 ++++++++++++++++------------------------------- - lib/kolab_sync_logger.php | 6 +++++- - 2 files changed, 22 insertions(+), 33 deletions(-) - -diff --git a/lib/kolab_sync.php b/lib/kolab_sync.php -index 302c873..539cb81 100644 ---- a/lib/kolab_sync.php -+++ b/lib/kolab_sync.php -@@ -142,7 +142,7 @@ class kolab_sync extends rcube - $this->plugins->exec_hook('ready', array('task' => 'syncroton')); - - // Set log directory per-user -- $this->set_log_dir($this->username ?: $_SERVER['PHP_AUTH_USER']); -+ $this->set_log_dir(); - - // Save user password for Roundcube Framework - $this->password = $_SERVER['PHP_AUTH_PW']; -@@ -384,13 +384,13 @@ class kolab_sync extends rcube - /** - * Set logging directory per-user - */ -- protected function set_log_dir($username) -+ protected function set_log_dir() - { -- if (empty($username)) { -+ if (empty($this->username)) { - return; - } - -- $this->logger->set_username($username); -+ $this->logger->set_username($this->username); - - $user_debug = $this->config->get('per_user_logging'); - $user_log = $user_debug || $this->config->get('activesync_user_log'); -@@ -400,15 +400,9 @@ class kolab_sync extends rcube - } - - $log_dir = $this->config->get('log_dir'); -- $log_dir .= DIRECTORY_SEPARATOR . $username; -+ $log_dir .= DIRECTORY_SEPARATOR . $this->username; - -- // in user_debug mode enable logging only if user directory exists -- if ($user_debug) { -- if (!is_dir($log_dir)) { -- return; -- } -- } -- else if (!is_dir($log_dir)) { -+ if (!$user_debug && !is_dir($log_dir)) { - if (!mkdir($log_dir, 0770)) { - return; - } -@@ -424,28 +418,12 @@ class kolab_sync extends rcube - } - } - -- // make sure we're using debug mode where possible, - if ($user_debug) { -- $this->config->set('debug_level', 1); -- $this->config->set('memcache_debug', true); -- $this->config->set('imap_debug', true); -- $this->config->set('ldap_debug', true); -- $this->config->set('smtp_debug', true); -- $this->config->set('sql_debug', true); -- -- // SQL/IMAP debug need to be set directly on the object instance -- // it's already initialized/configured -- if ($db = $this->get_dbh()) { -- $db->set_debug(true); -- } -- if ($storage = $this->get_storage()) { -- $storage->set_debug(true); -- } -- -- $this->logger->mode = kolab_sync_logger::DEBUG; -+ $this->per_user_log_dir = $log_dir; -+ } -+ else { -+ $this->config->set('log_dir', $log_dir); - } -- -- $this->config->set('log_dir', $log_dir); - - // re-set PHP error logging - if (($this->config->get('debug_level') & 1) && $this->config->get('log_driver') != 'syslog') { -@@ -453,6 +431,13 @@ class kolab_sync extends rcube - } - } - -+ /** -+ * Get the per-user log directory -+ */ -+ public function get_user_log_dir() -+ { -+ return $this->per_user_log_dir; -+ } - - /** - * Send HTTP 503 response. -diff --git a/lib/kolab_sync_logger.php b/lib/kolab_sync_logger.php -index 4e89757..83e5311 100644 ---- a/lib/kolab_sync_logger.php -+++ b/lib/kolab_sync_logger.php -@@ -59,7 +59,7 @@ class kolab_sync_logger extends Zend_Log - $rcube = rcube::get_instance(); - $logfile = $rcube->config->get('activesync_log_file'); - $format = $rcube->config->get('log_date_format', 'd-M-Y H:i:s O'); -- $log_dir = $rcube->config->get('log_dir'); -+ $log_dir = $rcube->get_user_log_dir() ?: $rcube->config->get('log_dir'); - - if (is_numeric($method)) { - $mode = $method; -@@ -88,6 +88,10 @@ class kolab_sync_logger extends Zend_Log - } - - $logfile = $log_dir . DIRECTORY_SEPARATOR . $file; -+ -+ if (version_compare(version_parse(RCUBE_VERSION), '1.4.0') >= 0) { -+ $logfile .= $rcube->config->get('log_file_ext', '.log'); -+ } - } - else if ($logfile[0] != '/') { - $logfile = $log_dir . DIRECTORY_SEPARATOR . $logfile; --- -2.14.3 -
View file
0003-Do-not-forget-to-bump-the-version.patch
Deleted
@@ -1,25 +0,0 @@ -From e6d5a6129bac243f65dea3a35b3e7c2c23fc7c97 Mon Sep 17 00:00:00 2001 -From: "Jeroen van Meeuwen (Kolab Systems)" <vanmeeuwen@kolabsys.com> -Date: Wed, 24 Jan 2018 08:59:10 +0100 -Subject: [PATCH 3/3] Do not forget to bump the version - ---- - lib/kolab_sync.php | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/kolab_sync.php b/lib/kolab_sync.php -index 539cb81..4b55566 100644 ---- a/lib/kolab_sync.php -+++ b/lib/kolab_sync.php -@@ -46,7 +46,7 @@ class kolab_sync extends rcube - public $password; - - const CHARSET = 'UTF-8'; -- const VERSION = "2.3.7"; -+ const VERSION = "2.3.8"; - - - /** --- -2.14.3 -
View file
0004-Fix-redundant-GETMETADATA-requests-when-listing-fold.patch
Deleted
@@ -1,37 +0,0 @@ -From a0043c23d93dc9404d1117f4ad6e87e58848d311 Mon Sep 17 00:00:00 2001 -From: Aleksander Machniak <machniak@kolabsys.com> -Date: Fri, 26 Jan 2018 13:16:31 +0100 -Subject: [PATCH 4/4] Fix redundant GETMETADATA requests when listing folders - -When listing folders we call GETMETADATA for all folders to get their types, -then for every folder without type set we did another GETMETADATA call. -This is now fixed. ---- - lib/kolab_sync_backend.php | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/kolab_sync_backend.php b/lib/kolab_sync_backend.php -index 315a803..13a4e34 100644 ---- a/lib/kolab_sync_backend.php -+++ b/lib/kolab_sync_backend.php -@@ -176,7 +176,7 @@ class kolab_sync_backend - } - - // Activesync folder identifier (serverId) -- $folder_type = $typedata[$folder]; -+ $folder_type = $typedata[$folder] ?: 'mail'; - $folder_id = self::folder_id($folder, $folder_type); - - $folders_list[$folder_id] = $this->folder_data($folder, $folder_type); -@@ -216,7 +216,7 @@ class kolab_sync_backend - array_pop($items); - - $parent_name = implode($items, $delim); -- $parent_type = $typedata[$parent_name]; -+ $parent_type = $typedata[$parent_name] ?: 'mail'; - $parent_id = self::folder_id($parent_name, $parent_type); - - if (isset($folders[$parent_id])) { --- -2.14.3 -
View file
debian.changelog
Changed
@@ -1,3 +1,9 @@ +kolab-syncroton (2.3.9-0~kolab1) unstable; urgency=low + + * Release 2.3.9 + + -- Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> Fri, 2 Mar 2018 15:13:40 +0200 + kolab-syncroton (2.3.8-0~kolab3) unstable; urgency=low * Fix redundant GETMETADATA requests for mail folders
View file
debian.series
Changed
@@ -1,4 +0,0 @@ -0001-Remove-activesync_user_debug-also-from-sample-config.patch -p1 -0002-Fix-logging-with-per_user_logging-true.patch -p1 -0003-Do-not-forget-to-bump-the-version.patch -p1 -0004-Fix-redundant-GETMETADATA-requests-when-listing-fold.patch -p1
View file
kolab-syncroton-2.3.8.tar.gz/config/config.inc.php.dist -> kolab-syncroton-2.3.9.tar.gz/config/config.inc.php.dist
Changed
@@ -8,9 +8,6 @@ // Enables logging to a separate directory for every user/device $config['activesync_user_log'] = false; -// Enable per-user debugging only if /var/log/kolab-syncroton/<username>/ folder exists -$config['activesync_user_debug'] = false; - // If specified all ActiveSync-related logs will be saved to this file // Note: This doesn't change Roundcube Framework log locations $config['activesync_log_file'] = null;
View file
kolab-syncroton-2.3.8.tar.gz/lib/ext/Syncroton/Command/FolderSync.php -> kolab-syncroton-2.3.9.tar.gz/lib/ext/Syncroton/Command/FolderSync.php
Changed
@@ -208,7 +208,28 @@ $updates[] = $change; } - + + // Find changes in case backend does not support folder changes detection. + // On some backends getChangedFolders() can return an empty result. + // We make sure all is up-to-date comparing folder properties. + foreach ($clientFoldersIds as $folderId) { + if (isset($serverFolders[$folderId])) { + $c = $clientFolders[$folderId]; + $s = $serverFolders[$folderId]; + + if ($c->displayName !== $s->displayName + || strval($c->parentId) !== strval($s->parentId) + || $c->type != $s->type + ) { + $c->displayName = $s->displayName; + $c->parentId = $s->parentId; + $c->type = $s->type; + + $updates[] = $c; + } + } + } + // calculate deleted entries $serverDiff = array_diff($clientFoldersIds, $serverFoldersIds); foreach ($serverDiff as $serverFolderId) {
View file
kolab-syncroton-2.3.8.tar.gz/lib/ext/Syncroton/Command/Sync.php -> kolab-syncroton-2.3.9.tar.gz/lib/ext/Syncroton/Command/Sync.php
Changed
@@ -544,7 +544,15 @@ // request already maybe } while (Syncroton_Server::validateSession() && time() - $intervalStart < $this->_heartbeatInterval - (Syncroton_Registry::getPingTimeout() + 10)); } - + + // First check for folders hierarchy changes + foreach ($this->_collections as $collectionData) { + if (! ($collectionData->folder instanceof Syncroton_Model_IFolder)) { + $sync->appendChild($this->_outputDom->createElementNS('uri:AirSync', 'Status', self::STATUS_FOLDER_HIERARCHY_HAS_CHANGED)); + return $this->_outputDom; + } + } + foreach($this->_collections as $collectionData) { $collectionChanges = 0; @@ -558,15 +566,8 @@ */ $deletedContentStates = array(); - // invalid collectionid provided - if (! ($collectionData->folder instanceof Syncroton_Model_IFolder)) { - $collection = $collections->appendChild($this->_outputDom->createElementNS('uri:AirSync', 'Collection')); - $collection->appendChild($this->_outputDom->createElementNS('uri:AirSync', 'SyncKey', 0)); - $collection->appendChild($this->_outputDom->createElementNS('uri:AirSync', 'CollectionId', $collectionData->collectionId)); - $collection->appendChild($this->_outputDom->createElementNS('uri:AirSync', 'Status', self::STATUS_FOLDER_HIERARCHY_HAS_CHANGED)); - // invalid synckey provided - } elseif (! ($collectionData->syncState instanceof Syncroton_Model_ISyncState)) { + if (! ($collectionData->syncState instanceof Syncroton_Model_ISyncState)) { // set synckey to 0 $collection = $collections->appendChild($this->_outputDom->createElementNS('uri:AirSync', 'Collection')); $collection->appendChild($this->_outputDom->createElementNS('uri:AirSync', 'SyncKey', 0));
View file
kolab-syncroton-2.3.8.tar.gz/lib/ext/Syncroton/Wbxml/Dtd/ActiveSync/CodePage5.php -> kolab-syncroton-2.3.9.tar.gz/lib/ext/Syncroton/Wbxml/Dtd/ActiveSync/CodePage5.php
Changed
@@ -19,11 +19,11 @@ class Syncroton_Wbxml_Dtd_ActiveSync_CodePage5 extends Syncroton_Wbxml_Dtd_ActiveSync_Abstract { protected $_codePageNumber = 5; - + protected $_codePageName = 'Move'; - - protected $_tags = array( - 'Moves' => 0x05, + + protected $_tags = array( + 'MoveItems' => 0x05, 'Move' => 0x06, 'SrcMsgId' => 0x07, 'SrcFldId' => 0x08,
View file
kolab-syncroton-2.3.8.tar.gz/lib/kolab_sync.php -> kolab-syncroton-2.3.9.tar.gz/lib/kolab_sync.php
Changed
@@ -46,7 +46,7 @@ public $password; const CHARSET = 'UTF-8'; - const VERSION = "2.3.7"; + const VERSION = "2.3.9"; /** @@ -142,7 +142,7 @@ $this->plugins->exec_hook('ready', array('task' => 'syncroton')); // Set log directory per-user - $this->set_log_dir($this->username ?: $_SERVER['PHP_AUTH_USER']); + $this->set_log_dir(); // Save user password for Roundcube Framework $this->password = $_SERVER['PHP_AUTH_PW']; @@ -384,13 +384,13 @@ /** * Set logging directory per-user */ - protected function set_log_dir($username) + protected function set_log_dir() { - if (empty($username)) { + if (empty($this->username)) { return; } - $this->logger->set_username($username); + $this->logger->set_username($this->username); $user_debug = $this->config->get('per_user_logging'); $user_log = $user_debug || $this->config->get('activesync_user_log'); @@ -400,15 +400,9 @@ } $log_dir = $this->config->get('log_dir'); - $log_dir .= DIRECTORY_SEPARATOR . $username; + $log_dir .= DIRECTORY_SEPARATOR . $this->username; - // in user_debug mode enable logging only if user directory exists - if ($user_debug) { - if (!is_dir($log_dir)) { - return; - } - } - else if (!is_dir($log_dir)) { + if (!$user_debug && !is_dir($log_dir)) { if (!mkdir($log_dir, 0770)) { return; } @@ -424,28 +418,12 @@ } } - // make sure we're using debug mode where possible, if ($user_debug) { - $this->config->set('debug_level', 1); - $this->config->set('memcache_debug', true); - $this->config->set('imap_debug', true); - $this->config->set('ldap_debug', true); - $this->config->set('smtp_debug', true); - $this->config->set('sql_debug', true); - - // SQL/IMAP debug need to be set directly on the object instance - // it's already initialized/configured - if ($db = $this->get_dbh()) { - $db->set_debug(true); - } - if ($storage = $this->get_storage()) { - $storage->set_debug(true); - } - - $this->logger->mode = kolab_sync_logger::DEBUG; + $this->per_user_log_dir = $log_dir; + } + else { + $this->config->set('log_dir', $log_dir); } - - $this->config->set('log_dir', $log_dir); // re-set PHP error logging if (($this->config->get('debug_level') & 1) && $this->config->get('log_driver') != 'syslog') { @@ -453,6 +431,13 @@ } } + /** + * Get the per-user log directory + */ + public function get_user_log_dir() + { + return $this->per_user_log_dir; + } /** * Send HTTP 503 response.
View file
kolab-syncroton-2.3.8.tar.gz/lib/kolab_sync_backend.php -> kolab-syncroton-2.3.9.tar.gz/lib/kolab_sync_backend.php
Changed
@@ -176,7 +176,7 @@ } // Activesync folder identifier (serverId) - $folder_type = $typedata[$folder]; + $folder_type = $typedata[$folder] ?: 'mail'; $folder_id = self::folder_id($folder, $folder_type); $folders_list[$folder_id] = $this->folder_data($folder, $folder_type); @@ -216,7 +216,7 @@ array_pop($items); $parent_name = implode($items, $delim); - $parent_type = $typedata[$parent_name]; + $parent_type = $typedata[$parent_name] ?: 'mail'; $parent_id = self::folder_id($parent_name, $parent_type); if (isset($folders[$parent_id])) {
View file
kolab-syncroton-2.3.8.tar.gz/lib/kolab_sync_data_calendar.php -> kolab-syncroton-2.3.9.tar.gz/lib/kolab_sync_data_calendar.php
Changed
@@ -440,13 +440,13 @@ $event['valarms'] = $this->to_kolab_alarm($data->reminder, $event); } - $event['attendees'] = array(); - $event['categories'] = array(); + $attendees = array(); + $categories = array(); // Categories if (isset($data->categories)) { foreach ($data->categories as $category) { - $event['categories'][] = $category; + $categories[] = $category; } } @@ -455,7 +455,7 @@ $name = $data->organizerName; $email = $data->organizerEmail; if ($name || $email) { - $event['attendees'][] = array( + $attendees[] = array( 'role' => 'ORGANIZER', 'name' => $name, 'email' => $email, @@ -473,12 +473,17 @@ if ($is_outlook && !empty($entry) && $data->timezone == $dummy_tz && $data->responseRequested && !empty($data->attendees) ) { - $event['attendees'] = $entry['attendees']; + $attendees = $entry['attendees']; } else if (isset($data->attendees)) { $statusMap = array_flip($this->attendeeStatusMap); foreach ($data->attendees as $attendee) { + if ($attendee->email && $attendee->email == $data->organizerEmail) { + continue; + } + $role = false; + if (isset($attendee->attendeeType)) { $role = array_search($attendee->attendeeType, $this->attendeeTypeMap); } @@ -499,7 +504,7 @@ $_attendee['rsvp'] = true; } } - else if (!empty($event['attendees'])) { + else if (!empty($event['attendees']) && !empty($attendee->email)) { // copy the old attendee status foreach ($event['attendees'] as $old_attendee) { if ($old_attendee['email'] == $_attendee['email'] && isset($old_attendee['status'])) { @@ -510,10 +515,13 @@ } } - $event['attendees'][] = $_attendee; + $attendees[] = $_attendee; } } + $event['attendees'] = $attendees; + $event['categories'] = $categories; + // recurrence (and exceptions) if (!$is_exception) { $event['recurrence'] = $this->recurrence_to_kolab($data, $folderid, $timezone); @@ -525,13 +533,16 @@ // Unfortunately Outlook also sends an update when no SEQUENCE bump // is needed, e.g. when updating attendee status. // We try our best to bump the SEQUENCE only when expected - if ($is_outlook && !empty($entry) && !$is_exception && !empty($data->attendees) && $data->timezone != $dummy_tz) { + if (!empty($entry) && !$is_exception && !empty($data->attendees) && $data->timezone != $dummy_tz) { if ($last_update = $this->getKolabDataItem($event, 'x-custom.X-ACTIVESYNC-DTSTAMP')) { $last_update = new DateTime($last_update); } if ($data->dtStamp && $data->dtStamp != $last_update) { - $event['sequence'] += 1; + if ($this->has_significant_changes($event, $entry)) { + $event['sequence']++; + $this->logger->debug('Found significant changes in the updated event. Bumping SEQUENCE to ' . $event['sequence']); + } } } @@ -954,4 +965,65 @@ $entry->endTime = $rounded; } } + + /** + * Check if the new event version has any significant changes + */ + protected function has_significant_changes($event, $old) + { + // Calendar namespace fields + foreach (array('allday', 'start', 'end', 'location', 'recurrence') as $key) { + if ($event[$key] != $old[$key]) { + // Comparing recurrence is tricky as there can be differences in default + // value handling. Let's try to handle most common cases + if ($key == 'recurrence' && $this->fixed_recurrence($event) == $this->fixed_recurrence($old)) { + continue; + } + + return true; + } + } + + if (count($event['attendees']) != count($old['attendees'])) { + return true; + } + + foreach ($event['attendees'] as $idx => $attendee) { + $old_attendee = $old['attendees'][$idx]; + + if ($old_attendee['email'] != $attendee['email'] + || ($attendee['role'] != 'ORGANIZER' + && $attendee['status'] != $old_attendee['status'] + && $attendee['status'] == 'NEEDS-ACTION') + ) { + return true; + } + } + + return false; + } + + /** + * Unify recurrence spec. for comparison + */ + protected function fixed_recurrence($event) + { + $rec = (array) $event['recurrence']; + + // Add BYDAY if not exists + if ($rec['FREQ'] == 'WEEKLY' && empty($rec['BYDAY'])) { + $days = array('SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'); + $day = $event['start']->format('w'); + + $rec['BYDAY'] = $days[$day]; + } + + if (!$rec['INTERVAL']) { + $rec['INTERVAL'] = 1; + } + + ksort($rec); + + return $rec; + } }
View file
kolab-syncroton-2.3.8.tar.gz/lib/kolab_sync_logger.php -> kolab-syncroton-2.3.9.tar.gz/lib/kolab_sync_logger.php
Changed
@@ -59,7 +59,7 @@ $rcube = rcube::get_instance(); $logfile = $rcube->config->get('activesync_log_file'); $format = $rcube->config->get('log_date_format', 'd-M-Y H:i:s O'); - $log_dir = $rcube->config->get('log_dir'); + $log_dir = $rcube->get_user_log_dir() ?: $rcube->config->get('log_dir'); if (is_numeric($method)) { $mode = $method; @@ -88,6 +88,10 @@ } $logfile = $log_dir . DIRECTORY_SEPARATOR . $file; + + if (version_compare(version_parse(RCUBE_VERSION), '1.4.0') >= 0) { + $logfile .= $rcube->config->get('log_file_ext', '.log'); + } } else if ($logfile[0] != '/') { $logfile = $log_dir . DIRECTORY_SEPARATOR . $logfile;
View file
kolab-syncroton.dsc
Changed
@@ -2,7 +2,7 @@ Source: kolab-syncroton Binary: kolab-syncroton Architecture: all -Version: 2.3.8-0~kolab3 +Version: 2.3.9-0~kolab1 Maintainer: Jeroen van Meeuwen (Kolab Systems) <vanmeeuwen@kolabsys.com> Uploaders: Paul Klos <kolab@klos2day.nl> Homepage: http://www.kolab.org/ @@ -12,5 +12,5 @@ Package-List: kolab-syncroton deb utils extra Files: - 00000000000000000000000000000000 0 kolab-syncroton-2.3.8.tar.gz + 00000000000000000000000000000000 0 kolab-syncroton-2.3.9.tar.gz 00000000000000000000000000000000 0 debian.tar.gz
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.