parent
9b4c9a0357
commit
7909c47b7c
@ -0,0 +1,23 @@ |
||||
<?php |
||||
/** |
||||
* @author Thomas Müller <thomas.mueller@tmit.eu> |
||||
* |
||||
* @copyright Copyright (c) 2016, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code 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. |
||||
* |
||||
* 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, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
$app = new \OCA\Federation\AppInfo\Application(); |
||||
$app->setupCron(); |
||||
@ -1,8 +1,7 @@ |
||||
<?php |
||||
|
||||
$dbConnection = \OC::$server->getDatabaseConnection(); |
||||
$l10n = \OC::$server->getL10N('federation'); |
||||
$dbHandler = new \OCA\Federation\DbHandler($dbConnection, $l10n); |
||||
$app = new \OCA\Federation\AppInfo\Application(); |
||||
$syncService = $app->getSyncService(); |
||||
|
||||
/** @var Symfony\Component\Console\Application $application */ |
||||
$application->add(new \OCA\Federation\Command\SyncFederationAddressBooks($dbHandler)); |
||||
$application->add(new \OCA\Federation\Command\SyncFederationAddressBooks($syncService)); |
||||
|
||||
@ -0,0 +1,23 @@ |
||||
<?php |
||||
/** |
||||
* @author Thomas Müller <thomas.mueller@tmit.eu> |
||||
* |
||||
* @copyright Copyright (c) 2016, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code 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. |
||||
* |
||||
* 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, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
$app = new \OCA\Federation\AppInfo\Application(); |
||||
$app->setupCron(); |
||||
@ -0,0 +1,55 @@ |
||||
<?php |
||||
|
||||
namespace OCA\Federation; |
||||
|
||||
use OCA\DAV\CardDAV\SyncService; |
||||
use Symfony\Component\Console\Command\Command; |
||||
use Symfony\Component\Console\Helper\ProgressBar; |
||||
use Symfony\Component\Console\Input\InputInterface; |
||||
use Symfony\Component\Console\Output\OutputInterface; |
||||
|
||||
class SyncFederationAddressBooks { |
||||
|
||||
/** @var DbHandler */ |
||||
protected $dbHandler; |
||||
|
||||
/** @var SyncService */ |
||||
private $syncService; |
||||
|
||||
/** |
||||
* @param DbHandler $dbHandler |
||||
*/ |
||||
function __construct(DbHandler $dbHandler) { |
||||
|
||||
$this->syncService = \OC::$server->query('CardDAVSyncService'); |
||||
$this->dbHandler = $dbHandler; |
||||
} |
||||
|
||||
public function syncThemAll(\Closure $callback) { |
||||
|
||||
$trustedServers = $this->dbHandler->getAllServer(); |
||||
foreach ($trustedServers as $trustedServer) { |
||||
$url = $trustedServer['url']; |
||||
$callback($url); |
||||
$sharedSecret = $trustedServer['shared_secret']; |
||||
$syncToken = $trustedServer['sync_token']; |
||||
|
||||
if (is_null($sharedSecret)) { |
||||
continue; |
||||
} |
||||
$targetBookId = sha1($url); |
||||
$targetPrincipal = "principals/system/system"; |
||||
$targetBookProperties = [ |
||||
'{DAV:}displayname' => $url |
||||
]; |
||||
try { |
||||
$newToken = $this->syncService->syncRemoteAddressBook($url, 'system', $sharedSecret, $syncToken, $targetPrincipal, $targetBookId, $targetBookProperties); |
||||
if ($newToken !== $syncToken) { |
||||
$this->dbHandler->setServerStatus($url, TrustedServers::STATUS_OK, $newToken); |
||||
} |
||||
} catch (\Exception $ex) { |
||||
$callback($url, $ex); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,43 @@ |
||||
<?php |
||||
/** |
||||
* @author Thomas Müller <thomas.mueller@tmit.eu> |
||||
* |
||||
* @copyright Copyright (c) 2016, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code 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. |
||||
* |
||||
* 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, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OCA\Federation; |
||||
|
||||
use OC\BackgroundJob\TimedJob; |
||||
use OCA\Federation\AppInfo\Application; |
||||
|
||||
class SyncJob extends TimedJob { |
||||
|
||||
public function __construct() { |
||||
// Run once a day |
||||
$this->setInterval(24 * 60 * 60); |
||||
} |
||||
|
||||
protected function run($argument) { |
||||
$app = new Application(); |
||||
$ss = $app->getSyncService(); |
||||
$ss->syncThemAll(function($url, $ex) { |
||||
if ($ex instanceof \Exception) { |
||||
\OC::$server->getLogger()->error("Error while syncing $url : " . $ex->getMessage(), ['app' => 'fed-sync']); |
||||
} |
||||
}); |
||||
} |
||||
} |
||||
Loading…
Reference in new issue