summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.htaccess4
-rw-r--r--.mention-bot11
-rw-r--r--apps/files_external/lib/smb.php1
-rw-r--r--apps/files_external/lib/swift.php11
-rw-r--r--apps/files_external/tests/amazons3migration.php3
-rw-r--r--apps/files_external/tests/controller/storagescontrollertest.php6
-rw-r--r--apps/files_external/tests/service/backendservicetest.php5
-rw-r--r--apps/files_sharing/appinfo/application.php1
-rw-r--r--apps/files_sharing/lib/cache.php2
-rw-r--r--apps/files_sharing/lib/controllers/externalsharescontroller.php3
-rw-r--r--apps/files_sharing/lib/controllers/sharecontroller.php2
-rw-r--r--apps/files_sharing/lib/middleware/sharingcheckmiddleware.php1
-rw-r--r--apps/files_sharing/lib/sharedstorage.php2
-rw-r--r--core/js/js.js1
-rw-r--r--lib/private/l10n.php10
-rw-r--r--lib/private/share/mailnotifications.php4
-rw-r--r--tests/lib/share/MailNotificationsTest.php22
17 files changed, 71 insertions, 18 deletions
diff --git a/.htaccess b/.htaccess
index 4f2a6f35af4..7e8fd902294 100644
--- a/.htaccess
+++ b/.htaccess
@@ -14,6 +14,10 @@
Header set X-Robots-Tag "none"
Header set X-Frame-Options "SAMEORIGIN"
SetEnv modHeadersAvailable true
+
+ # Add CSP header if not set, used for static resources
+ Header append Content-Security-Policy ""
+ Header edit Content-Security-Policy "^$" "default-src 'none'; style-src 'self' 'unsafe-inline'; script-src 'self'"
</IfModule>
# Add cache control for CSS and JS files
diff --git a/.mention-bot b/.mention-bot
new file mode 100644
index 00000000000..b342edbd214
--- /dev/null
+++ b/.mention-bot
@@ -0,0 +1,11 @@
+{
+ "maxReviewers": 3,
+ "numFilesToCheck": 5,
+ "alwaysNotifyForPaths": [
+ {
+ "name": "DeepDiver1975",
+ "files": ["apps/dav/**"]
+ }
+ ],
+ "userBlacklist": ["owncloud-bot"]
+}
diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php
index f58cd9849f2..a94840ead59 100644
--- a/apps/files_external/lib/smb.php
+++ b/apps/files_external/lib/smb.php
@@ -33,7 +33,6 @@ use Icewind\SMB\Exception\Exception;
use Icewind\SMB\Exception\NotFoundException;
use Icewind\SMB\NativeServer;
use Icewind\SMB\Server;
-use Icewind\Streams\CallbackWrapper;
use Icewind\Streams\IteratorDirectory;
use OC\Files\Filesystem;
diff --git a/apps/files_external/lib/swift.php b/apps/files_external/lib/swift.php
index e946e7feb77..a64a02a4ed9 100644
--- a/apps/files_external/lib/swift.php
+++ b/apps/files_external/lib/swift.php
@@ -354,9 +354,18 @@ class Swift extends \OC\Files\Storage\Common {
}
$tmpFile = \OCP\Files::tmpFile($ext);
\OC\Files\Stream\Close::registerCallback($tmpFile, array($this, 'writeBack'));
- if ($this->file_exists($path)) {
+ // Fetch existing file if required
+ if ($mode[0] !== 'w' && $this->file_exists($path)) {
+ if ($mode[0] === 'x') {
+ // File cannot already exist
+ return false;
+ }
$source = $this->fopen($path, 'r');
file_put_contents($tmpFile, $source);
+ // Seek to end if required
+ if ($mode[0] === 'a') {
+ fseek($tmpFile, 0, SEEK_END);
+ }
}
self::$tmpFiles[$tmpFile] = $path;
diff --git a/apps/files_external/tests/amazons3migration.php b/apps/files_external/tests/amazons3migration.php
index 33fb6119a92..cc47107c7fe 100644
--- a/apps/files_external/tests/amazons3migration.php
+++ b/apps/files_external/tests/amazons3migration.php
@@ -130,6 +130,9 @@ class AmazonS3Migration extends \Test\TestCase {
return $storages;
}
+ /**
+ * @param string $id
+ */
public function deleteStorage($id) {
$stmt = \OC::$server->getDatabaseConnection()->prepare(
'DELETE FROM `*PREFIX*storages` WHERE `id` = ?'
diff --git a/apps/files_external/tests/controller/storagescontrollertest.php b/apps/files_external/tests/controller/storagescontrollertest.php
index 8a7acf81009..747bcd46e17 100644
--- a/apps/files_external/tests/controller/storagescontrollertest.php
+++ b/apps/files_external/tests/controller/storagescontrollertest.php
@@ -48,6 +48,9 @@ abstract class StoragesControllerTest extends \Test\TestCase {
\OC_Mount_Config::$skipTest = false;
}
+ /**
+ * @return \OCA\Files_External\Lib\Backend\Backend
+ */
protected function getBackendMock($class = '\OCA\Files_External\Lib\Backend\SMB', $storageClass = '\OC\Files\Storage\SMB') {
$backend = $this->getMockBuilder('\OCA\Files_External\Lib\Backend\Backend')
->disableOriginalConstructor()
@@ -59,6 +62,9 @@ abstract class StoragesControllerTest extends \Test\TestCase {
return $backend;
}
+ /**
+ * @return \OCA\Files_External\Lib\Auth\AuthMechanism
+ */
protected function getAuthMechMock($scheme = 'null', $class = '\OCA\Files_External\Lib\Auth\NullMechanism') {
$authMech = $this->getMockBuilder('\OCA\Files_External\Lib\Auth\AuthMechanism')
->disableOriginalConstructor()
diff --git a/apps/files_external/tests/service/backendservicetest.php b/apps/files_external/tests/service/backendservicetest.php
index 5097b479a5f..e9cb0e2c368 100644
--- a/apps/files_external/tests/service/backendservicetest.php
+++ b/apps/files_external/tests/service/backendservicetest.php
@@ -35,6 +35,11 @@ class BackendServiceTest extends \Test\TestCase {
$this->l10n = $this->getMock('\OCP\IL10N');
}
+ /**
+ * @param string $class
+ *
+ * @return \OCA\Files_External\Lib\Backend\Backend
+ */
protected function getBackendMock($class) {
$backend = $this->getMockBuilder('\OCA\Files_External\Lib\Backend\Backend')
->disableOriginalConstructor()
diff --git a/apps/files_sharing/appinfo/application.php b/apps/files_sharing/appinfo/application.php
index ffe3a6a513f..6af450405a3 100644
--- a/apps/files_sharing/appinfo/application.php
+++ b/apps/files_sharing/appinfo/application.php
@@ -25,7 +25,6 @@
namespace OCA\Files_Sharing\AppInfo;
-use OCA\Files_Sharing\Helper;
use OCA\Files_Sharing\MountProvider;
use OCP\AppFramework\App;
use OC\AppFramework\Utility\SimpleContainer;
diff --git a/apps/files_sharing/lib/cache.php b/apps/files_sharing/lib/cache.php
index 2e615e231f1..c9032413783 100644
--- a/apps/files_sharing/lib/cache.php
+++ b/apps/files_sharing/lib/cache.php
@@ -98,7 +98,7 @@ class Shared_Cache extends Cache {
/**
* get the stored metadata of a file or folder
*
- * @param string|int $file
+ * @param string $file
* @return array|false
*/
public function get($file) {
diff --git a/apps/files_sharing/lib/controllers/externalsharescontroller.php b/apps/files_sharing/lib/controllers/externalsharescontroller.php
index edf065ab476..ec576065669 100644
--- a/apps/files_sharing/lib/controllers/externalsharescontroller.php
+++ b/apps/files_sharing/lib/controllers/externalsharescontroller.php
@@ -45,7 +45,6 @@ class ExternalSharesController extends Controller {
/**
* @param string $appName
* @param IRequest $request
- * @param bool $incomingShareEnabled
* @param \OCA\Files_Sharing\External\Manager $externalManager
* @param IClientService $clientService
*/
@@ -84,7 +83,7 @@ class ExternalSharesController extends Controller {
* @NoAdminRequired
* @NoOutgoingFederatedSharingRequired
*
- * @param $id
+ * @param integer $id
* @return JSONResponse
*/
public function destroy($id) {
diff --git a/apps/files_sharing/lib/controllers/sharecontroller.php b/apps/files_sharing/lib/controllers/sharecontroller.php
index 4b446d79ada..fe7b159449c 100644
--- a/apps/files_sharing/lib/controllers/sharecontroller.php
+++ b/apps/files_sharing/lib/controllers/sharecontroller.php
@@ -124,7 +124,7 @@ class ShareController extends Controller {
* @UseSession
*
* Authenticates against password-protected shares
- * @param $token
+ * @param string $token
* @param string $password
* @return RedirectResponse|TemplateResponse
*/
diff --git a/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php b/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php
index 22b9d32a275..04dd28574d6 100644
--- a/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php
+++ b/apps/files_sharing/lib/middleware/sharingcheckmiddleware.php
@@ -27,7 +27,6 @@ namespace OCA\Files_Sharing\Middleware;
use OCP\App\IAppManager;
use OCP\AppFramework\Http\NotFoundResponse;
use OCP\AppFramework\Middleware;
-use OCP\AppFramework\Http\TemplateResponse;
use OCP\Files\NotFoundException;
use OCP\IConfig;
use OCP\AppFramework\Utility\IControllerMethodReflector;
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php
index 4807b5ee738..cda3f564d5f 100644
--- a/apps/files_sharing/lib/sharedstorage.php
+++ b/apps/files_sharing/lib/sharedstorage.php
@@ -32,8 +32,6 @@ namespace OC\Files\Storage;
use OC\Files\Filesystem;
use OCA\Files_Sharing\ISharedStorage;
-use OCA\Files_Sharing\Propagator;
-use OCA\Files_Sharing\SharedMount;
use OCP\Lock\ILockingProvider;
/**
diff --git a/core/js/js.js b/core/js/js.js
index cbdffd0f016..2937d3f6eb1 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -174,7 +174,6 @@ var OC={
* @param {string} type the type of the file to link to (e.g. css,img,ajax.template)
* @param {string} file the filename
* @return {string} Absolute URL for a file in an app
- * @deprecated use OC.generateUrl() instead
*/
filePath:function(app,type,file){
var isCore=OC.coreApps.indexOf(app)!==-1,
diff --git a/lib/private/l10n.php b/lib/private/l10n.php
index 86335bce92f..7835285bd49 100644
--- a/lib/private/l10n.php
+++ b/lib/private/l10n.php
@@ -116,13 +116,17 @@ class OC_L10N implements \OCP\IL10N {
$preferred_language = str_replace('-', '_', $preferred_language);
foreach ($available as $available_language) {
if ($preferred_language === strtolower($available_language)) {
- self::$language = $available_language;
+ if (!self::$language) {
+ self::$language = $available_language;
+ }
return $available_language;
}
}
foreach ($available as $available_language) {
if (substr($preferred_language, 0, 2) === $available_language) {
- self::$language = $available_language;
+ if (!self::$language) {
+ self::$language = $available_language;
+ }
return $available_language;
}
}
@@ -407,7 +411,7 @@ class OC_L10N implements \OCP\IL10N {
* If nothing works it returns 'en'
*/
public static function findLanguage($app = null) {
- if(self::$language != '') {
+ if (self::$language != '' && self::languageExists($app, self::$language)) {
return self::$language;
}
diff --git a/lib/private/share/mailnotifications.php b/lib/private/share/mailnotifications.php
index f45d80b37ca..4d282158ba4 100644
--- a/lib/private/share/mailnotifications.php
+++ b/lib/private/share/mailnotifications.php
@@ -176,10 +176,12 @@ class MailNotifications {
$subject = (string)$this->l->t('%s shared »%s« with you', [$this->senderDisplayName, $filename]);
list($htmlBody, $textBody) = $this->createMailBody($filename, $link, $expiration);
+ $recipient = str_replace([', ', '; ', ',', ';', ' '], ',', $recipient);
+ $recipients = explode(',', $recipient);
try {
$message = $this->mailer->createMessage();
$message->setSubject($subject);
- $message->setTo([$recipient]);
+ $message->setTo($recipients);
$message->setHtmlBody($htmlBody);
$message->setPlainBody($textBody);
$message->setFrom([
diff --git a/tests/lib/share/MailNotificationsTest.php b/tests/lib/share/MailNotificationsTest.php
index 2124a8bf13b..8684886e798 100644
--- a/tests/lib/share/MailNotificationsTest.php
+++ b/tests/lib/share/MailNotificationsTest.php
@@ -123,7 +123,23 @@ class MailNotificationsTest extends \Test\TestCase {
$this->assertSame([], $mailNotifications->sendLinkShareMail('lukas@owncloud.com', 'MyFile', 'https://owncloud.com/file/?foo=bar', 3600));
}
- public function testSendLinkShareMailWithReplyTo() {
+ public function dataSendLinkShareMailWithReplyTo() {
+ return [
+ ['lukas@owncloud.com', ['lukas@owncloud.com']],
+ ['lukas@owncloud.com nickvergessen@owncloud.com', ['lukas@owncloud.com', 'nickvergessen@owncloud.com']],
+ ['lukas@owncloud.com,nickvergessen@owncloud.com', ['lukas@owncloud.com', 'nickvergessen@owncloud.com']],
+ ['lukas@owncloud.com, nickvergessen@owncloud.com', ['lukas@owncloud.com', 'nickvergessen@owncloud.com']],
+ ['lukas@owncloud.com;nickvergessen@owncloud.com', ['lukas@owncloud.com', 'nickvergessen@owncloud.com']],
+ ['lukas@owncloud.com; nickvergessen@owncloud.com', ['lukas@owncloud.com', 'nickvergessen@owncloud.com']],
+ ];
+ }
+
+ /**
+ * @dataProvider dataSendLinkShareMailWithReplyTo
+ * @param string $to
+ * @param array $expectedTo
+ */
+ public function testSendLinkShareMailWithReplyTo($to, array $expectedTo) {
$message = $this->getMockBuilder('\OC\Mail\Message')
->disableOriginalConstructor()->getMock();
@@ -134,7 +150,7 @@ class MailNotificationsTest extends \Test\TestCase {
$message
->expects($this->once())
->method('setTo')
- ->with(['lukas@owncloud.com']);
+ ->with($expectedTo);
$message
->expects($this->once())
->method('setHtmlBody');
@@ -167,7 +183,7 @@ class MailNotificationsTest extends \Test\TestCase {
$this->logger,
$this->defaults
);
- $this->assertSame([], $mailNotifications->sendLinkShareMail('lukas@owncloud.com', 'MyFile', 'https://owncloud.com/file/?foo=bar', 3600));
+ $this->assertSame([], $mailNotifications->sendLinkShareMail($to, 'MyFile', 'https://owncloud.com/file/?foo=bar', 3600));
}
public function testSendLinkShareMailException() {