@@ -32,67 +32,67 @@ |
||
| 32 | 32 | use Psr\Log\LoggerInterface; |
| 33 | 33 | |
| 34 | 34 | class SyncFederationAddressBooks { |
| 35 | - protected DbHandler $dbHandler; |
|
| 36 | - private SyncService $syncService; |
|
| 37 | - private DiscoveryService $ocsDiscoveryService; |
|
| 38 | - private LoggerInterface $logger; |
|
| 35 | + protected DbHandler $dbHandler; |
|
| 36 | + private SyncService $syncService; |
|
| 37 | + private DiscoveryService $ocsDiscoveryService; |
|
| 38 | + private LoggerInterface $logger; |
|
| 39 | 39 | |
| 40 | - public function __construct(DbHandler $dbHandler, |
|
| 41 | - SyncService $syncService, |
|
| 42 | - IDiscoveryService $ocsDiscoveryService, |
|
| 43 | - LoggerInterface $logger |
|
| 44 | - ) { |
|
| 45 | - $this->syncService = $syncService; |
|
| 46 | - $this->dbHandler = $dbHandler; |
|
| 47 | - $this->ocsDiscoveryService = $ocsDiscoveryService; |
|
| 48 | - $this->logger = $logger; |
|
| 49 | - } |
|
| 40 | + public function __construct(DbHandler $dbHandler, |
|
| 41 | + SyncService $syncService, |
|
| 42 | + IDiscoveryService $ocsDiscoveryService, |
|
| 43 | + LoggerInterface $logger |
|
| 44 | + ) { |
|
| 45 | + $this->syncService = $syncService; |
|
| 46 | + $this->dbHandler = $dbHandler; |
|
| 47 | + $this->ocsDiscoveryService = $ocsDiscoveryService; |
|
| 48 | + $this->logger = $logger; |
|
| 49 | + } |
|
| 50 | 50 | |
| 51 | - /** |
|
| 52 | - * @param \Closure $callback |
|
| 53 | - */ |
|
| 54 | - public function syncThemAll(\Closure $callback) { |
|
| 55 | - $trustedServers = $this->dbHandler->getAllServer(); |
|
| 56 | - foreach ($trustedServers as $trustedServer) { |
|
| 57 | - $url = $trustedServer['url']; |
|
| 58 | - $callback($url, null); |
|
| 59 | - $sharedSecret = $trustedServer['shared_secret']; |
|
| 60 | - $syncToken = $trustedServer['sync_token']; |
|
| 51 | + /** |
|
| 52 | + * @param \Closure $callback |
|
| 53 | + */ |
|
| 54 | + public function syncThemAll(\Closure $callback) { |
|
| 55 | + $trustedServers = $this->dbHandler->getAllServer(); |
|
| 56 | + foreach ($trustedServers as $trustedServer) { |
|
| 57 | + $url = $trustedServer['url']; |
|
| 58 | + $callback($url, null); |
|
| 59 | + $sharedSecret = $trustedServer['shared_secret']; |
|
| 60 | + $syncToken = $trustedServer['sync_token']; |
|
| 61 | 61 | |
| 62 | - $endPoints = $this->ocsDiscoveryService->discover($url, 'FEDERATED_SHARING'); |
|
| 63 | - $cardDavUser = isset($endPoints['carddav-user']) ? $endPoints['carddav-user'] : 'system'; |
|
| 64 | - $addressBookUrl = isset($endPoints['system-address-book']) ? trim($endPoints['system-address-book'], '/') : 'remote.php/dav/addressbooks/system/system/system'; |
|
| 62 | + $endPoints = $this->ocsDiscoveryService->discover($url, 'FEDERATED_SHARING'); |
|
| 63 | + $cardDavUser = isset($endPoints['carddav-user']) ? $endPoints['carddav-user'] : 'system'; |
|
| 64 | + $addressBookUrl = isset($endPoints['system-address-book']) ? trim($endPoints['system-address-book'], '/') : 'remote.php/dav/addressbooks/system/system/system'; |
|
| 65 | 65 | |
| 66 | - if (is_null($sharedSecret)) { |
|
| 67 | - $this->logger->debug("Shared secret for $url is null"); |
|
| 68 | - continue; |
|
| 69 | - } |
|
| 70 | - $targetBookId = $trustedServer['url_hash']; |
|
| 71 | - $targetPrincipal = "principals/system/system"; |
|
| 72 | - $targetBookProperties = [ |
|
| 73 | - '{DAV:}displayname' => $url |
|
| 74 | - ]; |
|
| 75 | - try { |
|
| 76 | - $newToken = $this->syncService->syncRemoteAddressBook($url, $cardDavUser, $addressBookUrl, $sharedSecret, $syncToken, $targetBookId, $targetPrincipal, $targetBookProperties); |
|
| 77 | - if ($newToken !== $syncToken) { |
|
| 78 | - $this->dbHandler->setServerStatus($url, TrustedServers::STATUS_OK, $newToken); |
|
| 79 | - } else { |
|
| 80 | - $this->logger->debug("Sync Token for $url unchanged from previous sync"); |
|
| 81 | - } |
|
| 82 | - } catch (\Exception $ex) { |
|
| 83 | - if ($ex->getCode() === Http::STATUS_UNAUTHORIZED) { |
|
| 84 | - $this->dbHandler->setServerStatus($url, TrustedServers::STATUS_ACCESS_REVOKED); |
|
| 85 | - $this->logger->error("Server sync for $url failed because of revoked access.", [ |
|
| 86 | - 'exception' => $ex, |
|
| 87 | - ]); |
|
| 88 | - } else { |
|
| 89 | - $this->dbHandler->setServerStatus($url, TrustedServers::STATUS_FAILURE); |
|
| 90 | - $this->logger->error("Server sync for $url failed.", [ |
|
| 91 | - 'exception' => $ex, |
|
| 92 | - ]); |
|
| 93 | - } |
|
| 94 | - $callback($url, $ex); |
|
| 95 | - } |
|
| 96 | - } |
|
| 97 | - } |
|
| 66 | + if (is_null($sharedSecret)) { |
|
| 67 | + $this->logger->debug("Shared secret for $url is null"); |
|
| 68 | + continue; |
|
| 69 | + } |
|
| 70 | + $targetBookId = $trustedServer['url_hash']; |
|
| 71 | + $targetPrincipal = "principals/system/system"; |
|
| 72 | + $targetBookProperties = [ |
|
| 73 | + '{DAV:}displayname' => $url |
|
| 74 | + ]; |
|
| 75 | + try { |
|
| 76 | + $newToken = $this->syncService->syncRemoteAddressBook($url, $cardDavUser, $addressBookUrl, $sharedSecret, $syncToken, $targetBookId, $targetPrincipal, $targetBookProperties); |
|
| 77 | + if ($newToken !== $syncToken) { |
|
| 78 | + $this->dbHandler->setServerStatus($url, TrustedServers::STATUS_OK, $newToken); |
|
| 79 | + } else { |
|
| 80 | + $this->logger->debug("Sync Token for $url unchanged from previous sync"); |
|
| 81 | + } |
|
| 82 | + } catch (\Exception $ex) { |
|
| 83 | + if ($ex->getCode() === Http::STATUS_UNAUTHORIZED) { |
|
| 84 | + $this->dbHandler->setServerStatus($url, TrustedServers::STATUS_ACCESS_REVOKED); |
|
| 85 | + $this->logger->error("Server sync for $url failed because of revoked access.", [ |
|
| 86 | + 'exception' => $ex, |
|
| 87 | + ]); |
|
| 88 | + } else { |
|
| 89 | + $this->dbHandler->setServerStatus($url, TrustedServers::STATUS_FAILURE); |
|
| 90 | + $this->logger->error("Server sync for $url failed.", [ |
|
| 91 | + 'exception' => $ex, |
|
| 92 | + ]); |
|
| 93 | + } |
|
| 94 | + $callback($url, $ex); |
|
| 95 | + } |
|
| 96 | + } |
|
| 97 | + } |
|
| 98 | 98 | } |