aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/admin_audit/appinfo/info.xml4
-rw-r--r--apps/comments/appinfo/info.xml4
-rw-r--r--apps/dav/appinfo/info.xml4
-rw-r--r--apps/dav/lib/Connector/Sabre/FilesPlugin.php6
-rw-r--r--apps/encryption/appinfo/info.xml4
-rw-r--r--apps/federatedfilesharing/appinfo/info.xml4
-rw-r--r--apps/federation/appinfo/info.xml4
-rw-r--r--apps/files/appinfo/info.xml4
-rw-r--r--apps/files_external/appinfo/info.xml4
-rw-r--r--apps/files_sharing/appinfo/info.xml4
-rw-r--r--apps/files_sharing/lib/SharedMount.php6
-rw-r--r--apps/files_trashbin/appinfo/info.xml4
-rw-r--r--apps/files_versions/appinfo/info.xml4
-rw-r--r--apps/provisioning_api/appinfo/info.xml4
-rw-r--r--apps/sharebymail/appinfo/info.xml4
-rw-r--r--apps/systemtags/appinfo/info.xml4
-rw-r--r--apps/testing/appinfo/info.xml4
-rw-r--r--apps/theming/appinfo/info.xml4
-rw-r--r--apps/twofactor_backupcodes/appinfo/info.xml4
-rw-r--r--apps/updatenotification/appinfo/info.xml4
-rw-r--r--apps/user_ldap/appinfo/info.xml4
-rw-r--r--apps/workflowengine/appinfo/info.xml4
-rw-r--r--build/integration/data/bjoern.vcf51
-rw-r--r--build/integration/features/bootstrap/CardDavContext.php111
-rw-r--r--build/integration/features/carddav.feature30
-rw-r--r--lib/private/App/AppStore/Fetcher/AppFetcher.php2
-rw-r--r--lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php2
-rw-r--r--lib/private/Setup/MySQL.php2
-rw-r--r--tests/lib/App/AppStore/Fetcher/AppFetcherTest.php11
-rw-r--r--version.php6
30 files changed, 250 insertions, 57 deletions
diff --git a/apps/admin_audit/appinfo/info.xml b/apps/admin_audit/appinfo/info.xml
index 14bce64aabc..98862554090 100644
--- a/apps/admin_audit/appinfo/info.xml
+++ b/apps/admin_audit/appinfo/info.xml
@@ -7,9 +7,9 @@
</description>
<licence>AGPL</licence>
<author>Nextcloud</author>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<types>
<logging/>
diff --git a/apps/comments/appinfo/info.xml b/apps/comments/appinfo/info.xml
index 9d5409a2d62..eb711c4b569 100644
--- a/apps/comments/appinfo/info.xml
+++ b/apps/comments/appinfo/info.xml
@@ -6,9 +6,9 @@
<licence>AGPL</licence>
<author>Arthur Schiwon, Vincent Petry</author>
<default_enable/>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<types>
<logging/>
diff --git a/apps/dav/appinfo/info.xml b/apps/dav/appinfo/info.xml
index f362c882f97..31341a80a0b 100644
--- a/apps/dav/appinfo/info.xml
+++ b/apps/dav/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>WebDAV endpoint</description>
<licence>AGPL</licence>
<author>owncloud.org</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<default_enable/>
<types>
<filesystem/>
@@ -15,7 +15,7 @@
<webdav>appinfo/v1/publicwebdav.php</webdav>
</public>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<background-jobs>
<job>OCA\DAV\CardDAV\SyncJob</job>
diff --git a/apps/dav/lib/Connector/Sabre/FilesPlugin.php b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
index 59b326243ee..54d91db5c06 100644
--- a/apps/dav/lib/Connector/Sabre/FilesPlugin.php
+++ b/apps/dav/lib/Connector/Sabre/FilesPlugin.php
@@ -247,8 +247,10 @@ class FilesPlugin extends ServerPlugin {
$node = $this->tree->getNodeForPath($request->getPath());
if (!($node instanceof IFile)) return;
- // adds a 'Content-Disposition: attachment' header
- if ($this->downloadAttachment) {
+ // adds a 'Content-Disposition: attachment' header in case no disposition
+ // header has been set before
+ if ($this->downloadAttachment &&
+ $response->getHeader('Content-Disposition') === null) {
$filename = $node->getName();
if ($this->request->isUserAgent(
[
diff --git a/apps/encryption/appinfo/info.xml b/apps/encryption/appinfo/info.xml
index 0bb3efebf5f..1e63ca5c471 100644
--- a/apps/encryption/appinfo/info.xml
+++ b/apps/encryption/appinfo/info.xml
@@ -19,13 +19,13 @@
<admin>admin-encryption</admin>
</documentation>
<rememberlogin>false</rememberlogin>
- <version>1.4.1</version>
+ <version>1.5.0</version>
<types>
<filesystem/>
</types>
<dependencies>
<lib>openssl</lib>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<settings>
<admin>OCA\Encryption\Settings\Admin</admin>
diff --git a/apps/federatedfilesharing/appinfo/info.xml b/apps/federatedfilesharing/appinfo/info.xml
index 6a414496f37..dc5cbffaa8d 100644
--- a/apps/federatedfilesharing/appinfo/info.xml
+++ b/apps/federatedfilesharing/appinfo/info.xml
@@ -5,11 +5,11 @@
<description>Provide federated file sharing across servers</description>
<licence>AGPL</licence>
<author>Bjoern Schiessle, Roeland Jago Douma</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>FederatedFileSharing</namespace>
<category>other</category>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<settings>
<admin>OCA\FederatedFileSharing\Settings\Admin</admin>
diff --git a/apps/federation/appinfo/info.xml b/apps/federation/appinfo/info.xml
index a5eeb133d9e..2d15f20485a 100644
--- a/apps/federation/appinfo/info.xml
+++ b/apps/federation/appinfo/info.xml
@@ -5,11 +5,11 @@
<description>Federation allows you to connect with other trusted servers to exchange the user directory. For example this will be used to auto-complete external users for federated sharing.</description>
<licence>AGPL</licence>
<author>Bjoern Schiessle</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>Federation</namespace>
<category>other</category>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<default_enable/>
<types>
diff --git a/apps/files/appinfo/info.xml b/apps/files/appinfo/info.xml
index 35e58b7202e..a25c043f332 100644
--- a/apps/files/appinfo/info.xml
+++ b/apps/files/appinfo/info.xml
@@ -6,12 +6,12 @@
<licence>AGPL</licence>
<author>Robin Appelman, Vincent Petry</author>
<default_enable/>
- <version>1.6.1</version>
+ <version>1.7.0</version>
<types>
<filesystem/>
</types>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<documentation>
<user>user-files</user>
diff --git a/apps/files_external/appinfo/info.xml b/apps/files_external/appinfo/info.xml
index c221ba4145f..b2f73dce621 100644
--- a/apps/files_external/appinfo/info.xml
+++ b/apps/files_external/appinfo/info.xml
@@ -13,7 +13,7 @@
<admin>admin-external-storage</admin>
</documentation>
<rememberlogin>false</rememberlogin>
- <version>1.1.2</version>
+ <version>1.2.0</version>
<types>
<filesystem/>
</types>
@@ -22,7 +22,7 @@
<namespace>Files_External</namespace>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<settings>
diff --git a/apps/files_sharing/appinfo/info.xml b/apps/files_sharing/appinfo/info.xml
index cff424d223a..322efdb6c00 100644
--- a/apps/files_sharing/appinfo/info.xml
+++ b/apps/files_sharing/appinfo/info.xml
@@ -10,12 +10,12 @@ Turning the feature off removes shared files and folders on the server for all s
<licence>AGPL</licence>
<author>Michael Gapczynski, Bjoern Schiessle</author>
<default_enable/>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<types>
<filesystem/>
</types>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<public>
<files>public.php</files>
diff --git a/apps/files_sharing/lib/SharedMount.php b/apps/files_sharing/lib/SharedMount.php
index b7fb96b711b..2ef5e15b778 100644
--- a/apps/files_sharing/lib/SharedMount.php
+++ b/apps/files_sharing/lib/SharedMount.php
@@ -115,9 +115,9 @@ class SharedMount extends MountPoint implements MoveableMount {
private function updateFileTarget($newPath, &$share) {
$share->setTarget($newPath);
- foreach ($this->groupedShares as $share) {
- $share->setTarget($newPath);
- \OC::$server->getShareManager()->moveShare($share, $this->user);
+ foreach ($this->groupedShares as $tmpShare) {
+ $tmpShare->setTarget($newPath);
+ \OC::$server->getShareManager()->moveShare($tmpShare, $this->user);
}
}
diff --git a/apps/files_trashbin/appinfo/info.xml b/apps/files_trashbin/appinfo/info.xml
index 04b8a7293cb..a756013568d 100644
--- a/apps/files_trashbin/appinfo/info.xml
+++ b/apps/files_trashbin/appinfo/info.xml
@@ -10,13 +10,13 @@ To prevent a user from running out of disk space, the Deleted files app will not
<licence>AGPL</licence>
<author>Bjoern Schiessle</author>
<default_enable/>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<types>
<filesystem/>
</types>
<namespace>Files_Trashbin</namespace>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<documentation>
<user>user-trashbin</user>
diff --git a/apps/files_versions/appinfo/info.xml b/apps/files_versions/appinfo/info.xml
index 5eb0df91d8d..5304051d751 100644
--- a/apps/files_versions/appinfo/info.xml
+++ b/apps/files_versions/appinfo/info.xml
@@ -8,13 +8,13 @@
This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.
In addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation.
</description>
- <version>1.4.0</version>
+ <version>1.5.0</version>
<types>
<filesystem/>
</types>
<namespace>Files_Versions</namespace>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<documentation>
<user>user-versions</user>
diff --git a/apps/provisioning_api/appinfo/info.xml b/apps/provisioning_api/appinfo/info.xml
index 0ebcee9a7f7..e633df00bd9 100644
--- a/apps/provisioning_api/appinfo/info.xml
+++ b/apps/provisioning_api/appinfo/info.xml
@@ -17,12 +17,12 @@
<documentation>
<admin>admin-provisioning-api</admin>
</documentation>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<namespace>Provisioning_API</namespace>
<types>
<prevent_group_restriction/>
</types>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
</info>
diff --git a/apps/sharebymail/appinfo/info.xml b/apps/sharebymail/appinfo/info.xml
index 56977fcf285..5528f6158d9 100644
--- a/apps/sharebymail/appinfo/info.xml
+++ b/apps/sharebymail/appinfo/info.xml
@@ -5,11 +5,11 @@
<description>Share provider which allows you to share files by mail</description>
<licence>AGPL</licence>
<author>Bjoern Schiessle</author>
- <version>1.0.1</version>
+ <version>1.1.0</version>
<namespace>ShareByMail</namespace>
<category>other</category>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<default_enable/>
diff --git a/apps/systemtags/appinfo/info.xml b/apps/systemtags/appinfo/info.xml
index 1d5f33207a4..02cafdb4d26 100644
--- a/apps/systemtags/appinfo/info.xml
+++ b/apps/systemtags/appinfo/info.xml
@@ -7,9 +7,9 @@
<licence>AGPL</licence>
<author>Vincent Petry, Joas Schilling</author>
<default_enable/>
- <version>1.1.3</version>
+ <version>1.2.0</version>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<namespace>SystemTags</namespace>
<types>
diff --git a/apps/testing/appinfo/info.xml b/apps/testing/appinfo/info.xml
index 41b07447d55..35ee3715b5c 100644
--- a/apps/testing/appinfo/info.xml
+++ b/apps/testing/appinfo/info.xml
@@ -5,8 +5,8 @@
<description>This app is only for testing! It is dangerous to have it enabled in a live instance</description>
<licence>AGPL</licence>
<author>Joas Schilling</author>
- <version>1.1.0</version>
+ <version>1.2.0</version>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
</info>
diff --git a/apps/theming/appinfo/info.xml b/apps/theming/appinfo/info.xml
index 3a8867dc6f4..9ded5c89b87 100644
--- a/apps/theming/appinfo/info.xml
+++ b/apps/theming/appinfo/info.xml
@@ -5,12 +5,12 @@
<description>Adjust the Nextcloud theme</description>
<licence>AGPL</licence>
<author>Nextcloud</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>Theming</namespace>
<category>other</category>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<types>
diff --git a/apps/twofactor_backupcodes/appinfo/info.xml b/apps/twofactor_backupcodes/appinfo/info.xml
index d5dd3f4db9e..5f956c6a86d 100644
--- a/apps/twofactor_backupcodes/appinfo/info.xml
+++ b/apps/twofactor_backupcodes/appinfo/info.xml
@@ -5,7 +5,7 @@
<description>A two-factor auth backup codes provider</description>
<licence>agpl</licence>
<author>Christoph Wurst</author>
- <version>1.0.0</version>
+ <version>1.1.0</version>
<namespace>TwoFactorBackupCodes</namespace>
<category>other</category>
@@ -14,6 +14,6 @@
</two-factor-providers>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
</info>
diff --git a/apps/updatenotification/appinfo/info.xml b/apps/updatenotification/appinfo/info.xml
index 4cd84ac827b..d920e866f1c 100644
--- a/apps/updatenotification/appinfo/info.xml
+++ b/apps/updatenotification/appinfo/info.xml
@@ -5,11 +5,11 @@
<description>Displays update notifications for ownCloud and provides the SSO for the updater.</description>
<licence>AGPL</licence>
<author>Lukas Reschke</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>UpdateNotification</namespace>
<default_enable/>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<background-jobs>
diff --git a/apps/user_ldap/appinfo/info.xml b/apps/user_ldap/appinfo/info.xml
index 87eb61a0fba..7535790fa57 100644
--- a/apps/user_ldap/appinfo/info.xml
+++ b/apps/user_ldap/appinfo/info.xml
@@ -9,7 +9,7 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce
</description>
<licence>AGPL</licence>
<author>Dominik Schmidt and Arthur Schiwon</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<types>
<authentication/>
</types>
@@ -18,7 +18,7 @@ A user logs into ownCloud with their LDAP or AD credentials, and is granted acce
</documentation>
<dependencies>
<lib>ldap</lib>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<namespace>User_LDAP</namespace>
diff --git a/apps/workflowengine/appinfo/info.xml b/apps/workflowengine/appinfo/info.xml
index 83f4be9e398..b037174d348 100644
--- a/apps/workflowengine/appinfo/info.xml
+++ b/apps/workflowengine/appinfo/info.xml
@@ -5,7 +5,7 @@
<description></description>
<licence>AGPL</licence>
<author>Morris Jobke</author>
- <version>1.1.1</version>
+ <version>1.2.0</version>
<namespace>WorkflowEngine</namespace>
<category>other</category>
@@ -18,7 +18,7 @@
</types>
<dependencies>
- <nextcloud min-version="11" max-version="11" />
+ <nextcloud min-version="12" max-version="12" />
</dependencies>
<settings>
diff --git a/build/integration/data/bjoern.vcf b/build/integration/data/bjoern.vcf
new file mode 100644
index 00000000000..03decaf997e
--- /dev/null
+++ b/build/integration/data/bjoern.vcf
@@ -0,0 +1,51 @@
+BEGIN:VCARD
+VERSION:3.0
+FN:Björn Schießle
+ORG:Nextcloud
+PHOTO;ENCODING=b;TYPE=jpeg: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
+UID:6454bec7-6f5b-46f2-ba22-15537ab215d9
+CATEGORIES:Engineering
+END:VCARD \ No newline at end of file
diff --git a/build/integration/features/bootstrap/CardDavContext.php b/build/integration/features/bootstrap/CardDavContext.php
index bfdd51bfdb0..4ee882cc2e6 100644
--- a/build/integration/features/bootstrap/CardDavContext.php
+++ b/build/integration/features/bootstrap/CardDavContext.php
@@ -202,4 +202,115 @@ class CardDavContext implements \Behat\Behat\Context\Context {
}
}
+ /**
+ * @Given :user uploads the contact :fileName to the addressbook :addressbook
+ */
+ public function uploadsTheContactToTheAddressbook($user, $fileName, $addressBook) {
+ $davUrl = $this->baseUrl . '/remote.php/dav/addressbooks/users/'.$user.'/'.$addressBook . '/' . $fileName;
+ $password = ($user === 'admin') ? 'admin' : '123456';
+
+ $request = $this->client->createRequest(
+ 'PUT',
+ $davUrl,
+ [
+ 'body' => file_get_contents(__DIR__ . '/../../data/' . $fileName),
+ 'auth' => [
+ $user,
+ $password,
+ ],
+ 'headers' => [
+ 'Content-Type' => 'application/xml;charset=UTF-8',
+ ],
+ ]
+ );
+
+ $this->response = $this->client->send($request);
+
+ if($this->response->getStatusCode() !== 201) {
+ throw new \Exception(
+ sprintf(
+ 'Expected %s got %s',
+ 201,
+ $this->response->getStatusCode()
+ )
+ );
+ }
+ }
+
+ /**
+ * @When Exporting the picture of contact :fileName from addressbook :addressBook as user :user
+ */
+ public function whenExportingThePictureOfContactFromAddressbookAsUser($fileName, $addressBook, $user) {
+ $davUrl = $this->baseUrl . '/remote.php/dav/addressbooks/users/'.$user.'/'.$addressBook . '/' . $fileName . '?photo=true';
+ $password = ($user === 'admin') ? 'admin' : '123456';
+
+ try {
+ $request = $this->client->createRequest(
+ 'GET',
+ $davUrl,
+ [
+ 'auth' => [
+ $user,
+ $password,
+ ],
+ 'headers' => [
+ 'Content-Type' => 'application/xml;charset=UTF-8',
+ ],
+ ]
+ );
+ $this->response = $this->client->send($request);
+ } catch (\GuzzleHttp\Exception\ClientException $e) {
+ $this->response = $e->getResponse();
+ }
+ }
+
+ /**
+ * @When Downloading the contact :fileName from addressbook :addressBook as user :user
+ */
+ public function whenDownloadingTheContactFromAddressbookAsUser($fileName, $addressBook, $user) {
+ $davUrl = $this->baseUrl . '/remote.php/dav/addressbooks/users/'.$user.'/'.$addressBook . '/' . $fileName;
+ $password = ($user === 'admin') ? 'admin' : '123456';
+
+ try {
+ $request = $this->client->createRequest(
+ 'GET',
+ $davUrl,
+ [
+ 'auth' => [
+ $user,
+ $password,
+ ],
+ 'headers' => [
+ 'Content-Type' => 'application/xml;charset=UTF-8',
+ ],
+ ]
+ );
+ $this->response = $this->client->send($request);
+ } catch (\GuzzleHttp\Exception\ClientException $e) {
+ $this->response = $e->getResponse();
+ }
+ }
+
+ /**
+ * @Then The following HTTP headers should be set
+ * @param \Behat\Gherkin\Node\TableNode $table
+ * @throws \Exception
+ */
+ public function theFollowingHttpHeadersShouldBeSet(\Behat\Gherkin\Node\TableNode $table) {
+ foreach($table->getTable() as $header) {
+ $headerName = $header[0];
+ $expectedHeaderValue = $header[1];
+ $returnedHeader = $this->response->getHeader($headerName);
+ if($returnedHeader !== $expectedHeaderValue) {
+ throw new \Exception(
+ sprintf(
+ "Expected value '%s' for header '%s', got '%s'",
+ $expectedHeaderValue,
+ $headerName,
+ $returnedHeader
+ )
+ );
+ }
+ }
+ }
}
diff --git a/build/integration/features/carddav.feature b/build/integration/features/carddav.feature
index ee9d877085d..4fbe403c7db 100644
--- a/build/integration/features/carddav.feature
+++ b/build/integration/features/carddav.feature
@@ -21,3 +21,33 @@ Feature: carddav
Scenario: Creating a new addressbook
When "admin" creates an addressbook named "MyAddressbook" with statuscode "201"
Then "admin" requests addressbook "admin/MyAddressbook" with statuscode "200"
+
+ Scenario: Accessing ones own contact
+ Given "admin" creates an addressbook named "MyAddressbook" with statuscode "201"
+ Given "admin" uploads the contact "bjoern.vcf" to the addressbook "MyAddressbook"
+ When Downloading the contact "bjoern.vcf" from addressbook "MyAddressbook" as user "admin"
+ Then The following HTTP headers should be set
+ |Content-Disposition|attachment; filename*=UTF-8''bjoern.vcf; filename="bjoern.vcf"|
+ |Content-Type|text/vcard; charset=utf-8|
+ |Content-Security-Policy|default-src 'none';|
+ |X-Content-Type-Options |nosniff|
+ |X-Download-Options|noopen|
+ |X-Frame-Options|Sameorigin|
+ |X-Permitted-Cross-Domain-Policies|none|
+ |X-Robots-Tag|none|
+ |X-XSS-Protection|1; mode=block|
+
+ Scenario: Exporting the picture of ones own contact
+ Given "admin" creates an addressbook named "MyAddressbook" with statuscode "201"
+ Given "admin" uploads the contact "bjoern.vcf" to the addressbook "MyAddressbook"
+ When Exporting the picture of contact "bjoern.vcf" from addressbook "MyAddressbook" as user "admin"
+ Then The following HTTP headers should be set
+ |Content-Disposition|attachment|
+ |Content-Type|image/jpeg|
+ |Content-Security-Policy|default-src 'none';|
+ |X-Content-Type-Options |nosniff|
+ |X-Download-Options|noopen|
+ |X-Frame-Options|Sameorigin|
+ |X-Permitted-Cross-Domain-Policies|none|
+ |X-Robots-Tag|none|
+ |X-XSS-Protection|1; mode=block|
diff --git a/lib/private/App/AppStore/Fetcher/AppFetcher.php b/lib/private/App/AppStore/Fetcher/AppFetcher.php
index bbe75c723d5..b8efdef4336 100644
--- a/lib/private/App/AppStore/Fetcher/AppFetcher.php
+++ b/lib/private/App/AppStore/Fetcher/AppFetcher.php
@@ -50,7 +50,7 @@ class AppFetcher extends Fetcher {
$this->fileName = 'apps.json';
$this->config = $config;
- $versionArray = \OC_Util::getVersion();
+ $versionArray = explode('.', $this->config->getSystemValue('version'));
$this->endpointUrl = sprintf(
'https://apps.nextcloud.com/api/v1/platform/%d.%d.%d/apps.json',
$versionArray[0],
diff --git a/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php b/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php
index 284700566d6..85ae127f5f1 100644
--- a/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php
+++ b/lib/private/Security/CSP/ContentSecurityPolicyNonceManager.php
@@ -69,8 +69,6 @@ class ContentSecurityPolicyNonceManager {
Request::USER_AGENT_CHROME,
// Firefox 45+
'/^Mozilla\/5\.0 \([^)]+\) Gecko\/[0-9.]+ Firefox\/(4[5-9]|[5-9][0-9])\.[0-9.]+$/',
- // Safari 10+
- '/^Mozilla\/5\.0 \([^)]+\) AppleWebKit\/[0-9.]+ \(KHTML, like Gecko\) Version\/1[0-9.]+ Safari\/[0-9.A-Z]+$/',
];
if($this->request->isUserAgent($browserWhitelist)) {
diff --git a/lib/private/Setup/MySQL.php b/lib/private/Setup/MySQL.php
index d1399c8821c..dd88e2ccac6 100644
--- a/lib/private/Setup/MySQL.php
+++ b/lib/private/Setup/MySQL.php
@@ -152,7 +152,7 @@ class MySQL extends AbstractDatabase {
};
}
} catch (\Exception $ex) {
- $this->logger->error('Specific user creation failed: {error}', [
+ $this->logger->info('Can not create a new MySQL user, will continue with the provided user: {error}', [
'app' => 'mysql.setup',
'error' => $ex->getMessage()
]);
diff --git a/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php b/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php
index aa0d50cac97..a9cd5a190d0 100644
--- a/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php
+++ b/tests/lib/App/AppStore/Fetcher/AppFetcherTest.php
@@ -58,6 +58,12 @@ EOD;
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->config = $this->createMock(IConfig::class);
+ $this->config
+ ->expects($this->atLeastOnce())
+ ->method('getSystemValue')
+ ->with('version')
+ ->willReturn('11.0.0.2');
+
$this->fetcher = new AppFetcher(
$this->appData,
$this->clientService,
@@ -103,11 +109,6 @@ EOD;
->expects($this->once())
->method('getTime')
->willReturn(1234);
- $this->config
- ->expects($this->once())
- ->method('getSystemValue')
- ->with('version')
- ->willReturn('11.0.0.2');
$expected = array (
'data' =>
diff --git a/version.php b/version.php
index 9d31dd8b0e9..3703bbcb09e 100644
--- a/version.php
+++ b/version.php
@@ -26,12 +26,12 @@
// between betas, final and RCs. This is _not_ the public version number. Reset minor/patchlevel
// when updating major/minor version number.
-$OC_Version = array(11, 0, 0, 10);
+$OC_Version = array(12, 0, 0, 10);
// The human readable string
-$OC_VersionString = '11.0.0';
+$OC_VersionString = '12.0 alpha';
-$OC_VersionCanBeUpgradedFrom = array(9, 1);
+$OC_VersionCanBeUpgradedFrom = array(11);
// default Nextcloud channel
$OC_Channel = 'git';