/**
  * @param \Closure $callback
  */
 public function syncThemAll(\Closure $callback)
 {
     $trustedServers = $this->dbHandler->getAllServer();
     foreach ($trustedServers as $trustedServer) {
         $url = $trustedServer['url'];
         $callback($url, null);
         $sharedSecret = $trustedServer['shared_secret'];
         $syncToken = $trustedServer['sync_token'];
         if (is_null($sharedSecret)) {
             continue;
         }
         $targetBookId = $trustedServer['url_hash'];
         $targetPrincipal = "principals/system/system";
         $targetBookProperties = ['{DAV:}displayname' => $url];
         try {
             $newToken = $this->syncService->syncRemoteAddressBook($url, 'system', $sharedSecret, $syncToken, $targetBookId, $targetPrincipal, $targetBookProperties);
             if ($newToken !== $syncToken) {
                 $this->dbHandler->setServerStatus($url, TrustedServers::STATUS_OK, $newToken);
             }
         } catch (\Exception $ex) {
             if ($ex->getCode() === Http::STATUS_UNAUTHORIZED) {
                 $this->dbHandler->setServerStatus($url, TrustedServers::STATUS_ACCESS_REVOKED);
             }
             $callback($url, $ex);
         }
     }
 }
 /**
  * @param InputInterface $input
  * @param OutputInterface $output
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     $progress = new ProgressBar($output);
     $progress->start();
     $trustedServers = $this->dbHandler->getAllServer();
     foreach ($trustedServers as $trustedServer) {
         $progress->advance();
         $url = $trustedServer['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) {
             $output->writeln("Error while syncing {$url} : " . $ex->getMessage());
         }
     }
     $progress->finish();
     $output->writeln('');
 }
Example #3
0
 public function testGetServerStatus()
 {
     $this->dbHandler->addServer('server1');
     $this->dbHandler->setServerStatus('http://server1', TrustedServers::STATUS_OK);
     $this->assertSame(TrustedServers::STATUS_OK, $this->dbHandler->getServerStatus('https://server1'));
     // test sync token
     $this->dbHandler->setServerStatus('http://server1', TrustedServers::STATUS_OK, 'token1234567890');
     $servers = $this->dbHandler->getAllServer();
     $this->assertSame('token1234567890', $servers[0]['sync_token']);
 }
Example #4
0
 public function testGetServerStatus()
 {
     $this->dbHandler->addServer('server1');
     $this->dbHandler->setServerStatus('http://server1', TrustedServers::STATUS_OK);
     $this->assertSame(TrustedServers::STATUS_OK, $this->dbHandler->getServerStatus('https://server1'));
 }