diff options
102 files changed, 913 insertions, 179 deletions
diff --git a/.htaccess b/.htaccess index cddbd4f47de..4837df6adbe 100644 --- a/.htaccess +++ b/.htaccess @@ -37,6 +37,17 @@ SetEnv htaccessWorking true </IfModule> </IfModule> +<IfModule mod_php7.c> + php_value upload_max_filesize 513M + php_value post_max_size 513M + php_value memory_limit 512M + php_value mbstring.func_overload 0 + php_value default_charset 'UTF-8' + php_value output_buffering 0 + <IfModule mod_env.c> + SetEnv htaccessWorking true + </IfModule> +</IfModule> <IfModule mod_rewrite.c> RewriteEngine on RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}] diff --git a/.travis.yml b/.travis.yml index 0f6a027d061..c00213975f9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,6 +29,7 @@ install: script: + - sh -c "if [ '$TC' = 'syntax' ]; then composer install && lib/composer/bin/parallel-lint --exclude lib/composer/jakub-onderka/ --exclude 3rdparty .; fi" - sh -c "if [ '$TEST_DAV' != '1' ]; then echo \"Not testing DAV\"; fi" - sh -c "if [ '$TEST_DAV' = '1' ]; then echo \"Testing DAV\"; fi" @@ -42,5 +43,13 @@ matrix: env: DB=sqlite;TC=carddav - php: 5.4 env: DB=sqlite;TC=caldav + - php: 5.4 + env: DB=sqlite;TC=syntax + - php: 5.5 + env: DB=sqlite;TC=syntax + - php: 5.6 + env: DB=sqlite;TC=syntax + - php: 7.0 + env: DB=sqlite;TC=syntax fast_finish: true diff --git a/apps/dav/lib/caldav/birthdayservice.php b/apps/dav/lib/caldav/birthdayservice.php index 1cd52db8f48..7e1df189c4e 100644 --- a/apps/dav/lib/caldav/birthdayservice.php +++ b/apps/dav/lib/caldav/birthdayservice.php @@ -91,6 +91,11 @@ class BirthdayService { * @throws \Sabre\DAV\Exception\BadRequest */ public function ensureCalendarExists($principal, $id, $properties) { + $properties = array_merge([ + '{DAV:}displayname' => 'Contact birthdays', + '{http://apple.com/ns/ical/}calendar-color' => '#FFFFCA', + ], $properties); + $book = $this->calDavBackEnd->getCalendarByUri($principal, $id); if (!is_null($book)) { return $book; diff --git a/apps/dav/lib/caldav/caldavbackend.php b/apps/dav/lib/caldav/caldavbackend.php index fdfc8c399ed..bb50100d9a2 100644 --- a/apps/dav/lib/caldav/caldavbackend.php +++ b/apps/dav/lib/caldav/caldavbackend.php @@ -815,9 +815,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription function getCalendarObjectByUID($principalUri, $uid) { $query = $this->db->getQueryBuilder(); - $query->select([$query->createFunction('c.`uri` AS `calendaruri`'), $query->createFunction('co.`uri` AS `objecturi`')]) + $query->selectAlias('c.uri', 'calendaruri')->selectAlias('co.uri', 'objecturi') ->from('calendarobjects', 'co') - ->leftJoin('co', 'calendars', 'c', 'co.`calendarid` = c.`id`') + ->leftJoin('co', 'calendars', 'c', $query->expr()->eq('co.calendarid', 'c.id')) ->where($query->expr()->eq('c.principaluri', $query->createNamedParameter($principalUri))) ->andWhere($query->expr()->eq('co.uid', $query->createNamedParameter($uid))); diff --git a/apps/encryption/lib/crypto/encryption.php b/apps/encryption/lib/crypto/encryption.php index 10c8c4a290a..907a6437f5b 100644 --- a/apps/encryption/lib/crypto/encryption.php +++ b/apps/encryption/lib/crypto/encryption.php @@ -390,7 +390,11 @@ class Encryption implements IEncryptionModule { $publicKeys[$this->keyManager->getMasterKeyId()] = $this->keyManager->getPublicMasterKey(); } else { foreach ($accessList['users'] as $user) { - $publicKeys[$user] = $this->keyManager->getPublicKey($user); + try { + $publicKeys[$user] = $this->keyManager->getPublicKey($user); + } catch (PublicKeyMissingException $e) { + $this->logger->warning('Could not encrypt file for ' . $user . ': ' . $e->getMessage()); + } } } diff --git a/apps/encryption/tests/lib/crypto/encryptionTest.php b/apps/encryption/tests/lib/crypto/encryptionTest.php index 0ce1a2cb76a..8a228c2c215 100644 --- a/apps/encryption/tests/lib/crypto/encryptionTest.php +++ b/apps/encryption/tests/lib/crypto/encryptionTest.php @@ -304,7 +304,6 @@ class EncryptionTest extends TestCase { $this->assertSame($expected, $this->instance->update('path', 'user1', ['users' => ['user1']]) ); - } public function dataTestUpdate() { @@ -331,6 +330,43 @@ class EncryptionTest extends TestCase { } /** + * Test case if the public key is missing. ownCloud should still encrypt + * the file for the remaining users + */ + public function testUpdateMissingPublicKey() { + $this->keyManagerMock->expects($this->once()) + ->method('getFileKey')->willReturn('fileKey'); + + $this->keyManagerMock->expects($this->any()) + ->method('getPublicKey')->willReturnCallback( + function($user) { + throw new PublicKeyMissingException($user); + } + ); + + $this->keyManagerMock->expects($this->any()) + ->method('addSystemKeys') + ->willReturnCallback(function($accessList, $publicKeys) { + return $publicKeys; + }); + + $this->cryptMock->expects($this->once())->method('multiKeyEncrypt') + ->willReturnCallback( + function($fileKey, $publicKeys) { + $this->assertEmpty($publicKeys); + $this->assertSame('fileKey', $fileKey); + } + ); + + $this->keyManagerMock->expects($this->never())->method('getVersion'); + $this->keyManagerMock->expects($this->never())->method('setVersion'); + + $this->assertTrue( + $this->instance->update('path', 'user1', ['users' => ['user1']]) + ); + } + + /** * by default the encryption module should encrypt regular files, files in * files_versions and files in files_trashbin * diff --git a/apps/federation/l10n/pt_PT.js b/apps/federation/l10n/pt_PT.js index 3e900bf1a26..38ec142b689 100644 --- a/apps/federation/l10n/pt_PT.js +++ b/apps/federation/l10n/pt_PT.js @@ -6,6 +6,10 @@ OC.L10N.register( "No ownCloud server found" : "Nenhum servidor ownCloud encontrado", "Could not add server" : "Não foi possível adicionar servidor", "Federation" : "Federação", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação ownCloud permite-lhe conectar-se com outros ownClouds de confiança para partilhar directórios. Por exemplo, isto será utilizado para auto-completar utilizadores externos para partilhas federadas." + "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação ownCloud permite-lhe conectar-se com outros ownClouds de confiança para partilhar directórios. Por exemplo, isto será utilizado para auto-completar utilizadores externos para partilhas federadas.", + "Add server automatically once a federated share was created successfully" : "Adicionar o servidor automaticamente assim que uma partilha federada tenha sido criada com sucesso", + "Trusted ownCloud Servers" : "Servidores ownCloud de confiança", + "+ Add ownCloud server" : "+ Adicionar servidor ownCloud", + "ownCloud Server" : "Servidor ownCloud" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/federation/l10n/pt_PT.json b/apps/federation/l10n/pt_PT.json index 2758c6260e6..796a2127170 100644 --- a/apps/federation/l10n/pt_PT.json +++ b/apps/federation/l10n/pt_PT.json @@ -4,6 +4,10 @@ "No ownCloud server found" : "Nenhum servidor ownCloud encontrado", "Could not add server" : "Não foi possível adicionar servidor", "Federation" : "Federação", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação ownCloud permite-lhe conectar-se com outros ownClouds de confiança para partilhar directórios. Por exemplo, isto será utilizado para auto-completar utilizadores externos para partilhas federadas." + "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "Federação ownCloud permite-lhe conectar-se com outros ownClouds de confiança para partilhar directórios. Por exemplo, isto será utilizado para auto-completar utilizadores externos para partilhas federadas.", + "Add server automatically once a federated share was created successfully" : "Adicionar o servidor automaticamente assim que uma partilha federada tenha sido criada com sucesso", + "Trusted ownCloud Servers" : "Servidores ownCloud de confiança", + "+ Add ownCloud server" : "+ Adicionar servidor ownCloud", + "ownCloud Server" : "Servidor ownCloud" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/federation/l10n/sv.js b/apps/federation/l10n/sv.js index 7d1d5d68edc..7855084e268 100644 --- a/apps/federation/l10n/sv.js +++ b/apps/federation/l10n/sv.js @@ -1,13 +1,13 @@ OC.L10N.register( "federation", { - "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownClouds", + "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownCloud-servrar", "Server is already in the list of trusted servers." : "Servern finns redan i listan", "No ownCloud server found" : "Ingen ownCloud-server kunde hittas", "Could not add server" : "Kunde inte lägga till server", - "Federation" : "Förbund", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"OwnCloud Federation\" låter dig ansluta till andra pålitliga ownClouds för att dela användarkatalogen. T.ex. används detta för att automagiskt fylla i externa användares namn när man delar över förbundna ownCloud-servrar", - "Add server automatically once a federated share was created successfully" : "Lägg till servern automagiskt så fort en lyckad förbundsdelning skapats", + "Federation" : "Federerad delning", + "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"ownCloud Federation\" låter dig ansluta till andra pålitliga ownCloud-servrar för att dela användarkatalogen. Detta används t.ex. för att automatiskt fylla i externa användares namn när man delar över federerade ownCloud-servrar", + "Add server automatically once a federated share was created successfully" : "Lägg till servern automatiskt så fort en lyckad federerad delning skapats", "Trusted ownCloud Servers" : "Pålitliga ownCloud-servrar", "+ Add ownCloud server" : "+ Lägg till ownCloud-server", "ownCloud Server" : "ownCloud-server" diff --git a/apps/federation/l10n/sv.json b/apps/federation/l10n/sv.json index 2091418a371..c27008a5312 100644 --- a/apps/federation/l10n/sv.json +++ b/apps/federation/l10n/sv.json @@ -1,11 +1,11 @@ { "translations": { - "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownClouds", + "Server added to the list of trusted ownClouds" : "Servern är tillagd till listan över pålitliga ownCloud-servrar", "Server is already in the list of trusted servers." : "Servern finns redan i listan", "No ownCloud server found" : "Ingen ownCloud-server kunde hittas", "Could not add server" : "Kunde inte lägga till server", - "Federation" : "Förbund", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"OwnCloud Federation\" låter dig ansluta till andra pålitliga ownClouds för att dela användarkatalogen. T.ex. används detta för att automagiskt fylla i externa användares namn när man delar över förbundna ownCloud-servrar", - "Add server automatically once a federated share was created successfully" : "Lägg till servern automagiskt så fort en lyckad förbundsdelning skapats", + "Federation" : "Federerad delning", + "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "\"ownCloud Federation\" låter dig ansluta till andra pålitliga ownCloud-servrar för att dela användarkatalogen. Detta används t.ex. för att automatiskt fylla i externa användares namn när man delar över federerade ownCloud-servrar", + "Add server automatically once a federated share was created successfully" : "Lägg till servern automatiskt så fort en lyckad federerad delning skapats", "Trusted ownCloud Servers" : "Pålitliga ownCloud-servrar", "+ Add ownCloud server" : "+ Lägg till ownCloud-server", "ownCloud Server" : "ownCloud-server" diff --git a/apps/federation/l10n/zh_CN.js b/apps/federation/l10n/zh_CN.js index 7b50e5900e7..a84f6350671 100644 --- a/apps/federation/l10n/zh_CN.js +++ b/apps/federation/l10n/zh_CN.js @@ -6,6 +6,10 @@ OC.L10N.register( "No ownCloud server found" : "没有找到对应服务器", "Could not add server" : "无法添加服务器", "Federation" : "联合", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。" + "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。", + "Add server automatically once a federated share was created successfully" : "一旦联合共享创建成功自动添加服务器", + "Trusted ownCloud Servers" : "可信 ownCloud 服务器", + "+ Add ownCloud server" : "+ 添加 ownCloud 服务器", + "ownCloud Server" : "ownCloud 服务器" }, "nplurals=1; plural=0;"); diff --git a/apps/federation/l10n/zh_CN.json b/apps/federation/l10n/zh_CN.json index 6ca1d5dda4d..de8663eb7ab 100644 --- a/apps/federation/l10n/zh_CN.json +++ b/apps/federation/l10n/zh_CN.json @@ -4,6 +4,10 @@ "No ownCloud server found" : "没有找到对应服务器", "Could not add server" : "无法添加服务器", "Federation" : "联合", - "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。" + "ownCloud Federation allows you to connect with other trusted ownClouds to exchange the user directory. For example this will be used to auto-complete external users for federated sharing." : "联合云系统使您可以方便快速的和其他用户共享文件。", + "Add server automatically once a federated share was created successfully" : "一旦联合共享创建成功自动添加服务器", + "Trusted ownCloud Servers" : "可信 ownCloud 服务器", + "+ Add ownCloud server" : "+ 添加 ownCloud 服务器", + "ownCloud Server" : "ownCloud 服务器" },"pluralForm" :"nplurals=1; plural=0;" }
\ No newline at end of file diff --git a/apps/files/l10n/zh_CN.js b/apps/files/l10n/zh_CN.js index c9a07a0199c..faf803c704e 100644 --- a/apps/files/l10n/zh_CN.js +++ b/apps/files/l10n/zh_CN.js @@ -28,6 +28,7 @@ OC.L10N.register( "Unable to upload {filename} as it is a directory or has 0 bytes" : "不能上传文件 {filename} ,由于它是一个目录或者为0字节", "Total file size {size1} exceeds upload limit {size2}" : "总文件大小 {size1} 超过上传限制 {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "没有足够的可用空间,您正在上传 {size1} 的文件但是只有 {size2} 可用。", + "Error uploading file \"{fileName}\": {message}" : "上传文件错误 \"{fileName}\": {message}", "Could not get result from server." : "不能从服务器得到结果", "File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。", "Actions" : "动作", diff --git a/apps/files/l10n/zh_CN.json b/apps/files/l10n/zh_CN.json index 1ae61d0119b..96aa0bb6f13 100644 --- a/apps/files/l10n/zh_CN.json +++ b/apps/files/l10n/zh_CN.json @@ -26,6 +26,7 @@ "Unable to upload {filename} as it is a directory or has 0 bytes" : "不能上传文件 {filename} ,由于它是一个目录或者为0字节", "Total file size {size1} exceeds upload limit {size2}" : "总文件大小 {size1} 超过上传限制 {size2}", "Not enough free space, you are uploading {size1} but only {size2} is left" : "没有足够的可用空间,您正在上传 {size1} 的文件但是只有 {size2} 可用。", + "Error uploading file \"{fileName}\": {message}" : "上传文件错误 \"{fileName}\": {message}", "Could not get result from server." : "不能从服务器得到结果", "File upload is in progress. Leaving the page now will cancel the upload." : "文件正在上传中。现在离开此页会导致上传动作被取消。", "Actions" : "动作", diff --git a/apps/files_external/l10n/sl.js b/apps/files_external/l10n/sl.js index 819d38d6577..c3711b1e0ca 100644 --- a/apps/files_external/l10n/sl.js +++ b/apps/files_external/l10n/sl.js @@ -9,6 +9,7 @@ OC.L10N.register( "Storage with id \"%i\" not found" : "Shrambe z ID \"%i\" ni mogoče najti.", "Invalid mount point" : "Neveljavna priklopna točka", "Invalid storage backend \"%s\"" : "Neveljaven ozadnji program shrambe \"%s\"", + "Unsatisfied authentication mechanism parameters" : "Nezadovoljivi parametri mehanizma overitve", "Insufficient data: %s" : "Nepopolni podatki: %s", "%s" : "%s", "Personal" : "Osebno", @@ -29,6 +30,7 @@ OC.L10N.register( "(group)" : "(skupina)", "Admin defined" : "Skrbnik je določen", "Saved" : "Shranjeno", + "Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}", "There was an error with message: " : "Prišlo je do napake s sporočilom:", "External mount error" : "Notranja napaka priklopa", "external-storage" : "zunanja-shramba", diff --git a/apps/files_external/l10n/sl.json b/apps/files_external/l10n/sl.json index c002757fb50..3f68c848ba4 100644 --- a/apps/files_external/l10n/sl.json +++ b/apps/files_external/l10n/sl.json @@ -7,6 +7,7 @@ "Storage with id \"%i\" not found" : "Shrambe z ID \"%i\" ni mogoče najti.", "Invalid mount point" : "Neveljavna priklopna točka", "Invalid storage backend \"%s\"" : "Neveljaven ozadnji program shrambe \"%s\"", + "Unsatisfied authentication mechanism parameters" : "Nezadovoljivi parametri mehanizma overitve", "Insufficient data: %s" : "Nepopolni podatki: %s", "%s" : "%s", "Personal" : "Osebno", @@ -27,6 +28,7 @@ "(group)" : "(skupina)", "Admin defined" : "Skrbnik je določen", "Saved" : "Shranjeno", + "Couldn't get the list of external mount points: {type}" : "Ni mogoče pridobiti seznama zunanjih priklopnih točk: {type}", "There was an error with message: " : "Prišlo je do napake s sporočilom:", "External mount error" : "Notranja napaka priklopa", "external-storage" : "zunanja-shramba", diff --git a/apps/files_external/lib/config/configadapter.php b/apps/files_external/lib/config/configadapter.php index d85e0f45631..a19a111d3d9 100644 --- a/apps/files_external/lib/config/configadapter.php +++ b/apps/files_external/lib/config/configadapter.php @@ -34,7 +34,7 @@ use OCP\IUser; use OCA\Files_external\Service\UserStoragesService; use OCA\Files_External\Service\UserGlobalStoragesService; use OCA\Files_External\Lib\StorageConfig; -use OCA\Files_External\Lib\FailedStorage; +use OC\Files\Storage\FailedStorage; use OCP\Files\StorageNotAvailableException; /** diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index 67d1a23f5a7..25acae95fa3 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -30,6 +30,7 @@ namespace OC\Files\Storage; +use Icewind\SMB\Exception\ConnectException; use Icewind\SMB\Exception\Exception; use Icewind\SMB\Exception\ForbiddenException; use Icewind\SMB\Exception\NotFoundException; @@ -39,6 +40,7 @@ use Icewind\Streams\CallbackWrapper; use Icewind\Streams\IteratorDirectory; use OC\Cache\CappedMemoryCache; use OC\Files\Filesystem; +use OCP\Files\StorageNotAvailableException; class SMB extends Common { /** @@ -104,26 +106,36 @@ class SMB extends Common { /** * @param string $path * @return \Icewind\SMB\IFileInfo + * @throws StorageNotAvailableException */ protected function getFileInfo($path) { - $path = $this->buildPath($path); - if (!isset($this->statCache[$path])) { - $this->statCache[$path] = $this->share->stat($path); + try { + $path = $this->buildPath($path); + if (!isset($this->statCache[$path])) { + $this->statCache[$path] = $this->share->stat($path); + } + return $this->statCache[$path]; + } catch (ConnectException $e) { + throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); } - return $this->statCache[$path]; } /** * @param string $path * @return \Icewind\SMB\IFileInfo[] + * @throws StorageNotAvailableException */ protected function getFolderContents($path) { - $path = $this->buildPath($path); - $files = $this->share->dir($path); - foreach ($files as $file) { - $this->statCache[$path . '/' . $file->getName()] = $file; + try { + $path = $this->buildPath($path); + $files = $this->share->dir($path); + foreach ($files as $file) { + $this->statCache[$path . '/' . $file->getName()] = $file; + } + return $files; + } catch (ConnectException $e) { + throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); } - return $files; } /** @@ -163,6 +175,8 @@ class SMB extends Common { return false; } catch (ForbiddenException $e) { return false; + } catch (ConnectException $e) { + throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); } } @@ -245,6 +259,8 @@ class SMB extends Common { return false; } catch (ForbiddenException $e) { return false; + } catch (ConnectException $e) { + throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); } } @@ -265,16 +281,22 @@ class SMB extends Common { return false; } catch (ForbiddenException $e) { return false; + } catch (ConnectException $e) { + throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); } } public function touch($path, $time = null) { - if (!$this->file_exists($path)) { - $fh = $this->share->write($this->buildPath($path)); - fclose($fh); - return true; + try { + if (!$this->file_exists($path)) { + $fh = $this->share->write($this->buildPath($path)); + fclose($fh); + return true; + } + return false; + } catch (ConnectException $e) { + throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); } - return false; } public function opendir($path) { @@ -307,6 +329,8 @@ class SMB extends Common { try { $this->share->mkdir($path); return true; + } catch (ConnectException $e) { + throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); } catch (Exception $e) { return false; } @@ -320,6 +344,8 @@ class SMB extends Common { return false; } catch (ForbiddenException $e) { return false; + } catch (ConnectException $e) { + throw new StorageNotAvailableException($e->getMessage(), $e->getCode(), $e); } } diff --git a/apps/files_external/service/dbconfigservice.php b/apps/files_external/service/dbconfigservice.php index 5bbc3b23682..a37c541f045 100644 --- a/apps/files_external/service/dbconfigservice.php +++ b/apps/files_external/service/dbconfigservice.php @@ -92,7 +92,7 @@ class DBConfigService { protected function getForQuery(IQueryBuilder $builder, $type, $value) { $query = $builder->select(['m.mount_id', 'mount_point', 'storage_backend', 'auth_backend', 'priority', 'm.type']) ->from('external_mounts', 'm') - ->innerJoin('m', 'external_applicable', 'a', 'm.mount_id = a.mount_id') + ->innerJoin('m', 'external_applicable', 'a', $builder->expr()->eq('m.mount_id', 'a.mount_id')) ->where($builder->expr()->eq('a.type', $builder->createNamedParameter($type, IQueryBuilder::PARAM_INT))); if (is_null($value)) { @@ -148,7 +148,7 @@ class DBConfigService { $query = $builder->select(['m.mount_id', 'mount_point', 'storage_backend', 'auth_backend', 'priority', 'm.type']) ->from('external_mounts', 'm') - ->innerJoin('m', 'external_applicable', 'a', 'm.mount_id = a.mount_id') + ->innerJoin('m', 'external_applicable', 'a', $builder->expr()->eq('m.mount_id', 'a.mount_id')) ->where($builder->expr()->eq('a.type', $builder->createNamedParameter($type, IQueryBuilder::PARAM_INT))) ->andWhere($builder->expr()->in('a.value', $params)); $query->andWhere($builder->expr()->eq('m.type', $builder->expr()->literal(self::MOUNT_TYPE_ADMIN, IQueryBuilder::PARAM_INT))); diff --git a/apps/files_external/tests/env/start-swift-ceph.sh b/apps/files_external/tests/env/start-swift-ceph.sh index 357512ae4d6..e884087c248 100755 --- a/apps/files_external/tests/env/start-swift-ceph.sh +++ b/apps/files_external/tests/env/start-swift-ceph.sh @@ -63,14 +63,15 @@ echo "${docker_image} container: $container" # put container IDs into a file to drop them after the test run (keep in mind that multiple tests run in parallel on the same host) echo $container >> $thisFolder/dockerContainerCeph.$EXECUTOR_NUMBER.swift -echo -n "Waiting for ceph initialization" +echo "Waiting for ceph initialization" ready=$(timeout 600 cat "$notify_sock") if [[ $ready != 'READY=1' ]]; then echo "[ERROR] Waited 600 seconds, no response" >&2 docker logs $container exit 1 fi -sleep 1 +echo "Waiting another 15 seconds" +sleep 15 cat > $thisFolder/config.swift.php <<DELIM <?php diff --git a/apps/files_sharing/api/server2server.php b/apps/files_sharing/api/server2server.php index 6da95ed6549..a3d58880f70 100644 --- a/apps/files_sharing/api/server2server.php +++ b/apps/files_sharing/api/server2server.php @@ -178,7 +178,7 @@ class Server2Server { if ($share) { // userId must be set to the user who unshares - \OCP\Share::unshare($share['item_type'], $share['item_source'], $share['share_type'], null, $share['uid_owner']); + \OCP\Share::unshare($share['item_type'], $share['item_source'], $share['share_type'], $share['share_with'], $share['uid_owner']); list($file, $link) = $this->getFile($share['uid_owner'], $share['file_source']); diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js index ac36c865c11..8270a39e6d7 100644 --- a/apps/files_sharing/l10n/zh_CN.js +++ b/apps/files_sharing/l10n/zh_CN.js @@ -25,8 +25,11 @@ OC.L10N.register( "You received a new remote share from %s" : "您从%s收到了新的远程分享", "%1$s accepted remote share %2$s" : "%1$s 接受了远程分享 %2$s", "%1$s declined remote share %2$s" : "%1$s 拒绝了远程分享 %2$s", + "Public shared folder %1$s was downloaded" : "公共共享文件夹 %1$s 已被下载", + "Public shared file %1$s was downloaded" : "公共共享文件 %1$s 已被下载", "You shared %1$s with %2$s" : "您把 %1$s分享给了 %2$s", "You shared %1$s with group %2$s" : "你把 %1$s 分享给了 %2$s 组", + "%2$s shared %1$s via link" : "%2$s 以链接方式共享 %1$s", "You shared %1$s via link" : "您通过链接共享了 %1$s", "%2$s shared %1$s with you" : "%2$s 把 %1$s 分享给了您", "Downloaded via public link" : "通过公开链接下载", @@ -34,9 +37,13 @@ OC.L10N.register( "Shared with %3$s by %2$s" : "由 %2$s 共享给 %3$s", "Shared with group %2$s" : "共享给组%2$s", "Shared with group %3$s by %2$s" : "由 %2$s 共享给组 %3$s", + "Shared via link by %2$s" : "%2$s 以链接方式共享", "Shared via public link" : "通过公开链接共享", "Removed public link" : "移除公开链接", + "%2$s removed public link" : "%2$s 移除了公共链接", "Public link expired" : "公开链接已过期", + "Public link of %2$s expired" : "%2$s 的公开链接已过期", + "Shared by %2$s" : "由 %2$s 共享", "Shares" : "共享", "Accept" : "接受", "Decline" : "拒绝", @@ -62,6 +69,8 @@ OC.L10N.register( "Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享", "Federated Cloud" : "联合云", "Your Federated Cloud ID:" : "你的联合云ID:", + "Share it:" : "分享它:", + "Add to your website" : "添加到您的网站", "Share with me via ownCloud" : "通过联合云与我共享", "HTML Code:" : "HTML 代码:" }, diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json index 29cee2c4043..c59c4684c39 100644 --- a/apps/files_sharing/l10n/zh_CN.json +++ b/apps/files_sharing/l10n/zh_CN.json @@ -23,8 +23,11 @@ "You received a new remote share from %s" : "您从%s收到了新的远程分享", "%1$s accepted remote share %2$s" : "%1$s 接受了远程分享 %2$s", "%1$s declined remote share %2$s" : "%1$s 拒绝了远程分享 %2$s", + "Public shared folder %1$s was downloaded" : "公共共享文件夹 %1$s 已被下载", + "Public shared file %1$s was downloaded" : "公共共享文件 %1$s 已被下载", "You shared %1$s with %2$s" : "您把 %1$s分享给了 %2$s", "You shared %1$s with group %2$s" : "你把 %1$s 分享给了 %2$s 组", + "%2$s shared %1$s via link" : "%2$s 以链接方式共享 %1$s", "You shared %1$s via link" : "您通过链接共享了 %1$s", "%2$s shared %1$s with you" : "%2$s 把 %1$s 分享给了您", "Downloaded via public link" : "通过公开链接下载", @@ -32,9 +35,13 @@ "Shared with %3$s by %2$s" : "由 %2$s 共享给 %3$s", "Shared with group %2$s" : "共享给组%2$s", "Shared with group %3$s by %2$s" : "由 %2$s 共享给组 %3$s", + "Shared via link by %2$s" : "%2$s 以链接方式共享", "Shared via public link" : "通过公开链接共享", "Removed public link" : "移除公开链接", + "%2$s removed public link" : "%2$s 移除了公共链接", "Public link expired" : "公开链接已过期", + "Public link of %2$s expired" : "%2$s 的公开链接已过期", + "Shared by %2$s" : "由 %2$s 共享", "Shares" : "共享", "Accept" : "接受", "Decline" : "拒绝", @@ -60,6 +67,8 @@ "Allow users on this server to receive shares from other servers" : "允许用户从其他服务器接收分享", "Federated Cloud" : "联合云", "Your Federated Cloud ID:" : "你的联合云ID:", + "Share it:" : "分享它:", + "Add to your website" : "添加到您的网站", "Share with me via ownCloud" : "通过联合云与我共享", "HTML Code:" : "HTML 代码:" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/files_sharing/lib/external/scanner.php b/apps/files_sharing/lib/external/scanner.php index bfb9e817f09..1cc6cf8f5f9 100644 --- a/apps/files_sharing/lib/external/scanner.php +++ b/apps/files_sharing/lib/external/scanner.php @@ -36,6 +36,10 @@ class Scanner extends \OC\Files\Cache\Scanner { /** {@inheritDoc} */ public function scan($path, $recursive = self::SCAN_RECURSIVE, $reuse = -1, $lock = true) { + if(!$this->storage->remoteIsOwnCloud()) { + return parent::scan($path, $recursive, $recursive, $lock); + } + $this->scanAll(); } @@ -90,7 +94,6 @@ class Scanner extends \OC\Files\Cache\Scanner { } if ($data['status'] === 'success') { $this->addResult($data['data'], ''); - } elseif ($data['status'] === 'unsupported') { } else { throw new \Exception( 'Error while scanning remote share: "' . diff --git a/apps/files_sharing/lib/external/storage.php b/apps/files_sharing/lib/external/storage.php index 16fd84bdba5..8fe7af66044 100644 --- a/apps/files_sharing/lib/external/storage.php +++ b/apps/files_sharing/lib/external/storage.php @@ -136,9 +136,6 @@ class Storage extends DAV implements ISharedStorage { if (!$storage) { $storage = $this; } - if(!$this->remoteIsOwnCloud()) { - return parent::getScanner($path, $storage); - } if (!isset($this->scanner)) { $this->scanner = new Scanner($storage); } @@ -266,7 +263,7 @@ class Storage extends DAV implements ISharedStorage { * * @return bool */ - private function remoteIsOwnCloud() { + public function remoteIsOwnCloud() { if(defined('PHPUNIT_RUN') || !$this->testRemoteUrl($this->getRemote() . '/status.php')) { return false; } diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 6998f94698e..8f4888d20e2 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -31,6 +31,7 @@ namespace OC\Files\Storage; use OC\Files\Filesystem; +use OC\Files\Cache\FailedCache; use OCA\Files_Sharing\ISharedStorage; use OCP\Constants; use OCP\Files\Cache\ICacheEntry; @@ -67,10 +68,16 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { */ private $sourceStorage; + /** + * @var \OCP\ILogger + */ + private $logger; + public function __construct($arguments) { $this->share = $arguments['share']; $this->ownerView = $arguments['ownerView']; $this->user = $arguments['user']; + $this->logger = \OC::$server->getLogger(); } private function init() { @@ -78,15 +85,19 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { return; } $this->initialized = true; - Filesystem::initMountPoints($this->share['uid_owner']); - $sourcePath = $this->ownerView->getPath($this->share['file_source']); - list($this->sourceStorage, $sourceInternalPath) = $this->ownerView->resolvePath($sourcePath); - $this->sourceRootInfo = $this->sourceStorage->getCache()->get($sourceInternalPath); + try { + Filesystem::initMountPoints($this->share['uid_owner']); + $sourcePath = $this->ownerView->getPath($this->share['file_source']); + list($this->sourceStorage, $sourceInternalPath) = $this->ownerView->resolvePath($sourcePath); + $this->sourceRootInfo = $this->sourceStorage->getCache()->get($sourceInternalPath); + } catch (\Exception $e) { + $this->logger->logException($e); + } } private function isValid() { $this->init(); - return ($this->sourceRootInfo->getPermissions() & Constants::PERMISSION_SHARE) === Constants::PERMISSION_SHARE; + return $this->sourceRootInfo && ($this->sourceRootInfo->getPermissions() & Constants::PERMISSION_SHARE) === Constants::PERMISSION_SHARE; } /** @@ -568,6 +579,9 @@ class Shared extends \OC\Files\Storage\Common implements ISharedStorage { public function getCache($path = '', $storage = null) { $this->init(); + if (is_null($this->sourceStorage)) { + return new FailedCache(false); + } if (!$storage) { $storage = $this; } diff --git a/apps/files_sharing/tests/server2server.php b/apps/files_sharing/tests/server2server.php index 298f1008f71..7714f274c6d 100644 --- a/apps/files_sharing/tests/server2server.php +++ b/apps/files_sharing/tests/server2server.php @@ -147,6 +147,38 @@ class Test_Files_Sharing_S2S_OCS_API extends TestCase { $this->assertEmpty($data); } + function testDeclineShareMultiple() { + $dummy = \OCP\DB::prepare(' + INSERT INTO `*PREFIX*share` + (`share_type`, `uid_owner`, `item_type`, `item_source`, `item_target`, `file_source`, `file_target`, `permissions`, `stime`, `token`, `share_with`) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + '); + $dummy->execute(array(\OCP\Share::SHARE_TYPE_REMOTE, self::TEST_FILES_SHARING_API_USER1, 'test', '1', '/1', '1', '/test.txt', '1', time(), 'token1', 'foo@bar')); + $dummy->execute(array(\OCP\Share::SHARE_TYPE_REMOTE, self::TEST_FILES_SHARING_API_USER1, 'test', '1', '/1', '1', '/test.txt', '1', time(), 'token2', 'bar@bar')); + + $verify = \OCP\DB::prepare('SELECT * FROM `*PREFIX*share`'); + $result = $verify->execute(); + $data = $result->fetchAll(); + $this->assertCount(2, $data); + + $_POST['token'] = 'token1'; + $this->s2s->declineShare(array('id' => $data[0]['id'])); + + $verify = \OCP\DB::prepare('SELECT * FROM `*PREFIX*share`'); + $result = $verify->execute(); + $data = $result->fetchAll(); + $this->assertCount(1, $data); + $this->assertEquals('bar@bar', $data[0]['share_with']); + + $_POST['token'] = 'token2'; + $this->s2s->declineShare(array('id' => $data[0]['id'])); + + $verify = \OCP\DB::prepare('SELECT * FROM `*PREFIX*share`'); + $result = $verify->execute(); + $data = $result->fetchAll(); + $this->assertEmpty($data); + } + /** * @dataProvider dataTestDeleteUser */ diff --git a/apps/updatenotification/l10n/pt_PT.js b/apps/updatenotification/l10n/pt_PT.js index 5fa78c9e0b6..7bcc1a720dc 100644 --- a/apps/updatenotification/l10n/pt_PT.js +++ b/apps/updatenotification/l10n/pt_PT.js @@ -1,10 +1,13 @@ OC.L10N.register( "updatenotification", { + "Updated channel" : "Actualizar canal", "{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informação sobre como atualizar.", "Updater" : "actualizar", "A new version is available: %s" : "Está disponível uma nova versão: %s", "Open updater" : "Abrir atualizador", + "Your version is up to date." : "A sua versão está actualizada.", + "Checked on %s" : "Verificado em %s", "Update channel:" : "Atualizar canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Você pode sempre atualizar para uma nova versão / canal experimental. Mas nunca poderá recuar para um canal mais estável." }, diff --git a/apps/updatenotification/l10n/pt_PT.json b/apps/updatenotification/l10n/pt_PT.json index 27b49140cc3..dd7e6760dcf 100644 --- a/apps/updatenotification/l10n/pt_PT.json +++ b/apps/updatenotification/l10n/pt_PT.json @@ -1,8 +1,11 @@ { "translations": { + "Updated channel" : "Actualizar canal", "{version} is available. Get more information on how to update." : "{version} está disponível. Obtenha mais informação sobre como atualizar.", "Updater" : "actualizar", "A new version is available: %s" : "Está disponível uma nova versão: %s", "Open updater" : "Abrir atualizador", + "Your version is up to date." : "A sua versão está actualizada.", + "Checked on %s" : "Verificado em %s", "Update channel:" : "Atualizar canal:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "Você pode sempre atualizar para uma nova versão / canal experimental. Mas nunca poderá recuar para um canal mais estável." },"pluralForm" :"nplurals=2; plural=(n != 1);" diff --git a/apps/updatenotification/l10n/zh_CN.js b/apps/updatenotification/l10n/zh_CN.js index fd705d767c7..45acd3ec97b 100644 --- a/apps/updatenotification/l10n/zh_CN.js +++ b/apps/updatenotification/l10n/zh_CN.js @@ -1,9 +1,13 @@ OC.L10N.register( "updatenotification", { + "Updated channel" : "更新通道", "{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。", "Updater" : "更新管理器", + "A new version is available: %s" : "有可用的新版本: %s", "Open updater" : "打开更新管理器", + "Your version is up to date." : "您的版本已是最新。", + "Checked on %s" : "检查于 %s", "Update channel:" : "更新通道:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。" }, diff --git a/apps/updatenotification/l10n/zh_CN.json b/apps/updatenotification/l10n/zh_CN.json index b95589b11a1..10764103dc9 100644 --- a/apps/updatenotification/l10n/zh_CN.json +++ b/apps/updatenotification/l10n/zh_CN.json @@ -1,7 +1,11 @@ { "translations": { + "Updated channel" : "更新通道", "{version} is available. Get more information on how to update." : "新版本 {version} 已可以使用。获取更多升级相关信息。", "Updater" : "更新管理器", + "A new version is available: %s" : "有可用的新版本: %s", "Open updater" : "打开更新管理器", + "Your version is up to date." : "您的版本已是最新。", + "Checked on %s" : "检查于 %s", "Update channel:" : "更新通道:", "You can always update to a newer version / experimental channel. But you can never downgrade to a more stable channel." : "您可以随时更新到新版本 / 实验通道。但你永远不能降级到更稳定的通道。" },"pluralForm" :"nplurals=1; plural=0;" diff --git a/apps/user_ldap/l10n/pt_PT.js b/apps/user_ldap/l10n/pt_PT.js index 788c092eb32..31985b0c988 100644 --- a/apps/user_ldap/l10n/pt_PT.js +++ b/apps/user_ldap/l10n/pt_PT.js @@ -77,7 +77,7 @@ OC.L10N.register( "Test Loginname" : "Testar nome de login", "Verify settings" : "Verificar definições", "1. Server" : "1. Servidor", - "%s. Server:" : "%s. Servvidor", + "%s. Server:" : "%s. Servidor", "Add a new and blank configuration" : "Adicione uma nova configuração em branco", "Copy current configuration into new directory binding" : "Copiar a configuração actual para um novo registo de conexão", "Delete the current configuration" : "Apagar a configuração actual", diff --git a/apps/user_ldap/l10n/pt_PT.json b/apps/user_ldap/l10n/pt_PT.json index f75b1d1e5ea..0c85d67bee0 100644 --- a/apps/user_ldap/l10n/pt_PT.json +++ b/apps/user_ldap/l10n/pt_PT.json @@ -75,7 +75,7 @@ "Test Loginname" : "Testar nome de login", "Verify settings" : "Verificar definições", "1. Server" : "1. Servidor", - "%s. Server:" : "%s. Servvidor", + "%s. Server:" : "%s. Servidor", "Add a new and blank configuration" : "Adicione uma nova configuração em branco", "Copy current configuration into new directory binding" : "Copiar a configuração actual para um novo registo de conexão", "Delete the current configuration" : "Apagar a configuração actual", diff --git a/apps/user_ldap/l10n/zh_CN.js b/apps/user_ldap/l10n/zh_CN.js index a6a8f7edff9..88b79f691d0 100644 --- a/apps/user_ldap/l10n/zh_CN.js +++ b/apps/user_ldap/l10n/zh_CN.js @@ -17,10 +17,12 @@ OC.L10N.register( "Configuration incomplete" : "配置未完成", "Configuration OK" : "配置完成", "Select groups" : "选择分组", + "Select object classes" : "选择对象类型", "Please check the credentials, they seem to be wrong." : "凭据错误,请检查凭据。", "Please specify the port, it could not be auto-detected." : "无法自动识别,请指定一个端口。", "Base DN could not be auto-detected, please revise credentials, host and port." : "无法自动识别DN,请检查凭证,主机和端口。", "Could not detect Base DN, please enter it manually." : "无法探测Base DN,请手动输入。", + "{nthServer}. Server" : "{nthServer}. 服务器", "No object found in the given Base DN. Please revise." : "基础DN中未能找到指定对象,请检查。", "More than 1,000 directory entries available." : "超过1000个可用目录条目。", " entries available within the provided Base DN" : "基础DN中的可用条目", @@ -44,6 +46,8 @@ OC.L10N.register( "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。", "Please provide a login name to test against" : "请提供登录名以测试", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。", + "_%s group found_::_%s groups found_" : ["发现 %s 个群组"], + "_%s user found_::_%s users found_" : ["发现 %s 个用户"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。", "Could not find the desired feature" : "无法找到所需的功能", "Invalid Host" : "无效的主机", diff --git a/apps/user_ldap/l10n/zh_CN.json b/apps/user_ldap/l10n/zh_CN.json index 1ffac3742d6..7a6b2d5dd42 100644 --- a/apps/user_ldap/l10n/zh_CN.json +++ b/apps/user_ldap/l10n/zh_CN.json @@ -15,10 +15,12 @@ "Configuration incomplete" : "配置未完成", "Configuration OK" : "配置完成", "Select groups" : "选择分组", + "Select object classes" : "选择对象类型", "Please check the credentials, they seem to be wrong." : "凭据错误,请检查凭据。", "Please specify the port, it could not be auto-detected." : "无法自动识别,请指定一个端口。", "Base DN could not be auto-detected, please revise credentials, host and port." : "无法自动识别DN,请检查凭证,主机和端口。", "Could not detect Base DN, please enter it manually." : "无法探测Base DN,请手动输入。", + "{nthServer}. Server" : "{nthServer}. 服务器", "No object found in the given Base DN. Please revise." : "基础DN中未能找到指定对象,请检查。", "More than 1,000 directory entries available." : "超过1000个可用目录条目。", " entries available within the provided Base DN" : "基础DN中的可用条目", @@ -42,6 +44,8 @@ "The %uid placeholder is missing. It will be replaced with the login name when querying LDAP / AD." : "该%uid占位符缺失。它将在LDAP/ AD登录名查询时进行替换。", "Please provide a login name to test against" : "请提供登录名以测试", "The group box was disabled, because the LDAP / AD server does not support memberOf." : "该组框被禁用,因为LDAP/ AD服务器不支持memberOf。", + "_%s group found_::_%s groups found_" : ["发现 %s 个群组"], + "_%s user found_::_%s users found_" : ["发现 %s 个用户"], "Could not detect user display name attribute. Please specify it yourself in advanced ldap settings." : "无法检测到用户的显示名称属性。请在高级LDAP设置中指定。", "Could not find the desired feature" : "无法找到所需的功能", "Invalid Host" : "无效的主机", diff --git a/build/integration/features/bootstrap/BasicStructure.php b/build/integration/features/bootstrap/BasicStructure.php index 4ff7403bb16..d2aed82055a 100644 --- a/build/integration/features/bootstrap/BasicStructure.php +++ b/build/integration/features/bootstrap/BasicStructure.php @@ -69,18 +69,20 @@ trait BasicStructure { } /** - * @Given /^Using server "([^"]*)"$/ + * @Given /^Using server "(LOCAL|REMOTE)"$/ * @param string $server + * @return string Previous used server */ public function usingServer($server) { + $previousServer = $this->currentServer; if ($server === 'LOCAL'){ $this->baseUrl = $this->localBaseUrl; $this->currentServer = 'LOCAL'; - } elseif ($server === 'REMOTE'){ + return $previousServer; + } else { $this->baseUrl = $this->remoteBaseUrl; $this->currentServer = 'REMOTE'; - } else{ - PHPUnit_Framework_Assert::fail("Server can only be LOCAL or REMOTE"); + return $previousServer; } } diff --git a/build/integration/features/bootstrap/FederationContext.php b/build/integration/features/bootstrap/FederationContext.php index 4e8e79ba63e..2809c6974fa 100644 --- a/build/integration/features/bootstrap/FederationContext.php +++ b/build/integration/features/bootstrap/FederationContext.php @@ -15,22 +15,32 @@ class FederationContext implements Context, SnippetAcceptingContext { use Sharing; /** - * @When /^User "([^"]*)" from server "([^"]*)" shares "([^"]*)" with user "([^"]*)" from server "([^"]*)"$/ + * @Given /^User "([^"]*)" from server "(LOCAL|REMOTE)" shares "([^"]*)" with user "([^"]*)" from server "(LOCAL|REMOTE)"$/ + * + * @param string $sharerUser + * @param string $sharerServer "LOCAL" or "REMOTE" + * @param string $sharerPath + * @param string $shareeUser + * @param string $shareeServer "LOCAL" or "REMOTE" */ - public function federateSharing($userLocal, $serverLocal, $pathLocal, $userRemote, $serverRemote){ - if ($serverRemote == "REMOTE"){ - $shareWith = "$userRemote@" . substr($this->remoteBaseUrl, 0, -4); - } elseif ($serverRemote == "LOCAL") { - $shareWith = "$userRemote@" . substr($this->localBaseUrl, 0, -4); + public function federateSharing($sharerUser, $sharerServer, $sharerPath, $shareeUser, $shareeServer){ + if ($shareeServer == "REMOTE"){ + $shareWith = "$shareeUser@" . substr($this->remoteBaseUrl, 0, -4); + } else { + $shareWith = "$shareeUser@" . substr($this->localBaseUrl, 0, -4); } - $this->createShare($userLocal, $pathLocal, 6, $shareWith, null, null, null); + $previous = $this->usingServer($sharerServer); + $this->createShare($sharerUser, $sharerPath, 6, $shareWith, null, null, null); + $this->usingServer($previous); } /** - * @When /^User "([^"]*)" from server "([^"]*)" accepts last pending share$/ + * @When /^User "([^"]*)" from server "(LOCAL|REMOTE)" accepts last pending share$/ + * @param string $user + * @param string $server */ public function acceptLastPendingShare($user, $server){ - $this->usingServer($server); + $previous = $this->usingServer($server); $this->asAn($user); $this->sendingToWith('GET', "/apps/files_sharing/api/v1/remote_shares/pending", null); $this->theHTTPStatusCodeShouldBe('200'); @@ -39,18 +49,6 @@ class FederationContext implements Context, SnippetAcceptingContext { $this->sendingToWith('POST', "/apps/files_sharing/api/v1/remote_shares/pending/{$share_id}", null); $this->theHTTPStatusCodeShouldBe('200'); $this->theOCSStatusCodeShouldBe('100'); + $this->usingServer($previous); } - - /** - * @param string $app - * @param string $parameter - * @param string $value - */ - protected function modifyServerConfig($app, $parameter, $value) { - $body = new \Behat\Gherkin\Node\TableNode([['value', $value]]); - $this->sendingToWith('post', "/apps/testing/api/v1/app/{$app}/{$parameter}", $body); - $this->theHTTPStatusCodeShouldBe('200'); - $this->theOCSStatusCodeShouldBe('100'); - } - } diff --git a/build/integration/federation_features/federated.feature b/build/integration/federation_features/federated.feature index 5231b9430e9..acd1f91e908 100644 --- a/build/integration/federation_features/federated.feature +++ b/build/integration/federation_features/federated.feature @@ -97,10 +97,10 @@ Feature: federated And Using server "REMOTE" And As an "user1" When creating a share with - | path | /textfile0 (2).txt | - | shareType | 0 | - | shareWith | user2 | - | permissions | 19 | + | path | /textfile0 (2).txt | + | shareType | 0 | + | shareWith | user2 | + | permissions | 19 | Then the OCS status code should be "100" And the HTTP status code should be "200" And Share fields of last share match with diff --git a/composer.json b/composer.json index 98fdb3aa31c..495a9896ae2 100644 --- a/composer.json +++ b/composer.json @@ -4,5 +4,9 @@ }, "autoload" : { "psr-4": {"OC\\": "lib/private"} + }, + "require-dev": { + "jakub-onderka/php-parallel-lint": "^0.9.2", + "jakub-onderka/php-console-highlighter": "^0.3.2" } } diff --git a/core/ajax/share.php b/core/ajax/share.php index 8ece9945c23..44144b791e2 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -70,7 +70,8 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo \OC::$server->getL10N('lib'), \OC::$server->getMailer(), \OC::$server->getLogger(), - $defaults + $defaults, + \OC::$server->getURLGenerator() ); $result = $mailNotification->sendInternalShareMail($recipientList, $itemSource, $itemType); @@ -108,7 +109,8 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo \OC::$server->getL10N('lib'), \OC::$server->getMailer(), \OC::$server->getLogger(), - $defaults + $defaults, + \OC::$server->getURLGenerator() ); $expiration = null; diff --git a/core/l10n/de.js b/core/l10n/de.js index d92660b845c..77882ff6a23 100644 --- a/core/l10n/de.js +++ b/core/l10n/de.js @@ -123,6 +123,7 @@ OC.L10N.register( "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Du alle Funktionen nutzen möchtest.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Es wurde kein Memory Cache konfiguriert. Um die Leistung zu verbessern, konfiguriere bitte einen Cache-Speicher, sofern vorhanden. Weitere Informationen findest du in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "PHP hat keine Leserechte auf /dev/urandom wovon aus Sicherheitsgründen höchst abzuraten ist. Weitere Informationen sind in der <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a> zu finden.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du verwendest im Moment PHP {version}. Wir empfehlen ein Upgrade deiner PHP Version, um die <a target=\"_blank\" href=\"{phpLink}\">Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden</a>, sobald diese deine Distribution diese unterstützt.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Die Header-Einstellungen des Reverse Proxy sind falsch, oder du versuchst, dich mit ownCloud von einem vertrauten Proxy aus zu verbinden. Solltest du ownCloud nicht von einem vertrauten Proxy aus benutzen wollen, dann stellt die momentane Situation ein Sicherheitsproblem da und erlaubt Hackern, eine für ownCloud sichtbare IP-Adresse zu nutzen. Weitere Informationen findest du in der <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Schau in der <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki nach beiden Modulen</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weiterführende Information findest Du in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien ...</a> / <a href=\"{rescanEndpoint}\">Erneut analysieren…</a>)", diff --git a/core/l10n/de.json b/core/l10n/de.json index 0287ef5cec5..a997fc956be 100644 --- a/core/l10n/de.json +++ b/core/l10n/de.json @@ -121,6 +121,7 @@ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Dieser Server hat keine funktionierende Internetverbindung. Dies bedeutet, dass einige Funktionen wie das Einhängen externen Speicherplatzes, Update-Benachrichtigungen oder die Installation von Drittanbieter-Apps nicht funktionieren werden. Der Fernzugriff auf Dateien und der Versand von E-Mail-Benachrichtigungen kann ebenfalls nicht funktionieren. Es wird empfohlen, die Internetverbindung dieses Servers zu aktivieren, wenn Du alle Funktionen nutzen möchtest.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Es wurde kein Memory Cache konfiguriert. Um die Leistung zu verbessern, konfiguriere bitte einen Cache-Speicher, sofern vorhanden. Weitere Informationen findest du in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "PHP hat keine Leserechte auf /dev/urandom wovon aus Sicherheitsgründen höchst abzuraten ist. Weitere Informationen sind in der <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a> zu finden.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Du verwendest im Moment PHP {version}. Wir empfehlen ein Upgrade deiner PHP Version, um die <a target=\"_blank\" href=\"{phpLink}\">Geschwindigkeits- und Sicherheitsupdates zu nutzen, welche von der PHP Gruppe bereitgestellt werden</a>, sobald diese deine Distribution diese unterstützt.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Die Header-Einstellungen des Reverse Proxy sind falsch, oder du versuchst, dich mit ownCloud von einem vertrauten Proxy aus zu verbinden. Solltest du ownCloud nicht von einem vertrauten Proxy aus benutzen wollen, dann stellt die momentane Situation ein Sicherheitsproblem da und erlaubt Hackern, eine für ownCloud sichtbare IP-Adresse zu nutzen. Weitere Informationen findest du in der <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached ist als distributed cache konfiguriert aber das falsche PHP-Modul \"memcache\" ist installiert. \\OC\\Memcache\\Memcached unterstützt nur \"memcached\" jedoch nicht \"memcache\". Schau in der <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki nach beiden Modulen</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Einige Dateien haben die Integritätsprüfung nicht bestanden. Weiterführende Information findest Du in unserer <a target=\"_blank\" href=\"{docLink}\">Dokumentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Liste der ungültigen Dateien ...</a> / <a href=\"{rescanEndpoint}\">Erneut analysieren…</a>)", diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js index 10deb05c45f..405abae5692 100644 --- a/core/l10n/en_GB.js +++ b/core/l10n/en_GB.js @@ -123,6 +123,7 @@ OC.L10N.register( "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest enabling the Internet connection for this server.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)", diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json index 97c28d77f5d..cc420574bb4 100644 --- a/core/l10n/en_GB.json +++ b/core/l10n/en_GB.json @@ -121,6 +121,7 @@ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest enabling the Internet connection for this server.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)", diff --git a/core/l10n/fi_FI.js b/core/l10n/fi_FI.js index a4cfdf1cb37..2a3398bbf02 100644 --- a/core/l10n/fi_FI.js +++ b/core/l10n/fi_FI.js @@ -123,6 +123,7 @@ OC.L10N.register( "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Tällä palvelimella ei ole toimivaa internetyhteyttä. Sen seurauksena jotkin ominaisuudet, kuten erillinen tallennustila, ilmoitukset päivityksistä ja kolmansien osapuolten sovellusten asennus eivät toimi. Tiedostojen käyttö etänä tai ilmoitusten lähetys sähköpostitse eivät välttämättä toimi myöskään. Suosittelemme kytkemään palvelimen internetyhteyteen, jos haluat käyttää kaikkia ownCloudin ominaisuuksia.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Välimuistia ei ole määritetty. Paranna suorituskykyä ottamalla memcache käyttöön. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole PHP:n luettavissa, eikä tätä missään tapauksessa suositella tietoturvasyistä. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Käytössäsi on PHP:n versio {version}. Suosittelemme päivittämään PHP:n, jotta hyödyt <a target=\"_blank\" href=\"{phpLink}\">PHP Groupin tarjoamista suorituskyky- ja tietoturvapäivityksistä</a>.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakemääritykset ovat väärin, tai olet yhteydessä ownCloudiin luotetun välityspalvelimen kautta. Jos et ole yhteydessä luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentävän ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritetty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettu. \\OC\\Memcache\\Memcached tukee vain moduulia \"memcached\", ei moduulia \"memcache\". Lisätietoja <a target=\"_blank\" href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Jotkin tiedostot eivät läpäisseet eheystarkistusta. Lisätietoja ongelman selvittämiseksi on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Luettelo virheellisistä tiedostoista…</a> / <a href=\"{rescanEndpoint}\">Tarkista uudelleen…</a>)", diff --git a/core/l10n/fi_FI.json b/core/l10n/fi_FI.json index b1d50b0107a..49256c0877c 100644 --- a/core/l10n/fi_FI.json +++ b/core/l10n/fi_FI.json @@ -121,6 +121,7 @@ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Tällä palvelimella ei ole toimivaa internetyhteyttä. Sen seurauksena jotkin ominaisuudet, kuten erillinen tallennustila, ilmoitukset päivityksistä ja kolmansien osapuolten sovellusten asennus eivät toimi. Tiedostojen käyttö etänä tai ilmoitusten lähetys sähköpostitse eivät välttämättä toimi myöskään. Suosittelemme kytkemään palvelimen internetyhteyteen, jos haluat käyttää kaikkia ownCloudin ominaisuuksia.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Välimuistia ei ole määritetty. Paranna suorituskykyä ottamalla memcache käyttöön. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom ei ole PHP:n luettavissa, eikä tätä missään tapauksessa suositella tietoturvasyistä. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Käytössäsi on PHP:n versio {version}. Suosittelemme päivittämään PHP:n, jotta hyödyt <a target=\"_blank\" href=\"{phpLink}\">PHP Groupin tarjoamista suorituskyky- ja tietoturvapäivityksistä</a>.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Käänteisen välityspalvelimen otsakemääritykset ovat väärin, tai olet yhteydessä ownCloudiin luotetun välityspalvelimen kautta. Jos et ole yhteydessä luotetun välityspalvelimen kautta, kyseessä on tietoturvaongelma, joka mahdollistaa hyökkääjän väärentävän ownCloudille näkyvän IP-osoitteen. Lisätietoja on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached on määritetty hajautetuksi välimuistiksi, mutta väärä PHP-moduuli \"memcache\" on asennettu. \\OC\\Memcache\\Memcached tukee vain moduulia \"memcached\", ei moduulia \"memcache\". Lisätietoja <a target=\"_blank\" href=\"{wikiLink}\">memcachedin wikissä molemmista moduuleista</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Jotkin tiedostot eivät läpäisseet eheystarkistusta. Lisätietoja ongelman selvittämiseksi on saatavilla <a target=\"_blank\" href=\"{docLink}\">dokumentaatiossa</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Luettelo virheellisistä tiedostoista…</a> / <a href=\"{rescanEndpoint}\">Tarkista uudelleen…</a>)", diff --git a/core/l10n/he.js b/core/l10n/he.js index 8ef59a9aea2..3a3f52c34ec 100644 --- a/core/l10n/he.js +++ b/core/l10n/he.js @@ -123,6 +123,7 @@ OC.L10N.register( "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "לשרת זה אין חיבור אינטרנט פעיל. לפיכך חלק מהתכונות כגון עגינת אחסון חיצוני, הודעות על עדכונים או התקנת יישומי צד שלישי לא יעבדו. ייתכן ולא יעבדו גם כניסה לקבצים מבחוץ ושליחת הודעות דואר אלקטרוני. אנו ממליצים לאפשר חיבור אינטרנט לשרת זה אם ברצונך שיהיו לך את כל התכונות.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "לא הוגדר memory cache. על מנת לשפר את הביצועים יש להגדיר memcache אם קיים. מידע נוסף ניתן לצפות ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom אינו ניתן לקריאה על ידי PHP אשר אינו מומלץ בשל סיבות אבטחה. מידע נוסף ניתן לראות ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "כרגע המערכת מריצה PHP {version}. מומלץ מאוד לשדרג את גרסת ה- PHP vשלך כדי לנצל את <a target=\"_blank\" href=\"{phpLink}\">עדכוני הביצועים והאבטחה המופקים על ידי קבוצת ה- PHP</a> ברגע שההפצה אליך תתמוך בזה.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "תצורת כותרות פרוקסי ההפוכה אינה נכונה, או שהגישה ל- ownCloud מתבצעת מ- proxy אמין. אם הגישה ל- ownCloud אינה מ- proxy אמין, מדובר בבעיית אבטחה שמאפשרת לתוקף לזיין את כתובת ה- IP כגלויה ל- ownCloud. מידע נוסף ניתן למצוא ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a> שלנו.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached מוגדר כמטמון מופץ, אבל מותקן מודול PHP לא נכון \"memcache\". רק \\OC\\Memcache\\Memcached תומך ב- \"memcached\" אבל לא ב- \"memcache\". ניתן לצפות ב- <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki בנושא שני המודולים</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "חלק מהקבצים לא עברו את בדיקת התקינות. מידע נוסף איך לפתור את הבעיה ניתן למצוא ב- to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a> שלנו. (<a href=\"{codeIntegrityDownloadEndpoint}\">רשימה של קבצים לא תקינים…</a> / <a href=\"{rescanEndpoint}\">סריקה מחדש…</a>)", diff --git a/core/l10n/he.json b/core/l10n/he.json index 259befa5f42..94bb51ab440 100644 --- a/core/l10n/he.json +++ b/core/l10n/he.json @@ -121,6 +121,7 @@ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "לשרת זה אין חיבור אינטרנט פעיל. לפיכך חלק מהתכונות כגון עגינת אחסון חיצוני, הודעות על עדכונים או התקנת יישומי צד שלישי לא יעבדו. ייתכן ולא יעבדו גם כניסה לקבצים מבחוץ ושליחת הודעות דואר אלקטרוני. אנו ממליצים לאפשר חיבור אינטרנט לשרת זה אם ברצונך שיהיו לך את כל התכונות.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "לא הוגדר memory cache. על מנת לשפר את הביצועים יש להגדיר memcache אם קיים. מידע נוסף ניתן לצפות ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom אינו ניתן לקריאה על ידי PHP אשר אינו מומלץ בשל סיבות אבטחה. מידע נוסף ניתן לראות ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "כרגע המערכת מריצה PHP {version}. מומלץ מאוד לשדרג את גרסת ה- PHP vשלך כדי לנצל את <a target=\"_blank\" href=\"{phpLink}\">עדכוני הביצועים והאבטחה המופקים על ידי קבוצת ה- PHP</a> ברגע שההפצה אליך תתמוך בזה.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "תצורת כותרות פרוקסי ההפוכה אינה נכונה, או שהגישה ל- ownCloud מתבצעת מ- proxy אמין. אם הגישה ל- ownCloud אינה מ- proxy אמין, מדובר בבעיית אבטחה שמאפשרת לתוקף לזיין את כתובת ה- IP כגלויה ל- ownCloud. מידע נוסף ניתן למצוא ב- <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a> שלנו.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached מוגדר כמטמון מופץ, אבל מותקן מודול PHP לא נכון \"memcache\". רק \\OC\\Memcache\\Memcached תומך ב- \"memcached\" אבל לא ב- \"memcache\". ניתן לצפות ב- <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki בנושא שני המודולים</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "חלק מהקבצים לא עברו את בדיקת התקינות. מידע נוסף איך לפתור את הבעיה ניתן למצוא ב- to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">מסמכי התיעוד</a> שלנו. (<a href=\"{codeIntegrityDownloadEndpoint}\">רשימה של קבצים לא תקינים…</a> / <a href=\"{rescanEndpoint}\">סריקה מחדש…</a>)", diff --git a/core/l10n/it.js b/core/l10n/it.js index d285782bbbc..b706237b4e6 100644 --- a/core/l10n/it.js +++ b/core/l10n/it.js @@ -123,6 +123,7 @@ OC.L10N.register( "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Questo server non ha una connessione a Internet funzionante. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. L'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Ti suggeriamo di abilitare la connessione a Internet del server se desideri disporre di tutte le funzionalità.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni, configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom non è leggibile da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Stai eseguendo attualmente PHP {version}. Ti esortiamo ad aggiornare la tua versione di PHP per trarre vantaggio dagli aggiornamenti in termini di <a target=\"_blank\" href=\"{phpLink}\">prestazioni e sicurezza forniti dal PHP Group</a> non appena la tua distribuzione la supporta.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a ownCloud da un proxy affidabile. Se non stai effettuando l'accesso da un proxy affidabile, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendo visibile a ownCloud. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached è configurato come cache distribuita, ma è installato il modulo \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il <a target=\"_blank\" href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)", diff --git a/core/l10n/it.json b/core/l10n/it.json index f018bb39edf..053d805efae 100644 --- a/core/l10n/it.json +++ b/core/l10n/it.json @@ -121,6 +121,7 @@ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Questo server non ha una connessione a Internet funzionante. Ciò significa che alcune delle funzionalità come il montaggio di archivi esterni, le notifiche degli aggiornamenti o l'installazione di applicazioni di terze parti non funzioneranno. L'accesso remoto ai file e l'invio di email di notifica potrebbero non funzionare. Ti suggeriamo di abilitare la connessione a Internet del server se desideri disporre di tutte le funzionalità.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Non è stata configurata alcuna cache di memoria. Per migliorare le prestazioni, configura memcache, se disponibile. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom non è leggibile da PHP e ciò è vivamente sconsigliato per motivi di sicurezza. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Stai eseguendo attualmente PHP {version}. Ti esortiamo ad aggiornare la tua versione di PHP per trarre vantaggio dagli aggiornamenti in termini di <a target=\"_blank\" href=\"{phpLink}\">prestazioni e sicurezza forniti dal PHP Group</a> non appena la tua distribuzione la supporta.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "La configurazione delle intestazioni del proxy inverso non è corretta, o stai effettuando l'accesso a ownCloud da un proxy affidabile. Se non stai effettuando l'accesso da un proxy affidabile, questo è un problema di sicurezza e può consentire a un attaccante di falsificare il suo indirizzo IP, rendendo visibile a ownCloud. Ulteriori informazioni sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached è configurato come cache distribuita, ma è installato il modulo \"memcache\" errato. \\OC\\Memcache\\Memcached supporta solo \"memcached\" e non \"memcache\". Vedi il <a target=\"_blank\" href=\"{wikiLink}\">wiki di memcached per informazioni su entrambi i moduli</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alcuni file non hanno superato il controllo di integrità. Ulteriori informazioni su come risolvere questo problema sono disponibili nella nostra <a target=\"_blank\" href=\"{docLink}\">documentazione</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Elenco dei file non validi…</a> / <a href=\"{rescanEndpoint}\">Nuova scansione…</a>)", diff --git a/core/l10n/nl.js b/core/l10n/nl.js index f3c31cbbec2..28ffe9915b2 100644 --- a/core/l10n/nl.js +++ b/core/l10n/nl.js @@ -123,6 +123,7 @@ OC.L10N.register( "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Deze server heeft geen actieve internetverbinding. Dat betekent dat sommige functies, zoals aankoppelen van externe opslag, notificaties over updates of installatie van apps van 3e partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie emails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als u alle functies wilt gebruiken.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Er is geen geheugencache geconfigureerd. Om de prestaties te verhogen kunt u de memcache configureren als die beschikbaar is. Meer informatie vind u in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "U draait momenteel PHP {version}. We adviseren u om zo gauw uw distributie dat biedt, uw PHP versie bij te werken voor betere <a target=\"_blank\" href=\"{phpLink}\">prestaties en beveiliging geleverd door de PHP Group</a>.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "De reverse proxy headerconfiguratie is onjuist, of u hebt toegang tot ownCloud via een vertrouwde proxy. Als u ownCloud niet via een vertrouwde proxy benadert, dan levert dan een beveiligingsrisico op, waardoor een aanvaller het IP-adres dat ownCloud ziet kan spoofen. Meer informatie is te vinden in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is geconfigureerd als gedistribueerde cache, maar de verkeerde PHP module \"memcache\" is geïnstalleerd. \\OC\\Memcache\\Memcached ondersteunt alleen \"memcached\" en niet \"memcache\". Zie de <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki over beide modules</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sommige bestanden kwamen niet door de code betrouwbaarheidscontrole. Meer informatie over het oplossen van dit probleem kan worden gevonden in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)", diff --git a/core/l10n/nl.json b/core/l10n/nl.json index 838760972b9..6a4034344f7 100644 --- a/core/l10n/nl.json +++ b/core/l10n/nl.json @@ -121,6 +121,7 @@ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Deze server heeft geen actieve internetverbinding. Dat betekent dat sommige functies, zoals aankoppelen van externe opslag, notificaties over updates of installatie van apps van 3e partijen niet werken. Ook het benaderen van bestanden vanaf een remote locatie en het versturen van notificatie emails kan mislukken. We adviseren om de internetverbinding voor deze server in te schakelen als u alle functies wilt gebruiken.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Er is geen geheugencache geconfigureerd. Om de prestaties te verhogen kunt u de memcache configureren als die beschikbaar is. Meer informatie vind u in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom is niet leesbaar door PHP, hetgeen wordt afgeraden wegens beveiligingsredenen. Meer informatie in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "U draait momenteel PHP {version}. We adviseren u om zo gauw uw distributie dat biedt, uw PHP versie bij te werken voor betere <a target=\"_blank\" href=\"{phpLink}\">prestaties en beveiliging geleverd door de PHP Group</a>.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "De reverse proxy headerconfiguratie is onjuist, of u hebt toegang tot ownCloud via een vertrouwde proxy. Als u ownCloud niet via een vertrouwde proxy benadert, dan levert dan een beveiligingsrisico op, waardoor een aanvaller het IP-adres dat ownCloud ziet kan spoofen. Meer informatie is te vinden in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached is geconfigureerd als gedistribueerde cache, maar de verkeerde PHP module \"memcache\" is geïnstalleerd. \\OC\\Memcache\\Memcached ondersteunt alleen \"memcached\" en niet \"memcache\". Zie de <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki over beide modules</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Sommige bestanden kwamen niet door de code betrouwbaarheidscontrole. Meer informatie over het oplossen van dit probleem kan worden gevonden in onze <a target=\"_blank\" href=\"{docLink}\">documentatie</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lijst met ongeldige bestanden…</a> / <a href=\"{rescanEndpoint}\">Opnieuw…</a>)", diff --git a/core/l10n/pl.js b/core/l10n/pl.js index a8d44153b93..8383239162a 100644 --- a/core/l10n/pl.js +++ b/core/l10n/pl.js @@ -16,17 +16,25 @@ OC.L10N.register( "Updated \"%s\" to %s" : "Zaktualizowano \"%s\" do %s", "Repair warning: " : "Ostrzeżenie naprawiania:", "Repair error: " : "Błąd naprawiania:", + "Set log level to debug" : "Ustaw poziom logowania na debug", + "Reset log level" : "Zresetuj poziom logowania", "Starting code integrity check" : "Rozpoczynam sprawdzanie spójności kodu", "Finished code integrity check" : "Zakończono sprawdzanie spójności kodu", + "%s (3rdparty)" : "%s (od innych)", "%s (incompatible)" : "%s (niekompatybilne)", "Following apps have been disabled: %s" : "Poniższe aplikacje zostały wyłączone: %s", + "Already up to date" : "Już zaktualizowano", + "Please select a file." : "Proszę wybrać plik", "File is too big" : "Plik jest za duży", "Invalid file provided" : "Podano błędny plik", "No image or file provided" : "Brak obrazu lub pliku dostarczonego", "Unknown filetype" : "Nieznany typ pliku", "Invalid image" : "Nieprawidłowe zdjęcie", + "An error occurred. Please contact your admin." : "Pojawił się błąd. Skontaktuj się z administratorem.", "No temporary profile picture available, try again" : "Brak obrazka profilu tymczasowego, spróbuj ponownie", "No crop data provided" : "Brak danych do przycięcia", + "No valid crop data provided" : "Brak danych do przycięcia", + "Crop is not square" : "Przycięcie nie jest prostokątem", "Couldn't reset password because the token is invalid" : "Nie można zresetować hasła, ponieważ token jest niepoprawny", "Couldn't send reset email. Please make sure your username is correct." : "Nie mogę wysłać maila resetującego. Sprawdź czy nazwa użytkownika jest poprawna.", "%s password reset" : "%s reset hasła", diff --git a/core/l10n/pl.json b/core/l10n/pl.json index 3a90f1b80d3..a59306f689e 100644 --- a/core/l10n/pl.json +++ b/core/l10n/pl.json @@ -14,17 +14,25 @@ "Updated \"%s\" to %s" : "Zaktualizowano \"%s\" do %s", "Repair warning: " : "Ostrzeżenie naprawiania:", "Repair error: " : "Błąd naprawiania:", + "Set log level to debug" : "Ustaw poziom logowania na debug", + "Reset log level" : "Zresetuj poziom logowania", "Starting code integrity check" : "Rozpoczynam sprawdzanie spójności kodu", "Finished code integrity check" : "Zakończono sprawdzanie spójności kodu", + "%s (3rdparty)" : "%s (od innych)", "%s (incompatible)" : "%s (niekompatybilne)", "Following apps have been disabled: %s" : "Poniższe aplikacje zostały wyłączone: %s", + "Already up to date" : "Już zaktualizowano", + "Please select a file." : "Proszę wybrać plik", "File is too big" : "Plik jest za duży", "Invalid file provided" : "Podano błędny plik", "No image or file provided" : "Brak obrazu lub pliku dostarczonego", "Unknown filetype" : "Nieznany typ pliku", "Invalid image" : "Nieprawidłowe zdjęcie", + "An error occurred. Please contact your admin." : "Pojawił się błąd. Skontaktuj się z administratorem.", "No temporary profile picture available, try again" : "Brak obrazka profilu tymczasowego, spróbuj ponownie", "No crop data provided" : "Brak danych do przycięcia", + "No valid crop data provided" : "Brak danych do przycięcia", + "Crop is not square" : "Przycięcie nie jest prostokątem", "Couldn't reset password because the token is invalid" : "Nie można zresetować hasła, ponieważ token jest niepoprawny", "Couldn't send reset email. Please make sure your username is correct." : "Nie mogę wysłać maila resetującego. Sprawdź czy nazwa użytkownika jest poprawna.", "%s password reset" : "%s reset hasła", diff --git a/core/l10n/pt_PT.js b/core/l10n/pt_PT.js index 3d234230a4c..4a2f8dd4204 100644 --- a/core/l10n/pt_PT.js +++ b/core/l10n/pt_PT.js @@ -123,6 +123,7 @@ OC.L10N.register( "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor ownCloud não tem uma ligação de Internet a funcionar. Isto significa que algumas funcionalidades como o acesso a locais externos, notificações sobre actualizações, ou a instalação de aplicações de terceiros não irá funcionar. Aceder aos ficheiros remotamente e enviar notificações de email poderão não funcionar também. Sugerimos que active uma ligação à Internet se pretende obter todas as funcionalidades do ownCloud.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Nenhuma memória cache foi configurada. Para melhorar o seu desempenho, por favor configure a memcache, se disponível. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não é legível pelo PHP, o que é altamente desanimador por motivos de segurança. Pode ser encontrada mais informação na <a target=\"_blank\" href=\"{docLink}\">documentação</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Neste momento está a executar PHP {version}. Aconselhamos actualizar a versão de PHP para tirar partido das <a target=\"_blank\" href=\"{phpLink}\">actualizações de desempenho e segurança fornecidas pelo PHP Group</a> assim que a sua distribuição as suporte.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "A configuração dos proxy headers reversos está incorreta, ou então está a aceder ao ownCloud através de um proxy de confiança. Se não está a aceder ao ownCloud através de um proxy de confiança, isto é um problema de segurança e poderá permitir a um invasor falsificar o seu endereço IP como visível para o ownCloud. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurada como cache distribuída, mas o módulo \"memcache\" PHP errado está instalado. \\OC\\Memcache\\Memcached apenas suporta \"memcached\" e não \"memcache\". Leia a <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki sobre ambos os módulos</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns ficheiros não passaram na verificação de integridade. Mais informação sobre este assunto pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lists de ficheiros inválidos…</a> / <a href=\"{rescanEndpoint}\">Reverificar…</a>)", @@ -196,6 +197,7 @@ OC.L10N.register( "sunny" : "soalheiro", "Hello {name}, the weather is {weather}" : "Olá {name}, o tempo está {weather}", "Hello {name}" : "Olá {name}", + "new" : "novo", "_download %n file_::_download %n files_" : ["transferir %n ficheiro","transferir %n ficheiros"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em curso. Deixar esta página agora poderá interromper o processo nalguns ambientes.", "Updating {productName} to version {version}, this may take a while." : "A atualizar {productName} para a versão {version}, isto poderá demorar algum tempo.", diff --git a/core/l10n/pt_PT.json b/core/l10n/pt_PT.json index 15a76cef377..9c183eef468 100644 --- a/core/l10n/pt_PT.json +++ b/core/l10n/pt_PT.json @@ -121,6 +121,7 @@ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Este servidor ownCloud não tem uma ligação de Internet a funcionar. Isto significa que algumas funcionalidades como o acesso a locais externos, notificações sobre actualizações, ou a instalação de aplicações de terceiros não irá funcionar. Aceder aos ficheiros remotamente e enviar notificações de email poderão não funcionar também. Sugerimos que active uma ligação à Internet se pretende obter todas as funcionalidades do ownCloud.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Nenhuma memória cache foi configurada. Para melhorar o seu desempenho, por favor configure a memcache, se disponível. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom não é legível pelo PHP, o que é altamente desanimador por motivos de segurança. Pode ser encontrada mais informação na <a target=\"_blank\" href=\"{docLink}\">documentação</a>.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Neste momento está a executar PHP {version}. Aconselhamos actualizar a versão de PHP para tirar partido das <a target=\"_blank\" href=\"{phpLink}\">actualizações de desempenho e segurança fornecidas pelo PHP Group</a> assim que a sua distribuição as suporte.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "A configuração dos proxy headers reversos está incorreta, ou então está a aceder ao ownCloud através de um proxy de confiança. Se não está a aceder ao ownCloud através de um proxy de confiança, isto é um problema de segurança e poderá permitir a um invasor falsificar o seu endereço IP como visível para o ownCloud. Mais informação pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached está configurada como cache distribuída, mas o módulo \"memcache\" PHP errado está instalado. \\OC\\Memcache\\Memcached apenas suporta \"memcached\" e não \"memcache\". Leia a <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki sobre ambos os módulos</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Alguns ficheiros não passaram na verificação de integridade. Mais informação sobre este assunto pode ser encontrada na nossa <a target=\"_blank\" href=\"{docLink}\">documentação</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Lists de ficheiros inválidos…</a> / <a href=\"{rescanEndpoint}\">Reverificar…</a>)", @@ -194,6 +195,7 @@ "sunny" : "soalheiro", "Hello {name}, the weather is {weather}" : "Olá {name}, o tempo está {weather}", "Hello {name}" : "Olá {name}", + "new" : "novo", "_download %n file_::_download %n files_" : ["transferir %n ficheiro","transferir %n ficheiros"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "A atualização está em curso. Deixar esta página agora poderá interromper o processo nalguns ambientes.", "Updating {productName} to version {version}, this may take a while." : "A atualizar {productName} para a versão {version}, isto poderá demorar algum tempo.", diff --git a/core/l10n/sl.js b/core/l10n/sl.js index d80612b0b9f..cd1b637f510 100644 --- a/core/l10n/sl.js +++ b/core/l10n/sl.js @@ -8,16 +8,18 @@ OC.L10N.register( "Maintenance mode is kept active" : "Vzdrževalni način je še vedno dejaven", "Updating database schema" : "Poteka posodabljanje sheme podatkovne zbirke", "Updated database" : "Posodobljena podatkovna zbirka", - "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Preverjam, ali lahko posodobim strukturo baze (zaradi velikosti lahko traja dlje časa)", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke mogoče posodobiti (zaradi velikosti je lahko opravilo dolgotrajno).", "Checked database schema update" : "Izbrana posodobitev sheme podatkovne zbirke", "Checking updates of apps" : "Poteka preverjanje za posodobitve programov", - "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Preverjam, ali lahko posodobim strukturo baze za %s (lahko traja dlje zaradi velikosti baze)", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke za %s mogoče posodobiti (trajanje posodobitve je odvisno od velikosti zbirke).", "Checked database schema update for apps" : "Izbrana posodobitev sheme podatkovne zbirke za programe", "Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s", "Repair warning: " : "Opozorilo popravila:", "Repair error: " : "Napaka popravila:", "Set log level to debug" : "Nastavi raven beleženja za razhroščevanje", "Reset log level" : "Počisti raven beleženja", + "Starting code integrity check" : "Začenjanje preverjanja stanja kode", + "Finished code integrity check" : "Končano preverjanje stanja kode", "%s (3rdparty)" : "%s (zunanje)", "%s (incompatible)" : "%s (neskladno)", "Following apps have been disabled: %s" : "Navedeni programi so onemogočeni: %s", @@ -114,6 +116,7 @@ OC.L10N.register( "So-so password" : "Slabo geslo", "Good password" : "Dobro geslo", "Strong password" : "Odlično geslo", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Spletni stražnik še ni ustrezno nastavljen in ne omogoča usklajevanja, saj je vmesnik WebDAV videti okvarjen.", "Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika", "Shared" : "V souporabi", "Shared with {recipients}" : "V souporabi z {recipients}", @@ -148,14 +151,24 @@ OC.L10N.register( "change" : "sprememba", "delete" : "izbriše", "access control" : "nadzor dostopa", + "Could not unshare" : "Ni mogoče prekiniti souporabe", "Share details could not be loaded for this item." : "Podrobnosti souporabe za te predmet ni mogoče naložiti.", + "No users or groups found for {search}" : "Ni najdenih uporabnikov ali skupin za {search}", "An error occured. Please try again" : "Prišlo je do napake. Poskusite znova.", + "{sharee} (group)" : "{sharee} (skupina)", + "{sharee} (at {server})" : "{sharee} (na {server})", + "{sharee} (remote)" : "{sharee} (oddaljeno)", "Share" : "Souporaba", - "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Soupraba z ljudmi v drugih ownCloud oblakih v formatu uporabnik@domena.si/owncloud", + "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Souporaba z uporabniki, ki so na drugih oblakih ownCloud s povezavo uporabnik@domena.si/owncloud", "Share with users or groups …" : "Souporaba z uporabniki ali skupinami ...", "Share with users, groups or remote users …" : "Souporaba z uporabniki, skupinami ali oddaljenimi uporabniki ...", + "Error removing share" : "Napaka odstranjevanja souporabe", "Warning" : "Opozorilo", "Error while sending notification" : "Napaka med pošiljanjem obvestila", + "Non-existing tag #{tag}" : "Neobstoječa oznaka #{tag}", + "not assignable" : "ni dodeljivo", + "invisible" : "nevidno", + "({scope})" : "({scope})", "Delete" : "Izbriši", "Rename" : "Preimenuj", "The object type is not specified." : "Vrsta predmeta ni podana.", @@ -169,8 +182,9 @@ OC.L10N.register( "sunny" : "sončno", "Hello {name}, the weather is {weather}" : "Pozdravljeni, {name}, vreme je {weather}", "Hello {name}" : "Pozdravljeni, {name}", + "new" : "novo", "_download %n file_::_download %n files_" : ["prejmi %n datoteko","prejmi %n datoteki","prejmi %n datoteke","prejmi %n datotek"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Posodobitev sistema je v teku. Če zapustite stran, lahko v nekaterih okoljih prekine ta proces.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trenutno se izvaja posodobitev sistema. Priporočljivo je počakati, saj se lahko opravilo, če stran zapustite, prekine.", "Updating {productName} to version {version}, this may take a while." : "Poteka posodabljanje {productName} na različico {version}. Opravilo je lahko dolgotrajno.", "An error occurred." : "Prišlo je do napake.", "Please reload the page." : "Stran je treba ponovno naložiti", @@ -221,6 +235,8 @@ OC.L10N.register( "Data folder" : "Podatkovna mapa", "Configure the database" : "Nastavi podatkovno zbirko", "Only %s is available." : "Le %s je na voljo.", + "Install and activate additional PHP modules to choose other database types." : "Namestite in omogočite dodatne module PHP za izbor drugih vrst podatkovnih zbirk.", + "For more details check out the documentation." : "Za več podrobnosti preverite dokumentacijo.", "Database user" : "Uporabnik podatkovne zbirke", "Database password" : "Geslo podatkovne zbirke", "Database name" : "Ime podatkovne zbirke", @@ -256,14 +272,14 @@ OC.L10N.register( "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Glede na nastavitve bi lahko kot skrbnik uporabili spodnji gumb in domeno ročno določili kot varno.", "Add \"%s\" as trusted domain" : "Dodaj \"%s\" kot varno domeno", "App update required" : "Zahtevana je posodobitev programa", - "%s will be updated to version %s" : "%s bo posodbljena na verzijo %s", + "%s will be updated to version %s" : "%s bo posodobljen na različico %s.", "These apps will be updated:" : "Posodobljeni bodo naslednji vstavki:", "These incompatible apps will be disabled:" : "Ti neskladni vstavki bodo onemogočeni:", "The theme %s has been disabled." : "Tema %s je onemogočena za uporabo.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Pred nadaljevanjem se prepričajte se, da je ustvarjena varnostna kopija podatkovne zbirke, nastavitvenih datotek in podatkovne mape.", "Start update" : "Začni posodobitev", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Za razreševanje časovnih zahtev večjih namestitev lahko uporabite ukaz iz namestitvene mape:", - "This %s instance is currently in maintenance mode, which may take a while." : "Ta %s strežnik je trenutno v načinu vzdrževanja, kar lahko traja dlje časa.", + "This %s instance is currently in maintenance mode, which may take a while." : "Strežnik %s je trenutno v načinu vzdrževanja, kar lahko traja.", "This page will refresh itself when the %s instance is available again." : "Stran bo osvežena ko bo %s spet na voljo." }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/core/l10n/sl.json b/core/l10n/sl.json index dd82c75cf77..6649d094f11 100644 --- a/core/l10n/sl.json +++ b/core/l10n/sl.json @@ -6,16 +6,18 @@ "Maintenance mode is kept active" : "Vzdrževalni način je še vedno dejaven", "Updating database schema" : "Poteka posodabljanje sheme podatkovne zbirke", "Updated database" : "Posodobljena podatkovna zbirka", - "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Preverjam, ali lahko posodobim strukturo baze (zaradi velikosti lahko traja dlje časa)", + "Checking whether the database schema can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke mogoče posodobiti (zaradi velikosti je lahko opravilo dolgotrajno).", "Checked database schema update" : "Izbrana posodobitev sheme podatkovne zbirke", "Checking updates of apps" : "Poteka preverjanje za posodobitve programov", - "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Preverjam, ali lahko posodobim strukturo baze za %s (lahko traja dlje zaradi velikosti baze)", + "Checking whether the database schema for %s can be updated (this can take a long time depending on the database size)" : "Poteka preverjanje, ali je shemo podatkovne zbirke za %s mogoče posodobiti (trajanje posodobitve je odvisno od velikosti zbirke).", "Checked database schema update for apps" : "Izbrana posodobitev sheme podatkovne zbirke za programe", "Updated \"%s\" to %s" : "Datoteka \"%s\" je posodobljena na %s", "Repair warning: " : "Opozorilo popravila:", "Repair error: " : "Napaka popravila:", "Set log level to debug" : "Nastavi raven beleženja za razhroščevanje", "Reset log level" : "Počisti raven beleženja", + "Starting code integrity check" : "Začenjanje preverjanja stanja kode", + "Finished code integrity check" : "Končano preverjanje stanja kode", "%s (3rdparty)" : "%s (zunanje)", "%s (incompatible)" : "%s (neskladno)", "Following apps have been disabled: %s" : "Navedeni programi so onemogočeni: %s", @@ -112,6 +114,7 @@ "So-so password" : "Slabo geslo", "Good password" : "Dobro geslo", "Strong password" : "Odlično geslo", + "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "Spletni stražnik še ni ustrezno nastavljen in ne omogoča usklajevanja, saj je vmesnik WebDAV videti okvarjen.", "Error occurred while checking server setup" : "Prišlo je do napake med preverjanjem nastavitev strežnika", "Shared" : "V souporabi", "Shared with {recipients}" : "V souporabi z {recipients}", @@ -146,14 +149,24 @@ "change" : "sprememba", "delete" : "izbriše", "access control" : "nadzor dostopa", + "Could not unshare" : "Ni mogoče prekiniti souporabe", "Share details could not be loaded for this item." : "Podrobnosti souporabe za te predmet ni mogoče naložiti.", + "No users or groups found for {search}" : "Ni najdenih uporabnikov ali skupin za {search}", "An error occured. Please try again" : "Prišlo je do napake. Poskusite znova.", + "{sharee} (group)" : "{sharee} (skupina)", + "{sharee} (at {server})" : "{sharee} (na {server})", + "{sharee} (remote)" : "{sharee} (oddaljeno)", "Share" : "Souporaba", - "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Soupraba z ljudmi v drugih ownCloud oblakih v formatu uporabnik@domena.si/owncloud", + "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Souporaba z uporabniki, ki so na drugih oblakih ownCloud s povezavo uporabnik@domena.si/owncloud", "Share with users or groups …" : "Souporaba z uporabniki ali skupinami ...", "Share with users, groups or remote users …" : "Souporaba z uporabniki, skupinami ali oddaljenimi uporabniki ...", + "Error removing share" : "Napaka odstranjevanja souporabe", "Warning" : "Opozorilo", "Error while sending notification" : "Napaka med pošiljanjem obvestila", + "Non-existing tag #{tag}" : "Neobstoječa oznaka #{tag}", + "not assignable" : "ni dodeljivo", + "invisible" : "nevidno", + "({scope})" : "({scope})", "Delete" : "Izbriši", "Rename" : "Preimenuj", "The object type is not specified." : "Vrsta predmeta ni podana.", @@ -167,8 +180,9 @@ "sunny" : "sončno", "Hello {name}, the weather is {weather}" : "Pozdravljeni, {name}, vreme je {weather}", "Hello {name}" : "Pozdravljeni, {name}", + "new" : "novo", "_download %n file_::_download %n files_" : ["prejmi %n datoteko","prejmi %n datoteki","prejmi %n datoteke","prejmi %n datotek"], - "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Posodobitev sistema je v teku. Če zapustite stran, lahko v nekaterih okoljih prekine ta proces.", + "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "Trenutno se izvaja posodobitev sistema. Priporočljivo je počakati, saj se lahko opravilo, če stran zapustite, prekine.", "Updating {productName} to version {version}, this may take a while." : "Poteka posodabljanje {productName} na različico {version}. Opravilo je lahko dolgotrajno.", "An error occurred." : "Prišlo je do napake.", "Please reload the page." : "Stran je treba ponovno naložiti", @@ -219,6 +233,8 @@ "Data folder" : "Podatkovna mapa", "Configure the database" : "Nastavi podatkovno zbirko", "Only %s is available." : "Le %s je na voljo.", + "Install and activate additional PHP modules to choose other database types." : "Namestite in omogočite dodatne module PHP za izbor drugih vrst podatkovnih zbirk.", + "For more details check out the documentation." : "Za več podrobnosti preverite dokumentacijo.", "Database user" : "Uporabnik podatkovne zbirke", "Database password" : "Geslo podatkovne zbirke", "Database name" : "Ime podatkovne zbirke", @@ -254,14 +270,14 @@ "Depending on your configuration, as an administrator you might also be able to use the button below to trust this domain." : "Glede na nastavitve bi lahko kot skrbnik uporabili spodnji gumb in domeno ročno določili kot varno.", "Add \"%s\" as trusted domain" : "Dodaj \"%s\" kot varno domeno", "App update required" : "Zahtevana je posodobitev programa", - "%s will be updated to version %s" : "%s bo posodbljena na verzijo %s", + "%s will be updated to version %s" : "%s bo posodobljen na različico %s.", "These apps will be updated:" : "Posodobljeni bodo naslednji vstavki:", "These incompatible apps will be disabled:" : "Ti neskladni vstavki bodo onemogočeni:", "The theme %s has been disabled." : "Tema %s je onemogočena za uporabo.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Pred nadaljevanjem se prepričajte se, da je ustvarjena varnostna kopija podatkovne zbirke, nastavitvenih datotek in podatkovne mape.", "Start update" : "Začni posodobitev", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Za razreševanje časovnih zahtev večjih namestitev lahko uporabite ukaz iz namestitvene mape:", - "This %s instance is currently in maintenance mode, which may take a while." : "Ta %s strežnik je trenutno v načinu vzdrževanja, kar lahko traja dlje časa.", + "This %s instance is currently in maintenance mode, which may take a while." : "Strežnik %s je trenutno v načinu vzdrževanja, kar lahko traja.", "This page will refresh itself when the %s instance is available again." : "Stran bo osvežena ko bo %s spet na voljo." },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/core/l10n/sq.js b/core/l10n/sq.js index 5f2e4560d4a..0ab35de0f70 100644 --- a/core/l10n/sq.js +++ b/core/l10n/sq.js @@ -123,6 +123,7 @@ OC.L10N.register( "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Ky shërbyes nuk ka lidhje Internet që funksionon. Kjo do të thotë që disa prej veçorive, të tilla si montimi i depozitave të jashtme, njoftimet mbi përditësime apo instalim aplikacionesh nga palë të treta, s’do të funksionojnë. Edhe hyrja në kartela së largëti, apo dërgimi i email-eve për njoftime mund të mos funksionojnë. Këshillojmë të aktivizoni për këtë shërbyes lidhjen në Internet, nëse doni t’i keni krejt këto veçori.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "S’është formësuar ndonjë fshehtinë kujtese. Që të përmirësohet punimi juaj, ju lutemi, formësoni një fshehtinë kujtese, në pastë. Të dhëna të mëtejshme mund të gjenden te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom s’është i lexueshëm nga PHP-ja, çka shkëshillohet me forcë, për arsye sigurie. Më tepër informacion mund të gjendet te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Xhironi PHP {version}. Ju nxitim ta përmirësoni PHP-në me një version të ri që të përfitoni <a target=\"_blank\" href=\"{phpLink}\">nga përditësimet e funksionimit dhe sigurisë të ofruara nga PHP Group</a>, sapo kjo të mbulohet nga shpërndarja juaj.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Formësimi për krye ndërmjetësi prapësor është i pasaktë, ose jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar. Nëse s’jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar, ky është një problem sigurie dhe mund t’i lejojë një agresori të maskojë adresën e vet IP si një të pranueshme nga ownCloud-i. Të dhëna të mëtejshme mund të gjeni te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki për të dy modulet</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa prej kartelave s’e kaluan dot kontrollin e integritetit. Si si mund të zgjidhet ky problem mund ta shihni më në thellësi te <a target=\"_blank\" href=\"{docLink}\">dokumentimi ynë</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrolloji…</a>)", diff --git a/core/l10n/sq.json b/core/l10n/sq.json index 6c6d7b00303..b9d5031625a 100644 --- a/core/l10n/sq.json +++ b/core/l10n/sq.json @@ -121,6 +121,7 @@ "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "Ky shërbyes nuk ka lidhje Internet që funksionon. Kjo do të thotë që disa prej veçorive, të tilla si montimi i depozitave të jashtme, njoftimet mbi përditësime apo instalim aplikacionesh nga palë të treta, s’do të funksionojnë. Edhe hyrja në kartela së largëti, apo dërgimi i email-eve për njoftime mund të mos funksionojnë. Këshillojmë të aktivizoni për këtë shërbyes lidhjen në Internet, nëse doni t’i keni krejt këto veçori.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "S’është formësuar ndonjë fshehtinë kujtese. Që të përmirësohet punimi juaj, ju lutemi, formësoni një fshehtinë kujtese, në pastë. Të dhëna të mëtejshme mund të gjenden te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom s’është i lexueshëm nga PHP-ja, çka shkëshillohet me forcë, për arsye sigurie. Më tepër informacion mund të gjendet te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "Xhironi PHP {version}. Ju nxitim ta përmirësoni PHP-në me një version të ri që të përfitoni <a target=\"_blank\" href=\"{phpLink}\">nga përditësimet e funksionimit dhe sigurisë të ofruara nga PHP Group</a>, sapo kjo të mbulohet nga shpërndarja juaj.", "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "Formësimi për krye ndërmjetësi prapësor është i pasaktë, ose jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar. Nëse s’jeni duke hyrë në ownCloud prej një ndërmjetësi të besuar, ky është një problem sigurie dhe mund t’i lejojë një agresori të maskojë adresën e vet IP si një të pranueshme nga ownCloud-i. Të dhëna të mëtejshme mund të gjeni te <a target=\"_blank\" href=\"{docLink}\">dokumentimi</a> ynë.", "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached është formësuar si fshehtinë e shpërndarë, por është instaluar moduli i gabuar PHP \"memcache\". \\OC\\Memcache\\Memcached mbulon vetëm \"memcached\" dhe jo \"memcache\". Shihni <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki për të dy modulet</a>.", "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "Disa prej kartelave s’e kaluan dot kontrollin e integritetit. Si si mund të zgjidhet ky problem mund ta shihni më në thellësi te <a target=\"_blank\" href=\"{docLink}\">dokumentimi ynë</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">Listë e kartelave të pavlefshme…</a> / <a href=\"{rescanEndpoint}\">Rikontrolloji…</a>)", diff --git a/core/l10n/sv.js b/core/l10n/sv.js index d76b851c9df..559a38d456a 100644 --- a/core/l10n/sv.js +++ b/core/l10n/sv.js @@ -9,8 +9,15 @@ OC.L10N.register( "Updating database schema" : "Uppdaterar databasschema", "Updated database" : "Uppdaterade databasen", "Checked database schema update" : "Kontrollerade uppdatering av databasschemat", + "Checking updates of apps" : "Kontrollerar uppdatering utav appar", "Checked database schema update for apps" : "Kontrollerade uppdatering av databasschemat för applikationer", "Updated \"%s\" to %s" : "Uppdaterade \"%s\" till %s", + "Repair warning: " : "Reperationsvarning:", + "Repair error: " : "Reperationsfel:", + "Set log level to debug" : "Sätter loggingsnivå till \"debug\"", + "Reset log level" : "Återställer loggningsnivå", + "%s (3rdparty)" : "%s (3rdparty)", + "%s (incompatible)" : "%s (incompatible)", "Already up to date" : "Redan uppdaterad", "Please select a file." : "Vänligen välj en fil.", "File is too big" : "Filen är för stor", @@ -135,12 +142,17 @@ OC.L10N.register( "delete" : "radera", "access control" : "åtkomstkontroll", "An error occured. Please try again" : "Ett fel uppstod. Var god försök igen", + "{sharee} (group)" : "{sharee} (group)", + "{sharee} (at {server})" : "{sharee} (at {server})", + "{sharee} (remote)" : "{sharee} (remote)", "Share" : "Dela", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Dela med folk på andra ownClouds med följande syntax username@example.com/owncloud", "Share with users or groups …" : "Dela med användare eller grupper ...", "Share with users, groups or remote users …" : "Dela med användare, grupper eller fjärranvändare ...", "Warning" : "Varning", + "Error while sending notification" : "Fel när notifikation skulle skickas", "invisible" : "osynlig", + "({scope})" : "({scope})", "Delete" : "Radera", "Rename" : "Byt namn", "The object type is not specified." : "Objekttypen är inte specificerad.", diff --git a/core/l10n/sv.json b/core/l10n/sv.json index a6c2720ed93..1969118737c 100644 --- a/core/l10n/sv.json +++ b/core/l10n/sv.json @@ -7,8 +7,15 @@ "Updating database schema" : "Uppdaterar databasschema", "Updated database" : "Uppdaterade databasen", "Checked database schema update" : "Kontrollerade uppdatering av databasschemat", + "Checking updates of apps" : "Kontrollerar uppdatering utav appar", "Checked database schema update for apps" : "Kontrollerade uppdatering av databasschemat för applikationer", "Updated \"%s\" to %s" : "Uppdaterade \"%s\" till %s", + "Repair warning: " : "Reperationsvarning:", + "Repair error: " : "Reperationsfel:", + "Set log level to debug" : "Sätter loggingsnivå till \"debug\"", + "Reset log level" : "Återställer loggningsnivå", + "%s (3rdparty)" : "%s (3rdparty)", + "%s (incompatible)" : "%s (incompatible)", "Already up to date" : "Redan uppdaterad", "Please select a file." : "Vänligen välj en fil.", "File is too big" : "Filen är för stor", @@ -133,12 +140,17 @@ "delete" : "radera", "access control" : "åtkomstkontroll", "An error occured. Please try again" : "Ett fel uppstod. Var god försök igen", + "{sharee} (group)" : "{sharee} (group)", + "{sharee} (at {server})" : "{sharee} (at {server})", + "{sharee} (remote)" : "{sharee} (remote)", "Share" : "Dela", "Share with people on other ownClouds using the syntax username@example.com/owncloud" : "Dela med folk på andra ownClouds med följande syntax username@example.com/owncloud", "Share with users or groups …" : "Dela med användare eller grupper ...", "Share with users, groups or remote users …" : "Dela med användare, grupper eller fjärranvändare ...", "Warning" : "Varning", + "Error while sending notification" : "Fel när notifikation skulle skickas", "invisible" : "osynlig", + "({scope})" : "({scope})", "Delete" : "Radera", "Rename" : "Byt namn", "The object type is not specified." : "Objekttypen är inte specificerad.", diff --git a/core/l10n/zh_CN.js b/core/l10n/zh_CN.js index 15dd1090e2f..fc5e1395d96 100644 --- a/core/l10n/zh_CN.js +++ b/core/l10n/zh_CN.js @@ -119,11 +119,18 @@ OC.L10N.register( "Good password" : "较强的密码", "Strong password" : "强密码", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "您的 Web 服务器没有正确设置来解决 \"{url}\"。更多信息可以在我们的<a target=\"_blank\" href=\"{docLink}\">文档</a>找到。", "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "此服务器上没有可用的因特网连接. 这意味着某些特性将无法工作,例如挂载外部存储器, 提醒更新或安装第三方应用等. 从远程访问文件和发送提醒电子邮件也可能无法工作. 如果你想要ownCloud的所有特性, 我们建议启用此服务器的因特网连接.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "内存缓存未配置。如果可用,请配置 memcache 来增强性能。更多信息请查看我们的<a target=\"_blank\" href=\"{docLink}\">文档</a> 。", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom 无法被 PHP 读取,出于安全原因,这是强烈不推荐的。请查看<a href=\"{docLink}\">文档</a>了解详情。", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "你的 PHP 版本 ({version}) 不再被 <a href=\"{phpLink}\"> PHP </a>支持。我们建议您升级您的PHP版本,以便获得 PHP 性能和安全提升。", + "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "反向代理头配置不正确,或者您正从一个受信任的代理访问ownCloud。如果你不是通过受信任的代理访问 ownCloud,这将引发一个安全问题,可能由于 ownCloud IP 地址可见导致欺骗攻击。更多信息可以查看我们的 <a href=\"{docLink}\">文档</a>。", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached 配置为分布式缓存,但是已经安装的 PHP 模块是 \"memcache\" 。 \\OC\\Memcache\\Memcached 仅支持 \"memcached\" 而不是 \"memcache\"。点击 <a href=\"{wikiLink}\"> memcached wiki 了解两个模块的不同</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "一些文件没有通过完整性检查。如何解决此问题的详细信息可以查看我们的 <a target=\"_blank\" href=\"{docLink}\">文档</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">无效文件列表…</a> / <a href=\"{rescanEndpoint}\">重新扫描…</a>)", "Error occurred while checking server setup" : "当检查服务器启动时出错", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "你的数据目录和你的文件可能从互联网被访问到。.htaccess 文件不工作。我们强烈建议你配置你的网页服务器,使数据目录不再可访问,或者将数据目录移动到网页服务器根文档目录之外。", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 头部没有配置和 \"{expected}\" 的一样。这是一个潜在的安全或者隐私风险,我们调整这项设置。", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP 严格传输安全(Strict-Transport-Security)报头未配置到至少“{seconds}”秒。处于增强安全性考虑,我们推荐按照<a href=\"{docUrl}\">安全提示</a>启用 HSTS。", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "您正在通过 HTTP 访问该站点,我们强烈建议您按照<a href=\"{docUrl}\">安全提示</a>配置服务器强制使用 HTTPS。", "Shared" : "已共享", "Shared with {recipients}" : "由{recipients}分享", @@ -178,6 +185,7 @@ OC.L10N.register( "({scope})" : "({scope})", "Delete" : "删除", "Rename" : "重命名", + "Collaborative tags" : "协作标签", "The object type is not specified." : "未指定对象类型。", "Enter new" : "输入新...", "Add" : "增加", @@ -189,11 +197,13 @@ OC.L10N.register( "sunny" : "晴", "Hello {name}, the weather is {weather}" : "您好 {name},今天天气是{weather}", "Hello {name}" : "你好 {name}", + "new" : "新建", "_download %n file_::_download %n files_" : ["下载 %n 个文件"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "升级正在进行,在某些环境中离开此网页可能中断该过程。", "Updating {productName} to version {version}, this may take a while." : "更新 {productName} 到版本 {version},这可能需要一些时间。", "An error occurred." : "发生了一个错误", "Please reload the page." : "请重新加载页面。", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新不成功。有关此问题的更多信息请<a href=\"{url}\">查看我们的论坛帖子</a>。", "The update was unsuccessful. " : "升级未成功", "The update was successful. There were warnings." : "更新成功。有警告。", "The update was successful. Redirecting you to ownCloud now." : "更新成功。正在重定向至 ownCloud。", diff --git a/core/l10n/zh_CN.json b/core/l10n/zh_CN.json index cc75e35fd9e..ee8bc2732b5 100644 --- a/core/l10n/zh_CN.json +++ b/core/l10n/zh_CN.json @@ -117,11 +117,18 @@ "Good password" : "较强的密码", "Strong password" : "强密码", "Your web server is not yet set up properly to allow file synchronization because the WebDAV interface seems to be broken." : "由于 WebDAV 接口似乎被破坏,因此你的网页服务器没有正确地设置来允许文件同步。", + "Your web server is not set up properly to resolve \"{url}\". Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "您的 Web 服务器没有正确设置来解决 \"{url}\"。更多信息可以在我们的<a target=\"_blank\" href=\"{docLink}\">文档</a>找到。", "This server has no working Internet connection. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. We suggest to enable Internet connection for this server if you want to have all features." : "此服务器上没有可用的因特网连接. 这意味着某些特性将无法工作,例如挂载外部存储器, 提醒更新或安装第三方应用等. 从远程访问文件和发送提醒电子邮件也可能无法工作. 如果你想要ownCloud的所有特性, 我们建议启用此服务器的因特网连接.", "No memory cache has been configured. To enhance your performance please configure a memcache if available. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "内存缓存未配置。如果可用,请配置 memcache 来增强性能。更多信息请查看我们的<a target=\"_blank\" href=\"{docLink}\">文档</a> 。", + "/dev/urandom is not readable by PHP which is highly discouraged for security reasons. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "/dev/urandom 无法被 PHP 读取,出于安全原因,这是强烈不推荐的。请查看<a href=\"{docLink}\">文档</a>了解详情。", + "You are currently running PHP {version}. We encourage you to upgrade your PHP version to take advantage of <a target=\"_blank\" href=\"{phpLink}\">performance and security updates provided by the PHP Group</a> as soon as your distribution supports it." : "你的 PHP 版本 ({version}) 不再被 <a href=\"{phpLink}\"> PHP </a>支持。我们建议您升级您的PHP版本,以便获得 PHP 性能和安全提升。", + "The reverse proxy headers configuration is incorrect, or you are accessing ownCloud from a trusted proxy. If you are not accessing ownCloud from a trusted proxy, this is a security issue and can allow an attacker to spoof their IP address as visible to ownCloud. Further information can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>." : "反向代理头配置不正确,或者您正从一个受信任的代理访问ownCloud。如果你不是通过受信任的代理访问 ownCloud,这将引发一个安全问题,可能由于 ownCloud IP 地址可见导致欺骗攻击。更多信息可以查看我们的 <a href=\"{docLink}\">文档</a>。", + "Memcached is configured as distributed cache, but the wrong PHP module \"memcache\" is installed. \\OC\\Memcache\\Memcached only supports \"memcached\" and not \"memcache\". See the <a target=\"_blank\" href=\"{wikiLink}\">memcached wiki about both modules</a>." : "Memcached 配置为分布式缓存,但是已经安装的 PHP 模块是 \"memcache\" 。 \\OC\\Memcache\\Memcached 仅支持 \"memcached\" 而不是 \"memcache\"。点击 <a href=\"{wikiLink}\"> memcached wiki 了解两个模块的不同</a>.", + "Some files have not passed the integrity check. Further information on how to resolve this issue can be found in our <a target=\"_blank\" href=\"{docLink}\">documentation</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">List of invalid files…</a> / <a href=\"{rescanEndpoint}\">Rescan…</a>)" : "一些文件没有通过完整性检查。如何解决此问题的详细信息可以查看我们的 <a target=\"_blank\" href=\"{docLink}\">文档</a>. (<a href=\"{codeIntegrityDownloadEndpoint}\">无效文件列表…</a> / <a href=\"{rescanEndpoint}\">重新扫描…</a>)", "Error occurred while checking server setup" : "当检查服务器启动时出错", "Your data directory and your files are probably accessible from the Internet. The .htaccess file is not working. We strongly suggest that you configure your web server in a way that the data directory is no longer accessible or you move the data directory outside the web server document root." : "你的数据目录和你的文件可能从互联网被访问到。.htaccess 文件不工作。我们强烈建议你配置你的网页服务器,使数据目录不再可访问,或者将数据目录移动到网页服务器根文档目录之外。", "The \"{header}\" HTTP header is not configured to equal to \"{expected}\". This is a potential security or privacy risk and we recommend adjusting this setting." : "\"{header}\" HTTP 头部没有配置和 \"{expected}\" 的一样。这是一个潜在的安全或者隐私风险,我们调整这项设置。", + "The \"Strict-Transport-Security\" HTTP header is not configured to at least \"{seconds}\" seconds. For enhanced security we recommend enabling HSTS as described in our <a href=\"{docUrl}\">security tips</a>." : "HTTP 严格传输安全(Strict-Transport-Security)报头未配置到至少“{seconds}”秒。处于增强安全性考虑,我们推荐按照<a href=\"{docUrl}\">安全提示</a>启用 HSTS。", "You are accessing this site via HTTP. We strongly suggest you configure your server to require using HTTPS instead as described in our <a href=\"{docUrl}\">security tips</a>." : "您正在通过 HTTP 访问该站点,我们强烈建议您按照<a href=\"{docUrl}\">安全提示</a>配置服务器强制使用 HTTPS。", "Shared" : "已共享", "Shared with {recipients}" : "由{recipients}分享", @@ -176,6 +183,7 @@ "({scope})" : "({scope})", "Delete" : "删除", "Rename" : "重命名", + "Collaborative tags" : "协作标签", "The object type is not specified." : "未指定对象类型。", "Enter new" : "输入新...", "Add" : "增加", @@ -187,11 +195,13 @@ "sunny" : "晴", "Hello {name}, the weather is {weather}" : "您好 {name},今天天气是{weather}", "Hello {name}" : "你好 {name}", + "new" : "新建", "_download %n file_::_download %n files_" : ["下载 %n 个文件"], "The upgrade is in progress, leaving this page might interrupt the process in some environments." : "升级正在进行,在某些环境中离开此网页可能中断该过程。", "Updating {productName} to version {version}, this may take a while." : "更新 {productName} 到版本 {version},这可能需要一些时间。", "An error occurred." : "发生了一个错误", "Please reload the page." : "请重新加载页面。", + "The update was unsuccessful. For more information <a href=\"{url}\">check our forum post</a> covering this issue." : "更新不成功。有关此问题的更多信息请<a href=\"{url}\">查看我们的论坛帖子</a>。", "The update was unsuccessful. " : "升级未成功", "The update was successful. There were warnings." : "更新成功。有警告。", "The update was successful. Redirecting you to ownCloud now." : "更新成功。正在重定向至 ownCloud。", diff --git a/lib/base.php b/lib/base.php index 7db4ec4a8fa..7659148c140 100644 --- a/lib/base.php +++ b/lib/base.php @@ -339,16 +339,6 @@ class OC { } /** - * check if the instance needs to perform an upgrade - * - * @return bool - * @deprecated use \OCP\Util::needUpgrade() instead - */ - public static function needUpgrade() { - return \OCP\Util::needUpgrade(); - } - - /** * Checks if the version requires an update and shows * @param bool $showTemplate Whether an update screen should get shown * @return bool|void diff --git a/lib/l10n/sl.js b/lib/l10n/sl.js index d288ad1ff57..af8a9a14021 100644 --- a/lib/l10n/sl.js +++ b/lib/l10n/sl.js @@ -16,6 +16,7 @@ OC.L10N.register( "Library %s with a version lower than %s is required - available version %s." : "Zahtevana je knjižnica %s z različico, manjšo od %s – na voljo je različica %s.", "Following platforms are supported: %s" : "Podprta so okolja: %s", "ownCloud %s or higher is required." : "Zahtevana je različica ownCloud %s ali višja.", + "ownCloud %s or lower is required." : "Zahtevana je različica ownCloud %s ali nižja.", "Help" : "Pomoč", "Personal" : "Osebno", "Users" : "Uporabniki", @@ -37,6 +38,7 @@ OC.L10N.register( "web services under your control" : "spletne storitve pod vašim nadzorom", "Empty filename is not allowed" : "Prazno polje imena datoteke ni dovoljeno.", "Dot files are not allowed" : "Skrite datoteke niso dovoljene", + "4-byte characters are not supported in file names" : "4-bitni znaki v imenih datotek niso podprti", "File name is a reserved word" : "Ime datoteke je zadržana beseda", "File name contains at least one invalid character" : "Ime datoteke vsebuje vsaj en neveljaven znak.", "File name is too long" : "Ime datoteke je predolgo", @@ -44,6 +46,7 @@ OC.L10N.register( "Can't read file" : "Datoteke ni mogoče prebrati.", "App directory already exists" : "Programska mapa že obstaja", "Can't create app folder. Please fix permissions. %s" : "Programske mape ni mogoče ustvariti. Ni ustreznih dovoljenj. %s", + "Archive does not contain a directory named %s" : "V arhivu ni mape z imenom %s", "No source specified when installing app" : "Ni podanega vira med nameščenjem programa", "No href specified when installing app from http" : "Ni podanega podatka naslova HREF med nameščenjem programa preko protokola HTTP.", "No path specified when installing app from local file" : "Ni podane poti med nameščenjem programa iz krajevne datoteke", @@ -99,6 +102,7 @@ OC.L10N.register( "Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Nastavljanje souporabe %s je spodletelo, ker ozadnji program %s ne upravlja z viri.", "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja.", + "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s", "Expiration date is in the past" : "Datum preteka je že mimo!", "Could not find category \"%s\"" : "Kategorije \"%s\" ni mogoče najti.", "Apps" : "Programi", diff --git a/lib/l10n/sl.json b/lib/l10n/sl.json index 39809527f1e..5526369ea96 100644 --- a/lib/l10n/sl.json +++ b/lib/l10n/sl.json @@ -14,6 +14,7 @@ "Library %s with a version lower than %s is required - available version %s." : "Zahtevana je knjižnica %s z različico, manjšo od %s – na voljo je različica %s.", "Following platforms are supported: %s" : "Podprta so okolja: %s", "ownCloud %s or higher is required." : "Zahtevana je različica ownCloud %s ali višja.", + "ownCloud %s or lower is required." : "Zahtevana je različica ownCloud %s ali nižja.", "Help" : "Pomoč", "Personal" : "Osebno", "Users" : "Uporabniki", @@ -35,6 +36,7 @@ "web services under your control" : "spletne storitve pod vašim nadzorom", "Empty filename is not allowed" : "Prazno polje imena datoteke ni dovoljeno.", "Dot files are not allowed" : "Skrite datoteke niso dovoljene", + "4-byte characters are not supported in file names" : "4-bitni znaki v imenih datotek niso podprti", "File name is a reserved word" : "Ime datoteke je zadržana beseda", "File name contains at least one invalid character" : "Ime datoteke vsebuje vsaj en neveljaven znak.", "File name is too long" : "Ime datoteke je predolgo", @@ -42,6 +44,7 @@ "Can't read file" : "Datoteke ni mogoče prebrati.", "App directory already exists" : "Programska mapa že obstaja", "Can't create app folder. Please fix permissions. %s" : "Programske mape ni mogoče ustvariti. Ni ustreznih dovoljenj. %s", + "Archive does not contain a directory named %s" : "V arhivu ni mape z imenom %s", "No source specified when installing app" : "Ni podanega vira med nameščenjem programa", "No href specified when installing app from http" : "Ni podanega podatka naslova HREF med nameščenjem programa preko protokola HTTP.", "No path specified when installing app from local file" : "Ni podane poti med nameščenjem programa iz krajevne datoteke", @@ -97,6 +100,7 @@ "Sharing %s failed, because resharing is not allowed" : "Nastavljanje souporabe %s je spodletelo, ker nadaljnje omogočanje souporabe ni dovoljeno.", "Sharing %s failed, because the sharing backend for %s could not find its source" : "Nastavljanje souporabe %s je spodletelo, ker ozadnji program %s ne upravlja z viri.", "Sharing %s failed, because the file could not be found in the file cache" : "Nastavljanje souporabe %s je spodletelo, ker v predpomnilniku zahtevana datoteka ne obstaja.", + "Cannot increase permissions of %s" : "Ni mogoče povečati dovoljen %s", "Expiration date is in the past" : "Datum preteka je že mimo!", "Could not find category \"%s\"" : "Kategorije \"%s\" ni mogoče najti.", "Apps" : "Programi", diff --git a/lib/private/Server.php b/lib/private/Server.php index 81187cdd715..d68a361955f 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -462,7 +462,8 @@ class Server extends ServerContainer implements IServerContainer { new AppLocator(), $config, $c->getMemCacheFactory(), - $appManager + $appManager, + $c->getTempManager() ); }); $this->registerService('Request', function ($c) { diff --git a/lib/private/api.php b/lib/private/api.php index 87f2aa9b118..12a78f1424b 100644 --- a/lib/private/api.php +++ b/lib/private/api.php @@ -364,6 +364,18 @@ class OC_API { \OC_Util::setUpFS(\OC_User::getUser()); self::$isLoggedIn = true; + /** + * Add DAV authenticated. This should in an ideal world not be + * necessary but the iOS App reads cookies from anywhere instead + * only the DAV endpoint. + * This makes sure that the cookies will be valid for the whole scope + * @see https://github.com/owncloud/core/issues/22893 + */ + \OC::$server->getSession()->set( + \OCA\DAV\Connector\Sabre\Auth::DAV_AUTHENTICATED, + \OC::$server->getUserSession()->getUser()->getUID() + ); + return \OC_User::getUser(); } } diff --git a/lib/private/db/connection.php b/lib/private/db/connection.php index 584904e6370..7904fab0726 100644 --- a/lib/private/db/connection.php +++ b/lib/private/db/connection.php @@ -293,7 +293,7 @@ class Connection extends \Doctrine\DBAL\Connection implements IDBConnection { $updateQb->where($where); $affected = $updateQb->execute(); - if ($affected === 0) { + if ($affected === 0 && !empty($updatePreconditionValues)) { throw new PreconditionNotMetException(); } diff --git a/lib/private/files.php b/lib/private/files.php index b0d070637d7..9b6a1a4465f 100644 --- a/lib/private/files.php +++ b/lib/private/files.php @@ -267,7 +267,7 @@ class OC_Files { $pattern = vsprintf($patternMap['pattern'], [$key]); $setting = vsprintf($patternMap['setting'], [$key, $size]); $hasReplaced = 0; - $newContent = preg_replace($pattern, $setting, $content, 1, $hasReplaced); + $newContent = preg_replace($pattern, $setting, $content, 2, $hasReplaced); if ($newContent !== null) { $content = $newContent; } diff --git a/apps/files_external/lib/failedcache.php b/lib/private/files/cache/failedcache.php index 0f59495e595..0386ba3ca32 100644 --- a/apps/files_external/lib/failedcache.php +++ b/lib/private/files/cache/failedcache.php @@ -19,9 +19,8 @@ * */ -namespace OCA\Files_External\Lib; +namespace OC\Files\Cache; -use OC\Files\Cache\CacheEntry; use OCP\Constants; use OCP\Files\Cache\ICache; @@ -29,6 +28,18 @@ use OCP\Files\Cache\ICache; * Storage placeholder to represent a missing precondition, storage unavailable */ class FailedCache implements ICache { + /** @var bool whether to show the failed storage in the ui */ + private $visible; + + /** + * FailedCache constructor. + * + * @param bool $visible + */ + public function __construct($visible = true) { + $this->visible = $visible; + } + public function getNumericStorageId() { return -1; @@ -41,7 +52,7 @@ class FailedCache implements ICache { 'size' => 0, 'mimetype' => 'httpd/unix-directory', 'mimepart' => 'httpd', - 'permissions' => Constants::PERMISSION_READ, + 'permissions' => $this->visible ? Constants::PERMISSION_READ : 0, 'mtime' => time() ]); } else { diff --git a/lib/private/files/storage/dav.php b/lib/private/files/storage/dav.php index 495419fa865..df0f4c7e91d 100644 --- a/lib/private/files/storage/dav.php +++ b/lib/private/files/storage/dav.php @@ -34,6 +34,7 @@ namespace OC\Files\Storage; use Exception; use GuzzleHttp\Exception\RequestException; +use GuzzleHttp\Message\ResponseInterface; use OC\Files\Filesystem; use OC\Files\Stream\Close; use Icewind\Streams\IteratorDirectory; @@ -351,7 +352,8 @@ class DAV extends Common { 'stream' => true ]); } catch (RequestException $e) { - if ($e->getResponse()->getStatusCode() === 404) { + if ($e->getResponse() instanceof ResponseInterface + && $e->getResponse()->getStatusCode() === 404) { return false; } else { throw $e; diff --git a/apps/files_external/lib/failedstorage.php b/lib/private/files/storage/failedstorage.php index 20cf43d74b2..df7f76856d5 100644 --- a/apps/files_external/lib/failedstorage.php +++ b/lib/private/files/storage/failedstorage.php @@ -20,10 +20,10 @@ * */ -namespace OCA\Files_External\Lib; +namespace OC\Files\Storage; +use OC\Files\Cache\FailedCache; use \OCP\Lock\ILockingProvider; -use \OC\Files\Storage\Common; use \OCP\Files\StorageNotAvailableException; /** diff --git a/lib/private/files/storage/wrapper/encryption.php b/lib/private/files/storage/wrapper/encryption.php index 0b4816174bf..81eea9944f8 100644 --- a/lib/private/files/storage/wrapper/encryption.php +++ b/lib/private/files/storage/wrapper/encryption.php @@ -634,7 +634,18 @@ class Encryption extends Wrapper { 'encrypted' => (bool)$isEncrypted, ]; if($isEncrypted === 1) { - $cacheInformation['encryptedVersion'] = $sourceStorage->getCache()->get($sourceInternalPath)['encryptedVersion']; + $encryptedVersion = $sourceStorage->getCache()->get($sourceInternalPath)['encryptedVersion']; + + // In case of a move operation from an unencrypted to an encrypted + // storage the old encrypted version would stay with "0" while the + // correct value would be "1". Thus we manually set the value to "1" + // for those cases. + // See also https://github.com/owncloud/core/issues/23078 + if($encryptedVersion === 0) { + $encryptedVersion = 1; + } + + $cacheInformation['encryptedVersion'] = $encryptedVersion; } // in case of a rename we need to manipulate the source cache because diff --git a/lib/private/integritycheck/checker.php b/lib/private/integritycheck/checker.php index 8ede6216b76..d7867936887 100644 --- a/lib/private/integritycheck/checker.php +++ b/lib/private/integritycheck/checker.php @@ -31,6 +31,7 @@ use OCP\App\IAppManager; use OCP\ICache; use OCP\ICacheFactory; use OCP\IConfig; +use OCP\ITempManager; use phpseclib\Crypt\RSA; use phpseclib\File\X509; @@ -58,6 +59,8 @@ class Checker { private $cache; /** @var IAppManager */ private $appManager; + /** @var ITempManager */ + private $tempManager; /** * @param EnvironmentHelper $environmentHelper @@ -66,19 +69,22 @@ class Checker { * @param IConfig $config * @param ICacheFactory $cacheFactory * @param IAppManager $appManager + * @param ITempManager $tempManager */ public function __construct(EnvironmentHelper $environmentHelper, FileAccessHelper $fileAccessHelper, AppLocator $appLocator, IConfig $config = null, ICacheFactory $cacheFactory, - IAppManager $appManager = null) { + IAppManager $appManager = null, + ITempManager $tempManager) { $this->environmentHelper = $environmentHelper; $this->fileAccessHelper = $fileAccessHelper; $this->appLocator = $appLocator; $this->config = $config; $this->cache = $cacheFactory->create(self::CACHE_KEY); $this->appManager = $appManager; + $this->tempManager = $tempManager; } /** @@ -147,6 +153,8 @@ class Checker { private function generateHashes(\RecursiveIteratorIterator $iterator, $path) { $hashes = []; + $copiedWebserverSettingFiles = false; + $tmpFolder = ''; $baseDirectoryLength = strlen($path); foreach($iterator as $filename => $data) { @@ -167,6 +175,36 @@ class Checker { continue; } + // The .user.ini and the .htaccess file of ownCloud can contain some + // custom modifications such as for example the maximum upload size + // to ensure that this will not lead to false positives this will + // copy the file to a temporary folder and reset it to the default + // values. + if($filename === $this->environmentHelper->getServerRoot() . '/.htaccess' + || $filename === $this->environmentHelper->getServerRoot() . '/.user.ini') { + + if(!$copiedWebserverSettingFiles) { + $tmpFolder = rtrim($this->tempManager->getTemporaryFolder(), '/'); + copy($this->environmentHelper->getServerRoot() . '/.htaccess', $tmpFolder . '/.htaccess'); + copy($this->environmentHelper->getServerRoot() . '/.user.ini', $tmpFolder . '/.user.ini'); + \OC_Files::setUploadLimit( + \OCP\Util::computerFileSize('513MB'), + [ + '.htaccess' => $tmpFolder . '/.htaccess', + '.user.ini' => $tmpFolder . '/.user.ini', + ] + ); + } + } + + // The .user.ini file can contain custom modifications to the file size + // as well. + if($filename === $this->environmentHelper->getServerRoot() . '/.user.ini') { + $fileContent = file_get_contents($tmpFolder . '/.user.ini'); + $hashes[$relativeFileName] = hash('sha512', $fileContent); + continue; + } + // The .htaccess file in the root folder of ownCloud can contain // custom content after the installation due to the fact that dynamic // content is written into it at installation time as well. This @@ -175,7 +213,7 @@ class Checker { // "#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####" and have the // hash generated based on this. if($filename === $this->environmentHelper->getServerRoot() . '/.htaccess') { - $fileContent = file_get_contents($filename); + $fileContent = file_get_contents($tmpFolder . '/.htaccess'); $explodedArray = explode('#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####', $fileContent); if(count($explodedArray) === 2) { $hashes[$relativeFileName] = hash('sha512', $explodedArray[0]); @@ -185,6 +223,7 @@ class Checker { $hashes[$relativeFileName] = hash_file('sha512', $filename); } + return $hashes; } diff --git a/lib/private/log/owncloud.php b/lib/private/log/owncloud.php index 5a48f9e1c6d..6399d7ee588 100644 --- a/lib/private/log/owncloud.php +++ b/lib/private/log/owncloud.php @@ -76,9 +76,12 @@ class OC_Log_Owncloud { } catch (Exception $e) { $timezone = new DateTimeZone('UTC'); } - $time = DateTime::createFromFormat("U.u", number_format(microtime(true), 4, ".", ""), $timezone); + $time = DateTime::createFromFormat("U.u", number_format(microtime(true), 4, ".", "")); if ($time === false) { $time = new DateTime(null, $timezone); + } else { + // apply timezone if $time is created from UNIX timestamp + $time->setTimezone($timezone); } $request = \OC::$server->getRequest(); $reqId = $request->getId(); @@ -90,8 +93,7 @@ class OC_Log_Owncloud { $url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '--'; $method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : '--'; $entry = compact('reqId', 'remoteAddr', 'app', 'message', 'level', 'time', 'method', 'url'); - } - else { + } else { $entry = compact('reqId', 'remoteAddr', 'app', 'message', 'level', 'time'); } $entry = json_encode($entry); diff --git a/lib/private/memcache/memcached.php b/lib/private/memcache/memcached.php index c13be68b47f..a30f9da7ed7 100644 --- a/lib/private/memcache/memcached.php +++ b/lib/private/memcache/memcached.php @@ -88,7 +88,9 @@ class Memcached extends Cache implements IMemcache { public function remove($key) { $result= self::$cache->delete($this->getNamespace() . $key); - $this->verifyReturnCode(); + if (self::$cache->getResultCode() !== \Memcached::RES_NOTFOUND) { + $this->verifyReturnCode(); + } return $result; } @@ -124,10 +126,13 @@ class Memcached extends Cache implements IMemcache { * @param mixed $value * @param int $ttl Time To Live in seconds. Defaults to 60*60*24 * @return bool + * @throws \Exception */ public function add($key, $value, $ttl = 0) { $result = self::$cache->add($this->getPrefix() . $key, $value, $ttl); - $this->verifyReturnCode(); + if (self::$cache->getResultCode() !== \Memcached::RES_NOTSTORED) { + $this->verifyReturnCode(); + } return $result; } @@ -141,7 +146,11 @@ class Memcached extends Cache implements IMemcache { public function inc($key, $step = 1) { $this->add($key, 0); $result = self::$cache->increment($this->getPrefix() . $key, $step); - $this->verifyReturnCode(); + + if (self::$cache->getResultCode() !== \Memcached::RES_SUCCESS) { + return false; + } + return $result; } @@ -154,7 +163,11 @@ class Memcached extends Cache implements IMemcache { */ public function dec($key, $step = 1) { $result = self::$cache->decrement($this->getPrefix() . $key, $step); - $this->verifyReturnCode(); + + if (self::$cache->getResultCode() !== \Memcached::RES_SUCCESS) { + return false; + } + return $result; } diff --git a/lib/private/repair.php b/lib/private/repair.php index d40c6464e14..779f09d42ec 100644 --- a/lib/private/repair.php +++ b/lib/private/repair.php @@ -36,6 +36,7 @@ use OC\Repair\Collation; use OC\Repair\DropOldJobs; use OC\Repair\OldGroupMembershipShares; use OC\Repair\RemoveGetETagEntries; +use OC\Repair\SharePropagation; use OC\Repair\SqliteAutoincrement; use OC\Repair\DropOldTables; use OC\Repair\FillETags; @@ -114,6 +115,7 @@ class Repair extends BasicEmitter { new RemoveGetETagEntries(\OC::$server->getDatabaseConnection()), new UpdateOutdatedOcsIds(\OC::$server->getConfig()), new RepairInvalidShares(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection()), + new SharePropagation(\OC::$server->getConfig()), ]; } diff --git a/lib/private/repair/oldgroupmembershipshares.php b/lib/private/repair/oldgroupmembershipshares.php index bae1bf61a7f..627645b116d 100644 --- a/lib/private/repair/oldgroupmembershipshares.php +++ b/lib/private/repair/oldgroupmembershipshares.php @@ -69,7 +69,7 @@ class OldGroupMembershipShares extends BasicEmitter implements RepairStep { $deletedEntries = 0; $query = $this->connection->getQueryBuilder(); - $query->select(['s1.id', $query->createFunction('s1.`share_with` AS `user`'), $query->createFunction('s2.`share_with` AS `group`')]) + $query->select('s1.id')->selectAlias('s1.share_with', 'user')->selectAlias('s2.share_with', 'group') ->from('share', 's1') ->where($query->expr()->isNotNull('s1.parent')) // \OC\Share\Constant::$shareTypeGroupUserUnique === 2 diff --git a/lib/private/repair/sharepropagation.php b/lib/private/repair/sharepropagation.php new file mode 100644 index 00000000000..26d7a9e128c --- /dev/null +++ b/lib/private/repair/sharepropagation.php @@ -0,0 +1,52 @@ +<?php +/** + * @author Georg Ehrke <georg@owncloud.com> + * + * @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 OC\Repair; + +use OC\Hooks\BasicEmitter; +use OCP\IConfig; + +class SharePropagation extends BasicEmitter implements \OC\RepairStep { + /** @var IConfig */ + private $config; + + /** + * SharePropagation constructor. + * + * @param IConfig $config + */ + public function __construct(IConfig $config) { + $this->config = $config; + } + + public function getName() { + return 'Remove old share propagation app entries'; + } + + public function run() { + $keys = $this->config->getAppKeys('files_sharing'); + + foreach ($keys as $key) { + if (is_numeric($key)) { + $this->config->deleteAppValue('files_sharing', $key); + } + } + } +} diff --git a/lib/private/route/cachingrouter.php b/lib/private/route/cachingrouter.php index 4c702bb8e04..d6270dcf2c7 100644 --- a/lib/private/route/cachingrouter.php +++ b/lib/private/route/cachingrouter.php @@ -49,7 +49,7 @@ class CachingRouter extends Router { */ public function generate($name, $parameters = array(), $absolute = false) { asort($parameters); - $key = $this->context->getHost() . '#' . $this->context->getBaseUrl() . $name . json_encode($parameters) . intval($absolute); + $key = $this->context->getHost() . '#' . $this->context->getBaseUrl() . $name . sha1(json_encode($parameters)) . intval($absolute); if ($this->cache->hasKey($key)) { return $this->cache->get($key); } else { diff --git a/lib/private/search/result/file.php b/lib/private/search/result/file.php index d987d6c8e73..f1347001eaf 100644 --- a/lib/private/search/result/file.php +++ b/lib/private/search/result/file.php @@ -79,10 +79,12 @@ class File extends \OCP\Search\Result { $info = pathinfo($path); $this->id = $data->getId(); $this->name = $info['basename']; - $this->link = \OCP\Util::linkTo( - 'files', - 'index.php', - array('dir' => $info['dirname'], 'scrollto' => $info['basename']) + $this->link = \OC::$server->getURLGenerator()->linkToRoute( + 'files.view.index', + [ + 'dir' => $info['dirname'], + 'scrollto' => $info['basename'], + ] ); $this->permissions = $data->getPermissions(); $this->path = $path; diff --git a/lib/private/setup.php b/lib/private/setup.php index 8a10a9cfbec..5988a0b2d1d 100644 --- a/lib/private/setup.php +++ b/lib/private/setup.php @@ -423,7 +423,7 @@ class Setup { // Add rewrite base $webRoot = !empty(\OC::$WEBROOT) ? \OC::$WEBROOT : '/'; $content .= "\n<IfModule mod_rewrite.c>"; - $content .= "\n RewriteRule .* index.php [PT,E=PATH_INFO:$1]"; + $content .= "\n RewriteRule . index.php [PT,E=PATH_INFO:$1]"; $content .= "\n RewriteBase ".$webRoot; $content .= "\n <IfModule mod_env.c>"; $content .= "\n SetEnv front_controller_active true"; diff --git a/lib/private/share/mailnotifications.php b/lib/private/share/mailnotifications.php index a664d4ebf47..f71651e71fc 100644 --- a/lib/private/share/mailnotifications.php +++ b/lib/private/share/mailnotifications.php @@ -30,6 +30,7 @@ namespace OC\Share; use DateTime; use OCP\IL10N; +use OCP\IURLGenerator; use OCP\IUser; use OCP\Mail\IMailer; use OCP\ILogger; @@ -57,6 +58,8 @@ class MailNotifications { private $defaults; /** @var ILogger */ private $logger; + /** @var IURLGenerator */ + private $urlGenerator; /** * @param IUser $user @@ -64,17 +67,20 @@ class MailNotifications { * @param IMailer $mailer * @param ILogger $logger * @param Defaults $defaults + * @param IURLGenerator $urlGenerator */ public function __construct(IUser $user, IL10N $l10n, IMailer $mailer, ILogger $logger, - Defaults $defaults) { + Defaults $defaults, + IURLGenerator $urlGenerator) { $this->l = $l10n; $this->user = $user; $this->mailer = $mailer; $this->logger = $logger; $this->defaults = $defaults; + $this->urlGenerator = $urlGenerator; $this->replyTo = $this->user->getEMailAddress(); $this->senderDisplayName = $this->user->getDisplayName(); @@ -131,7 +137,10 @@ class MailNotifications { ); } - $link = Util::linkToAbsolute('files', 'index.php', $args); + $link = $this->urlGenerator->linkToRouteAbsolute( + 'files.view.index', + $args + ); list($htmlBody, $textBody) = $this->createMailBody($filename, $link, $expiration, 'internal'); diff --git a/lib/private/user.php b/lib/private/user.php index b91f60e3b9b..26062f503d2 100644 --- a/lib/private/user.php +++ b/lib/private/user.php @@ -281,7 +281,20 @@ class OC_User { */ public static function tryBasicAuthLogin() { if (!empty($_SERVER['PHP_AUTH_USER']) && !empty($_SERVER['PHP_AUTH_PW'])) { - \OC_User::login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']); + $result = \OC_User::login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']); + if($result === true) { + /** + * Add DAV authenticated. This should in an ideal world not be + * necessary but the iOS App reads cookies from anywhere instead + * only the DAV endpoint. + * This makes sure that the cookies will be valid for the whole scope + * @see https://github.com/owncloud/core/issues/22893 + */ + \OC::$server->getSession()->set( + \OCA\DAV\Connector\Sabre\Auth::DAV_AUTHENTICATED, + \OC::$server->getUserSession()->getUser()->getUID() + ); + } } } diff --git a/lib/private/util.php b/lib/private/util.php index 6f53be8446a..88d78ad83c6 100644 --- a/lib/private/util.php +++ b/lib/private/util.php @@ -828,6 +828,14 @@ class OC_Util { ); } + if(function_exists('xml_parser_create') && + version_compare('2.7.0', LIBXML_DOTTED_VERSION) === 1) { + $errors[] = array( + 'error' => $l->t('libxml2 2.7.0 is at least required. Currently %s is installed.', [LIBXML_DOTTED_VERSION]), + 'hint' => $l->t('To fix this issue update your libxml2 version and restart your web server.') + ); + } + if (!self::isAnnotationsWorking()) { $errors[] = array( 'error' => $l->t('PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible.'), diff --git a/lib/public/backgroundjob.php b/lib/public/backgroundjob.php index 69397bb3e45..f532a97c747 100644 --- a/lib/public/backgroundjob.php +++ b/lib/public/backgroundjob.php @@ -99,7 +99,7 @@ class BackgroundJob { * @since 4.5.0 */ public static function addRegularTask($klass, $method) { - if (!\OC::needUpgrade()) { + if (!\OCP\Util::needUpgrade()) { self::registerJob('OC\BackgroundJob\Legacy\RegularJob', array($klass, $method)); return true; } diff --git a/settings/l10n/pt_PT.js b/settings/l10n/pt_PT.js index 135cfeaa2fe..7a6a9788707 100644 --- a/settings/l10n/pt_PT.js +++ b/settings/l10n/pt_PT.js @@ -10,7 +10,7 @@ OC.L10N.register( "Cron" : "Cron", "Email server" : "Servidor de Correio Eletrónico", "Log" : "Registo", - "Tips & tricks" : "Dicas e truqes", + "Tips & tricks" : "Dicas e truques", "Updates" : "Atualizações", "Couldn't remove app." : "Não foi possível remover a aplicação.", "Language changed" : "Idioma alterado", @@ -73,6 +73,9 @@ OC.L10N.register( "Disable" : "Desativar", "Enable" : "Ativar", "Error while enabling app" : "Ocorreu um erro enquanto ativava a app", + "Error: this app cannot be enabled because it makes the server unstable" : "Erro: esta app não pode ser activada porque torna o servidor instável", + "Error: could not disable broken app" : "Erro: não foi possível desactivar app estragada", + "Error while disabling broken app" : "Erro ao desactivar app estragada", "Updating...." : "A atualizar...", "Error while updating app" : "Ocorreu um erro enquanto atualizava a app", "Updated" : "Atualizada", @@ -125,7 +128,7 @@ OC.L10N.register( "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php não parece estar bem instalado para consultar variáveis de ambiente do sistema. O teste com getenv(\"PATH\") apenas devolveu uma resposta em branco.", "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor, verifique a <a target=\"_blank\" href=\"%s\">documentação de instalação ↗</a> para notas de configuração do php e configuração php do seu servidor, especialmente quando utiliza php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Só-de-Leitura foi ativada. Isto evita definir algumas configurações através da interface da Web. Além disso, o ficheiro precisa de ser definido gravável manualmente para cada atualização.", - "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado a remover blocos doc em linha. Isto vai fazer algumas aplicações basicas inacessíveis.", + "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "O PHP está aparentemente configurado para remover blocos doc em linha. Isto vai tornar inacessíveis várias aplicações básicas.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto é provavelmente causado por uma cache/acelerador como o Zend OPcache or eAcelerador.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "O seu servidor está a correr Microsoft Windows. Nós recomendamos Linux para uma experiência de utilizador optimizada.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado. Por motivos de estabilidade e desempenho, recomendamos que atualize para a nova versão %1$s.", diff --git a/settings/l10n/pt_PT.json b/settings/l10n/pt_PT.json index fea2d1b375f..042f1505e93 100644 --- a/settings/l10n/pt_PT.json +++ b/settings/l10n/pt_PT.json @@ -8,7 +8,7 @@ "Cron" : "Cron", "Email server" : "Servidor de Correio Eletrónico", "Log" : "Registo", - "Tips & tricks" : "Dicas e truqes", + "Tips & tricks" : "Dicas e truques", "Updates" : "Atualizações", "Couldn't remove app." : "Não foi possível remover a aplicação.", "Language changed" : "Idioma alterado", @@ -71,6 +71,9 @@ "Disable" : "Desativar", "Enable" : "Ativar", "Error while enabling app" : "Ocorreu um erro enquanto ativava a app", + "Error: this app cannot be enabled because it makes the server unstable" : "Erro: esta app não pode ser activada porque torna o servidor instável", + "Error: could not disable broken app" : "Erro: não foi possível desactivar app estragada", + "Error while disabling broken app" : "Erro ao desactivar app estragada", "Updating...." : "A atualizar...", "Error while updating app" : "Ocorreu um erro enquanto atualizava a app", "Updated" : "Atualizada", @@ -123,7 +126,7 @@ "php does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "php não parece estar bem instalado para consultar variáveis de ambiente do sistema. O teste com getenv(\"PATH\") apenas devolveu uma resposta em branco.", "Please check the <a target=\"_blank\" href=\"%s\">installation documentation ↗</a> for php configuration notes and the php configuration of your server, especially when using php-fpm." : "Por favor, verifique a <a target=\"_blank\" href=\"%s\">documentação de instalação ↗</a> para notas de configuração do php e configuração php do seu servidor, especialmente quando utiliza php-fpm.", "The Read-Only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração Só-de-Leitura foi ativada. Isto evita definir algumas configurações através da interface da Web. Além disso, o ficheiro precisa de ser definido gravável manualmente para cada atualização.", - "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "PHP está aparentemente configurado a remover blocos doc em linha. Isto vai fazer algumas aplicações basicas inacessíveis.", + "PHP is apparently setup to strip inline doc blocks. This will make several core apps inaccessible." : "O PHP está aparentemente configurado para remover blocos doc em linha. Isto vai tornar inacessíveis várias aplicações básicas.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Isto é provavelmente causado por uma cache/acelerador como o Zend OPcache or eAcelerador.", "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "O seu servidor está a correr Microsoft Windows. Nós recomendamos Linux para uma experiência de utilizador optimizada.", "%1$s below version %2$s is installed, for stability and performance reasons we recommend updating to a newer %1$s version." : "%1$s abaixo da versão %2$s está instalado. Por motivos de estabilidade e desempenho, recomendamos que atualize para a nova versão %1$s.", diff --git a/settings/l10n/sl.js b/settings/l10n/sl.js index 87c528ab96b..b59c8d21b9c 100644 --- a/settings/l10n/sl.js +++ b/settings/l10n/sl.js @@ -68,6 +68,8 @@ OC.L10N.register( "Disable" : "Onemogoči", "Enable" : "Omogoči", "Error while enabling app" : "Napaka omogočanja programa", + "Error: could not disable broken app" : "Napaka: ni mogoče onemogočiti okvarjenega programa", + "Error while disabling broken app" : "Napaka onemogočanja okvarjenega programa", "Updating...." : "Poteka posodabljanje ...", "Error while updating app" : "Prišlo je do napake med posodabljanjem programa.", "Updated" : "Posodobljeno", @@ -117,7 +119,7 @@ OC.L10N.register( "NT LAN Manager" : "Upravljalnik NT LAN", "SSL" : "SSL", "TLS" : "TLS", - "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Vaš strežnik je nameščen na Microsoft Windows. Toplo priporočamo Linux okolje za optimalno uporabniško izkušnjo.", + "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Strežnik ownCloud je nameščen v okolju Microsoft Windows. Toplo priporočamo okolje Linux za najboljšo uporabniško izkušnjo.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Manjka modul PHP 'fileinfo'. Priporočljivo je omogočiti ta modul za popolno zaznavanje vrst MIME.", "System locale can not be set to a one which supports UTF-8." : "Sistemskih jezikovnih nastavitev ni mogoče nastaviti na možnost, ki podpira nabor UTF-8.", "This means that there might be problems with certain characters in file names." : "To pomeni, da se lahko pojavijo napake pri nekaterih znakih v imenih datotek.", @@ -134,7 +136,7 @@ OC.L10N.register( "Enforce expiration date" : "Vsili datum preteka", "Allow resharing" : "Dovoli nadaljnjo souporabo", "Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine", - "Allow users to send mail notification for shared files to other users" : "Omogočite uporabnikom, da pošiljajo poštna obvestila za deljene datoteke drugim uporabnikom.", + "Allow users to send mail notification for shared files to other users" : "Dovoli uporabnikom pošiljanje obvestil o souporabi datotek z drugimi uporabniki.", "Exclude groups from sharing" : "Izloči skupine iz souporabe", "These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, ne morejo pa souporabe dovoliti", "Cron was not executed yet!" : "Periodično opravilo cron še ni zagnano!", @@ -142,6 +144,7 @@ OC.L10N.register( "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "Datoteka cron.php je vpisana za periodično opravilo webcron za potrditev sklica vsakih 15 minut pri povezavi preko HTTP.", "Use system's cron service to call the cron.php file every 15 minutes." : "Uporabi storitev periodičnih opravil za klic datoteke cron.php vsakih 15 minut.", "Enable server-side encryption" : "Omogoči šifriranje na strežniku", + "Please read carefully before activating server-side encryption: " : "Pozorno preberite opombe, preden omogočite strežniško šifriranje:", "Enable encryption" : "Omogoči šifriranje", "Select default encryption module:" : "Izbor privzetega modula za šifriranje:", "Start migration" : "Začni selitev", @@ -163,9 +166,9 @@ OC.L10N.register( "Download logfile" : "Prejmi dnevniško datoteko", "More" : "Več", "Less" : "Manj", - "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Datoteeka dnevniškega zapisa je večja od 100MB. Prenos lahko traja dlje!", + "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Dnevniškega datoteka je večja od 100 MB. Hitrost prejema je odvisna od širokopasovne povezave!", "What to log" : "Kaj naj se beleži?", - "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Uporabljena baza je SQLite. Za večje namestitve priporočamo prehod na drugačno bazo.", + "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Uporabljena zbirka je SQLite. Za obsežnejše sisteme je priporočljiv prehod na drugo vrsto zbirke.", "How to do backups" : "Kako ustvariti varnostne kopije", "Advanced monitoring" : "Napredno sledenje", "Performance tuning" : "Prilagajanje delovanja", @@ -175,6 +178,7 @@ OC.L10N.register( "Version" : "Različica", "Developer documentation" : "Dokumentacija za razvijalce", "Experimental applications ahead" : "Preizkusni programi", + "%s-licensed" : "dovoljenje-%s", "Documentation:" : "Dokumentacija:", "User documentation" : "Uporabniška dokumentacija", "Admin documentation" : "Skrbniška dokumentacija", @@ -191,13 +195,13 @@ OC.L10N.register( "Issued By" : "Izdajatelj", "Valid until %s" : "Veljavno do %s", "Import root certificate" : "Uvozi korensko potrdilo", - "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Pozdravljeni,<br><br>samo sporočamo, da imate %s račun.<br><br>Vaše uporabniško ime: %s<br>Dostop: <a href=\"%s\">%s</a><br><br>", + "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Pozdravljeni,<br><br>obveščamo vas, da je račun %s pripravljen.<br><br>Uporabniško ime: %s<br>Dostop: <a href=\"%s\">%s</a><br><br>", "Cheers!" : "Na zdravje!", - "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Pozdravljeni,\n\nsamo sporočamo, da imate %s račun.\n\nVaše uporabniško ime: %s\nDostop: %s\n", + "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Pozdravljeni,\n\nobveščamo vas, da je račun %s pripravljen.\n\nUporabniško ime: %s\nDostop: %s\n", "Administrator documentation" : "Skrbniška dokumentacija", "Online documentation" : "Spletna dokumentacija", "Forum" : "Forum", - "Issue tracker" : "Spremljanje težav", + "Issue tracker" : "Sledilnih zahtevkov", "Commercial support" : "Podpora strankam", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Uporabljate <strong>%s</strong> od <strong>%s</strong>", "Profile picture" : "Slika profila", @@ -213,7 +217,7 @@ OC.L10N.register( "Your email address" : "Osebni elektronski naslov", "For password recovery and notifications" : "Za obnovo gesla in obveščanje", "No email address set" : "Poštni naslov ni nastavljen", - "You are member of the following groups:" : "Vi ste član sledečih skupin:", + "You are member of the following groups:" : "Ste član naslednjih skupin:", "Password" : "Geslo", "Unable to change your password" : "Gesla ni mogoče spremeniti.", "Current password" : "Trenutno geslo", @@ -225,9 +229,9 @@ OC.L10N.register( "Desktop client" : "Namizni odjemalec", "Android app" : "Program za Android", "iOS app" : "Program za iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če bi radi podprli projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">pristopite razvoju</a>\n\t\tali\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite glas</a>!", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če želite podpreti projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">se pridružite razvijalcem</a>\n\t\tali pa le\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite dober glas</a>!", "Show First Run Wizard again" : "Zaženi čarovnika prvega zagona", - "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Produkt razvija {communityopen}ownCloud skupnost{linkclose}, {githubopen}izvorna koda{linkclose} je licencirana pod {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", + "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Programski paket razvija {communityopen}skupnost ownCloud{linkclose}, {githubopen}izvorna koda{linkclose} pa je objavljena z dovoljenjem {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", "Show storage location" : "Pokaži mesto shrambe", "Show last log in" : "Pokaži podatke zadnje prijave", "Show user backend" : "Pokaži ozadnji program", diff --git a/settings/l10n/sl.json b/settings/l10n/sl.json index 384ec5fffb1..9531946bbe0 100644 --- a/settings/l10n/sl.json +++ b/settings/l10n/sl.json @@ -66,6 +66,8 @@ "Disable" : "Onemogoči", "Enable" : "Omogoči", "Error while enabling app" : "Napaka omogočanja programa", + "Error: could not disable broken app" : "Napaka: ni mogoče onemogočiti okvarjenega programa", + "Error while disabling broken app" : "Napaka onemogočanja okvarjenega programa", "Updating...." : "Poteka posodabljanje ...", "Error while updating app" : "Prišlo je do napake med posodabljanjem programa.", "Updated" : "Posodobljeno", @@ -115,7 +117,7 @@ "NT LAN Manager" : "Upravljalnik NT LAN", "SSL" : "SSL", "TLS" : "TLS", - "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Vaš strežnik je nameščen na Microsoft Windows. Toplo priporočamo Linux okolje za optimalno uporabniško izkušnjo.", + "Your server is running on Microsoft Windows. We highly recommend Linux for optimal user experience." : "Strežnik ownCloud je nameščen v okolju Microsoft Windows. Toplo priporočamo okolje Linux za najboljšo uporabniško izkušnjo.", "The PHP module 'fileinfo' is missing. We strongly recommend to enable this module to get best results with mime-type detection." : "Manjka modul PHP 'fileinfo'. Priporočljivo je omogočiti ta modul za popolno zaznavanje vrst MIME.", "System locale can not be set to a one which supports UTF-8." : "Sistemskih jezikovnih nastavitev ni mogoče nastaviti na možnost, ki podpira nabor UTF-8.", "This means that there might be problems with certain characters in file names." : "To pomeni, da se lahko pojavijo napake pri nekaterih znakih v imenih datotek.", @@ -132,7 +134,7 @@ "Enforce expiration date" : "Vsili datum preteka", "Allow resharing" : "Dovoli nadaljnjo souporabo", "Restrict users to only share with users in their groups" : "Uporabnikom dovoli omogočanje souporabe le znotraj njihove skupine", - "Allow users to send mail notification for shared files to other users" : "Omogočite uporabnikom, da pošiljajo poštna obvestila za deljene datoteke drugim uporabnikom.", + "Allow users to send mail notification for shared files to other users" : "Dovoli uporabnikom pošiljanje obvestil o souporabi datotek z drugimi uporabniki.", "Exclude groups from sharing" : "Izloči skupine iz souporabe", "These groups will still be able to receive shares, but not to initiate them." : "Te skupine lahko sprejemajo mape v souporabo, ne morejo pa souporabe dovoliti", "Cron was not executed yet!" : "Periodično opravilo cron še ni zagnano!", @@ -140,6 +142,7 @@ "cron.php is registered at a webcron service to call cron.php every 15 minutes over http." : "Datoteka cron.php je vpisana za periodično opravilo webcron za potrditev sklica vsakih 15 minut pri povezavi preko HTTP.", "Use system's cron service to call the cron.php file every 15 minutes." : "Uporabi storitev periodičnih opravil za klic datoteke cron.php vsakih 15 minut.", "Enable server-side encryption" : "Omogoči šifriranje na strežniku", + "Please read carefully before activating server-side encryption: " : "Pozorno preberite opombe, preden omogočite strežniško šifriranje:", "Enable encryption" : "Omogoči šifriranje", "Select default encryption module:" : "Izbor privzetega modula za šifriranje:", "Start migration" : "Začni selitev", @@ -161,9 +164,9 @@ "Download logfile" : "Prejmi dnevniško datoteko", "More" : "Več", "Less" : "Manj", - "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Datoteeka dnevniškega zapisa je večja od 100MB. Prenos lahko traja dlje!", + "The logfile is bigger than 100 MB. Downloading it may take some time!" : "Dnevniškega datoteka je večja od 100 MB. Hitrost prejema je odvisna od širokopasovne povezave!", "What to log" : "Kaj naj se beleži?", - "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Uporabljena baza je SQLite. Za večje namestitve priporočamo prehod na drugačno bazo.", + "SQLite is used as database. For larger installations we recommend to switch to a different database backend." : "Uporabljena zbirka je SQLite. Za obsežnejše sisteme je priporočljiv prehod na drugo vrsto zbirke.", "How to do backups" : "Kako ustvariti varnostne kopije", "Advanced monitoring" : "Napredno sledenje", "Performance tuning" : "Prilagajanje delovanja", @@ -173,6 +176,7 @@ "Version" : "Različica", "Developer documentation" : "Dokumentacija za razvijalce", "Experimental applications ahead" : "Preizkusni programi", + "%s-licensed" : "dovoljenje-%s", "Documentation:" : "Dokumentacija:", "User documentation" : "Uporabniška dokumentacija", "Admin documentation" : "Skrbniška dokumentacija", @@ -189,13 +193,13 @@ "Issued By" : "Izdajatelj", "Valid until %s" : "Veljavno do %s", "Import root certificate" : "Uvozi korensko potrdilo", - "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Pozdravljeni,<br><br>samo sporočamo, da imate %s račun.<br><br>Vaše uporabniško ime: %s<br>Dostop: <a href=\"%s\">%s</a><br><br>", + "Hey there,<br><br>just letting you know that you now have an %s account.<br><br>Your username: %s<br>Access it: <a href=\"%s\">%s</a><br><br>" : "Pozdravljeni,<br><br>obveščamo vas, da je račun %s pripravljen.<br><br>Uporabniško ime: %s<br>Dostop: <a href=\"%s\">%s</a><br><br>", "Cheers!" : "Na zdravje!", - "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Pozdravljeni,\n\nsamo sporočamo, da imate %s račun.\n\nVaše uporabniško ime: %s\nDostop: %s\n", + "Hey there,\n\njust letting you know that you now have an %s account.\n\nYour username: %s\nAccess it: %s\n\n" : "Pozdravljeni,\n\nobveščamo vas, da je račun %s pripravljen.\n\nUporabniško ime: %s\nDostop: %s\n", "Administrator documentation" : "Skrbniška dokumentacija", "Online documentation" : "Spletna dokumentacija", "Forum" : "Forum", - "Issue tracker" : "Spremljanje težav", + "Issue tracker" : "Sledilnih zahtevkov", "Commercial support" : "Podpora strankam", "You are using <strong>%s</strong> of <strong>%s</strong>" : "Uporabljate <strong>%s</strong> od <strong>%s</strong>", "Profile picture" : "Slika profila", @@ -211,7 +215,7 @@ "Your email address" : "Osebni elektronski naslov", "For password recovery and notifications" : "Za obnovo gesla in obveščanje", "No email address set" : "Poštni naslov ni nastavljen", - "You are member of the following groups:" : "Vi ste član sledečih skupin:", + "You are member of the following groups:" : "Ste član naslednjih skupin:", "Password" : "Geslo", "Unable to change your password" : "Gesla ni mogoče spremeniti.", "Current password" : "Trenutno geslo", @@ -223,9 +227,9 @@ "Desktop client" : "Namizni odjemalec", "Android app" : "Program za Android", "iOS app" : "Program za iOS", - "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če bi radi podprli projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">pristopite razvoju</a>\n\t\tali\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite glas</a>!", + "If you want to support the project\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">join development</a>\n\t\tor\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">spread the word</a>!" : "Če želite podpreti projekt\n\t\t<a href=\"https://owncloud.org/contribute\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">se pridružite razvijalcem</a>\n\t\tali pa le\n\t\t<a href=\"https://owncloud.org/promote\"\n\t\t\ttarget=\"_blank\" rel=\"noreferrer\">razširite dober glas</a>!", "Show First Run Wizard again" : "Zaženi čarovnika prvega zagona", - "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Produkt razvija {communityopen}ownCloud skupnost{linkclose}, {githubopen}izvorna koda{linkclose} je licencirana pod {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", + "Developed by the {communityopen}ownCloud community{linkclose}, the {githubopen}source code{linkclose} is licensed under the {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}." : "Programski paket razvija {communityopen}skupnost ownCloud{linkclose}, {githubopen}izvorna koda{linkclose} pa je objavljena z dovoljenjem {licenseopen}<abbr title=\"Affero General Public License\">AGPL</abbr>{linkclose}.", "Show storage location" : "Pokaži mesto shrambe", "Show last log in" : "Pokaži podatke zadnje prijave", "Show user backend" : "Pokaži ozadnji program", diff --git a/settings/l10n/zh_CN.js b/settings/l10n/zh_CN.js index d9e33e1d2fc..5265d3c31ac 100644 --- a/settings/l10n/zh_CN.js +++ b/settings/l10n/zh_CN.js @@ -19,7 +19,7 @@ OC.L10N.register( "Admins can't remove themself from the admin group" : "管理员不能将自己移出管理组。", "Unable to add user to group %s" : "无法把用户增加到组 %s", "Unable to remove user from group %s" : "无法从组%s中移除用户", - "Couldn't update app." : "无法更新 app。", + "Couldn't update app." : "无法更新应用。", "Wrong password" : "错误密码", "No user supplied" : "没有满足的用户", "Please provide an admin recovery password, otherwise all user data will be lost" : "请提供管理员恢复密码,否则所有用户的数据都将遗失。", @@ -67,13 +67,17 @@ OC.L10N.register( "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "已认可的应用是由值得信赖的开发商开发,并已通过了一个粗略的安全检查。他们放在一个开放的代码库并且维护人员认为他们是稳定的差不多可以正常使用。", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "此应用未检查安全问题,它是新的或已知是不稳定的。安装风险自担。", "Update to %s" : "更新为 %s", + "_You have %n app update pending_::_You have %n app updates pending_" : ["%n 个应用正在等待升级"], "Please wait...." : "请稍等....", - "Error while disabling app" : "禁用 app 时出错", + "Error while disabling app" : "禁用应用时出错", "Disable" : "禁用", "Enable" : "开启", - "Error while enabling app" : "启用 app 时出错", + "Error while enabling app" : "启用应用时出错", + "Error: this app cannot be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定", + "Error: could not disable broken app" : "错误: 无法禁用损坏的应用", + "Error while disabling broken app" : "禁用损坏的应用时出错", "Updating...." : "正在更新....", - "Error while updating app" : "更新 app 时出错", + "Error while updating app" : "更新应用时出错", "Updated" : "已更新", "Uninstalling ...." : "卸载中....", "Error while uninstalling app" : "卸载应用时发生了一个错误", @@ -93,6 +97,7 @@ OC.L10N.register( "Strong password" : "强密码", "Groups" : "组", "Unable to delete {objName}" : "无法删除 {objName}", + "Error creating group: {message}" : "创建组时出错: {message}", "A valid group name must be provided" : "请提供一个有效的组名称", "deleted {groupName}" : "已删除 {groupName}", "undo" : "撤销", @@ -102,6 +107,7 @@ OC.L10N.register( "add group" : "增加组", "Changing the password will result in data loss, because data recovery is not available for this user" : "更改密码会导致数据丢失,因为数据恢复不适用于此用户", "A valid username must be provided" : "必须提供合法的用户名", + "Error creating user: {message}" : "创建用户出错: {message}", "A valid password must be provided" : "必须提供合法的密码", "A valid email must be provided" : "必须提供合法的用户名", "__language_name__" : "简体中文", @@ -202,11 +208,13 @@ OC.L10N.register( "Developer documentation" : "开发者文档", "Experimental applications ahead" : "未来的实验应用", "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "实验应用程序没有在安全性的问题上作过多检查,新的或已知的不稳定 BUG 都在开发中。安装它们可能会导致数据丢失或安全漏洞。", + "%s-licensed" : "%s-许可协议", "Documentation:" : "文档:", "User documentation" : "用户文档", "Admin documentation" : "管理员文档", "Show description …" : "显示描述...", "Hide description …" : "隐藏描述...", + "This app has an update available." : "此应用有可用的更新。", "This app has no minimum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "这个程序没有指定最低的ownCloud版本。这是在ownCloud11之后版本的错误。", "This app has no maximum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "这个程序没有指定最高的ownCloud版本。这是在ownCloud11之后版本的错误。", "This app cannot be installed because the following dependencies are not fulfilled:" : "此应用程序无法安装,因为以下依赖性不满足:", diff --git a/settings/l10n/zh_CN.json b/settings/l10n/zh_CN.json index fa818569fe7..c3614b9050b 100644 --- a/settings/l10n/zh_CN.json +++ b/settings/l10n/zh_CN.json @@ -17,7 +17,7 @@ "Admins can't remove themself from the admin group" : "管理员不能将自己移出管理组。", "Unable to add user to group %s" : "无法把用户增加到组 %s", "Unable to remove user from group %s" : "无法从组%s中移除用户", - "Couldn't update app." : "无法更新 app。", + "Couldn't update app." : "无法更新应用。", "Wrong password" : "错误密码", "No user supplied" : "没有满足的用户", "Please provide an admin recovery password, otherwise all user data will be lost" : "请提供管理员恢复密码,否则所有用户的数据都将遗失。", @@ -65,13 +65,17 @@ "Approved apps are developed by trusted developers and have passed a cursory security check. They are actively maintained in an open code repository and their maintainers deem them to be stable for casual to normal use." : "已认可的应用是由值得信赖的开发商开发,并已通过了一个粗略的安全检查。他们放在一个开放的代码库并且维护人员认为他们是稳定的差不多可以正常使用。", "This app is not checked for security issues and is new or known to be unstable. Install at your own risk." : "此应用未检查安全问题,它是新的或已知是不稳定的。安装风险自担。", "Update to %s" : "更新为 %s", + "_You have %n app update pending_::_You have %n app updates pending_" : ["%n 个应用正在等待升级"], "Please wait...." : "请稍等....", - "Error while disabling app" : "禁用 app 时出错", + "Error while disabling app" : "禁用应用时出错", "Disable" : "禁用", "Enable" : "开启", - "Error while enabling app" : "启用 app 时出错", + "Error while enabling app" : "启用应用时出错", + "Error: this app cannot be enabled because it makes the server unstable" : "错误: 无法启用应用因为它会导致服务器不稳定", + "Error: could not disable broken app" : "错误: 无法禁用损坏的应用", + "Error while disabling broken app" : "禁用损坏的应用时出错", "Updating...." : "正在更新....", - "Error while updating app" : "更新 app 时出错", + "Error while updating app" : "更新应用时出错", "Updated" : "已更新", "Uninstalling ...." : "卸载中....", "Error while uninstalling app" : "卸载应用时发生了一个错误", @@ -91,6 +95,7 @@ "Strong password" : "强密码", "Groups" : "组", "Unable to delete {objName}" : "无法删除 {objName}", + "Error creating group: {message}" : "创建组时出错: {message}", "A valid group name must be provided" : "请提供一个有效的组名称", "deleted {groupName}" : "已删除 {groupName}", "undo" : "撤销", @@ -100,6 +105,7 @@ "add group" : "增加组", "Changing the password will result in data loss, because data recovery is not available for this user" : "更改密码会导致数据丢失,因为数据恢复不适用于此用户", "A valid username must be provided" : "必须提供合法的用户名", + "Error creating user: {message}" : "创建用户出错: {message}", "A valid password must be provided" : "必须提供合法的密码", "A valid email must be provided" : "必须提供合法的用户名", "__language_name__" : "简体中文", @@ -200,11 +206,13 @@ "Developer documentation" : "开发者文档", "Experimental applications ahead" : "未来的实验应用", "Experimental apps are not checked for security issues, new or known to be unstable and under heavy development. Installing them can cause data loss or security breaches." : "实验应用程序没有在安全性的问题上作过多检查,新的或已知的不稳定 BUG 都在开发中。安装它们可能会导致数据丢失或安全漏洞。", + "%s-licensed" : "%s-许可协议", "Documentation:" : "文档:", "User documentation" : "用户文档", "Admin documentation" : "管理员文档", "Show description …" : "显示描述...", "Hide description …" : "隐藏描述...", + "This app has an update available." : "此应用有可用的更新。", "This app has no minimum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "这个程序没有指定最低的ownCloud版本。这是在ownCloud11之后版本的错误。", "This app has no maximum ownCloud version assigned. This will be an error in ownCloud 11 and later." : "这个程序没有指定最高的ownCloud版本。这是在ownCloud11之后版本的错误。", "This app cannot be installed because the following dependencies are not fulfilled:" : "此应用程序无法安装,因为以下依赖性不满足:", diff --git a/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess b/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess index 33d4437c928..596d6718a88 100644 --- a/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess +++ b/tests/data/integritycheck/htaccessWithValidModifiedContent/.htaccess @@ -1,4 +1,28 @@ # Start of valid file +<IfModule mod_php5.c> + php_value upload_max_filesize 519M + php_value post_max_size 519M + php_value memory_limit 512M + php_value mbstring.func_overload 0 + php_value always_populate_raw_post_data -1 + php_value default_charset 'UTF-8' + php_value output_buffering 0 + <IfModule mod_env.c> + SetEnv htaccessWorking true + </IfModule> +</IfModule> +<IfModule mod_php7.c> + php_value upload_max_filesize 519M + php_value post_max_size 519M + php_value memory_limit 512M + php_value mbstring.func_overload 0 + php_value always_populate_raw_post_data -1 + php_value default_charset 'UTF-8' + php_value output_buffering 0 + <IfModule mod_env.c> + SetEnv htaccessWorking true + </IfModule> +</IfModule> #### DO NOT CHANGE ANYTHING ABOVE THIS LINE #### # Content that should change the hash in the root folder
\ No newline at end of file diff --git a/tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini b/tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini new file mode 100644 index 00000000000..90959b1e649 --- /dev/null +++ b/tests/data/integritycheck/htaccessWithValidModifiedContent/.user.ini @@ -0,0 +1,7 @@ +upload_max_filesize=519M +post_max_size=519M +memory_limit=512M +mbstring.func_overload=0 +always_populate_raw_post_data=-1 +default_charset='UTF-8' +output_buffering=0 diff --git a/tests/lib/db/connection.php b/tests/lib/db/connection.php index b10b1a322a9..62d0a77ca1f 100644 --- a/tests/lib/db/connection.php +++ b/tests/lib/db/connection.php @@ -47,6 +47,11 @@ class Connection extends \Test\TestCase { $this->connection = \OC::$server->getDatabaseConnection(); } + public function tearDown() { + parent::tearDown(); + $this->connection->dropTable('table'); + } + /** * @param string $table */ @@ -86,6 +91,7 @@ class Connection extends \Test\TestCase { * @depends testTableExists */ public function testDropTable() { + $this->makeTestTable(); $this->assertTableExist('table'); $this->connection->dropTable('table'); $this->assertTableNotExist('table'); @@ -111,8 +117,6 @@ class Connection extends \Test\TestCase { ]); $this->assertEquals('foo', $this->getTextValueByIntergerField(1)); - - $this->connection->dropTable('table'); } public function testSetValuesOverWrite() { @@ -131,8 +135,6 @@ class Connection extends \Test\TestCase { ]); $this->assertEquals('bar', $this->getTextValueByIntergerField(1)); - - $this->connection->dropTable('table'); } public function testSetValuesOverWritePrecondition() { @@ -154,8 +156,6 @@ class Connection extends \Test\TestCase { ]); $this->assertEquals('bar', $this->getTextValueByIntergerField(1)); - - $this->connection->dropTable('table'); } /** @@ -179,4 +179,22 @@ class Connection extends \Test\TestCase { 'booleanfield' => false ]); } + + public function testSetValuesSameNoError() { + $this->makeTestTable(); + $this->connection->setValues('table', [ + 'integerfield' => 1 + ], [ + 'textfield' => 'foo', + 'clobfield' => 'not_null' + ]); + + // this will result in 'no affected rows' on certain optimizing DBs + // ensure the PreConditionNotMetException isn't thrown + $this->connection->setValues('table', [ + 'integerfield' => 1 + ], [ + 'textfield' => 'foo' + ]); + } } diff --git a/tests/lib/files/storage/wrapper/encryption.php b/tests/lib/files/storage/wrapper/encryption.php index b5ec15b12bf..bde920e440e 100644 --- a/tests/lib/files/storage/wrapper/encryption.php +++ b/tests/lib/files/storage/wrapper/encryption.php @@ -672,6 +672,48 @@ class Encryption extends Storage { ]; } + public function testCopyBetweenStorageMinimumEncryptedVersion() { + $storage2 = $this->getMockBuilder('OCP\Files\Storage') + ->disableOriginalConstructor() + ->getMock(); + + $sourceInternalPath = $targetInternalPath = 'file.txt'; + $preserveMtime = $isRename = false; + + $storage2->expects($this->any()) + ->method('fopen') + ->willReturnCallback(function($path, $mode) { + $temp = \OC::$server->getTempManager(); + return fopen($temp->getTemporaryFile(), $mode); + }); + $cache = $this->getMock('\OCP\Files\Cache\ICache'); + $cache->expects($this->once()) + ->method('get') + ->with($sourceInternalPath) + ->willReturn(['encryptedVersion' => 0]); + $storage2->expects($this->once()) + ->method('getCache') + ->willReturn($cache); + $this->encryptionManager->expects($this->any()) + ->method('isEnabled') + ->willReturn(true); + global $mockedMountPointEncryptionEnabled; + $mockedMountPointEncryptionEnabled = true; + + $expectedCachePut = [ + 'encrypted' => true, + ]; + $expectedCachePut['encryptedVersion'] = 1; + + $this->cache->expects($this->once()) + ->method('put') + ->with($sourceInternalPath, $expectedCachePut); + + $this->invokePrivate($this->instance, 'copyBetweenStorage', [$storage2, $sourceInternalPath, $targetInternalPath, $preserveMtime, $isRename]); + + $this->assertFalse(false); + } + /** * @dataProvider dataCopyBetweenStorage * diff --git a/tests/lib/integritycheck/checkertest.php b/tests/lib/integritycheck/checkertest.php index fac60b0c123..0910c543a7a 100644 --- a/tests/lib/integritycheck/checkertest.php +++ b/tests/lib/integritycheck/checkertest.php @@ -71,7 +71,8 @@ class CheckerTest extends TestCase { $this->appLocator, $this->config, $this->cacheFactory, - $this->appManager + $this->appManager, + \OC::$server->getTempManager() ); } @@ -523,13 +524,14 @@ class CheckerTest extends TestCase { $this->checker->writeCoreSignature($x509, $rsa, \OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithInvalidModifiedContent/'); } - public function testWriteCoreSignatureWithValidModifiedHtaccess() { + public function testWriteCoreSignatureWithValidModifiedHtaccessAndUserIni() { $expectedSignatureFileData = '{ "hashes": { - ".htaccess": "a232e6a616c40635d0220e47ebaade40348aadf141a67a331b8870b8fae056584e52fe8b56c49468ee17b58f92cbcd269dc30ae598d6206e97f7d8bb00a766c6", + ".htaccess": "ef34c5f35fffb6e8e3008c2118617b53243cfc5ac2513edba9ebd383169862bc16e4f889316ad65788d6b172fe14713af90908c19838c4ba13b4146e12c7ac62", + ".user.ini": "0a557e3cdca4c2e3675deed761d79d109011dcdebbd9c7f6429f1d3476938ec95729543d7384651d1d0c48e26c5024cc5f517445920915a704ea748bdb903c5f", "subfolder\/.htaccess": "2c57b1e25050e11dc3ae975832f378c452159f7b69f818e47eeeafadd6ba568517461dcb4d843b90b906cd7c89d161bc1b89dff8e3ae0eb6f5088508c47befd1" }, - "signature": "LNHvrAFg7NJL9h8TanIFmiI3xnmNRz8pltVgRJpnQTqLJCkhZWV5+poHIii\/\/dI4NhBijsoN0AAJckf1KFzyeI2rOk3w+niaOEXX7khoJDgbxuz0kwN13Bxa1A6j0cMFqm9IIWet0JK9MKaL8K\/n3CzNYovXhRBdJsYTQVWvkaY5KMQgTP2roqgaLBABfI8+fuZVnKie1D737UJ3LhxesEtqr9mJEUSdYuN1QpaScdv7bMkX7xTcg02T5Ljs4F0KsKSME43Pzxm33qCQ\/Gyfsz\/iNKHYQztg9wPkSanbqvFnDtHhcIhKBsETCbNuBZqBk0AwYCupLIJTjC6SShHc4TtWiv834wtSmc1fYfzrsq7gJalJifFAaeGemzFwkePFlVqjdYc63KSqK8ut0jEcjKPAmJ+5NCUoxc8iASMJCesf31mzUPlw1L9LCBMA0aywDqkZYK4tJHZYMvXc4UkSs19OuAzUbXMoVHsJ03ftfC02gpg4hqZDSiBqYuyKMvt2xuutTA+xQcl3fQGUuNdSmBqUFm0D5cCvT10aZPNUXA2cnS+89u58QSxO1wEZJCYKOrDvX1oqOyJs\/c8GNip3LwheIF2KB8\/Zh83h8ZncDxuesAzq89IjV815K3P1G\/kSVPhvQapw1KMLu9rBDZ3FVvQw8K8fg5a7opBrK2ggGds=", + "signature": "d6pqYc0pj5hihZK4Pi\/rM9XguY1xK9LEch+jUcxZWwhzOPL4qVHx5LN4FAhEOnr5ZjuhK\/umVEUjieamF4z8tP\/4nnnu2LmRuPMmj6+1tBEwbsKoeg7NiYfYL5h+VSdBePpIZDmjk0tjEpsMtCPhUPAY5vOSSDJ3Xef4KQIpeL6RKIctDcVdO26QWPLFpCo9NK3j91KHuXTcjbAsATDo+oXQzi0CaomBqL6Ft1SU\/Bdes6usgeVWd6mGygZ6zUCLqB4hSi6335xIkkUO1c3NekWksiqTWqdmVIpsTEsIpapx+nE0UFBGc7ZF2rnamg5813g67M5V\/UwhBRcHobMFWfbp73QDUsHcuLCOhamgYh7hbVIlDP7LS2V3kIRLgMLBVwLnvb8LAbaGUsdYGtbfmrhcMK\/jkpGCv0pqUCc4I+1QuVexNEQrdqafwYRnQUsmdFSFaCASYVvgxPrY5jA+y1HwNX5HEc5mMzVORNPhZXUcxWBRUQxUESY5j473DInMQUhq7SLVNAaglxDR1a9M5tQO8engvIJ5eTImLITm0qdefmEvFrxQ0BrrGmPNFYUysrHeNGDhMkGX+JIONj+T4Ht3Z7dr7cfufYDHRaummsTGgRx6206zRSqavsBWL\/Cbzrfu1HhiRagncVcoL40EommJt8lobaKHs3GZ8k861Wo=", "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIEvjCCAqagAwIBAgIUc\/0FxYrsgSs9rDxp03EJmbjN0NwwDQYJKoZIhvcNAQEF\r\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\r\nMzIxMDMzM1oXDTE2MTEwMzIxMDMzM1owDzENMAsGA1UEAwwEY29yZTCCAiIwDQYJ\r\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBALb6EgHpkAqZbO5vRO8XSh7G7XGWHw5s\r\niOf4RwPXR6SE9bWZEm\/b72SfWk\/\/J6AbrD8WiOzBuT\/ODy6k5T1arEdHO+Pux0W1\r\nMxYJJI4kH74KKgMpC0SB0Rt+8WrMqV1r3hhJ46df6Xr\/xolP3oD+eLbShPcblhdS\r\nVtkZEkoev8Sh6L2wDCeHDyPxzvj1w2dTdGVO9Kztn0xIlyfEBakqvBWtcxyi3Ln0\r\nklnxlMx3tPDUE4kqvpia9qNiB1AN2PV93eNr5\/2riAzIssMFSCarWCx0AKYb54+d\r\nxLpcYFyqPJ0ydBCkF78DD45RCZet6PNYkdzgbqlUWEGGomkuDoJbBg4wzgzO0D77\r\nH87KFhYW8tKFFvF1V3AHl\/sFQ9tDHaxM9Y0pZ2jPp\/ccdiqnmdkBxBDqsiRvHvVB\r\nCn6qpb4vWGFC7vHOBfYspmEL1zLlKXZv3ezMZEZw7O9ZvUP3VO\/wAtd2vUW8UFiq\r\ns2v1QnNLN6jNh51obcwmrBvWhJy9vQIdtIjQbDxqWTHh1zUSrw9wrlklCBZ\/zrM0\r\ni8nfCFwTxWRxp3H9KoECzO\/zS5R5KIS7s3\/wq\/w9T2Ie4rcecgXwDizwnn0C\/aKc\r\nbDIjujpL1s9HO05pcD\/V3wKcPZ1izymBkmMyIbL52iRVN5FTVHeZdXPpFuq+CTQJ\r\nQ238lC+A\/KOVAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAGoKTnh8RfJV4sQItVC2\r\nAvfJagkrIqZ3iiQTUBQGTKBsTnAqE1H7QgUSV9vSd+8rgvHkyZsRjmtyR1e3A6Ji\r\noNCXUbExC\/0iCPUqdHZIVb+Lc\/vWuv4ByFMybGPydgtLoEUX2ZrKFWmcgZFDUSRd\r\n9Uj26vtUhCC4bU4jgu6hIrR9IuxOBLQUxGTRZyAcXvj7obqRAEZwFAKQgFpfpqTb\r\nH+kjcbZSaAlLVSF7vBc1syyI8RGYbqpwvtREqJtl5IEIwe6huEqJ3zPnlP2th\/55\r\ncf3Fovj6JJgbb9XFxrdnsOsDOu\/tpnaRWlvv5ib4+SzG5wWFT5UUEo4Wg2STQiiX\r\nuVSRQxK1LE1yg84bs3NZk9FSQh4B8vZVuRr5FaJsZZkwlFlhRO\/\/+TJtXRbyNgsf\r\noMRZGi8DLGU2SGEAHcRH\/QZHq\/XDUWVzdxrSBYcy7GSpT7UDVzGv1rEJUrn5veP1\r\n0KmauAqtiIaYRm4f6YBsn0INcZxzIPZ0p8qFtVZBPeHhvQtvOt0iXI\/XUxEWOa2F\r\nK2EqhErgMK\/N07U1JJJay5tYZRtvkGq46oP\/5kQG8hYST0MDK6VihJoPpvCmAm4E\r\npEYKQ96x6A4EH9Y9mZlYozH\/eqmxPbTK8n89\/p7Ydun4rI+B2iiLnY8REWWy6+UQ\r\nV204fGUkJqW5CrKy3P3XvY9X\r\n-----END CERTIFICATE-----" }'; $this->environmentHelper @@ -614,6 +616,48 @@ class CheckerTest extends TestCase { $this->assertSame([], $this->checker->verifyCoreSignature()); } + public function testVerifyCoreSignatureWithValidModifiedHtaccessAndUserIniSignatureData() { + $this->environmentHelper + ->expects($this->once()) + ->method('getChannel') + ->will($this->returnValue('stable')); + $this->config + ->expects($this->any()) + ->method('getSystemValue') + ->with('integrity.check.disabled', false) + ->will($this->returnValue(false)); + + $this->environmentHelper + ->expects($this->any()) + ->method('getServerRoot') + ->will($this->returnValue(\OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithValidModifiedContent')); + $signatureDataFile = '{ + "hashes": { + ".htaccess": "ef34c5f35fffb6e8e3008c2118617b53243cfc5ac2513edba9ebd383169862bc16e4f889316ad65788d6b172fe14713af90908c19838c4ba13b4146e12c7ac62", + ".user.ini": "0a557e3cdca4c2e3675deed761d79d109011dcdebbd9c7f6429f1d3476938ec95729543d7384651d1d0c48e26c5024cc5f517445920915a704ea748bdb903c5f", + "subfolder\/.htaccess": "2c57b1e25050e11dc3ae975832f378c452159f7b69f818e47eeeafadd6ba568517461dcb4d843b90b906cd7c89d161bc1b89dff8e3ae0eb6f5088508c47befd1" + }, + "signature": "d6pqYc0pj5hihZK4Pi\/rM9XguY1xK9LEch+jUcxZWwhzOPL4qVHx5LN4FAhEOnr5ZjuhK\/umVEUjieamF4z8tP\/4nnnu2LmRuPMmj6+1tBEwbsKoeg7NiYfYL5h+VSdBePpIZDmjk0tjEpsMtCPhUPAY5vOSSDJ3Xef4KQIpeL6RKIctDcVdO26QWPLFpCo9NK3j91KHuXTcjbAsATDo+oXQzi0CaomBqL6Ft1SU\/Bdes6usgeVWd6mGygZ6zUCLqB4hSi6335xIkkUO1c3NekWksiqTWqdmVIpsTEsIpapx+nE0UFBGc7ZF2rnamg5813g67M5V\/UwhBRcHobMFWfbp73QDUsHcuLCOhamgYh7hbVIlDP7LS2V3kIRLgMLBVwLnvb8LAbaGUsdYGtbfmrhcMK\/jkpGCv0pqUCc4I+1QuVexNEQrdqafwYRnQUsmdFSFaCASYVvgxPrY5jA+y1HwNX5HEc5mMzVORNPhZXUcxWBRUQxUESY5j473DInMQUhq7SLVNAaglxDR1a9M5tQO8engvIJ5eTImLITm0qdefmEvFrxQ0BrrGmPNFYUysrHeNGDhMkGX+JIONj+T4Ht3Z7dr7cfufYDHRaummsTGgRx6206zRSqavsBWL\/Cbzrfu1HhiRagncVcoL40EommJt8lobaKHs3GZ8k861Wo=", + "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIEvjCCAqagAwIBAgIUc\/0FxYrsgSs9rDxp03EJmbjN0NwwDQYJKoZIhvcNAQEF\r\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTEw\r\nMzIxMDMzM1oXDTE2MTEwMzIxMDMzM1owDzENMAsGA1UEAwwEY29yZTCCAiIwDQYJ\r\nKoZIhvcNAQEBBQADggIPADCCAgoCggIBALb6EgHpkAqZbO5vRO8XSh7G7XGWHw5s\r\niOf4RwPXR6SE9bWZEm\/b72SfWk\/\/J6AbrD8WiOzBuT\/ODy6k5T1arEdHO+Pux0W1\r\nMxYJJI4kH74KKgMpC0SB0Rt+8WrMqV1r3hhJ46df6Xr\/xolP3oD+eLbShPcblhdS\r\nVtkZEkoev8Sh6L2wDCeHDyPxzvj1w2dTdGVO9Kztn0xIlyfEBakqvBWtcxyi3Ln0\r\nklnxlMx3tPDUE4kqvpia9qNiB1AN2PV93eNr5\/2riAzIssMFSCarWCx0AKYb54+d\r\nxLpcYFyqPJ0ydBCkF78DD45RCZet6PNYkdzgbqlUWEGGomkuDoJbBg4wzgzO0D77\r\nH87KFhYW8tKFFvF1V3AHl\/sFQ9tDHaxM9Y0pZ2jPp\/ccdiqnmdkBxBDqsiRvHvVB\r\nCn6qpb4vWGFC7vHOBfYspmEL1zLlKXZv3ezMZEZw7O9ZvUP3VO\/wAtd2vUW8UFiq\r\ns2v1QnNLN6jNh51obcwmrBvWhJy9vQIdtIjQbDxqWTHh1zUSrw9wrlklCBZ\/zrM0\r\ni8nfCFwTxWRxp3H9KoECzO\/zS5R5KIS7s3\/wq\/w9T2Ie4rcecgXwDizwnn0C\/aKc\r\nbDIjujpL1s9HO05pcD\/V3wKcPZ1izymBkmMyIbL52iRVN5FTVHeZdXPpFuq+CTQJ\r\nQ238lC+A\/KOVAgMBAAEwDQYJKoZIhvcNAQEFBQADggIBAGoKTnh8RfJV4sQItVC2\r\nAvfJagkrIqZ3iiQTUBQGTKBsTnAqE1H7QgUSV9vSd+8rgvHkyZsRjmtyR1e3A6Ji\r\noNCXUbExC\/0iCPUqdHZIVb+Lc\/vWuv4ByFMybGPydgtLoEUX2ZrKFWmcgZFDUSRd\r\n9Uj26vtUhCC4bU4jgu6hIrR9IuxOBLQUxGTRZyAcXvj7obqRAEZwFAKQgFpfpqTb\r\nH+kjcbZSaAlLVSF7vBc1syyI8RGYbqpwvtREqJtl5IEIwe6huEqJ3zPnlP2th\/55\r\ncf3Fovj6JJgbb9XFxrdnsOsDOu\/tpnaRWlvv5ib4+SzG5wWFT5UUEo4Wg2STQiiX\r\nuVSRQxK1LE1yg84bs3NZk9FSQh4B8vZVuRr5FaJsZZkwlFlhRO\/\/+TJtXRbyNgsf\r\noMRZGi8DLGU2SGEAHcRH\/QZHq\/XDUWVzdxrSBYcy7GSpT7UDVzGv1rEJUrn5veP1\r\n0KmauAqtiIaYRm4f6YBsn0INcZxzIPZ0p8qFtVZBPeHhvQtvOt0iXI\/XUxEWOa2F\r\nK2EqhErgMK\/N07U1JJJay5tYZRtvkGq46oP\/5kQG8hYST0MDK6VihJoPpvCmAm4E\r\npEYKQ96x6A4EH9Y9mZlYozH\/eqmxPbTK8n89\/p7Ydun4rI+B2iiLnY8REWWy6+UQ\r\nV204fGUkJqW5CrKy3P3XvY9X\r\n-----END CERTIFICATE-----" +}'; + $this->fileAccessHelper + ->expects($this->at(0)) + ->method('file_get_contents') + ->with( + \OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithValidModifiedContent/core/signature.json' + ) + ->will($this->returnValue($signatureDataFile)); + $this->fileAccessHelper + ->expects($this->at(1)) + ->method('file_get_contents') + ->with( + \OC::$SERVERROOT . '/tests/data/integritycheck/htaccessWithValidModifiedContent/resources/codesigning/root.crt' + ) + ->will($this->returnValue(file_get_contents(__DIR__ .'/../../data/integritycheck/root.crt'))); + + $this->assertSame([], $this->checker->verifyCoreSignature()); + } + public function testVerifyCoreSignatureWithValidSignatureDataAndNotAlphabeticOrder() { $this->environmentHelper ->expects($this->once()) @@ -867,6 +911,7 @@ class CheckerTest extends TestCase { $this->config, $this->cacheFactory, $this->appManager, + \OC::$server->getTempManager() ]) ->setMethods([ 'verifyCoreSignature', diff --git a/tests/lib/memcache/cache.php b/tests/lib/memcache/cache.php index 3ff72ee931c..725b0fbbf57 100644 --- a/tests/lib/memcache/cache.php +++ b/tests/lib/memcache/cache.php @@ -39,6 +39,11 @@ abstract class Cache extends \Test_Cache { $this->assertFalse($this->instance->hasKey('foo')); } + public function testRemoveNonExisting() { + $this->instance->remove('foo'); + $this->assertFalse($this->instance->hasKey('foo')); + } + public function testArrayAccessSet() { $this->instance['foo'] = 'bar'; $this->assertEquals('bar', $this->instance->get('foo')); @@ -72,7 +77,9 @@ abstract class Cache extends \Test_Cache { $this->assertEquals(1, $this->instance->inc('foo')); $this->assertEquals(1, $this->instance->get('foo')); $this->assertEquals(2, $this->instance->inc('foo')); + $this->assertEquals(2, $this->instance->get('foo')); $this->assertEquals(12, $this->instance->inc('foo', 10)); + $this->assertEquals(12, $this->instance->get('foo')); $this->instance->set('foo', 'bar'); $this->assertFalse($this->instance->inc('foo')); @@ -80,7 +87,7 @@ abstract class Cache extends \Test_Cache { } public function testDec() { - $this->assertEquals(false, $this->instance->dec('foo')); + $this->assertFalse($this->instance->dec('foo')); $this->instance->set('foo', 20); $this->assertEquals(19, $this->instance->dec('foo')); $this->assertEquals(19, $this->instance->get('foo')); diff --git a/tests/lib/repair/repairsharepropagation.php b/tests/lib/repair/repairsharepropagation.php new file mode 100644 index 00000000000..6ec8b98ec56 --- /dev/null +++ b/tests/lib/repair/repairsharepropagation.php @@ -0,0 +1,51 @@ +<?php +/** + * Copyright (c) 2016 Robin Appelman <icewind@owncloud.com> + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + +namespace Test\Repair; + +use OC\Repair\SharePropagation; + +class RepairSharePropagation extends \Test\TestCase { + public function keyProvider() { + return [ + [['1', '2'], ['1', '2']], + [['1', '2', 'foo'], ['1', '2']], + [['foo'], []], + ]; + } + + /** + * @dataProvider keyProvider + * @param array $startKeys + * @param array $expectedRemovedKeys + */ + public function testRemovePropagationEntries(array $startKeys, array $expectedRemovedKeys) { + /** @var \PHPUnit_Framework_MockObject_MockObject|\OCP\IConfig $config */ + $config = $this->getMock('\OCP\IConfig'); + $config->expects($this->once()) + ->method('getAppKeys') + ->with('files_sharing') + ->will($this->returnValue($startKeys)); + + $removedKeys = []; + + $config->expects($this->any()) + ->method('deleteAppValue') + ->will($this->returnCallback(function ($app, $key) use (&$removedKeys) { + $removedKeys[] = $key; + })); + + $step = new SharePropagation($config); + $step->run(); + + sort($expectedRemovedKeys); + sort($removedKeys); + + $this->assertEquals($expectedRemovedKeys, $removedKeys); + } +} diff --git a/tests/lib/share/MailNotificationsTest.php b/tests/lib/share/MailNotificationsTest.php index 66bec8653fb..8c8ca78f39a 100644 --- a/tests/lib/share/MailNotificationsTest.php +++ b/tests/lib/share/MailNotificationsTest.php @@ -25,6 +25,7 @@ use OCP\IUser; use OCP\Mail\IMailer; use OCP\ILogger; use OCP\Defaults; +use OCP\IURLGenerator; /** * Class MailNotificationsTest @@ -40,6 +41,8 @@ class MailNotificationsTest extends \Test\TestCase { private $defaults; /** @var IUser | PHPUnit_Framework_MockObject_MockObject */ private $user; + /** @var IURLGenerator | PHPUnit_Framework_MockObject_MockObject */ + private $urlGenerator; public function setUp() { @@ -55,6 +58,7 @@ class MailNotificationsTest extends \Test\TestCase { ->disableOriginalConstructor()->getMock(); $this->user = $this->getMockBuilder('\OCP\IUser') ->disableOriginalConstructor()->getMock(); + $this->urlGenerator = $this->getMock('\OCP\IURLGenerator'); $this->l10n->expects($this->any()) ->method('t') @@ -116,7 +120,8 @@ class MailNotificationsTest extends \Test\TestCase { $this->l10n, $this->mailer, $this->logger, - $this->defaults + $this->defaults, + $this->urlGenerator ); $this->assertSame([], $mailNotifications->sendLinkShareMail('lukas@owncloud.com', 'MyFile', 'https://owncloud.com/file/?foo=bar', 3600)); @@ -180,7 +185,8 @@ class MailNotificationsTest extends \Test\TestCase { $this->l10n, $this->mailer, $this->logger, - $this->defaults + $this->defaults, + $this->urlGenerator ); $this->assertSame([], $mailNotifications->sendLinkShareMail($to, 'MyFile', 'https://owncloud.com/file/?foo=bar', 3600)); } @@ -193,7 +199,8 @@ class MailNotificationsTest extends \Test\TestCase { $this->l10n, $this->mailer, $this->logger, - $this->defaults + $this->defaults, + $this->urlGenerator ); $this->assertSame(['lukas@owncloud.com'], $mailNotifications->sendLinkShareMail('lukas@owncloud.com', 'MyFile', 'https://owncloud.com/file/?foo=bar', 3600)); @@ -208,7 +215,9 @@ class MailNotificationsTest extends \Test\TestCase { $this->l10n, $this->mailer, $this->logger, - $this->defaults]); + $this->defaults, + $this->urlGenerator + ]); $mailNotifications->method('getItemSharedWithUser') ->withAnyParameters() @@ -227,6 +236,16 @@ class MailNotificationsTest extends \Test\TestCase { ->method('getDisplayName') ->willReturn('Recipient'); + $this->urlGenerator->expects($this->once()) + ->method('linkToRouteAbsolute') + ->with( + $this->equalTo('files.view.index'), + $this->equalTo([ + 'dir' => '/', + 'scrollto' => 'welcome.txt' + ]) + ); + $recipientList = [$recipient]; $result = $mailNotifications->sendInternalShareMail($recipientList, '3', 'file'); $this->assertSame([], $result); |