summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/admin_audit/appinfo/app.php27
-rw-r--r--apps/admin_audit/appinfo/info.xml18
-rw-r--r--apps/admin_audit/lib/actions/action.php76
-rw-r--r--apps/admin_audit/lib/actions/auth.php56
-rw-r--r--apps/admin_audit/lib/actions/files.php135
-rw-r--r--apps/admin_audit/lib/actions/groupmanagement.php73
-rw-r--r--apps/admin_audit/lib/actions/sharing.php189
-rw-r--r--apps/admin_audit/lib/actions/trashbin.php69
-rw-r--r--apps/admin_audit/lib/actions/usermanagement.php78
-rw-r--r--apps/admin_audit/lib/actions/versions.php45
-rw-r--r--apps/admin_audit/lib/auditlogger.php186
-rw-r--r--apps/dav/lib/Connector/Sabre/Auth.php4
-rw-r--r--apps/federatedfilesharing/l10n/pl.js1
-rw-r--r--apps/federatedfilesharing/l10n/pl.json1
-rw-r--r--apps/federation/css/settings-admin.css11
-rw-r--r--apps/federation/js/settings-admin.js13
-rw-r--r--apps/federation/templates/settings-admin.php3
-rw-r--r--apps/files/l10n/pl.js1
-rw-r--r--apps/files/l10n/pl.json1
-rw-r--r--apps/files_external/js/settings.js5
-rw-r--r--apps/files_external/js/statusmanager.js1
-rw-r--r--apps/files_external/l10n/pl.js1
-rw-r--r--apps/files_external/l10n/pl.json1
-rw-r--r--apps/files_external/lib/Controller/GlobalStoragesController.php5
-rw-r--r--apps/files_external/lib/Controller/StoragesController.php9
-rw-r--r--apps/files_external/lib/Controller/UserGlobalStoragesController.php9
-rw-r--r--apps/files_external/lib/Controller/UserStoragesController.php9
-rw-r--r--apps/files_external/lib/Lib/Storage/Google.php2
-rw-r--r--apps/files_external/lib/config.php4
-rw-r--r--apps/files_external/tests/js/settingsSpec.js3
-rw-r--r--apps/files_sharing/l10n/pl.js1
-rw-r--r--apps/files_sharing/l10n/pl.json1
-rw-r--r--apps/systemtags/l10n/pl.js2
-rw-r--r--apps/systemtags/l10n/pl.json2
-rw-r--r--apps/updatenotification/l10n/pl.js3
-rw-r--r--apps/updatenotification/l10n/pl.json3
36 files changed, 1016 insertions, 32 deletions
diff --git a/apps/admin_audit/appinfo/app.php b/apps/admin_audit/appinfo/app.php
new file mode 100644
index 00000000000..ea5fb0286bf
--- /dev/null
+++ b/apps/admin_audit/appinfo/app.php
@@ -0,0 +1,27 @@
+<?php
+/**
+ * @author Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+$logger = \OC::$server->getLogger();
+$userSession = \OC::$server->getUserSession();
+$groupManager = \OC::$server->getGroupManager();
+
+$auditLogger = new \OCA\Admin_Audit\AuditLogger($logger, $userSession, $groupManager);
+$auditLogger->registerHooks();
diff --git a/apps/admin_audit/appinfo/info.xml b/apps/admin_audit/appinfo/info.xml
new file mode 100644
index 00000000000..74fc880c881
--- /dev/null
+++ b/apps/admin_audit/appinfo/info.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<info>
+ <id>admin_audit</id>
+ <name>Auditing / Logging</name>
+ <description>Provides logging abilities for Nextcloud such as logging file
+ accesses or otherwise sensitive actions.
+ </description>
+ <licence>AGPL</licence>
+ <author>Nextcloud</author>
+ <version>1.0.0</version>
+ <dependencies>
+ <owncloud min-version="9.0" max-version="9.1" />
+ </dependencies>
+ <types>
+ <logging/>
+ </types>
+ <default_enable/>
+</info>
diff --git a/apps/admin_audit/lib/actions/action.php b/apps/admin_audit/lib/actions/action.php
new file mode 100644
index 00000000000..6aafacc6189
--- /dev/null
+++ b/apps/admin_audit/lib/actions/action.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\Admin_Audit\Actions;
+
+use OCP\ILogger;
+
+class Action {
+ /** @var ILogger */
+ private $logger;
+
+ /**
+ * @param ILogger $logger
+ */
+ public function __construct(ILogger $logger) {
+ $this->logger = $logger;
+ }
+
+ /**
+ * Log a single action with a log level of info
+ *
+ * @param string $text
+ * @param array $params
+ * @param array $elements
+ */
+ public function log($text,
+ array $params,
+ array $elements) {
+ foreach($elements as $element) {
+ if(!isset($params[$element])) {
+ $this->logger->critical(
+ sprintf(
+ '$params["'.$element.'"] was missing. Transferred value: %s',
+ print_r($params, true)
+ )
+ );
+ return;
+ }
+ }
+
+ $replaceArray = [];
+ foreach($elements as $element) {
+ if($params[$element] instanceof \DateTime) {
+ $params[$element] = $params[$element]->format('Y-m-d H:i:s');
+ }
+ $replaceArray[] = $params[$element];
+ }
+
+ $this->logger->info(
+ vsprintf(
+ $text,
+ $replaceArray
+ ),
+ [
+ 'app' => 'admin_audit'
+ ]
+ );
+ }
+}
diff --git a/apps/admin_audit/lib/actions/auth.php b/apps/admin_audit/lib/actions/auth.php
new file mode 100644
index 00000000000..4061ca89c4b
--- /dev/null
+++ b/apps/admin_audit/lib/actions/auth.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\Admin_Audit\Actions;
+
+/**
+ * Class Auth logs all auth related actions
+ *
+ * @package OCA\Admin_Audit\Actions
+ */
+class Auth extends Action {
+ public function loginAttempt(array $params) {
+ $this->log(
+ 'Login attempt: "%s"',
+ $params,
+ [
+ 'uid',
+ ]
+ );
+ }
+
+ public function loginSuccessful(array $params) {
+ $this->log(
+ 'Login successful: "%s"',
+ $params,
+ [
+ 'uid',
+ ]
+ );
+ }
+
+ public function logout(array $params) {
+ $this->log(
+ 'Logout occurred',
+ [],
+ []
+ );
+ }
+}
diff --git a/apps/admin_audit/lib/actions/files.php b/apps/admin_audit/lib/actions/files.php
new file mode 100644
index 00000000000..46da0ade6bb
--- /dev/null
+++ b/apps/admin_audit/lib/actions/files.php
@@ -0,0 +1,135 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\Admin_Audit\Actions;
+
+/**
+ * Class Files logs the actions to files
+ *
+ * @package OCA\Admin_Audit\Actions
+ */
+class Files extends Action {
+ /**
+ * Logs file read actions
+ *
+ * @param array $params
+ */
+ public function read(array $params) {
+ $this->log(
+ 'File accessed: "%s"',
+ $params,
+ [
+ 'path',
+ ]
+ );
+ }
+
+ /**
+ * Logs rename actions of files
+ *
+ * @param array $params
+ */
+ public function rename(array $params) {
+ $this->log(
+ 'File renamed: "%s" to "%s"',
+ $params,
+ [
+ 'oldpath',
+ 'newpath',
+ ]
+ );
+ }
+
+ /**
+ * Logs creation of files
+ *
+ * @param array $params
+ */
+ public function create(array $params) {
+ $this->log(
+ 'File created: "%s"',
+ $params,
+ [
+ 'path',
+ ]
+ );
+ }
+
+ /**
+ * Logs copying of files
+ *
+ * @param array $params
+ */
+ public function copy(array $params) {
+ $this->log(
+ 'File copied: "%s" to "%s"',
+ $params,
+ [
+ 'oldpath',
+ 'newpath',
+ ]
+ );
+ }
+
+ /**
+ * Logs writing of files
+ *
+ * @param array $params
+ */
+ public function write(array $params) {
+ $this->log(
+ 'File written to: "%s"',
+ $params,
+ [
+ 'path',
+ ]
+ );
+ }
+
+ /**
+ * Logs update of files
+ *
+ * @param array $params
+ */
+ public function update(array $params) {
+ $this->log(
+ 'File updated: "%s"',
+ $params,
+ [
+ 'path',
+ ]
+ );
+ }
+
+ /**
+ * Logs deletions of files
+ *
+ * @param array $params
+ */
+ public function delete(array $params) {
+ $this->log(
+ 'File deleted: "%s"',
+ $params,
+ [
+ 'path',
+ ]
+ );
+ }
+}
diff --git a/apps/admin_audit/lib/actions/groupmanagement.php b/apps/admin_audit/lib/actions/groupmanagement.php
new file mode 100644
index 00000000000..4ece8994f39
--- /dev/null
+++ b/apps/admin_audit/lib/actions/groupmanagement.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+namespace OCA\Admin_Audit\Actions;
+
+
+use OCA\Admin_Audit\Actions\Action;
+use OCP\IGroup;
+use OCP\IUser;
+
+/**
+ * Class GroupManagement logs all group manager related events
+ *
+ * @package OCA\Admin_Audit
+ */
+class GroupManagement extends Action {
+
+ /**
+ * log add user to group event
+ *
+ * @param IGroup $group
+ * @param IUser $user
+ */
+ public function addUser(IGroup $group, IUser $user) {
+ $this->log('User "%s" added to group "%s"',
+ [
+ 'group' => $group->getGID(),
+ 'user' => $user->getUID()
+ ],
+ [
+ 'user', 'group'
+ ]
+ );
+ }
+
+ /**
+ * log remove user from group event
+ *
+ * @param IGroup $group
+ * @param IUser $user
+ */
+ public function removeUser(IGroup $group, IUser $user) {
+ $this->log('User "%s" removed from group "%s"',
+ [
+ 'group' => $group->getGID(),
+ 'user' => $user->getUID()
+ ],
+ [
+ 'user', 'group'
+ ]
+ );
+ }
+
+}
diff --git a/apps/admin_audit/lib/actions/sharing.php b/apps/admin_audit/lib/actions/sharing.php
new file mode 100644
index 00000000000..5f263748465
--- /dev/null
+++ b/apps/admin_audit/lib/actions/sharing.php
@@ -0,0 +1,189 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\Admin_Audit\Actions;
+use OCP\Share;
+
+/**
+ * Class Sharing logs the sharing actions
+ *
+ * @package OCA\Admin_Audit\Actions
+ */
+class Sharing extends Action {
+ /**
+ * Logs sharing of data
+ *
+ * @param array $params
+ */
+ public function shared(array $params) {
+ if($params['shareType'] === Share::SHARE_TYPE_LINK) {
+ $this->log(
+ 'The %s "%s" with ID "%s" has been shared via link with permissions "%s" (Share ID: %s)',
+ $params,
+ [
+ 'itemType',
+ 'itemTarget',
+ 'itemSource',
+ 'permissions',
+ 'id',
+ ]
+ );
+ } elseif($params['shareType'] === Share::SHARE_TYPE_USER) {
+ $this->log(
+ 'The %s "%s" with ID "%s" has been shared to the user "%s" with permissions "%s" (Share ID: %s)',
+ $params,
+ [
+ 'itemType',
+ 'itemTarget',
+ 'itemSource',
+ 'shareWith',
+ 'permissions',
+ 'id',
+ ]
+ );
+ } elseif($params['shareType'] === Share::SHARE_TYPE_GROUP) {
+ $this->log(
+ 'The %s "%s" with ID "%s" has been shared to the group "%s" with permissions "%s" (Share ID: %s)',
+ $params,
+ [
+ 'itemType',
+ 'itemTarget',
+ 'itemSource',
+ 'shareWith',
+ 'permissions',
+ 'id',
+ ]
+ );
+ }
+ }
+
+ /**
+ * Logs unsharing of data
+ *
+ * @param array $params
+ */
+ public function unshare(array $params) {
+ if($params['shareType'] === Share::SHARE_TYPE_LINK) {
+ $this->log(
+ 'The %s "%s" with ID "%s" has been unshared (Share ID: %s)',
+ $params,
+ [
+ 'itemType',
+ 'fileTarget',
+ 'itemSource',
+ 'id',
+ ]
+ );
+ } elseif($params['shareType'] === Share::SHARE_TYPE_USER) {
+ $this->log(
+ 'The %s "%s" with ID "%s" has been unshared from the user "%s" (Share ID: %s)',
+ $params,
+ [
+ 'itemType',
+ 'fileTarget',
+ 'itemSource',
+ 'shareWith',
+ 'id',
+ ]
+ );
+ } elseif($params['shareType'] === Share::SHARE_TYPE_GROUP) {
+ $this->log(
+ 'The %s "%s" with ID "%s" has been unshared from the group "%s" (Share ID: %s)',
+ $params,
+ [
+ 'itemType',
+ 'fileTarget',
+ 'itemSource',
+ 'shareWith',
+ 'id',
+ ]
+ );
+ }
+ }
+
+ /**
+ * Logs the updating of permission changes for shares
+ *
+ * @param array $params
+ */
+ public function updatePermissions(array $params) {
+ $this->log(
+ 'The permissions of the shared %s "%s" with ID "%s" have been changed to "%s"',
+ $params,
+ [
+ 'itemType',
+ 'path',
+ 'itemSource',
+ 'permissions',
+ ]
+ );
+ }
+
+ /**
+ * Logs the password changes for a share
+ *
+ * @param array $params
+ */
+ public function updatePassword(array $params) {
+ $this->log(
+ 'The password of the publicly shared %s "%s" with ID "%s" has been changed',
+ $params,
+ [
+ 'itemType',
+ 'token',
+ 'itemSource',
+ ]
+ );
+ }
+
+ /**
+ * Logs the expiration date changes for a share
+ *
+ * @param array $params
+ */
+ public function updateExpirationDate(array $params) {
+ $this->log(
+ 'The expiration date of the publicly shared %s with ID "%s" has been changed to "%s"',
+ $params,
+ [
+ 'itemType',
+ 'itemSource',
+ 'date',
+ ]
+ );
+ }
+
+ /**
+ * Logs access of shared files
+ *
+ * @param array $params
+ */
+ public function shareAccessed(array $params) {
+ $this->log(
+ 'The shared %s with the token "%s" by "%s" has been accessed.',
+ $params,
+ [
+ 'itemType',
+ 'token',
+ 'uidOwner',
+ ]
+ );
+ }
+}
diff --git a/apps/admin_audit/lib/actions/trashbin.php b/apps/admin_audit/lib/actions/trashbin.php
new file mode 100644
index 00000000000..2cd3189d064
--- /dev/null
+++ b/apps/admin_audit/lib/actions/trashbin.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+namespace OCA\Admin_Audit\Actions;
+
+
+use OCP\ILogger;
+use OCP\IUserSession;
+
+class Trashbin extends Action {
+
+ /** @var IUserSession */
+ private $userSession;
+
+ /**
+ * Trashbin constructor.
+ *
+ * @param ILogger $logger
+ * @param IUserSession $userSession
+ */
+ public function __construct(ILogger $logger, IUserSession $userSession) {
+ parent::__construct($logger);
+ $this->userSession = $userSession;
+ }
+
+ public function delete($params) {
+ $this->log('File "%s" deleted from trash bin by "%s"',
+ [
+ 'path' => $params['path'],
+ 'user' => $this->userSession->getUser()->getUID()
+ ],
+ [
+ 'path', 'user'
+ ]
+ );
+ }
+
+ public function restore($params) {
+ $this->log('File "%s" restored from trash bin by "%s"',
+ [
+ 'path' => $params['filePath'],
+ 'user' => $this->userSession->getUser()->getUID()
+ ],
+ [
+ 'path', 'user'
+ ]
+ );
+ }
+
+}
diff --git a/apps/admin_audit/lib/actions/usermanagement.php b/apps/admin_audit/lib/actions/usermanagement.php
new file mode 100644
index 00000000000..5005d150961
--- /dev/null
+++ b/apps/admin_audit/lib/actions/usermanagement.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+namespace OCA\Admin_Audit\Actions;
+use OCP\IUser;
+
+/**
+ * Class UserManagement logs all user management related actions.
+ *
+ * @package OCA\Admin_Audit\Actions
+ */
+class UserManagement extends Action {
+ /**
+ * Log creation of users
+ *
+ * @param array $params
+ */
+ public function create(array $params) {
+ $this->log(
+ 'User created: "%s"',
+ $params,
+ [
+ 'uid',
+ ]
+ );
+ }
+
+ /**
+ * Log deletion of users
+ *
+ * @param array $params
+ */
+ public function delete(array $params) {
+ $this->log(
+ 'User deleted: "%s"',
+ $params,
+ [
+ 'uid',
+ ]
+ );
+ }
+
+ /**
+ * Logs changing of the user scope
+ *
+ * @param IUser $user
+ */
+ public function setPassword(IUser $user) {
+ if($user->getBackendClassName() === 'Database') {
+ $this->log(
+ 'Password of user "%s" has been changed',
+ [
+ 'user' => $user->getUID(),
+ ],
+ [
+ 'user',
+ ]
+ );
+ }
+ }
+}
diff --git a/apps/admin_audit/lib/actions/versions.php b/apps/admin_audit/lib/actions/versions.php
new file mode 100644
index 00000000000..006c33bf04f
--- /dev/null
+++ b/apps/admin_audit/lib/actions/versions.php
@@ -0,0 +1,45 @@
+<?php
+/**
+ * @copyright Bjoern Schiessle <bjoern@schiessle.org>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+namespace OCA\Admin_Audit\Actions;
+
+
+class Versions extends Action {
+
+ public function rollback($params) {
+ $this->log('Version "%s" of "%s" was restored.',
+ [
+ 'version' => $params['revision'],
+ 'path' => $params['path']
+ ],
+ ['version', 'path']
+ );
+ }
+
+ public function delete($params) {
+ $this->log('Version "%s" was deleted.',
+ ['path' => $params['path']],
+ ['path']
+ );
+ }
+
+}
diff --git a/apps/admin_audit/lib/auditlogger.php b/apps/admin_audit/lib/auditlogger.php
new file mode 100644
index 00000000000..f7dae10701f
--- /dev/null
+++ b/apps/admin_audit/lib/auditlogger.php
@@ -0,0 +1,186 @@
+<?php
+/**
+ * @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * 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
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+
+namespace OCA\Admin_Audit;
+
+
+use OC\Files\Filesystem;
+use OCA\Admin_Audit\Actions\Auth;
+use OCA\Admin_Audit\Actions\Files;
+use OCA\Admin_Audit\Actions\GroupManagement;
+use OCA\Admin_Audit\Actions\Sharing;
+use OCA\Admin_Audit\Actions\Trashbin;
+use OCA\Admin_Audit\Actions\UserManagement;
+use OCA\Admin_Audit\Actions\Versions;
+use OCP\IGroupManager;
+use OCP\ILogger;
+use OCP\IUserSession;
+use OCP\Util;
+
+class AuditLogger {
+
+ /** @var ILogger */
+ private $logger;
+
+ /** @var IUserSession */
+ private $userSession;
+
+ /** @var IGroupManager */
+ private $groupManager;
+
+ /**
+ * AuditLogger constructor.
+ *
+ * @param ILogger $logger
+ * @param IUserSession $userSession
+ * @param IGroupManager $groupManager
+ */
+ public function __construct(ILogger $logger,
+ IUserSession $userSession,
+ IGroupManager $groupManager) {
+ $this->logger = $logger;
+ $this->userSession = $userSession;
+ $this->groupManager = $groupManager;
+ }
+
+ /**
+ * register hooks in order to log them
+ */
+ public function registerHooks() {
+ $this->userManagementHooks();
+ $this->groupHooks();
+ $this->sharingHooks();
+ $this->authHooks();
+ $this->fileHooks();
+ $this->trashbinHooks();
+ $this->versionsHooks();
+ }
+
+ /**
+ * connect to user management hooks
+ */
+ private function userManagementHooks() {
+ $userActions = new UserManagement($this->logger);
+
+ Util::connectHook('OC_User', 'post_createUser', $userActions, 'create');
+ Util::connectHook('OC_User', 'post_deleteUser', $userActions, 'delete');
+ $this->userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']);
+ }
+
+ private function groupHooks() {
+ $groupActions = new GroupManagement($this->logger);
+ $this->groupManager->listen('\OC\Group', 'postRemoveUser', [$groupActions, 'removeUser']);
+ $this->groupManager->listen('\OC\Group', 'postAddUser', [$groupActions, 'addUser']);
+ }
+
+ /**
+ * connect to sharing events
+ */
+ private function sharingHooks() {
+ $shareActions = new Sharing($this->logger);
+
+ Util::connectHook('OCP\Share', 'post_shared', $shareActions, 'shared');
+ Util::connectHook('OCP\Share', 'post_unshare', $shareActions, 'unshare');
+ Util::connectHook('OCP\Share', 'post_update_permissions', $shareActions, 'updatePermissions');
+ Util::connectHook('OCP\Share', 'post_update_password', $shareActions, 'updatePassword');
+ Util::connectHook('OCP\Share', 'post_set_expiration_date', $shareActions, 'updateExpirationDate');
+ Util::connectHook('OCP\Share', 'share_link_access', $shareActions, 'shareAccessed');
+ }
+
+ /**
+ * connect to authentication event and related actions
+ */
+ private function authHooks() {
+ $authActions = new Auth($this->logger);
+
+ Util::connectHook('OC_User', 'pre_login', $authActions, 'loginAttempt');
+ Util::connectHook('OC_User', 'post_login', $authActions, 'loginSuccessful');
+ Util::connectHook('OC_User', 'logout', $authActions, 'logout');
+ }
+
+
+ /**
+ * connect to file hooks
+ */
+ private function fileHooks() {
+ $fileActions = new Files($this->logger);
+
+ Util::connectHook(
+ Filesystem::CLASSNAME,
+ Filesystem::signal_post_rename,
+ $fileActions,
+ 'rename'
+ );
+ Util::connectHook(
+ Filesystem::CLASSNAME,
+ Filesystem::signal_post_create,
+ $fileActions,
+ 'create'
+ );
+ Util::connectHook(
+ Filesystem::CLASSNAME,
+ Filesystem::signal_post_copy,
+ $fileActions,
+ 'copy'
+ );
+ Util::connectHook(
+ Filesystem::CLASSNAME,
+ Filesystem::signal_post_write,
+ $fileActions,
+ 'write'
+ );
+ Util::connectHook(
+ Filesystem::CLASSNAME,
+ Filesystem::signal_post_update,
+ $fileActions,
+ 'update'
+ );
+ Util::connectHook(
+ Filesystem::CLASSNAME,
+ Filesystem::signal_read,
+ $fileActions,
+ 'read'
+ );
+ Util::connectHook(
+ Filesystem::CLASSNAME,
+ Filesystem::signal_delete,
+ $fileActions,
+ 'delete'
+ );
+ }
+
+ public function versionsHooks() {
+ $versionsActions = new Versions($this->logger);
+ Util::connectHook('\OCP\Versions', 'rollback', $versionsActions, 'rollback');
+ Util::connectHook('\OCP\Versions', 'delete',$versionsActions, 'delete');
+ }
+
+ /**
+ * connect to trash bin hooks
+ */
+ private function trashbinHooks() {
+ $trashActions = new Trashbin($this->logger, $this->userSession);
+ Util::connectHook('\OCP\Trashbin', 'preDelete', $trashActions, 'delete');
+ Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', $trashActions, 'restore');
+ }
+
+}
diff --git a/apps/dav/lib/Connector/Sabre/Auth.php b/apps/dav/lib/Connector/Sabre/Auth.php
index 7b959a0d899..27900cc1cad 100644
--- a/apps/dav/lib/Connector/Sabre/Auth.php
+++ b/apps/dav/lib/Connector/Sabre/Auth.php
@@ -110,10 +110,10 @@ class Auth extends AbstractBasic {
$this->session->close();
return true;
} else {
- \OC_Util::setUpFS(); //login hooks may need early access to the filesystem
+ \OC_Util::setupFS(); //login hooks may need early access to the filesystem
if($this->userSession->logClientIn($username, $password)) {
$this->userSession->createSessionToken($this->request, $this->userSession->getUser()->getUID(), $username, $password);
- \OC_Util::setUpFS($this->userSession->getUser()->getUID());
+ \OC_Util::setupFS($this->userSession->getUser()->getUID());
$this->session->set(self::DAV_AUTHENTICATED, $this->userSession->getUser()->getUID());
$this->session->close();
return true;
diff --git a/apps/federatedfilesharing/l10n/pl.js b/apps/federatedfilesharing/l10n/pl.js
index 9bd5edd9b56..1d8b949c74a 100644
--- a/apps/federatedfilesharing/l10n/pl.js
+++ b/apps/federatedfilesharing/l10n/pl.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"federatedfilesharing",
{
"Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
+ "File is already shared with %s" : "Plik jest już współdzielony z %s",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny.",
"Accept" : "Akceptuj",
"Open documentation" : "Otwórz dokumentację",
diff --git a/apps/federatedfilesharing/l10n/pl.json b/apps/federatedfilesharing/l10n/pl.json
index 5fd8fb130b7..c44eecbeeb7 100644
--- a/apps/federatedfilesharing/l10n/pl.json
+++ b/apps/federatedfilesharing/l10n/pl.json
@@ -1,5 +1,6 @@
{ "translations": {
"Sharing %s failed, because this item is already shared with %s" : "Współdzielenie %s nie powiodło się, ponieważ element jest już współdzielony z %s",
+ "File is already shared with %s" : "Plik jest już współdzielony z %s",
"Sharing %s failed, could not find %s, maybe the server is currently unreachable." : "Współdzielenie %s nie powiodło się, nie można odnaleźć %s. Prawdopobnie serwer nie jest teraz osiągalny.",
"Accept" : "Akceptuj",
"Open documentation" : "Otwórz dokumentację",
diff --git a/apps/federation/css/settings-admin.css b/apps/federation/css/settings-admin.css
index 55b1dd64d15..150412c156f 100644
--- a/apps/federation/css/settings-admin.css
+++ b/apps/federation/css/settings-admin.css
@@ -17,10 +17,13 @@
cursor: pointer;
}
-#listOfTrustedServers li:hover {
- cursor: pointer;
-}
-
#listOfTrustedServers .status {
margin-right: 10px;
}
+
+#listOfTrustedServers .icon {
+ cursor: pointer;
+ display: inline-block;
+ vertical-align: middle;
+ margin-left: 10px;
+}
diff --git a/apps/federation/js/settings-admin.js b/apps/federation/js/settings-admin.js
index 7d531b39d8c..45d5d62a5a3 100644
--- a/apps/federation/js/settings-admin.js
+++ b/apps/federation/js/settings-admin.js
@@ -42,8 +42,9 @@ $(document).ready(function () {
$('ul#listOfTrustedServers').prepend(
$('<li>')
.attr('id', data.id)
- .attr('class', 'icon-delete')
- .html('<span class="status indeterminate"></span>' + data.url)
+ .html('<span class="status indeterminate"></span>' +
+ data.url +
+ '<span class="icon icon-delete"></span>')
);
OC.msg.finishedSuccess('#ocFederationAddServer .msg', data.message);
})
@@ -56,10 +57,10 @@ $(document).ready(function () {
}
});
- // remove trusted server from list
- $( "#listOfTrustedServers" ).on('click', 'li', function() {
- var id = $(this).attr('id');
- var $this = $(this);
+// remove trusted server from list
+ $( "#listOfTrustedServers" ).on('click', 'li > .icon-delete', function() {
+ var $this = $(this).parent();
+ id = $this.attr('id');
$.ajax({
url: OC.generateUrl('/apps/federation/trusted-servers/' + id),
type: 'DELETE',
diff --git a/apps/federation/templates/settings-admin.php b/apps/federation/templates/settings-admin.php
index 704fc9a9ace..ce66214de7c 100644
--- a/apps/federation/templates/settings-admin.php
+++ b/apps/federation/templates/settings-admin.php
@@ -23,7 +23,7 @@ style('federation', 'settings-admin')
</p>
<ul id="listOfTrustedServers">
<?php foreach($_['trustedServers'] as $trustedServer) { ?>
- <li id="<?php p($trustedServer['id']); ?>" class="icon-delete">
+ <li id="<?php p($trustedServer['id']); ?>">
<?php if((int)$trustedServer['status'] === TrustedServers::STATUS_OK) { ?>
<span class="status success"></span>
<?php
@@ -36,6 +36,7 @@ style('federation', 'settings-admin')
<span class="status error"></span>
<?php } ?>
<?php p($trustedServer['url']); ?>
+ <span class="icon icon-delete"></span>
</li>
<?php } ?>
</ul>
diff --git a/apps/files/l10n/pl.js b/apps/files/l10n/pl.js
index 01259a538ab..cb243f6bf4d 100644
--- a/apps/files/l10n/pl.js
+++ b/apps/files/l10n/pl.js
@@ -45,6 +45,7 @@ OC.L10N.register(
"Unable to determine date" : "Nie można ustalić daty",
"This operation is forbidden" : "Ta operacja jest niedozwolona",
"This directory is unavailable, please check the logs or contact the administrator" : "Ten folder jest niedostępny, proszę sprawdzić logi lub skontaktować się z administratorem.",
+ "Could not move \"{file}\", target exists" : "Nie można było przenieść „{file}” – plik o takiej nazwie już istnieje",
"Could not move \"{file}\"" : "Nie można było przenieść \"{file}\"",
"Could not create file \"{file}\"" : "Nie można było utworzyć pliku \"{file}\"",
"Could not create file \"{file}\" because it already exists" : "Nie można było utworzyć pliku \"{file}\", ponieważ ten plik już istnieje.",
diff --git a/apps/files/l10n/pl.json b/apps/files/l10n/pl.json
index fd4d5116953..60323d0e757 100644
--- a/apps/files/l10n/pl.json
+++ b/apps/files/l10n/pl.json
@@ -43,6 +43,7 @@
"Unable to determine date" : "Nie można ustalić daty",
"This operation is forbidden" : "Ta operacja jest niedozwolona",
"This directory is unavailable, please check the logs or contact the administrator" : "Ten folder jest niedostępny, proszę sprawdzić logi lub skontaktować się z administratorem.",
+ "Could not move \"{file}\", target exists" : "Nie można było przenieść „{file}” – plik o takiej nazwie już istnieje",
"Could not move \"{file}\"" : "Nie można było przenieść \"{file}\"",
"Could not create file \"{file}\"" : "Nie można było utworzyć pliku \"{file}\"",
"Could not create file \"{file}\" because it already exists" : "Nie można było utworzyć pliku \"{file}\", ponieważ ten plik już istnieje.",
diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js
index 8d2cb52d67c..2477f513db3 100644
--- a/apps/files_external/js/settings.js
+++ b/apps/files_external/js/settings.js
@@ -299,7 +299,8 @@ StorageConfig.prototype = {
mountPoint: this.mountPoint,
backend: this.backend,
authMechanism: this.authMechanism,
- backendOptions: this.backendOptions
+ backendOptions: this.backendOptions,
+ testOnly: true
};
if (this.id) {
data.id = this.id;
@@ -326,6 +327,7 @@ StorageConfig.prototype = {
$.ajax({
type: 'GET',
url: OC.generateUrl(this._url + '/{id}', {id: this.id}),
+ data: {'testOnly': true},
success: options.success,
error: options.error
});
@@ -908,6 +910,7 @@ MountConfigListView.prototype = _.extend({
$.ajax({
type: 'GET',
url: OC.generateUrl('apps/files_external/userglobalstorages'),
+ data: {'testOnly' : true},
contentType: 'application/json',
success: function(result) {
var onCompletion = jQuery.Deferred();
diff --git a/apps/files_external/js/statusmanager.js b/apps/files_external/js/statusmanager.js
index 118ec17d246..91974f2d04d 100644
--- a/apps/files_external/js/statusmanager.js
+++ b/apps/files_external/js/statusmanager.js
@@ -78,6 +78,7 @@ OCA.External.StatusManager = {
defObj = $.ajax({
type: 'GET',
url: OC.webroot + '/index.php/apps/files_external/' + ((mountData.type === 'personal') ? 'userstorages' : 'userglobalstorages') + '/' + mountData.id,
+ data: {'testOnly' : false},
success: function (response) {
if (response && response.status === 0) {
self.mountStatus[mountData.mount_point] = response;
diff --git a/apps/files_external/l10n/pl.js b/apps/files_external/l10n/pl.js
index 0ba2646601b..8c3e394627e 100644
--- a/apps/files_external/l10n/pl.js
+++ b/apps/files_external/l10n/pl.js
@@ -2,6 +2,7 @@ OC.L10N.register(
"files_external",
{
"Fetching access tokens failed. Verify that your app key and secret are correct." : "Otrzymano błędne żądanie tokenów. Sprawdź, czy klucz aplikacji oraz klucz poufny są poprawne.",
+ "Please provide a valid app key and secret." : "Proszę podać prawidłowy klucz aplikacji i klucz sekretny.",
"Step 1 failed. Exception: %s" : "Krok 1 błędny. Błąd: %s",
"Step 2 failed. Exception: %s" : "Krok 2 błędny. Błąd: %s",
"External storage" : "Zewnętrzne zasoby dyskowe",
diff --git a/apps/files_external/l10n/pl.json b/apps/files_external/l10n/pl.json
index 8809813c9ba..8e00fc31863 100644
--- a/apps/files_external/l10n/pl.json
+++ b/apps/files_external/l10n/pl.json
@@ -1,5 +1,6 @@
{ "translations": {
"Fetching access tokens failed. Verify that your app key and secret are correct." : "Otrzymano błędne żądanie tokenów. Sprawdź, czy klucz aplikacji oraz klucz poufny są poprawne.",
+ "Please provide a valid app key and secret." : "Proszę podać prawidłowy klucz aplikacji i klucz sekretny.",
"Step 1 failed. Exception: %s" : "Krok 1 błędny. Błąd: %s",
"Step 2 failed. Exception: %s" : "Krok 2 błędny. Błąd: %s",
"External storage" : "Zewnętrzne zasoby dyskowe",
diff --git a/apps/files_external/lib/Controller/GlobalStoragesController.php b/apps/files_external/lib/Controller/GlobalStoragesController.php
index 6f9278ce6f1..471e3b51593 100644
--- a/apps/files_external/lib/Controller/GlobalStoragesController.php
+++ b/apps/files_external/lib/Controller/GlobalStoragesController.php
@@ -139,7 +139,8 @@ class GlobalStoragesController extends StoragesController {
$mountOptions,
$applicableUsers,
$applicableGroups,
- $priority
+ $priority,
+ $testOnly = true
) {
$storage = $this->createStorage(
$mountPoint,
@@ -172,7 +173,7 @@ class GlobalStoragesController extends StoragesController {
);
}
- $this->updateStorageStatus($storage);
+ $this->updateStorageStatus($storage, $testOnly);
return new DataResponse(
$storage,
diff --git a/apps/files_external/lib/Controller/StoragesController.php b/apps/files_external/lib/Controller/StoragesController.php
index aa6a04ecb8d..e50426f4888 100644
--- a/apps/files_external/lib/Controller/StoragesController.php
+++ b/apps/files_external/lib/Controller/StoragesController.php
@@ -238,7 +238,7 @@ abstract class StoragesController extends Controller {
*
* @param StorageConfig $storage storage configuration
*/
- protected function updateStorageStatus(StorageConfig &$storage) {
+ protected function updateStorageStatus(StorageConfig &$storage, $testOnly = true) {
try {
$this->manipulateStorageConfig($storage);
@@ -249,7 +249,8 @@ abstract class StoragesController extends Controller {
\OC_Mount_Config::getBackendStatus(
$backend->getStorageClass(),
$storage->getBackendOptions(),
- false
+ false,
+ $testOnly
)
);
} catch (InsufficientDataForMeaningfulAnswerException $e) {
@@ -293,11 +294,11 @@ abstract class StoragesController extends Controller {
*
* @return DataResponse
*/
- public function show($id) {
+ public function show($id, $testOnly = true) {
try {
$storage = $this->service->getStorage($id);
- $this->updateStorageStatus($storage);
+ $this->updateStorageStatus($storage, $testOnly);
} catch (NotFoundException $e) {
return new DataResponse(
[
diff --git a/apps/files_external/lib/Controller/UserGlobalStoragesController.php b/apps/files_external/lib/Controller/UserGlobalStoragesController.php
index 1c94a1e9635..f65e578507d 100644
--- a/apps/files_external/lib/Controller/UserGlobalStoragesController.php
+++ b/apps/files_external/lib/Controller/UserGlobalStoragesController.php
@@ -111,11 +111,11 @@ class UserGlobalStoragesController extends StoragesController {
*
* @NoAdminRequired
*/
- public function show($id) {
+ public function show($id, $testOnly = true) {
try {
$storage = $this->service->getStorage($id);
- $this->updateStorageStatus($storage);
+ $this->updateStorageStatus($storage, $testOnly);
} catch (NotFoundException $e) {
return new DataResponse(
[
@@ -146,7 +146,8 @@ class UserGlobalStoragesController extends StoragesController {
*/
public function update(
$id,
- $backendOptions
+ $backendOptions,
+ $testOnly = true
) {
try {
$storage = $this->service->getStorage($id);
@@ -171,7 +172,7 @@ class UserGlobalStoragesController extends StoragesController {
);
}
- $this->updateStorageStatus($storage);
+ $this->updateStorageStatus($storage, $testOnly);
$this->sanitizeStorage($storage);
return new DataResponse(
diff --git a/apps/files_external/lib/Controller/UserStoragesController.php b/apps/files_external/lib/Controller/UserStoragesController.php
index 936da7ec5e2..28663090e89 100644
--- a/apps/files_external/lib/Controller/UserStoragesController.php
+++ b/apps/files_external/lib/Controller/UserStoragesController.php
@@ -101,8 +101,8 @@ class UserStoragesController extends StoragesController {
*
* {@inheritdoc}
*/
- public function show($id) {
- return parent::show($id);
+ public function show($id, $testOnly = true) {
+ return parent::show($id, $testOnly);
}
/**
@@ -170,7 +170,8 @@ class UserStoragesController extends StoragesController {
$backend,
$authMechanism,
$backendOptions,
- $mountOptions
+ $mountOptions,
+ $testOnly = true
) {
$storage = $this->createStorage(
$mountPoint,
@@ -200,7 +201,7 @@ class UserStoragesController extends StoragesController {
);
}
- $this->updateStorageStatus($storage);
+ $this->updateStorageStatus($storage, $testOnly);
return new DataResponse(
$storage,
diff --git a/apps/files_external/lib/Lib/Storage/Google.php b/apps/files_external/lib/Lib/Storage/Google.php
index 49fde7d066f..96f12800c10 100644
--- a/apps/files_external/lib/Lib/Storage/Google.php
+++ b/apps/files_external/lib/Lib/Storage/Google.php
@@ -326,7 +326,7 @@ class Google extends \OC\Files\Storage\Common {
$stat['size'] = 0;
} else {
// Check if this is a Google Doc
- if ($this->getMimeType($path) !== $file->getMimeType()) {
+ if ($this->isGoogleDocFile($file)) {
// Return unknown file size
$stat['size'] = \OCP\Files\FileInfo::SPACE_UNKNOWN;
} else {
diff --git a/apps/files_external/lib/config.php b/apps/files_external/lib/config.php
index 86aafcf5770..3510b675d4d 100644
--- a/apps/files_external/lib/config.php
+++ b/apps/files_external/lib/config.php
@@ -215,7 +215,7 @@ class OC_Mount_Config {
* @return int see self::STATUS_*
* @throws Exception
*/
- public static function getBackendStatus($class, $options, $isPersonal) {
+ public static function getBackendStatus($class, $options, $isPersonal, $testOnly = true) {
if (self::$skipTest) {
return StorageNotAvailableException::STATUS_SUCCESS;
}
@@ -228,7 +228,7 @@ class OC_Mount_Config {
$storage = new $class($options);
try {
- $result = $storage->test($isPersonal);
+ $result = $storage->test($isPersonal, $testOnly);
$storage->setAvailability($result);
if ($result) {
return StorageNotAvailableException::STATUS_SUCCESS;
diff --git a/apps/files_external/tests/js/settingsSpec.js b/apps/files_external/tests/js/settingsSpec.js
index 7aa49b2c82a..8f01c16b38c 100644
--- a/apps/files_external/tests/js/settingsSpec.js
+++ b/apps/files_external/tests/js/settingsSpec.js
@@ -223,7 +223,8 @@ describe('OCA.External.Settings tests', function() {
applicableGroups: [],
mountOptions: {
'previews': true
- }
+ },
+ testOnly: true
});
// TODO: respond and check data-id
diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js
index a703ef087ee..ebdfe2aa738 100644
--- a/apps/files_sharing/l10n/pl.js
+++ b/apps/files_sharing/l10n/pl.js
@@ -21,6 +21,7 @@ OC.L10N.register(
"Remote share password" : "Hasło do zdalnego zasobu",
"Cancel" : "Anuluj",
"Add remote share" : "Dodaj zdalny zasób",
+ "No ownCloud installation (7 or higher) found at {remote}" : "Nie znaleziono instalacji ownCloud (w wersji 7 lub nowszej) na {remote}",
"Invalid ownCloud url" : "Błędny adres URL",
"Shared by" : "Udostępniane przez",
"Sharing" : "Udostępnianie",
diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json
index 62d6ef25b38..f5de5dd368c 100644
--- a/apps/files_sharing/l10n/pl.json
+++ b/apps/files_sharing/l10n/pl.json
@@ -19,6 +19,7 @@
"Remote share password" : "Hasło do zdalnego zasobu",
"Cancel" : "Anuluj",
"Add remote share" : "Dodaj zdalny zasób",
+ "No ownCloud installation (7 or higher) found at {remote}" : "Nie znaleziono instalacji ownCloud (w wersji 7 lub nowszej) na {remote}",
"Invalid ownCloud url" : "Błędny adres URL",
"Shared by" : "Udostępniane przez",
"Sharing" : "Udostępnianie",
diff --git a/apps/systemtags/l10n/pl.js b/apps/systemtags/l10n/pl.js
index fc3616bff26..f5e4775d540 100644
--- a/apps/systemtags/l10n/pl.js
+++ b/apps/systemtags/l10n/pl.js
@@ -3,6 +3,8 @@ OC.L10N.register(
{
"Tags" : "Etykiety",
"Tagged files" : "Otagowane pliki",
+ "Select tags to filter by" : "Wybierz tagi do filtru",
+ "Please select tags to filter by" : "Proszę wybrać tagi do filtrów",
"No files found for the selected tags" : "Nie znaleziono plików dla wybranych etykiet",
"<strong>System tags</strong> for a file have been modified" : "<strong>System etykiet</strong> dla pliku został zmieniony",
"%1$s assigned system tag %3$s" : "%1$s przypisywalny system etykiet%3$s",
diff --git a/apps/systemtags/l10n/pl.json b/apps/systemtags/l10n/pl.json
index 543aa3be58c..6cb103ed4a5 100644
--- a/apps/systemtags/l10n/pl.json
+++ b/apps/systemtags/l10n/pl.json
@@ -1,6 +1,8 @@
{ "translations": {
"Tags" : "Etykiety",
"Tagged files" : "Otagowane pliki",
+ "Select tags to filter by" : "Wybierz tagi do filtru",
+ "Please select tags to filter by" : "Proszę wybrać tagi do filtrów",
"No files found for the selected tags" : "Nie znaleziono plików dla wybranych etykiet",
"<strong>System tags</strong> for a file have been modified" : "<strong>System etykiet</strong> dla pliku został zmieniony",
"%1$s assigned system tag %3$s" : "%1$s przypisywalny system etykiet%3$s",
diff --git a/apps/updatenotification/l10n/pl.js b/apps/updatenotification/l10n/pl.js
index 6551d0808e3..d86fdf3c243 100644
--- a/apps/updatenotification/l10n/pl.js
+++ b/apps/updatenotification/l10n/pl.js
@@ -1,8 +1,11 @@
OC.L10N.register(
"updatenotification",
{
+ "Update notifications" : "Powiadomienia o aktualizacji",
"{version} is available. Get more information on how to update." : "Wersja {version} jest dostępna. Dowiedz się jak zaktualizować.",
"Updated channel" : "Zaktualizowano kanał",
+ "ownCloud core" : "Rdzeń ownCloud",
+ "Update for %1$s to version %2$s is available." : "Jest dostępna aktualizacja dla %1$s do wersji %2$s",
"Updater" : "Aktualizator",
"A new version is available: %s" : "Dostępna jest nowa wersja: %s",
"Open updater" : "Otwórz aktualizator",
diff --git a/apps/updatenotification/l10n/pl.json b/apps/updatenotification/l10n/pl.json
index fd859feae11..b5d7132d9f0 100644
--- a/apps/updatenotification/l10n/pl.json
+++ b/apps/updatenotification/l10n/pl.json
@@ -1,6 +1,9 @@
{ "translations": {
+ "Update notifications" : "Powiadomienia o aktualizacji",
"{version} is available. Get more information on how to update." : "Wersja {version} jest dostępna. Dowiedz się jak zaktualizować.",
"Updated channel" : "Zaktualizowano kanał",
+ "ownCloud core" : "Rdzeń ownCloud",
+ "Update for %1$s to version %2$s is available." : "Jest dostępna aktualizacja dla %1$s do wersji %2$s",
"Updater" : "Aktualizator",
"A new version is available: %s" : "Dostępna jest nowa wersja: %s",
"Open updater" : "Otwórz aktualizator",