Compare commits

..

912 Commits

Author SHA1 Message Date
Lukas Reschke b05312a699 v10.0.4
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2017-02-17 01:45:28 +01:00
Nextcloud bot b17636dc94 [tx-robot] updated from transifex 2017-02-16 01:08:01 +00:00
Nextcloud bot 335b8901cb [tx-robot] updated from transifex 2017-02-15 01:07:46 +00:00
Nextcloud bot ff591d5a64 [tx-robot] updated from transifex 2017-02-14 01:07:39 +00:00
Roeland Jago Douma b3e42a6609 Merge pull request #3441 from nextcloud/backport-oc-26963-10
[stable10] Make sure invalid images don't flood the log file
2017-02-13 10:14:54 +01:00
Lukas Reschke 02cccc1fcf Merge pull request #3446 from nextcloud/stable10-add-integration-tests-for-dav
[stable10] Add integration tests for legacy DAV endpoints
2017-02-13 10:11:34 +01:00
Nextcloud bot ee2bd31f65 [tx-robot] updated from transifex 2017-02-13 01:07:28 +00:00
Nextcloud bot 31a8461ff3 [tx-robot] updated from transifex 2017-02-12 01:07:44 +00:00
Nextcloud bot 28624ee644 [tx-robot] updated from transifex 2017-02-11 01:07:44 +00:00
Victor Dubiniuk 111ca17d67 Check if color exists in palette before using it
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2017-02-10 16:29:04 +01:00
Lukas Reschke f123f925da Add integration tests for legacy DAV endpoints
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2017-02-10 16:20:33 +01:00
Joas Schilling 6f0e38ac72 Make sure invalid images don't flood the log file
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-02-10 13:46:22 +01:00
Lukas Reschke d0e40976f3 Merge pull request #3435 from nextcloud/stable10-increase-version
Increase version to 10.0.4 RC1
2017-02-10 12:53:42 +01:00
Lukas Reschke 7fc2901c85 Merge pull request #3432 from nextcloud/backport-34030-fix-ios-client-detection-10
[stable10] Fix detection of the new iOS app
2017-02-10 11:51:18 +01:00
Björn Schießle 6b55af03a4 Merge pull request #3427 from nextcloud/stable10-set-vendor-during-install
[stable10] Set vendor during install
2017-02-10 11:47:10 +01:00
Lukas Reschke 260ea2fd27 Increase version to 10.0.4 RC1
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2017-02-10 11:01:21 +01:00
Joas Schilling 8b9f0ac56e Fix detection of the new iOS app
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-02-10 10:18:33 +01:00
Morris Jobke 2b405e5098 Set vendor during install
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2017-02-09 23:56:58 -06:00
Nextcloud bot d13f1d80a3 [tx-robot] updated from transifex 2017-02-10 01:07:19 +00:00
Morris Jobke b2c8e22429 Merge pull request #3404 from nextcloud/fix-welcome.txt
replace ownCloud with Nextcloud
2017-02-08 21:00:58 -06:00
Nextcloud bot 3e3021d658 [tx-robot] updated from transifex 2017-02-09 01:07:28 +00:00
Bjoern Schiessle 7c53ae3435 fix some integration tests
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2017-02-08 17:39:03 +01:00
Bjoern Schiessle 6177891ecd replace ownCloud with Nextcloud
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2017-02-08 15:14:17 +01:00
Nextcloud bot 137a80db0e [tx-robot] updated from transifex 2017-02-08 01:07:26 +00:00
Morris Jobke 3f00f32d45 Merge pull request #3398 from nextcloud/backport-3359-fix-sharing-app-description-10
[stable10] Fix Sharing app description
2017-02-07 10:47:48 -06:00
Joas Schilling 63eb2e6067 Fix Sharing app description
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-02-07 14:36:27 +01:00
Nextcloud bot bf0e26ae0f [tx-robot] updated from transifex 2017-02-07 01:09:12 +00:00
Nextcloud bot 90169090ec [tx-robot] updated from transifex 2017-02-06 01:07:21 +00:00
Nextcloud bot f2b7edc99f [tx-robot] updated from transifex 2017-02-05 01:07:21 +00:00
Nextcloud bot 33d59737d0 [tx-robot] updated from transifex 2017-02-04 01:07:37 +00:00
Nextcloud bot e114647653 [tx-robot] updated from transifex 2017-02-03 01:07:38 +00:00
Nextcloud bot b03e604a92 [tx-robot] updated from transifex 2017-02-02 01:07:22 +00:00
Nextcloud bot 84f8a97c3a [tx-robot] updated from transifex 2017-02-01 01:07:15 +00:00
Nextcloud bot 12df63a29f [tx-robot] updated from transifex 2017-01-31 01:07:22 +00:00
Nextcloud bot dee84d0cf5 [tx-robot] updated from transifex 2017-01-30 01:07:30 +00:00
Nextcloud bot 45358e2c98 [tx-robot] updated from transifex 2017-01-29 01:07:11 +00:00
Nextcloud bot c5405c4a14 [tx-robot] updated from transifex 2017-01-28 01:07:18 +00:00
Nextcloud bot 0e9b23e8ee [tx-robot] updated from transifex 2017-01-27 01:07:39 +00:00
Nextcloud bot c029f508f4 [tx-robot] updated from transifex 2017-01-26 01:07:37 +00:00
Nextcloud bot 0092f1b868 [tx-robot] updated from transifex 2017-01-25 01:10:19 +00:00
Nextcloud bot 64f43d298c [tx-robot] updated from transifex 2017-01-24 01:07:35 +00:00
Nextcloud bot b1ba56032c [tx-robot] updated from transifex 2017-01-23 00:17:57 +00:00
Nextcloud bot 4a2600ae44 [tx-robot] updated from transifex 2017-01-22 01:08:09 +00:00
Nextcloud bot 976246ddf6 [tx-robot] updated from transifex 2017-01-21 01:08:03 +00:00
Nextcloud bot 0afb19abc5 [tx-robot] updated from transifex 2017-01-20 01:07:57 +00:00
Nextcloud bot a575343f9d [tx-robot] updated from transifex 2017-01-18 01:07:55 +00:00
Nextcloud bot 28cfbb475c [tx-robot] updated from transifex 2017-01-17 01:08:12 +00:00
Nextcloud bot 9a7eb86080 [tx-robot] updated from transifex 2017-01-16 01:16:09 +00:00
Lukas Reschke 4aa1c4ad04 Bump to 10.0.3
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2017-01-15 16:50:09 +01:00
Nextcloud bot f88395969d [tx-robot] updated from transifex 2017-01-12 01:08:01 +00:00
Nextcloud bot 300e5d6184 [tx-robot] updated from transifex 2017-01-11 15:20:39 +00:00
Roeland Jago Douma 0317dfd188 Merge pull request #2995 from nextcloud/stable10-10.0.3-rc1
Increase version to 10.0.3 RC1
2017-01-10 07:55:22 +01:00
Lukas Reschke 0465ad2897 Increase version to 10.0.3 RC1
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2017-01-09 21:15:31 +01:00
Roeland Jago Douma 1f2bb5dd9f Merge pull request #2989 from nextcloud/backport-2933-dont-link-to-oc-forum-10
[stable10] Don't link to the oC forum
2017-01-09 19:36:48 +01:00
Joas Schilling 4d05a83e79 Don't link to the oC forum
Signed-off-by: Joas Schilling <coding@schilljs.com>
2017-01-09 14:59:38 +01:00
Nextcloud bot f8db9102e7 [tx-robot] updated from transifex 2017-01-09 08:25:16 +00:00
Nextcloud bot 9b0cbe3efb [tx-robot] updated from transifex 2017-01-05 13:10:10 +00:00
Nextcloud bot 084e66f8c0 [tx-robot] updated from transifex 2017-01-04 12:09:59 +00:00
Nextcloud bot 7d541831e0 [tx-robot] updated from transifex 2017-01-03 01:08:04 +00:00
Nextcloud bot d5e35b8348 [tx-robot] updated from transifex 2017-01-02 01:07:49 +00:00
Nextcloud bot 11560f7856 [tx-robot] updated from transifex 2017-01-01 01:07:46 +00:00
Nextcloud bot ced9bcaf0d [tx-robot] updated from transifex 2016-12-31 01:08:52 +00:00
Christoph Wurst b9b147c3e0 Merge pull request #2884 from nextcloud/stable10-version
Update version to 9.1.3
2016-12-30 14:38:41 +01:00
Nextcloud bot 3a22ccffa6 [tx-robot] updated from transifex 2016-12-30 01:07:44 +00:00
Lukas Reschke 549662202f Update version to 9.1.3
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-12-29 16:33:24 +01:00
Nextcloud bot a85bc92767 [tx-robot] updated from transifex 2016-12-29 01:08:17 +00:00
Nextcloud bot af1f24c1d8 [tx-robot] updated from transifex 2016-12-28 01:07:58 +00:00
Nextcloud bot 00e4917034 [tx-robot] updated from transifex 2016-12-27 01:07:56 +00:00
Nextcloud bot d03ad887ee [tx-robot] updated from transifex 2016-12-26 01:10:13 +00:00
Roeland Jago Douma fa6f216cd8 Merge pull request #2826 from nextcloud/stable10-2659
[stable10] Fix overwriting parameter
2016-12-22 15:08:58 +01:00
Roeland Jago Douma f55b0e64f0 Fix overwriting parameter
Fixes #2641

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-12-22 14:05:26 +01:00
Lukas Reschke 9b4fe215ed Merge pull request #2810 from nextcloud/stable10-2757
[stable10] Also check in cron for old php version
2016-12-22 10:08:58 +01:00
Nextcloud bot 374e1c63c5 [tx-robot] updated from transifex 2016-12-22 01:07:36 +00:00
Roeland Jago Douma 5c9dcbbec0 Also check in cron for old php version
Fixes #2756

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-12-21 20:36:22 +01:00
John Molakvoæ f95d432b76 Merge pull request #2755 from nextcloud/fix-2731-stable10
make sure that header is always positioned at the top
2016-12-21 11:30:05 +01:00
Nextcloud bot fd317e5ce0 [tx-robot] updated from transifex 2016-12-21 01:07:26 +00:00
Morris Jobke b97baa4c8a Merge pull request #2794 from nextcloud/stable10-update-drone-images
[stable10] update drone images to latest version
2016-12-21 01:09:55 +01:00
Morris Jobke 403f7a47f8 [stable10] update drone images to latest version
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-12-20 23:35:40 +01:00
Nextcloud bot eb6df7b07d [tx-robot] updated from transifex 2016-12-20 12:02:40 +00:00
Bjoern Schiessle 2024f67dce make sure that header is always positioned at the top 2016-12-19 14:50:44 +01:00
Roeland Jago Douma c8d391a6a7 Merge pull request #2702 from nextcloud/enoch85-patch-1
[10] Do not connect to database before creating it
2016-12-16 16:09:16 +01:00
Lukas Reschke d739dfb8cb Merge pull request #2464 from nextcloud/backport-1973-dont-disable-shipped-apps-but-throw-instead
[stable10] Throw an exception when a shipped app was not replaced before the update
2016-12-16 13:29:25 +01:00
Lukas Reschke 0d72a894ab Merge pull request #2697 from nextcloud/shared-scanner-unmasked-10
[10] use unmasked permissions in shared scanner
2016-12-16 13:14:39 +01:00
Roeland Jago Douma 1b0155cef2 Merge pull request #2462 from nextcloud/stable10-1513
[stable10] Return ETag and OC-ETag in case of a move (#25683)
2016-12-16 08:16:50 +01:00
Joas Schilling 23521c5227 Do not connect to database before creating it
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-15 18:28:46 +01:00
Robin Appelman 1afeb83f7f Add integration tests for uploading files to a permission limited share
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-12-15 16:01:34 +01:00
Robin Appelman 24396e4fa3 use unmasked permissions in shared scanner
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-12-15 16:01:30 +01:00
Roeland Jago Douma 9ed3f66147 Merge pull request #2684 from nextcloud/add-tests-for-legacy-caldav-stable10
[stable10] Perform CalDAV and CardDAV tests against old endpoint
2016-12-15 10:54:04 +01:00
Lukas Reschke f823024416 Add test execution against legacy DAV backend
Since the tests to quite hugely rely on sync tokens being present I also included those in the legacy backend.
2016-12-15 02:42:40 +01:00
Morris Jobke 7732c497fd Merge pull request #2667 from nextcloud/backport-2070-use-correct-l10n-for-settings-menu
[stable10] Get correct L10N for Settings Manager
2016-12-14 11:36:23 -06:00
Joas Schilling 54b081226b Get correct L10N for Settings Manager
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-14 12:30:05 +01:00
Morris Jobke 9ff733c9a9 Merge pull request #2592 from nextcloud/backport-1268
Lower the role name before using it
2016-12-12 18:48:07 -06:00
Nextcloud bot a7b44f2a7c [tx-robot] updated from transifex 2016-12-12 01:07:25 +00:00
Nextcloud bot eb55cd02eb [tx-robot] updated from transifex 2016-12-11 01:07:24 +00:00
Nextcloud bot faff30c227 [tx-robot] updated from transifex 2016-12-10 01:07:22 +00:00
Joas Schilling d84234da13 Lower the role name before using it
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-09 16:50:37 +01:00
Morris Jobke e56501420d Merge pull request #2591 from nextcloud/backport-1268
Use proper ALTER ROLE syntax
2016-12-09 16:30:10 +01:00
Roeland Jago Douma 113a743b91 Use proper ALTER ROLE syntax
Fixes #1260

See https://www.postgresql.org/docs/9.0/static/sql-alterrole.html
2016-12-09 16:04:17 +01:00
Lukas Reschke 6849d7235e 10.0.2
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-12-09 11:04:36 +01:00
blizzz 29bb1cedc6 Merge pull request #2562 from nextcloud/backport-2561-save-timezone-on-login
[stable10] Save the timezone on login again
2016-12-09 10:40:38 +01:00
Nextcloud bot d379adb9f8 [tx-robot] updated from transifex 2016-12-09 01:07:25 +00:00
Joas Schilling 5fb1bd01ff Save the timezone on login again
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-08 10:53:50 +01:00
Nextcloud bot d9655a1f6d [tx-robot] updated from transifex 2016-12-08 01:07:33 +00:00
Lukas Reschke e74fb43271 v10.0.2 RC2
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-12-07 15:46:24 +01:00
Nextcloud bot 84f03c1882 [tx-robot] updated from transifex 2016-12-07 01:07:53 +00:00
Morris Jobke a314d50367 Merge pull request #2525 from nextcloud/stable10-2521
[stable10] Document updater channel & check for correct PHP version in updater
2016-12-06 12:58:35 +01:00
Morris Jobke 5fd960b370 Document updater channel & check for correct PHP version in updater
* see https://github.com/nextcloud/updater/issues/53

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-12-06 11:22:00 +01:00
Roeland Jago Douma fcb7a1e458 Merge pull request #2522 from nextcloud/show-old-php-info
[stable10] Show info in updater if running PHP < 5.6
2016-12-06 08:40:10 +01:00
Nextcloud bot 5850424c0c [tx-robot] updated from transifex 2016-12-06 01:07:26 +00:00
Morris Jobke 035be23f72 Show info in updater if running PHP < 5.6
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-12-06 00:06:16 +01:00
Lukas Reschke 8a65b56a03 Merge pull request #2465 from nextcloud/backport-1972-invalid-files-from-scanner
[stable10] Make sure we don't scan files that can not be accessed
2016-12-05 23:28:54 +01:00
Lukas Reschke 24357e0543 Merge pull request #2517 from nextcloud/stable10-rc-1
10.0.2 RC1
2016-12-05 22:20:36 +01:00
Lukas Reschke dc60194b1c 10.0.2 RC1
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-12-05 21:48:10 +01:00
Christoph Wurst e4550006d2 Merge pull request #2503 from nextcloud/fix-1764-enter-on-share-mail-input
Send the share link by mail on pressing enter instead of reloading th…
2016-12-05 15:10:32 +01:00
Joas Schilling 7bd4eb7c5b Send the share link by mail on pressing enter instead of reloading the page
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-05 11:26:53 +01:00
Nextcloud bot 63f805826b [tx-robot] updated from transifex 2016-12-05 01:07:48 +00:00
Nextcloud bot bd6c00ee26 [tx-robot] updated from transifex 2016-12-04 01:07:38 +00:00
Lukas Reschke cf752bea22 Merge pull request #2485 from nextcloud/shared-storage-mask-10
[10] 	apply permissions mask for shared storage
2016-12-03 23:35:40 +01:00
Nextcloud bot c20532c01e [tx-robot] updated from transifex 2016-12-03 01:07:34 +00:00
Roeland Jago Douma 4994110890 Merge pull request #2489 from nextcloud/update-cache-success-10
[10] only update the cache if the storage operation succeeds
2016-12-02 20:06:44 +01:00
Robin Appelman d84f88b041 only update the cache if the storage operation succeeds
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-12-02 18:56:11 +01:00
Robin Appelman b8d0975a0a update test
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-12-02 18:04:40 +01:00
Robin Appelman 2dd97bb52d apply permissions mask for shared storage
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-12-02 18:02:34 +01:00
Joas Schilling eefd45875e Make sure we don't scan files that can not be accessed
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-02 11:14:00 +01:00
Joas Schilling 6c1278c1cc Merge pull request #2463 from nextcloud/stable10-2306
[stable10] Don't log the user password in case something goes wrong
2016-12-02 10:47:45 +01:00
Morris Jobke ed71ecc2b2 Merge pull request #2452 from nextcloud/stable10-1826
[stable10] Fix post_unshareFromSelf hook parameter format
2016-12-02 10:41:57 +01:00
Morris Jobke 8f8250caf4 Merge pull request #2460 from nextcloud/stable10-2010
[stable10] Fixed disappearing of share info in file view
2016-12-02 10:39:55 +01:00
Morris Jobke 8eb39667bb Merge pull request #2454 from nextcloud/stable10-1872
[stable10] Fix misleading SSL/TLS SMTP email configuration
2016-12-02 10:38:51 +01:00
Morris Jobke 37aa1da951 Merge pull request #2456 from nextcloud/stable10-1658
[stable10] Default to empty string
2016-12-02 10:38:07 +01:00
Morris Jobke a61c69db8c Merge pull request #2451 from nextcloud/stable10-2410
[stable10] Fix missing text for downloads on mobile
2016-12-02 10:37:25 +01:00
Joas Schilling d74af7f317 Merge pull request #2459 from nextcloud/stable10-2084
[stable10] Fixes files_drop when avatars are disabled
2016-12-02 10:21:11 +01:00
Joas Schilling 3060fc8597 Show all in one message
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-02 10:09:14 +01:00
Jan-Christoph Borchardt 4aa30464df add explanatory text of what to do on app version error
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
2016-12-02 10:08:47 +01:00
Joas Schilling 27d5142b1c Throw an exception when a shipped app was not replaced before the update
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-02 10:07:15 +01:00
Roeland Jago Douma 1d5049acbe Merge pull request #2457 from nextcloud/stable10-1712
[stable10] Tear down FS between cron jobs (#26223)
2016-12-02 08:16:24 +01:00
Roeland Jago Douma 7be6326852 Merge pull request #2449 from nextcloud/stable10-1745
[stable10] fix typo
2016-12-02 08:14:47 +01:00
Nextcloud bot 0a10dadef6 [tx-robot] updated from transifex 2016-12-02 01:07:43 +00:00
Joas Schilling 366df29340 Don't log the user password in case something goes wrong
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-02 01:41:04 +01:00
Thomas Müller 5f0625ff54 Return ETag and OC-ETag in case of a move (#25683)
Downstreaming of https://github.com/owncloud/core/pull/25683

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-12-02 01:29:35 +01:00
Michael Jobst 86ef7c8185 Fixed disappearing of share info in file view 2016-12-02 01:21:09 +01:00
Roeland Jago Douma c6c1bd1e19 Fixes files_drop when avatars are disabled
Fixes: #2080

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-12-02 01:16:33 +01:00
Vincent Petry 4543590da1 [master] Tear down FS between cron jobs (#26223)
Because some cron jobs do not always properly clean up their FS usage
and others might not clean up before setting up the FS, this could
cause potential side effects.

To make sure we exclude side effects, we tear down the FS between cron
jobs.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-12-02 01:12:05 +01:00
Lukas Reschke 5efb7ed043 Default to empty string
Otherwise `null` is returned which leads to a ton of similar error messages if the log condition setting is enabled.:

```
{"reqId":"3wVBarnDfOV3qkI1bVCU","remoteAddr":"89.98.78.41","app":"PHP","message":"hash_equals(): Expected user_string to be a string, null given at \/var\/www\/html\/lib\/private\/Log.php#275","level":3,"time":"2016-10-07T14:22:15+00:00","method":"PROPFIND","url":"\/remote.php\/webdav\/","user":"icewind"}
```
2016-12-02 01:09:04 +01:00
Joas Schilling ff7cb2f16a Fix misleading SSL/TLS SMTP email configuration
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-12-02 01:05:54 +01:00
Vincent Petry f07c209cb9 Fix post_unshareFromSelf hook parameter format
When unsharing from self in a group share situation, the share items
passed to the post_unshareFromSelf hook were using the wrong format in
which the attribute names (ex: "share_type") have non camel-case format.

This fix makes sure that in group sharing case we use the correct
format. It looks like the code was already producing it but in
array_merge it was not using it and adding the unprocessed one.
2016-12-02 00:50:32 +01:00
Morris Jobke f39a308527 Fix missing text for downloads on mobile
* fixes #2362

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-12-02 00:47:11 +01:00
Thomas Citharel 1700224b62 fix typo
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
2016-12-02 00:36:57 +01:00
Morris Jobke 1c4a1b8807 Merge pull request #2445 from nextcloud/stable10-detect-also-a-400-status
[stable10] Catch status code 400
2016-12-01 22:56:39 +01:00
Roeland Jago Douma c0f5f0a029 Merge pull request #2438 from nextcloud/stable10-dont-allow-subfolders-for-write-only-shares
[stable10] On write-only shares do not allow to specify subfolders
2016-12-01 20:19:52 +01:00
Lukas Reschke 461b277742 [stable10] Catch status code 400
In case the server returns a statuscode 400 we should also gracefully return to the home directory.

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-12-01 19:15:19 +01:00
Lukas Reschke d012965053 Merge pull request #2440 from nextcloud/stable10-optimize-createParentDirectories
[stable10] Prevent endless loop in \OC\Files\View::createParentDirect…
2016-12-01 19:02:31 +01:00
Lukas Reschke 072794d78d [stable10] Prevent endless loop in \OC\Files\View::createParentDirectories
\OC\Files\View::createParentDirectories was previously prone to an endless loop. If a path such as /foo/existingfile.txt/bar/foo was passed and existingfile.txt existed in foo the loop was never left and running until the PHP process timed out.

This commit changes the logic to a foreach loop over an array and additionally additional error handling using is_file.

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-12-01 16:53:26 +01:00
Lukas Reschke 4045c7be73 [stable10] On write-only shares do not allow to specify subfolders
In case of a write-only share we should not allow to specify a subfolder as this is unexpected behaviour.

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-12-01 16:12:25 +01:00
Nextcloud bot db2206450f [tx-robot] updated from transifex 2016-12-01 01:07:24 +00:00
Nextcloud bot 7a32bd49d8 [tx-robot] updated from transifex 2016-11-30 14:18:15 +00:00
Nextcloud bot 1e818369a7 [tx-robot] updated from transifex 2016-11-30 01:07:24 +00:00
Nextcloud bot 823f480c83 [tx-robot] updated from transifex 2016-11-29 17:57:54 +00:00
Nextcloud bot cb910bfacc [tx-robot] updated from transifex 2016-11-29 17:03:32 +00:00
Nextcloud bot 506196af6c [tx-robot] updated from transifex 2016-11-29 01:06:54 +00:00
Nextcloud bot 74072d75d5 [tx-robot] updated from transifex 2016-11-28 09:52:03 +00:00
Nextcloud bot d1b0300d45 [tx-robot] updated from transifex 2016-11-28 09:31:09 +00:00
Nextcloud bot feefc9ed0b [tx-robot] updated from transifex 2016-11-28 01:07:09 +00:00
Nextcloud bot 30c4f46d2a [tx-robot] updated from transifex 2016-11-27 01:07:19 +00:00
Nextcloud bot 14a003eb32 [tx-robot] updated from transifex 2016-11-26 01:07:06 +00:00
Lukas Reschke eefc8ce961 Merge pull request #2320 from nextcloud/fix-getFileSizeViaCOM-regression
[stable10] Fix get file size via com regression
2016-11-24 22:21:42 +01:00
Morris Jobke 28eed678e0 Fix regressiong from #2048
* fixes https://github.com/nextcloud/server/pull/2048#issuecomment-262826162

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-11-24 20:54:33 +01:00
Morris Jobke f7a505ded6 Merge pull request #2291 from nextcloud/stable10-imagescale-fix
[stable10] Workaround for PHP bug when calling imagescale
2016-11-24 12:02:36 +01:00
Joas Schilling f7388575a8 Merge pull request #2295 from nextcloud/backport-2137-phpunit4-compatibility
Add a wrapper to allow phpunit4 to run the code again
2016-11-24 10:00:09 +01:00
Joas Schilling ac5a6b2d30 Add a magic wrapper from hell to allow phpunit4 to run the code again
Remove this once phpunit 5 is the lowest supported version, by reverting:
https://github.com/nextcloud/server/pull/2137

Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-11-24 09:11:47 +01:00
Julius Haertl c96bbd4953 Workaround for PHP bug when calling imagescale
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2016-11-23 21:54:55 +01:00
Nextcloud bot fee91b1073 [tx-robot] updated from transifex 2016-11-22 01:07:03 +00:00
Nextcloud bot c688613f5f [tx-robot] updated from transifex 2016-11-21 01:07:05 +00:00
Nextcloud bot cd358b049d [tx-robot] updated from transifex 2016-11-20 01:06:51 +00:00
Nextcloud bot 34d879bc14 [tx-robot] updated from transifex 2016-11-19 01:06:51 +00:00
Nextcloud bot 34f07f2bdd [tx-robot] updated from transifex 2016-11-18 01:07:13 +00:00
Morris Jobke 9386e5b232 Merge pull request #2121 from nextcloud/stable10_2100
[Stable10] Fixes not allowed increasing of link share permissions
2016-11-17 18:55:40 +01:00
Morris Jobke 915334a44b Merge pull request #2186 from nextcloud/stable10-2122
[stable10] Hack to prevent warning for read-only wrapper in public links
2016-11-17 18:34:53 +01:00
Morris Jobke 14709ca7f7 Merge pull request #2185 from nextcloud/stable10-icons-audio-video-off
[stable10] add icons for audio mute and video off
2016-11-17 17:41:14 +01:00
Morris Jobke fcb6386b04 only use one kind of hack for the storage wrappers of the sharing code
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-11-17 17:00:56 +01:00
Vincent Petry db8b66c546 Hack to prevent warning for read-only wrapper in public links
Storage wrappers should normally always be registered inside a presetup
hook. However in the public link scenario this is not possible and
there is currently no good alternative with the current architecture.

Instead of logging a warning every time, this fix prevents the warning
to be shown but also adds a FIXME in the code for the future. This is
ok because this app is already using private/internal APIs at the
moment and should be reworked properly in the future.
2016-11-17 17:00:49 +01:00
Jan-Christoph Borchardt 32773b4b5e add icons for audio mute and video off
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
2016-11-17 16:49:09 +01:00
Nextcloud bot 2600bb2dbb [tx-robot] updated from transifex 2016-11-17 01:07:09 +00:00
Morris Jobke 4d0037c461 Merge pull request #2091 from nextcloud/fix_1862
Do not request node when creating a user-group share
2016-11-17 00:42:50 +01:00
Roeland Jago Douma e9c41b25a0 Merge pull request #2142 from nextcloud/stable10-icon-background
[stable10] add dark background fade to icons to make them visible on light backgrounds
2016-11-17 00:01:48 +01:00
Roeland Jago Douma d2ea6f6d5c Merge pull request #2155 from nextcloud/stable10-federated-cloud-id
[stable10] specify Federated Cloud ID syntax
2016-11-16 16:14:34 +01:00
Jan-Christoph Borchardt fadc25134d specify Federated Cloud ID syntax
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
2016-11-16 11:57:13 +01:00
Jan-Christoph Borchardt 9789d4985a add dark background fade to icons to make them visible on light backgrounds
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
2016-11-15 17:50:39 +01:00
Roeland Jago Douma 5039b37570 Fix tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-11-15 09:41:59 +01:00
Roeland Jago Douma 8315891418 [Stable10] Fixes not allowed increasing of link share permissions
Backport of #2100

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-11-15 09:17:02 +01:00
Nextcloud bot 46a6cbadfc [tx-robot] updated from transifex 2016-11-15 01:07:12 +00:00
Roeland Jago Douma ba0f899cb2 Merge pull request #2118 from nextcloud/stable10-add-bruteforce-check-to-person-endpoint
[stable10] Add bruteforce checker to Person.php
2016-11-14 18:10:23 +01:00
Lukas Reschke 6afad44091 Add bruteforce checker to Person.php
Also check for attempts on this endpoint

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-11-14 15:28:53 +01:00
Nextcloud bot 3acfc4e9cd [tx-robot] updated from transifex 2016-11-14 01:07:13 +00:00
Nextcloud bot 9cffa6bebb [tx-robot] updated from transifex 2016-11-13 01:07:17 +00:00
Nextcloud bot 4e3e2f5f48 [tx-robot] updated from transifex 2016-11-12 01:07:18 +00:00
Roeland Jago Douma b6284d1664 Fixes retargeting a share of a deleted source
Fixes #1862

We tried to construct the actual node. While this node was no longer
available. This work around makes sure that we don't try to do this.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-11-11 10:35:04 +01:00
Joas Schilling 84222b58ee Merge pull request #2078 from nextcloud/jospoortvliet-patch-1
[Stable 10] Fix Nextcloud vs oldCloud wording
2016-11-11 08:38:29 +01:00
Nextcloud bot a043e14730 [tx-robot] updated from transifex 2016-11-11 01:07:25 +00:00
Jos Poortvliet 40eae55bce Update sharedialogview.js
Fix Nextcloud vs oldCloud wording
2016-11-10 17:22:01 +01:00
Nextcloud bot da7d4e4ae8 [tx-robot] updated from transifex 2016-11-10 01:07:22 +00:00
Morris Jobke 17b1a720fa Merge pull request #2059 from nextcloud/backport-2058-better-error-message-for-installation-error
[stable10] Use a better error message and point the users to the support channels
2016-11-09 14:00:58 +01:00
Joas Schilling 9e2e29aa10 Correctly catch the "soft errors" now
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-11-09 10:31:43 +01:00
Joas Schilling ef917ee9c8 Use a better error message and point the users to the support channels
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-11-09 09:20:55 +01:00
Joas Schilling 825a403f9c Fix help link
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-11-09 09:19:31 +01:00
Roeland Jago Douma 909b5dc76b Merge pull request #2056 from nextcloud/stable10-fix-public-button
[stable10] fix button on public upload page
2016-11-09 08:13:45 +01:00
Jan-Christoph Borchardt c463380ef2 fix button on public upload page
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
2016-11-08 22:53:47 +01:00
Roeland Jago Douma 66fac19c41 Merge pull request #2041 from nextcloud/backport-2036-2040
[stable10] Fix the push state + Apply firefox workaroud to svg filters
2016-11-08 20:14:59 +01:00
Morris Jobke 9071fd57d5 Merge pull request #2048 from nextcloud/stable10-update-containers
[stable10] Update containers to latest version
2016-11-08 14:37:20 +01:00
Morris Jobke 3f457943b0 Remove unneeded Windows logic
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-11-08 12:29:25 +01:00
Morris Jobke b718693842 Activate APCu on PHP 7
Fix an issue with APCus inc and dec methods on PHP 7

see https://github.com/krakjoe/apcu/issues/183#issuecomment-244038221 for details

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-11-08 12:29:25 +01:00
Morris Jobke dfcf27b207 Update containers to latest version
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-11-08 12:29:19 +01:00
Julius Haertl c6af725600 Apply firefox workaroud to svg filters
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2016-11-08 09:54:57 +01:00
Nextcloud bot 5c61a6b351 [tx-robot] updated from transifex 2016-11-08 01:07:05 +00:00
Joas Schilling 709f10aa5d Fix the push state
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-11-08 00:15:07 +01:00
Nextcloud bot 7f3a13c968 [tx-robot] updated from transifex 2016-11-07 01:07:10 +00:00
Roeland Jago Douma 70772a6f56 Merge pull request #2025 from nextcloud/stable10-backport-2018
[stable10] Workaround for disappearing app icons for Firefox before version 51
2016-11-06 20:18:38 +01:00
Nextcloud bot b7aa793750 [tx-robot] updated from transifex 2016-11-06 01:07:57 +00:00
Julius Haertl 6e1dd1c57f Workaround for disappearing app icons for Firefox before version 51
Signed-off-by: Julius Haertl <jus@bitgrid.net>
2016-11-05 19:22:13 +01:00
Nextcloud bot 75691d43af [tx-robot] updated from transifex 2016-11-05 01:07:21 +00:00
Nextcloud bot eb97592588 [tx-robot] updated from transifex 2016-11-04 01:07:13 +00:00
Nextcloud bot 7f03ed55a8 [tx-robot] updated from transifex 2016-11-03 01:07:16 +00:00
Nextcloud bot 2603e28aec [tx-robot] updated from transifex 2016-11-02 01:07:16 +00:00
Nextcloud bot 8d6ed8d95e [tx-robot] updated from transifex 2016-11-01 01:07:05 +00:00
Nextcloud bot f59e13a8f6 [tx-robot] updated from transifex 2016-10-31 01:07:02 +00:00
Nextcloud bot f621a17df1 [tx-robot] updated from transifex 2016-10-30 00:07:03 +00:00
Nextcloud bot dc2ea1b295 [tx-robot] updated from transifex 2016-10-29 00:07:21 +00:00
Nextcloud bot aba0dbc75e [tx-robot] updated from transifex 2016-10-28 00:07:18 +00:00
Nextcloud bot a96b9d5b0b [tx-robot] updated from transifex 2016-10-27 00:07:13 +00:00
Nextcloud bot 5ae4db3fb0 [tx-robot] updated from transifex 2016-10-26 00:07:18 +00:00
Lukas Reschke def13c5186 Merge pull request #1912 from nextcloud/stable10-backport-1911
[stable10] Fix malformed attribute in files app
2016-10-25 21:29:03 +02:00
Vincent Petry f8922ff365 Fix malformed attribute in files app 2016-10-25 17:34:02 +02:00
Nextcloud bot 8a46c2f0f1 [tx-robot] updated from transifex 2016-10-25 09:36:17 +00:00
Roeland Jago Douma 4a51be5a42 Merge pull request #1899 from nextcloud/stable10-php-7.1.0-check
[stable10] console.php also needs a PHP 7.1 check
2016-10-25 10:15:26 +02:00
Morris Jobke 0cf4f302c2 console.php also needs a PHP 7.1 check
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-10-25 09:19:23 +02:00
Roeland Jago Douma 672c7f4e97 Merge pull request #1870 from nextcloud/do-not-allow-sharee-enumeration-via-email-option
Do not allow sharee enumeration via email option
2016-10-24 11:35:17 +02:00
Joas Schilling f0f62aa055 Do not allow sharee enumeration via email option
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-24 10:30:59 +02:00
Roeland Jago Douma 4db595181d Merge pull request #1847 from nextcloud/backport-1164-avatar-files-accesscontrol-fixes
[stable10] Avatar fixes for access-control app
2016-10-21 21:32:10 +02:00
Morris Jobke 08804b851e Merge pull request #1845 from nextcloud/backport-1822-restore-overwritten-services-after-errors
[stable10] Restore overwritten services after errors
2016-10-21 18:56:41 +02:00
Morris Jobke a88f7d8182 Merge pull request #1844 from nextcloud/backport-1812-allow-to-dismiss-the-code-integrity-warning
[stable10] Allow to dismiss the code integrity warning
2016-10-21 18:08:02 +02:00
Joas Schilling 116d17be86 The red box already makes clear it's an error
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-21 11:14:26 +02:00
Joas Schilling fd445cc2db Check the mimetype before reading the content and catch exception
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-21 11:13:59 +02:00
Joas Schilling d17424f173 Restore all services when a tests failed/finished for better testcase isolation
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-21 10:58:59 +02:00
Joas Schilling a2a998c567 Make sure all tests use the TestCase method to overwrite services
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-21 10:58:51 +02:00
Joas Schilling 9e0c5ff6af Allow to dismiss the code integrity warning
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-21 10:56:19 +02:00
Morris Jobke 43ff99f4fa Merge pull request #1818 from nextcloud/stable10-fullscreen-icon
[stable10] add fullscreen icon
2016-10-20 16:42:40 +02:00
Jan-Christoph Borchardt 4aaf0d5ff2 add fullscreen icon
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
2016-10-20 13:26:26 +02:00
Roeland Jago Douma ac23deefec Merge pull request #1772 from nextcloud/backport-1771-fix-issue-loading-checks-from-cache
[stable10] Do not reset the list after adding cached entries
2016-10-19 19:44:26 +02:00
Morris Jobke ebc8b73c85 Merge pull request #1798 from nextcloud/backport-1740-numeric-quota
[stable10] Make sure we only use numbers as length
2016-10-19 17:03:07 +02:00
Joas Schilling 1a104df189 Make sure we only use numbers as length
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-19 11:41:37 +02:00
Roeland Jago Douma 09fbe32d48 Merge pull request #1769 from nextcloud/backport-1766-force-uid-casing-on-transfer-ownership
[stable10] Make sure the UID is correctly cased
2016-10-19 11:18:44 +02:00
Nextcloud bot 51300d3689 [tx-robot] updated from transifex 2016-10-18 00:06:58 +00:00
Joas Schilling 88a19eaa84 Fix older php and phpunit version
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-17 15:45:28 +02:00
Joas Schilling 3a619e3e19 Do not reset the list after adding cached entries
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-17 15:44:16 +02:00
Joas Schilling dacd51cd25 Make sure the UID is correctly cased
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-17 14:31:28 +02:00
Joas Schilling e3a6bc01bb Merge pull request #1758 from nextcloud/stable10-backport-1756
[stable10] Filepicker styling
2016-10-17 13:44:35 +02:00
Nextcloud bot 9a73dc633f [tx-robot] updated from transifex 2016-10-17 00:07:01 +00:00
Nextcloud bot b778503caf [tx-robot] updated from transifex 2016-10-16 00:07:02 +00:00
Nextcloud bot 259e3c2e44 [tx-robot] updated from transifex 2016-10-15 00:07:02 +00:00
Robin Appelman 3f1b3dd9d2 filepicker styling
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-10-14 19:15:28 +02:00
Robin Appelman 862c4a854a use mimetype icons in filepicker if there is no preview
Signed-off-by: Robin Appelman <robin@icewind.nl>
2016-10-14 18:59:53 +02:00
Nextcloud bot 00ec62e69b [tx-robot] updated from transifex 2016-10-14 00:07:07 +00:00
Nextcloud bot 9cff86ebc8 [tx-robot] updated from transifex 2016-10-13 00:07:19 +00:00
blizzz 40bf26fe3c Merge pull request #1723 from nextcloud/fix-1251-stable10-alt2
[stable10] make AvatarManager use LazyRootFolder, fixes #1251
2016-10-12 15:16:13 +02:00
Arthur Schiwon 6a2e51b4d9 make AvatarManager use LazyRootFolder, fixes #1251
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2016-10-12 14:08:12 +02:00
Joas Schilling b4ef49744b Merge pull request #1717 from nextcloud/stable10-backport-1580
[stable10] Unset user PHOTO before setting new one in OCA\DAV\CardDAV\Converter:…
2016-10-12 13:13:35 +02:00
Joas Schilling a9f4210d25 Merge pull request #1714 from nextcloud/stable10_1713
[stable10] fix issue #1482 - mail invites through v1 webdav
2016-10-12 13:13:04 +02:00
Olivier Mehani 99f7315ed5 Unset user PHOTO before setting new one in OCA\DAV\CardDAV\Converter::updateCard (#26243)
Signed-off-by: Olivier Mehani <shtrom@ssji.net>

#26242
2016-10-12 10:49:06 +02:00
Claudemir Todo Bom 5d55162ee5 fix issue #1482 - mail invites through v1 webdav
Signed-off-by: Claudemir Todo Bom <claudemir@todobom.com>
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2016-10-12 10:13:13 +02:00
Nextcloud bot 1e60c5a164 [tx-robot] updated from transifex 2016-10-12 00:08:23 +00:00
Roeland Jago Douma 8574a5a51b Merge pull request #1685 from nextcloud/backport-1683-installing-app-with-code-checker
[stable10] Add app name to the call
2016-10-11 16:32:45 +02:00
Roeland Jago Douma 46a1705d39 Merge pull request #1686 from nextcloud/backport-1638-allow-cross-repository-execution
[stable10] Allow to call the files even when you are in another instance atm
2016-10-11 15:22:42 +02:00
Roeland Jago Douma 1bdc4d7fef Merge pull request #1688 from nextcloud/backport-1586-fix-multi-translation-names-and-descriptions
[stable10] Fix multi translation names and descriptions
2016-10-11 14:28:37 +02:00
Roeland Jago Douma c7e40d00a0 Merge pull request #1694 from nextcloud/stable10-backport-1679
[stable10] Improve user list rendering perf by not resorting after every add (#2…
2016-10-11 14:26:05 +02:00
Roeland Jago Douma 29b4611bef Merge pull request #1697 from nextcloud/stable10-backport-1644
[stable10] Set proper web title for apple
2016-10-11 14:22:38 +02:00
blizzz cd282faac0 Merge pull request #1695 from nextcloud/backport-1558-remove-notifications-upon-user-deletion
[stable10] Remove notifications upon user deletion
2016-10-11 13:15:05 +02:00
Roeland Jago Douma 27703caa09 Set proper web title for apple
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-10-11 10:53:00 +02:00
Joas Schilling 6b703e97ce Only trigger postDelete hooks when the user was deleted...
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 10:45:39 +02:00
Joas Schilling 9107573020 Make sure that comments, notifications and preferences are deleted
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 10:45:09 +02:00
Joas Schilling 1fcd7848c6 Remove notifications upon user deletion
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 10:41:41 +02:00
Vincent Petry 706317a715 Improve user list rendering perf by not resorting after every add (#26282)
The call to UserList.add() was wrong and was passing "user.lastLogin"
as the sort argument which would cause the list to be resorted over and
over again for every added item after loading the next page of users.
2016-10-11 10:40:49 +02:00
Joas Schilling d831156d78 Better search functionality
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 10:39:25 +02:00
Joas Schilling 7ce29c6eef Fix authors that have a mail or homepage
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 10:39:21 +02:00
Joas Schilling 7d0d38348f Fallback from "de" to "de_DE" and the other way around
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 09:52:28 +02:00
Joas Schilling 96ed4fe15e Fix displaying and searching with multiple authors
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 09:52:14 +02:00
Joas Schilling 8ba5b9722b Allow multiple names and description
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 09:52:06 +02:00
Joas Schilling 53de74fe82 Allow to call the files even when you are in another instance atm
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 09:45:05 +02:00
Joas Schilling eba5e3c9e7 Add app name to the call
Regression from 69b063f4c6

Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-11 09:43:04 +02:00
Nextcloud bot a27633b140 [tx-robot] updated from transifex 2016-10-11 00:07:00 +00:00
Joas Schilling 72ede569e7 Merge pull request #1645 from nextcloud/stable10-backport-1595
[stable10] Use proper casing of username in avatar filesystem setup
2016-10-10 10:00:02 +02:00
Morris Jobke 466ebf8974 Merge pull request #1654 from nextcloud/backport-1643-stable10
[stable10] cache loginName2UserName and cover the method with unit tests
2016-10-10 09:15:25 +02:00
Roeland Jago Douma 1090c77f80 Merge pull request #1646 from nextcloud/stable10-backport-1562
[stable10] log version number in each log line
2016-10-10 08:29:39 +02:00
Nextcloud bot 4ff2f3ac46 [tx-robot] updated from transifex 2016-10-10 00:07:04 +00:00
Nextcloud bot 3fee65d643 [tx-robot] updated from transifex 2016-10-09 00:06:56 +00:00
Nextcloud bot e6cb73d70d [tx-robot] updated from transifex 2016-10-08 00:06:59 +00:00
Arthur Schiwon 0898cfce98 make tests php 5.4 / phpunit 4.8 compatible
Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2016-10-07 16:11:24 +02:00
Arthur Schiwon 005d264d60 Backport of #1643 to stable10
get rid of test warnings

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>

cache loginName2UserName and cover the method with unit tests

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>

adjust tests

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2016-10-07 13:51:36 +02:00
Joas Schilling 6fa841c181 Merge pull request #1649 from nextcloud/stable10-backport-1633
[stable10] Update root certificate list
2016-10-07 13:29:21 +02:00
Lukas Reschke 31dee3605f Update root certificate list
Syncs with the newest certificate list by Mozilla.

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-10-07 10:59:40 +02:00
Morris Jobke 6374593099 log version number in each log line
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-10-07 10:09:37 +02:00
Morris Jobke e4ece33e80 Use proper casing of username in avatar filesystem setup
* before you could request an avatar for User instead of user
  which sets up the filesystem for that user twice causing
  the sharing codes collision detection to detect a lot of
  collisions

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-10-07 09:57:41 +02:00
Nextcloud bot 04d0daed12 [tx-robot] updated from transifex 2016-10-07 00:07:12 +00:00
Morris Jobke 3aab8f8a80 Merge pull request #1637 from nextcloud/backport-1636-fix-synjob-class-name
[stable10] Fix SyncJob class name in info.xml
2016-10-06 12:45:42 +02:00
Joas Schilling e811dea771 Fix SyncJob class name in info.xml
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-06 10:59:03 +02:00
Lukas Reschke bbde2f9b11 Merge pull request #1619 from nextcloud/backport-1617-update-notification-readable-version
[stable10] Update notification readable version (10.0.1 instead of 9.1.1.5)
2016-10-06 09:17:47 +02:00
Nextcloud bot 6ed029057b [tx-robot] updated from transifex 2016-10-05 00:07:04 +00:00
Joas Schilling 875a3f4b28 Use new URL schema
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-04 13:02:05 +02:00
Joas Schilling 87cc0231a8 Use the readable version for notifications
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-10-04 12:56:27 +02:00
Nextcloud bot 530a72493b [tx-robot] updated from transifex 2016-10-04 00:07:03 +00:00
Roeland Jago Douma 3b92dc452c Merge pull request #1461 from nextcloud/stable9.1-fed-share-retry-upstream
[upstream] [stable10] Fix fed share test call to return proper result
2016-10-03 15:33:34 +02:00
Roeland Jago Douma ea5b522329 Merge pull request #1574 from nextcloud/backport-1408-chunk-calendar-objects-query
[stable10] Chunk events/contacts when getting them
2016-10-03 12:17:04 +02:00
Nextcloud bot ed98fae8fb [tx-robot] updated from transifex 2016-10-03 00:12:53 +00:00
Nextcloud bot 6fcc190f5d [tx-robot] updated from transifex 2016-10-02 00:16:32 +00:00
Nextcloud bot 7dc0de8cb1 [tx-robot] updated from transifex 2016-10-01 00:08:30 +00:00
Nextcloud bot 64e3167dcc [tx-robot] updated from transifex 2016-09-30 00:08:19 +00:00
Joas Schilling 884e538575 Close cursors 2016-09-29 14:33:56 +02:00
Joas Schilling 5b8c7768b1 Chunk if you have too many contacts 2016-09-29 14:33:44 +02:00
Joas Schilling 33c39f7b27 Chunk if you have too many events 2016-09-29 14:33:31 +02:00
blizzz e60d5d08e0 Merge pull request #1478 from nextcloud/backport-1469-hide-tags-and-cry
Hide the tags input field when it's empty
2016-09-29 13:23:40 +02:00
Nextcloud bot 550fb8ce53 [tx-robot] updated from transifex 2016-09-29 00:07:14 +00:00
Lukas Reschke 3102afacd2 Merge pull request #1479 from nextcloud/stable10-backport-1188
[stable10] redirect to default app after solving the 2FA challenge
2016-09-28 23:15:42 +02:00
Lukas Reschke 766abeeae6 Merge pull request #1536 from nextcloud/backport-1489-ocs-status-code-when-app-is-disabled
[stable10] Return 404 on v2.php when the app is disabled
2016-09-28 23:02:43 +02:00
Morris Jobke bf0dfa997f Merge pull request #1526 from nextcloud/more-error-handling-in-copyr-stable10
[stable10] Graceful error handling and logging
2016-09-28 22:40:56 +02:00
Morris Jobke 3e93dbd404 Merge pull request #1522 from nextcloud/stable9.1-3f53730159d94bbc2b53129a4c750f5bab40a26e
[stable10] Fix mimetype detection inside hidden folders (#26138) (#2…
2016-09-28 22:03:02 +02:00
Morris Jobke 7841f9775f Merge pull request #1515 from nextcloud/stable9.1-fed-share-retry
[stable10] Fix fed share test call to return proper result
2016-09-28 22:02:29 +02:00
Morris Jobke 1a1ec21943 Merge pull request #1548 from nextcloud/stable9.1-d887671424e6a5980401f552f163062003afce94
[stable10] Change the minimum log level to fatal (#26213)
2016-09-28 22:01:58 +02:00
Morris Jobke 43aa114169 Merge pull request #1533 from nextcloud/stable10-redo-1517
[stable10] Only use realpath for real directories (#26060)
2016-09-28 22:01:29 +02:00
Lukas Reschke 12ec1d1e3e Make it 10.0.1 2016-09-28 15:23:39 +02:00
Lukas Reschke 51249f7dde Merge pull request #1555 from nextcloud/updatestate-can-be-empty-stable10
[stable10] UpdateState is empty if no update is available
2016-09-28 13:03:22 +02:00
Lukas Reschke 98df88950f UpdateState is empty if no update is available
This leads to log messages such as "Undefined index: updaterEnabled at /media/psf/nextcloud/apps/updatenotification/lib/Controller/AdminController.php#116".
2016-09-28 12:30:35 +02:00
Nextcloud bot ad9b154700 [tx-robot] updated from transifex 2016-09-28 00:10:27 +00:00
Juan Pablo Villafañez 6fd3974c8b [stable9.1] Change the minimum log level to fatal (#26213)
Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-09-27 18:40:13 +02:00
Björn Schießle c6cf5f40af Merge pull request #1544 from nextcloud/backport-1543-increase-component-length
[stable10] Increase the max length for components
2016-09-27 18:01:52 +02:00
Joas Schilling db24cdcd92 Increase the max length for components 2016-09-27 17:07:43 +02:00
Lukas Reschke 6bd15bcea6 Make it 10.0.1 RC4 2016-09-27 16:37:15 +02:00
Lukas Reschke c26fa854e7 Make it 10.0.1 RC3 2016-09-27 16:07:40 +02:00
Lukas Reschke 713eb790b1 Merge pull request #1541 from nextcloud/backport-1540-switch-for-autoupdater-control
[stable10] Switch for autoupdater control
2016-09-27 16:06:50 +02:00
Joas Schilling 4077f7141f Use the same URL everywhere
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-09-27 15:00:16 +02:00
Joas Schilling 7d910437fd Respect updater kill switch and fall back to download button
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-09-27 14:59:23 +02:00
Joas Schilling 0fac5146bd Return the autoupdater value from the server
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-09-27 14:58:57 +02:00
Marius Blüm cb2da786e2 Merge pull request #1528 from nextcloud/stable10-backport-1406
[stable10] Fix folder drag glitch in Firefox
2016-09-27 14:37:22 +02:00
Joas Schilling 2f01c97e97 Request a valid resource
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-09-27 11:50:46 +02:00
Joas Schilling bbbad09383 Return 404 on v2.php when the app is disabled
Signed-off-by: Joas Schilling <coding@schilljs.com>
2016-09-27 11:13:13 +02:00
Nextcloud bot 0a683682b2 [tx-robot] updated from transifex 2016-09-27 00:09:53 +00:00
Vincent Petry 4cbdf51ddb Only use realpath for real directories (#26060)
In some cross-local-storage use cases, the Local storage is
instantiated with "/" as data directory. In such cases, calling
realpath() would cause PHP warnings when open_basedir is set.

This fix bypasses the realpath() call when dealing with a root storage.

Downstreaming of https://github.com/owncloud/core/pull/26060

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-09-27 00:15:27 +02:00
Morris Jobke 9b0fca35ba Merge pull request #1532 from nextcloud/revert-1517-stable9.1-fix-openbasedir-realpath-warning
Revert "[stable10] Only use realpath for real directories (#26060)"
2016-09-27 00:12:48 +02:00
Morris Jobke 85d7b90b24 Revert "[stable10] Only use realpath for real directories (#26060)" 2016-09-27 00:12:23 +02:00
Morris Jobke ffaa2512f3 Merge pull request #1517 from nextcloud/stable9.1-fix-openbasedir-realpath-warning
[stable10] Only use realpath for real directories (#26060)
2016-09-27 00:11:42 +02:00
Lukas Reschke 0cc4d5d556 Make it 10.0.1 RC2 2016-09-26 22:30:30 +02:00
Lukas Reschke 9486dbb385 Merge pull request #1500 from nextcloud/stable10-backport-1499
[stable10] Add repair step and revert "Open updater" button
2016-09-26 22:28:53 +02:00
Morris Jobke 78c7ff9acc Fix folder drag glitch in Firefox
issue:
* drag'n'drop a folder into the files app in Firefox
* the highlight stays there because Firefox doesn't trigger the drop event for folders

solution:
* behave like the drop event if the dragover event isn't fired for 100ms (only applied in Firefox)
2016-09-26 17:44:01 +02:00
Morris Jobke a39d5ca37d write channel to config file when changed
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-09-26 13:48:05 +02:00
Morris Jobke 341c3567a2 Revert "Fix tests"
This reverts commit a44c1c748c.

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-09-26 13:47:58 +02:00
Lukas Reschke 2ecf5722ec Graceful error handling and logging
Right now a failed "copyr" will result in the error log being spammed with not really helpful error messages. Also situations such as `$dir` returning `false` are not really caught.

This adds more error handling and logging to make debugging such situations easier.

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-09-26 12:25:45 +02:00
Thomas Müller fca4098fac [stable9.1] Fix mimetype detection inside hidden folders (#26138) (#26151)
Downstreaming of https://github.com/owncloud/core/pull/26151

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-09-26 11:33:13 +02:00
Vincent Petry 7535d3e391 Only use realpath for real directories (#26060)
In some cross-local-storage use cases, the Local storage is
instantiated with "/" as data directory. In such cases, calling
realpath() would cause PHP warnings when open_basedir is set.

This fix bypasses the realpath() call when dealing with a root storage.

Downstreaming of https://github.com/owncloud/core/pull/26060

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-09-26 11:22:46 +02:00
Vincent Petry 335fcb1a43 Fix fed share test call to return proper result
Fixes an issue where retrying a previously failed federated share would
not properly reset the availability flag because the return value was
undefined instead of "true".

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
2016-09-26 11:17:57 +02:00
Nextcloud bot e0dd6768be [tx-robot] updated from transifex 2016-09-26 08:10:50 +00:00
Nextcloud bot f230070eda [tx-robot] updated from transifex 2016-09-26 00:09:49 +00:00
Nextcloud bot 15d7b8c2f1 [tx-robot] updated from transifex 2016-09-25 00:09:47 +00:00
Nextcloud bot 60c2ae7fc0 [tx-robot] updated from transifex 2016-09-24 00:09:51 +00:00
Morris Jobke 038a03540f Add repair step to remove .step file after update
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-09-23 13:49:40 +02:00
Morris Jobke 680e5cae5d Revert "Show an update button instead of the updater"
This reverts commit 202ae42506.

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2016-09-23 13:49:15 +02:00
Nextcloud bot c6e770959f [tx-robot] updated from transifex 2016-09-23 00:09:51 +00:00
Nextcloud bot 28ad84cc19 [tx-robot] updated from transifex 2016-09-22 00:11:39 +00:00
Lukas Reschke 40076b28bb Merge pull request #1484 from nextcloud/stable10-video-icons
[stable10] add audio and video icons
2016-09-22 01:16:28 +02:00
Jan-Christoph Borchardt 2a5cd3abfc add icon-more-white 2016-09-22 00:58:51 +02:00
Jan-Christoph Borchardt ec3e6aaca3 add proper classes for white audio and video icons 2016-09-22 00:58:40 +02:00
Jan-Christoph Borchardt c79c32eb0a add audio and video icons 2016-09-22 00:58:28 +02:00
Christoph Wurst b824706ec5 check same URL in unit tests 2016-09-21 12:57:43 +02:00
Christoph Wurst 8c82628622 redirect to default app after solving the 2FA challenge 2016-09-21 12:57:37 +02:00
Jan-Christoph Borchardt 923890ea74 fix sidebar tab headers margin 2016-09-21 11:32:17 +02:00
Jan-Christoph Borchardt fa912b43ae proper padding for Tags action 2016-09-21 11:31:30 +02:00
Joas Schilling 96dc2feb1e Add viewbox to icons 2016-09-21 11:31:18 +02:00
Joas Schilling 781feb9ff7 Add a handle for the tags label 2016-09-21 11:30:15 +02:00
Joas Schilling 7745b1ac29 Hide the tags input field when it's empty 2016-09-21 11:30:02 +02:00
Lukas Reschke bbe8f4ed0d Change version to 10.0.1 final 2016-09-21 10:39:28 +02:00
Nextcloud bot b5e9ecf764 [tx-robot] updated from transifex 2016-09-21 00:09:46 +00:00
Vincent Petry 960a8a76a9 Fix fed share test call to return proper result
Fixes an issue where retrying a previously failed federated share would
not properly reset the availability flag because the return value was
undefined instead of "true".
2016-09-20 13:54:44 +02:00
Nextcloud bot 804dfd1d59 [tx-robot] updated from transifex 2016-09-20 00:09:44 +00:00
Nextcloud bot 0a0079e89c [tx-robot] updated from transifex 2016-09-19 00:09:39 +00:00
Nextcloud bot 466a219cd7 [tx-robot] updated from transifex 2016-09-18 00:09:33 +00:00
Nextcloud bot 568b4d9a5d [tx-robot] updated from transifex 2016-09-17 00:10:20 +00:00
Nextcloud bot da66933891 [tx-robot] updated from transifex 2016-09-16 00:09:40 +00:00
Nextcloud bot f23ae4de2f [tx-robot] updated from transifex 2016-09-15 00:12:44 +00:00
Lukas Reschke 908cbcea83 Correct version string to 9.1.1.0 2016-09-14 20:00:48 +02:00
Lukas Reschke 8d1a592b27 Change version to 10.0.1 RC1 2016-09-14 19:17:48 +02:00
Morris Jobke fe7c777a75 Merge pull request #1402 from nextcloud/stable10-backport-1399
[stable10] Move Travis tests to DroneCI
2016-09-14 09:36:29 +02:00
Lukas Reschke 8ff4d95ae8 Move Travis tests to DroneCI
Should give us some quicker test execution speed as we're not limited by Travis

Explicitly invoke with "bash"

Install instance already

Use newest litmus container
2016-09-14 08:19:12 +02:00
Nextcloud bot 79d31198c9 [tx-robot] updated from transifex 2016-09-14 00:10:39 +00:00
Morris Jobke 1f0bd6f289 Merge pull request #1397 from nextcloud/stable10-backport-1338
[stable10] Opening the trashbin causes errors in log for files without preview
2016-09-13 21:39:29 +02:00
Morris Jobke 222f04b131 add actual check if mysql is up already 2016-09-13 20:47:17 +02:00
Morris Jobke 9ca848c317 Opening the trashbin causes errors in log for files without preview
* put a file without a generated preview in the trashbin
  (e.g. a *.docx file)
* open the trashbin
* following errors will show up in the nextcloud.log:
	- filesize(): stat failed for ...
	- fopen(...): failed to open stream: No such file or directory at ...
	- fread() expects parameter 1 to be resource, boolean given at ...
	- fclose() expects parameter 1 to be resource, boolean given at ...
	- imagecreatefromstring(): Empty string or invalid image at ...

This is because the preview code tries to load an SVG image, which
is obviously only text.

The fix simply handles this before the loading happens and the web UI
keeps showing the default mimetype icon.
2016-09-13 20:18:09 +02:00
Roeland Jago Douma 318ea301c3 Merge pull request #1379 from nextcloud/stable10-backport-711
stable10 backport: Apply password policy on user creation
2016-09-13 19:35:35 +02:00
Roeland Jago Douma 43bff15359 Merge pull request #1394 from nextcloud/fix-share-notification-10
Fix MissingMandatoryParametersException for share notifications
2016-09-13 19:26:43 +02:00
Roeland Jago Douma 14ea159670 Merge pull request #1391 from nextcloud/stable10-backport-1376
[stable10] Allow increasing permissions for share owner
2016-09-13 15:43:24 +02:00
Joas Schilling 107b418815 Fix MissingMandatoryParametersException for share notifications
The routing system is non-forgiving
2016-09-13 14:09:34 +02:00
Morris Jobke d7faff0b0d Merge pull request #1367 from nextcloud/trash-detect-correct-mimetype-stable10
[stable10] deleted files, fix mimetype detection
2016-09-13 11:50:26 +02:00
Vincent Petry 4c177ce6af Allow increasing permissions for share owner
In some cases, the owner of the share is also recipient through a group
share. The owner must still be able to increase permissions in that
situation.
2016-09-13 11:39:22 +02:00
Morris Jobke 0f7090a2f4 Merge pull request #1389 from nextcloud/stable10-improve-ci-speed
[stable10] clone depth of 1 and execute integration tests first
2016-09-13 11:34:40 +02:00
Morris Jobke 9b60657a5c clone depth of 1 and execute integration tests first
* specify git image
2016-09-13 10:52:41 +02:00
Morris Jobke b5710d0d7f Merge pull request #1387 from nextcloud/better-mentions-10
[stable10] Try to mention 3 people that will leave comments
2016-09-13 10:41:41 +02:00
Morris Jobke 179cdfd39d add nextcloud-bot to userBlacklist 2016-09-13 10:35:56 +02:00
Joas Schilling 70db3173cd Try to mention 3 people that will leave comments 2016-09-13 10:35:45 +02:00
Morris Jobke 8cb1bc5560 Merge pull request #1382 from nextcloud/stable10-backport-1380
[stable10] update drone.yml to 0.5
2016-09-13 02:37:58 +02:00
Nextcloud bot 7c3934d3e6 [tx-robot] updated from transifex 2016-09-13 00:11:26 +00:00
Morris Jobke 9d0bd91b93 update drone.yml to 0.5 2016-09-13 02:07:19 +02:00
michag86 5fc59a1515 Apply password policy on user creation 2016-09-12 22:45:46 +02:00
Bjoern Schiessle a6b661bd68 detect the correct mimetype of the files in the trashbin, therefore we have to check the filename without the appended timestamp 2016-09-12 11:47:57 +02:00
Nextcloud bot 3d0a7c49cc [tx-robot] updated from transifex 2016-09-12 00:09:41 +00:00
Nextcloud bot 37d6cf6f6c [tx-robot] updated from transifex 2016-09-11 00:09:20 +00:00
Roeland Jago Douma c40e598d55 Merge pull request #1345 from nextcloud/small-encryption-improvement-stable10
[stable10] skip shared files, if files get decrypted only for a specific user
2016-09-10 14:46:48 +02:00
Nextcloud bot 3ba03a69fd [tx-robot] updated from transifex 2016-09-10 00:09:25 +00:00
Roeland Jago Douma 70231dcccf Merge pull request #1343 from nextcloud/stable10-throw-exceptions-not-printable
[stable10] Don't print exception message in HTML
2016-09-09 15:23:55 +02:00
Morris Jobke 3270da0890 Merge pull request #1340 from nextcloud/stable10-limit-possible-image-mimetypes
[stable10] Filter more mimetypes
2016-09-09 15:12:26 +02:00
Bjoern Schiessle 7d183a28d2 skip shared files, if files get decrypted only for a specific user we shouldn't touch files owned by a different user. 2016-09-09 14:55:46 +02:00
Lukas Reschke 7350e13113 Don't print exception message in HTML
The exception message is potentially influenced by user input and could thus be confusing (e.g. somebody could try to open a file like "Please send a mail to support@foo.com", and then the message would include that string.

It is thus reasonable to not show the exception message by default. Also for the browser view I added an `exit()` at the end, as otherwise the XML exception would be attached.
2016-09-09 14:16:17 +02:00
Lukas Reschke 68ab8325c7 Filter more mimetypes
There's no need to allow more than those defined mimetypes for images.
2016-09-09 12:36:28 +02:00
Roeland Jago Douma b9100da2e8 Merge pull request #1331 from nextcloud/osx-problems-stable10
[stable10] Fix OS X and OVH problems
2016-09-09 08:19:40 +02:00
Nextcloud bot de921ccd98 [tx-robot] updated from transifex 2016-09-09 00:09:38 +00:00
Lukas Reschke 2ae08d6fc2 Match only for actual session cookie
OVH has implemented load balancing in a very questionable way where the reverse proxy actually internally adds some cookies which would trigger a security exception. To work around this, this change only checks for the session cookie.
2016-09-08 21:07:05 +02:00
Lukas Reschke 1914e7082a Add exemptions for incompatible UAs
Some user agents are notorious and don't really properly follow HTTP
 specifications. For those, have an automated opt-out. Since the protection
for remote.php is applied in base.php as starting point we need to opt out
here.
2016-09-08 21:06:57 +02:00
Morris Jobke 520bfa872b Merge pull request #1324 from nextcloud/backport-1323-show-download-button-for-updates-atm
[stable10] Show an download button instead of the updater
2016-09-08 15:41:45 +02:00
Morris Jobke 72fed6e8b8 Merge pull request #1322 from nextcloud/backport-1225-allow-to-validate-password-policy
Allow to validate the password_policy app
2016-09-08 15:36:03 +02:00
Morris Jobke 30a24b49f5 Merge pull request #1327 from nextcloud/set-quota-non-int-10
[10] fix setting quota to default or unlimited
2016-09-08 15:32:42 +02:00
Morris Jobke 8e5b2ce3b3 Merge pull request #1316 from nextcloud/backport-1311-add-docs-for-workflows
[stable10] Add a docs link when given
2016-09-08 14:08:52 +02:00
Roeland Jago Douma cfcadaea36 Merge pull request #1319 from nextcloud/backport-1243-fix-detection-of-file-types-a-bit
[stable10] Fix detection of file types a bit
2016-09-08 13:45:23 +02:00
Robin Appelman 38a0492c64 fix setting quota to default or unlimited 2016-09-08 12:58:42 +02:00
Joas Schilling 280a452055 Change updater URL 2016-09-08 12:29:37 +02:00
Morris Jobke a9184287e6 Merge pull request #1320 from nextcloud/backport-1301-fix-required-permissions-for-webdav-move-and-copy
[stable10] Fix required permissions for webdav move and copy
2016-09-08 12:13:18 +02:00
Joas Schilling a44c1c748c Fix tests 2016-09-08 11:14:17 +02:00
Joas Schilling 292b95462e Show an update button instead of the updater 2016-09-08 11:02:10 +02:00
Joas Schilling 69b063f4c6 Allow to validate the password_policy app 2016-09-08 09:56:48 +02:00
Joas Schilling 2e407732ba Fix tests 2016-09-08 09:33:10 +02:00
Joas Schilling 42b9eed5dc UPDATE permissions qualify for renaming a node 2016-09-08 09:33:01 +02:00
Joas Schilling 14299e44e2 Only require CREATE permissions when the file does not exist yet 2016-09-08 09:32:51 +02:00
Joas Schilling 5996983e28 Make mimetype also work for READ and DELETE operations 2016-09-08 09:21:26 +02:00
Joas Schilling d3a1fbd9eb Better detection of mimetypes while uploading a zip on a mac 2016-09-08 09:21:00 +02:00
Joas Schilling 810f99c1c9 Correctly remove the charset from finfo mimetype 2016-09-08 09:20:34 +02:00
Joas Schilling 9de17c3785 Add a docs link when given 2016-09-08 08:57:54 +02:00
Nextcloud bot 8c4e5a923a [tx-robot] updated from transifex 2016-09-08 00:10:28 +00:00
Marius Blüm d2c2f02cc2 Merge pull request #1312 from nextcloud/stable10-backport-1307
[stable10] Fix update notification
2016-09-07 23:44:17 +02:00
Morris Jobke 17dc2c344f fix tests 2016-09-07 19:58:20 +02:00
Morris Jobke 12d077065c Fix updater URL 2016-09-07 19:08:34 +02:00
Morris Jobke 86bbea9b8c Fix layout of success message and text 2016-09-07 19:08:25 +02:00
Morris Jobke e83cb0bf56 Merge pull request #1305 from nextcloud/backport-1287-correctly-remove-admin-stuff
[stable10] Correctly remove admin sections and settings
2016-09-07 16:58:08 +02:00
Roeland Jago Douma 7c49ab4bb0 Merge pull request #1288 from nextcloud/backport-1284-allow-status.php-before-install
[stable10] Allow to call status.php before the instance is installed
2016-09-07 16:27:10 +02:00
Joas Schilling 28b00c5bea Correctly remove admin sections and settings 2016-09-07 14:37:48 +02:00
Morris Jobke 2880a08747 Merge pull request #1299 from nextcloud/stable10-backport-1235
[stable10] Move navigation entries without order to the end
2016-09-07 13:41:22 +02:00
Joas Schilling 27f7416519 Move navigation entries without order to the end 2016-09-07 10:52:21 +02:00
Roeland Jago Douma 8324b6492d Merge pull request #1294 from nextcloud/stable10-backport-1292
[stable10] Add icon for the theming app
2016-09-07 10:20:30 +02:00
Felix Epp a28f000610 Add icon for the theming app 2016-09-07 08:34:01 +02:00
Nextcloud bot 9bd40755ef [tx-robot] updated from transifex 2016-09-07 00:09:32 +00:00
Joas Schilling c01fd540be Also fix "occ status" 2016-09-06 16:09:50 +02:00
Joas Schilling 1131140e69 Don't throw 500 when not installed 2016-09-06 16:09:36 +02:00
Joas Schilling 0a2b5b75de Allow to call status.php before the instance is installed 2016-09-06 16:08:02 +02:00
Roeland Jago Douma e97bb2ccc5 Merge pull request #1280 from nextcloud/backport-1272-theming-info-capabilities
[stable10] Add theming information to capabilities for the client
2016-09-06 15:01:08 +02:00
Joas Schilling 9ac95be358 No background and logo in 10 2016-09-06 11:22:01 +02:00
Joas Schilling b626f710c1 php 5.4 and 5.5 compatibility 2016-09-06 11:19:08 +02:00
Joas Schilling ebaa49f76d Add image URLs and tests 2016-09-06 11:10:27 +02:00
Joas Schilling 9f98cfceb4 Add theming information to capabilities for the client 2016-09-06 11:10:15 +02:00
Nextcloud bot e9d0520788 [tx-robot] updated from transifex 2016-09-06 00:09:25 +00:00
Nextcloud bot 1193d8d1b4 [tx-robot] updated from transifex 2016-09-05 00:09:16 +00:00
Nextcloud bot c5f2917e1a [tx-robot] updated from transifex 2016-09-04 00:09:28 +00:00
Nextcloud bot d928d47fb6 [tx-robot] updated from transifex 2016-09-03 00:09:30 +00:00
Nextcloud bot 4849538c70 [tx-robot] updated from transifex 2016-09-02 00:09:17 +00:00
Roeland Jago Douma 1b4cbba376 Merge pull request #1231 from nextcloud/backport-1224-do-not-allow-linebreak-in-paths
[stable10] Do not allow linebreaks and null bytes in paths
2016-09-01 14:07:10 +02:00
Joas Schilling df50e967db Add PhantomJS to gitignore 2016-09-01 12:45:38 +02:00
Joas Schilling c3ae21fef2 Also prevent null byte character 2016-09-01 12:45:31 +02:00
Joas Schilling ed0f0db5fa Filter out %0A from paths 2016-09-01 12:45:19 +02:00
Nextcloud bot e6c8c33b03 [tx-robot] updated from transifex 2016-09-01 00:09:31 +00:00
Roeland Jago Douma 62c89213f4 Merge pull request #1181 from nextcloud/backport-870-oracle-support
[stable10] Fix oracle support of external storage app
2016-08-31 15:15:07 +02:00
Roeland Jago Douma 5fae9e2bbe Merge pull request #1207 from nextcloud/backport-1190-addressbook-correctly-handle-multi-values
[stable10] Correctly handle multi-values when converting VCards to array
2016-08-31 15:08:18 +02:00
Roeland Jago Douma 782c3138c9 Merge pull request #1200 from nextcloud/stable9.1-usermountcache-orphanedshare
[stable10] Prevent error with orphaned shares when updating user mount cache
2016-08-31 15:07:40 +02:00
Roeland Jago Douma e39cf78c52 Merge pull request #1206 from nextcloud/stable9.1-integration_tests_local_external_storage
[Stable10] integration tests local external storage
2016-08-31 13:54:24 +02:00
Roeland Jago Douma 50f40d9889 Merge pull request #1209 from nextcloud/fix-vendor-in-php-warning
Fix vendor name in PHP version warning
2016-08-31 13:54:07 +02:00
Joas Schilling dcebcbc9c6 Fix vendor name in PHP version warning 2016-08-31 12:28:10 +02:00
Joas Schilling 1c61e749ab Add a unit test for all the magic 2016-08-31 12:07:19 +02:00
Joas Schilling 25e9d67d52 Correctly handle multi-values when converting VCards to array 2016-08-31 12:07:10 +02:00
Sergio Bertolín a5b9dc8c08 Changed enabled/disabled app in provisioning api tests 2016-08-31 11:43:00 +02:00
Sergio Bertolín 8293735108 External storage was not enabled and content was not deleted before scenarios
Conflicts:
	build/integration/features/bootstrap/BasicStructure.php
	build/integration/run.sh
2016-08-31 11:41:29 +02:00
Sergio Bertolín 0ec695e2d7 Added local_storage folder 2016-08-31 11:41:25 +02:00
Sergio Bertolin bf4415c1f6 Run as current user
Conflicts:
	build/integration/run.sh
2016-08-31 11:41:18 +02:00
Sergio Bertolin 6b9a7d3ad9 Removed extra context added needed option and remove storage after external storage scenarios
Conflicts:
	build/integration/features/bootstrap/BasicStructure.php
	build/integration/run.sh
2016-08-31 11:41:13 +02:00
Sergio Bertolin d318c90ef7 Added feature and context, not working yet, option to allow sharing needs to be added 2016-08-31 11:41:07 +02:00
Sergio Bertolín 884c7a6b6b Creating the folder when the tests run
Conflicts:
	build/integration/features/bootstrap/BasicStructure.php
	build/integration/run.sh
2016-08-31 11:40:28 +02:00
Vincent Petry e8a014be34 Add integration test for sharing with group, then user in group
Add integration test for the use case where a group share exists and
then the same owner creates a direct share to a user in that group.
2016-08-31 11:40:14 +02:00
Lukas Reschke c4bfdb3cab Merge pull request #1183 from nextcloud/backport-529-cross-vendor-up-and-downgrades
[stable10] Allow downgrades of maintenance accross vendors
2016-08-30 19:54:20 +02:00
Vincent Petry 6d1ccefc90 Added closeCursor in SharedMount numeric id 2016-08-30 19:47:16 +02:00
Vincent Petry c4f303d19c Prevent error with orphaned shares when updating user mount cache 2016-08-30 19:45:22 +02:00
Lukas Reschke fe3e7629e2 Merge pull request #1191 from nextcloud/stable10-share-allowspaceinremote
[stable10] Allow space for federated share id search
2016-08-30 15:37:07 +02:00
Morris Jobke 3d43680d6e Merge pull request #1184 from nextcloud/backport-1089-allow-to-prevent-previews
[stable10] Check if the file isReadable() before sending a (cached) preview
2016-08-30 13:31:07 +02:00
Roeland Jago Douma a2a17fc5d7 Merge pull request #1186 from nextcloud/stable10-backport1178
[stable10] Theming: Show loading spinner while uploading files
2016-08-30 13:02:14 +02:00
Vincent Petry 102d4dc1af Allow space for federated share id search 2016-08-30 12:57:23 +02:00
Julius Haertl 6ce976e7f0 Theming: Show loading spinner while uploading files 2016-08-30 10:28:57 +02:00
Joas Schilling 061aad5fe3 Check if the file isReadable() before sending a (cached) preview 2016-08-30 10:24:01 +02:00
Joas Schilling 7d54d03e40 Allow downgrades of maintenance accross vendors 2016-08-30 10:19:40 +02:00
Joas Schilling b4a2f93ec8 Fix oracle support of external storage app 2016-08-30 10:08:49 +02:00
Joas Schilling f8a45b9e08 Merge pull request #1174 from nextcloud/backport-1128
[stable10] Users page lazy multiselect group dropdowns
2016-08-30 10:04:28 +02:00
Morris Jobke f4d4e3f55f Merge pull request #1179 from nextcloud/stable10_us_25675
[stable10] Added integration test (#25675)
2016-08-30 09:48:17 +02:00
Lukas Reschke 351d01510d Merge pull request #1176 from nextcloud/backport-1145-10
[stable10] DAV: Return data-fingerprint always when asked
2016-08-30 08:41:45 +02:00
Thomas Müller bc3c4ebd2d [stable9.1] Added integration test (#25675)
* [stable9.1] Added integration test

* A shared storage is never a home storage - fixes #25582
2016-08-30 08:32:12 +02:00
blizzz 7e2c4b80d2 Merge pull request #1140 from nextcloud/backport-1132-prevent-parse-error-on-editing-an-html-comment
[stable10] Prevent parse error on editing an HTML comment
2016-08-30 00:14:34 +02:00
Markus Goetz 4685ca9154 [master] DAV: Return data-fingerprint always when asked (#25482)
For owncloud/client#5056
Users can configure arbitrary subfolders for syncing, therefore we should
always return it when asked for.
The sync client makes sure to not always ask for it to save bandwidth.
2016-08-29 23:59:57 +02:00
Vincent Petry 3a0a84e1ea Backport of Users page lazy multiselect group dropdowns #1128 to stable10
Users page lazy multiselect group dropdowns

Instead of pre-rendering all multiselects with lots of group entries,
the current groups are now displayed as simple labels.
Behind the labels there is a pencil icon like for other fields.
When clicking the pencil icon, the dropdown will be spawned and will
open itself.
Upon closing of the dropdown, the label comes back with the updated
selection and the dropdown is destroyed.

Extra non-available groups also in list

Fix group sorting in user list group selection
2016-08-29 23:46:28 +02:00
Lukas Reschke dbc860e6f7 Merge pull request #1159 from nextcloud/stable9.1-27a5be96f108d4ab2b91bcd765433e1646ba9bf2
[9.1] Before a user is getting scanned the database connection is re-…
2016-08-29 21:39:55 +02:00
Lukas Reschke 0a1b1d57a7 Merge pull request #1157 from nextcloud/stable9.1-init-filesconfig
Make sure file list files config always exists
2016-08-29 21:39:44 +02:00
Roeland Jago Douma deadbf7567 Merge pull request #1156 from nextcloud/stable9.1-db60e65409e7c6d4f1bde5062af53fbad6e8b412
[stable9.1] Fix issues where some user settings cannot be loaded when…
2016-08-29 20:33:10 +02:00
Joas Schilling 167cea0b09 Merge pull request #1126 from nextcloud/stable10-theming-performance
[stable10] theming performance
2016-08-29 15:44:19 +02:00
Vincent Petry db420e54a1 [9.1] Before a user is getting scanned the database connection is re-establ… 2016-08-29 15:22:29 +02:00
Vincent Petry 006e9e8b42 Make sure file list files config always exists
Initialize files config with defaults in case none was passed
2016-08-29 15:20:48 +02:00
Thomas Müller f6ee9340c2 [stable9.1] Fix issues where some user settings cannot be loaded when the user id differs in case sensitivity - fixes #25684 (#25686) 2016-08-29 15:19:00 +02:00
Joas Schilling 42425bb910 Prevent parse error on editing an HTML comment 2016-08-29 14:26:40 +02:00
Lukas Reschke 49da5267a9 Use temporary file as cache 2016-08-29 12:19:02 +02:00
Lukas Reschke d4d90a0b84 Increase theming performance
1. Set proper caching headers (`Pragma: cache`)
2. Resize image proportionally to a max size of 1920px
3. Store images with progressive mode

This resizes a previous 2.8 MB picture to 300kb and makes it rendering going down from 11 seconds to less than 1 here. And future requests won't have to download the file newly.
2016-08-29 12:18:57 +02:00
Raghu Nayyar af515a615d Merge pull request #1104 from nextcloud/stable10-backport-dont-read-server-variable
[stable10] Remove reading PATH_INFO from server variable
2016-08-28 10:31:51 +02:00
Lukas Reschke 4fb2810add Remove reading PATH_INFO from server variable
Having two code paths for this is unreliable and can lead to bugs. Also, in some cases Apache isn't setting the PATH_INFO variable when mod_rewrite is used.

Fixes https://github.com/nextcloud/server/issues/983
2016-08-27 22:16:30 +02:00
Lukas Reschke 25ed51743a Merge pull request #902 from nextcloud/stable10-787
[stable10] Files external settings polish
2016-08-26 14:58:46 +02:00
Lukas Reschke 977c49ae6d Merge pull request #1081 from nextcloud/backport-660-config-path-from-env
[stable10] Allow the config dir to be specified via the enviroment
2016-08-26 14:56:31 +02:00
Damjan Georgievski a076a0d17a SetupController should use \OC::$configDir too 2016-08-26 12:31:57 +02:00
Damjan Georgievski cc8b508987 introduce NEXTCLOUD_CONFIG_DIR env variable (see #300)
nextcloud by default uses the `/config/` directory in the source/application tree for its config file(s).
with this commit that directory can be overridden by the `NEXTCLOUD_CONFIG_DIR` environment variable.

in uwsgi, you would use the option `--env "NEXTCLOUD_CONFIG_DIR=/tmp/nx-config/"`
in apache `SetENV …`
and the cli command can be run with: `NEXTCLOUD_CONFIG_DIR=/tmp/nx-config ./occ` (or just use `export` once in the
shell).

NEXTCLOUD_CONFIG_DIR can be supplied with or without the trailing slash (`/`), but in all cases `$configDir` will have
it automatically added if needed.

The other changes are several occurrences of `OC::$SERVERROOT . '/config'` to `OC::$configDir`.
2016-08-26 12:31:43 +02:00
Lukas Reschke c8d90cca29 Merge pull request #1074 from nextcloud/backport-1050
Backport of fix internal links in security & setup warnings #1050
2016-08-26 09:39:46 +02:00
Arthur Schiwon b4b175537d Backport of fix internal links in security & setup warnings #1050
fix internal links in security & setup warnings, resolves #1048

adjust js tests
2016-08-26 00:25:50 +02:00
Lukas Reschke 678fce3c18 Merge pull request #1045 from nextcloud/add-cache-buster-to-icons-css
[stable10] Add cachebuster to icons.css
2016-08-25 05:57:41 +02:00
Lukas Reschke 72939ba69e Merge pull request #1043 from nextcloud/increase-version-to-final
Increase version to 10.0 final
2016-08-25 05:45:36 +02:00
Lukas Reschke 24d030a656 Add cachebuster to icons.css 2016-08-24 20:58:52 +02:00
Lukas Reschke cc35699dcb Increase version to 10.0 final 2016-08-24 20:30:43 +02:00
Roeland Jago Douma 43ce8b13c1 Merge pull request #1034 from nextcloud/stable10_1033
[Stable10] Fix theming autoloader magic
2016-08-24 14:17:51 +02:00
Roeland Jago Douma b59f5fc725 Require a ThemingDefaults class again 2016-08-24 13:25:26 +02:00
Roeland Jago Douma a046725321 Dark autoloader magic for ThemingDefaults 2016-08-24 13:25:16 +02:00
Roeland Jago Douma 95fb14f5b0 Merge pull request #1029 from nextcloud/stable10_1013
[Stable10] Do not error on NotFoundException
2016-08-24 09:30:27 +02:00
Roeland Jago Douma 4528bdabe7 Do not error on NotFoundException
Since this exception can be thrown when a shared file is in the
trashbin there is no need to spam the log like crazy.

Fixes #938
2016-08-24 08:17:28 +02:00
Lukas Reschke 2ca5186c94 Merge pull request #993 from nextcloud/stable10-965
[stable10] Fix hidden files handling
2016-08-23 22:16:17 +02:00
Lukas Reschke 805fc22276 Merge pull request #1008 from nextcloud/shared-storage-non-recursive-10
[10] Fix shared storage recursive setup
2016-08-23 22:15:21 +02:00
Lukas Reschke e5eff3c244 Merge pull request #1022 from nextcloud/backport-1005
[stable10] Do not error on maxUploadChange
2016-08-23 15:44:00 +02:00
Robin Appelman fa980af53c prevent infinite recursion while getting storage from mount 2016-08-23 13:59:01 +02:00
Roeland Jago Douma 94b84f2d1e Merge pull request #1021 from nextcloud/stable10-1017
Cache registered autoloaders
2016-08-23 12:24:36 +02:00
Roeland Jago Douma d2718b38ff Backport of Do not error on maxUploadChange #1005 to stable10
Do not error on maxUploadChange

The new admin page broke the updating of the max upload size. This is
due to very old code there.

* Now update is done in the background using js
* Added proper route+controller to update

Fixes #994

put file handling into a section again
2016-08-23 11:39:44 +02:00
Lukas Reschke 1c01728514 Cache registered autoloaders
This saves more than 20ms (!) on every request, the previous problem was that `\OC_App::registerAutoloading` calls `\OC\AppFramework\App::buildAppNamespace` which parses the appinfo.xml. Since that was also called multiple times (e.g. on cloud.nextcloud.com over 200 times) that had a significant performance impact. Also on simple PROPFIND requests.

https://blackfire.io/profiles/compare/65a53e6e-7f35-4974-b559-4c81abd01c3b/graph shows the difference nicely.
2016-08-23 11:21:42 +02:00
Lukas Reschke f4bb803564 Merge pull request #1009 from nextcloud/backport-995
[stable10] Backport Workflow section + hidden empty sections #995 to stabble10
2016-08-23 11:20:13 +02:00
Joas Schilling 2d3c29c66a Merge pull request #1019 from nextcloud/stable10_956
[Stable10] When using permalinks don't error out if file id can't be found
2016-08-23 11:13:02 +02:00
Roeland Jago Douma 53a3ec2f18 When requesting a permalink to an invalid file redirect
We need to do the redirect to update address bar.
2016-08-23 08:15:05 +02:00
Roeland Jago Douma ac9f75e1d9 When using permalinks don't error out if file id can't be found
Fixes #952

* Use only the index route (since it went to showFile anyways)
* Fix tests
* Use getUserFolder to force init of users mounts
2016-08-23 08:15:00 +02:00
Arthur Schiwon ff2f5ecbf7 Backport Workflow section + hidden empty sections #995 to stabble10
add section to worklfowengine

enlist only registered sections that also have settings registered to

adjust test

Move admin settings to workflow section

fix wrong var name

Save the container with the app's namespace so we can resolve it
2016-08-22 16:37:48 +02:00
Roeland Jago Douma 18f694b19f Merge pull request #1012 from nextcloud/hide_tryLogin_params
[stable10] hide parameters of tryLogin when logging
2016-08-22 15:59:32 +02:00
Roeland Jago Douma e9e54f057a Merge pull request #1010 from nextcloud/backport-1006
[stable10] fixes registering of theming settings where server return OC_Defaults
2016-08-22 15:08:56 +02:00
Arthur Schiwon fa29ba1fce hide parameters of tryLogin when logging 2016-08-22 14:33:23 +02:00
Lukas Reschke cc80df9e8e Merge pull request #1001 from nextcloud/backport-969-allow-to-validate-operations
[stable10] Allow to validate operations
2016-08-22 13:43:17 +02:00
Arthur Schiwon 0f3513afff fixes registering of theming settings where server return OC_Defaults instead of ThemingDefaults 2016-08-22 13:24:08 +02:00
Robin Appelman 58b810a547 handle failed shares 2016-08-22 12:41:16 +02:00
Robin Appelman f4e89c15bf Lazy init shared storage 2016-08-22 12:41:12 +02:00
Robin Appelman 89d4684ef1 reuse existing root id 2016-08-22 12:41:08 +02:00
Robin Appelman a1fd9d275f Allow jail wrappers to lazily initialize the source storage 2016-08-22 12:41:04 +02:00
Robin Appelman 2a2f1b9a00 Allow storage wrappers to lazily initialize the source storage 2016-08-22 12:40:16 +02:00
blizzz 379260732c Merge pull request #918 from nextcloud/stable10_891
[Stable10] [OC] Fix unmerged shares repair targetdecision
2016-08-22 12:09:27 +02:00
Marius Blüm 7bb91f15b8 Merge pull request #1003 from nextcloud/backport-978-add-feedback-for-password-change
[stable10] Add feedback for password change
2016-08-22 12:08:41 +02:00
Roeland Jago Douma efc480460b Merge pull request #1002 from nextcloud/stable10_966
[Stable10] Make e-mail icon visible
2016-08-22 11:41:53 +02:00
Jack Davis f05cd64458 25532_issue_password_update_notification_updated (#25756)
* Password Update Notification

Added an IF ELSE statement to ensure that feedback is provided to the
user on successfully updating a user password in settings.

* Password Update Success Message

Updated the password update success message
2016-08-22 09:51:44 +02:00
Roeland Jago Douma f220e499c5 Make e-mail icon visible
Fixes #996

* Make mail icon visible
* Opacity to .5
* Add tooltip
2016-08-22 09:15:01 +02:00
Joas Schilling 4377d99662 Validate the operation 2016-08-22 09:03:47 +02:00
Joas Schilling 85813c42f9 System tags are not sharing but workflow 2016-08-22 09:01:00 +02:00
Vincent Petry a1f1d2c9e8 Fix hidden files handling
Hidden files (dot files) are now always rendered in the DOM to make
sure that all file operations and selection still work as expected.

Their visibility is now toggled on CSS level.
2016-08-20 18:48:29 +02:00
Roeland Jago Douma d2afda0f04 Merge pull request #981 from nextcloud/stable10-backport-federation-icon
[stable10] Update federation and update notification icon
2016-08-19 20:40:32 +02:00
Morris Jobke 418eec83e0 use simple bell as update notification icon 2016-08-19 14:00:18 +02:00
Morris Jobke 71fa7a20af Change federation icon to the share icon 2016-08-19 13:53:14 +02:00
Julius Härtl a12ea5197b Merge pull request #972 from nextcloud/stable10-backport-971
[stable10] Fix loading of ThemingDefaults
2016-08-19 13:34:32 +02:00
Marius Blüm c41bd47c0d Merge pull request #973 from nextcloud/stable10-959
[stable10] Update mimetypes
2016-08-19 13:13:50 +02:00
Roeland Jago Douma 1f473c11a1 Merge pull request #966 from nextcloud/stable9-1-link-share
[stable10] In cases where the server dictates the link share expirat…
2016-08-19 12:39:17 +02:00
Lukas Reschke 289964a477 Merge pull request #961 from nextcloud/fix-caldavtester-stable10
[stable10] Move over to new CalDAVTester repo (#25859)
2016-08-19 12:16:33 +02:00
Roeland Jago Douma 2ab26f3667 Update mimetypes 2016-08-19 11:35:52 +02:00
Julius Haertl fe15940233 Fix loading of ThemingDefaults 2016-08-19 11:29:58 +02:00
Thomas Müller 24f35f9076 [stable9.1] In cases where the server dictates the link share expiration the date is not updated on consequitive changes and enable/disable actions 2016-08-19 10:28:22 +02:00
Thomas Müller 0298760c1b Move over to new CalDAVTester repo (#25859)
* Move over to new caldac tester repo

* no run.py anymore
2016-08-19 10:19:58 +02:00
Marius Blüm 7f486705e0 Merge pull request #957 from nextcloud/stable10_fix_948
[Stable10] Nextcloud is being updated. Not ownCloud
2016-08-19 09:39:09 +02:00
Roeland Jago Douma a2b6d4d923 Nextcloud is being updated. Not ownCloud
Fixes #948
2016-08-19 08:36:17 +02:00
Robin Appelman e286e0492a fix error when not logged in 2016-08-18 23:37:34 +02:00
Robin Appelman bead6c9307 change remote cloud naming to Nextcloud 2016-08-18 23:37:16 +02:00
Robin Appelman 42f14ab5a9 dont register personal files_external setting if it's empty 2016-08-18 23:37:04 +02:00
Roeland Jago Douma df5a1e2a30 Merge pull request #939 from nextcloud/stable10-backport-937
[stable10] SVG defintions always take the first one
2016-08-18 19:21:28 +02:00
Morris Jobke 0f926e03bd Merge pull request #926 from nextcloud/backport-925-use-util-methods
[stable10] Load the Template class in case it's not loaded
2016-08-18 16:38:55 +02:00
Roeland Jago Douma c07090ef6e SVG defintions always take the first one
* Move filter definition out
2016-08-18 16:29:05 +02:00
Morris Jobke f68d5d1071 Merge pull request #935 from nextcloud/stable10-add-cachebusters
[Stable10] add cachebusters
2016-08-18 15:49:44 +02:00
Roeland Jago Douma 99a39ad209 Merge pull request #932 from nextcloud/backport-930-check-isset-require
[stable10] Fix "Undefined index" when the values do not exist
2016-08-18 14:16:31 +02:00
Lukas Reschke e014ec548d Add cachebuster to apps.css 2016-08-18 12:46:07 +02:00
Lukas Reschke d8aba95322 Add cachebuster to apps.css 2016-08-18 12:46:03 +02:00
Lukas Reschke d639fee237 Add cachebuster to styles.css 2016-08-18 12:45:59 +02:00
Lukas Reschke d6c31b4107 Add cachebuster to right navigation 2016-08-18 12:45:56 +02:00
Lukas Reschke 95fca9abad Add cache buster to left menu bar 2016-08-18 12:45:52 +02:00
Lukas Reschke 9ef16cea89 Add cache buster to logo 2016-08-18 12:45:49 +02:00
Lukas Reschke 3ac524c420 Merge pull request #904 from nextcloud/backport-903-allow-disable-comments
[stable10] Revert "Always add activities for comments to the stream"
2016-08-18 12:06:11 +02:00
Joas Schilling 91fbf815f9 Fix "Undefined index" when the values do not exist 2016-08-18 12:03:10 +02:00
Joas Schilling 93a3b7bb18 Load the Template class in case it's not loaded 2016-08-18 12:01:59 +02:00
Roeland Jago Douma 5b6b9ad1ff Merge pull request #921 from nextcloud/backport-867-notification-primary-action-always-first
[stable10] Make sure the primary action is always the first one
2016-08-18 10:39:27 +02:00
Joas Schilling 1927c28b9f Merge pull request #910 from nextcloud/stable10_864
[Stable10] Ensure the user exists before calling a method on it
2016-08-18 09:30:47 +02:00
Joas Schilling e1ec3964c8 Make sure the primary action is always the first one 2016-08-18 09:27:14 +02:00
Lukas Reschke 34ee64c853 Merge pull request #915 from nextcloud/stable10-backport-914
add viewBox to app icon for proper scaling in Firefox
2016-08-17 19:45:19 +02:00
Vincent Petry 11e9ce669a Improve regexp to detect duplicate folders when repairing unmerged shares 2016-08-17 19:39:08 +02:00
Vincent Petry c1ad88a777 Fix unmerged shares repair with mixed group and direct shares
Whenever a group share is created after a direct share, the stime order
needs to be properly considered in the repair routine, considering that
the direct user share is appended to the $subShares array and breaking
its order.
2016-08-17 19:38:33 +02:00
Vincent Petry 837dc0b336 Improve file_target finding logic when repairing unmerged shares
Pick the most recent subshare that has no parenthesis from duplication
which should match whichever name the user picked last. If all
subshares have duplicate parenthesis names, use the least recent group
share's target instead.
2016-08-17 19:38:19 +02:00
Morris Jobke 6d43860457 add viewBox to app icon for proper scaling in Firefox 2016-08-17 18:39:50 +02:00
Marius Blüm 76f19c0775 Merge pull request #913 from nextcloud/increase-version-to-rc1
[stable10] Increase version to 10.0 RC1
2016-08-17 18:07:14 +02:00
Lukas Reschke 398596b3eb Merge pull request #912 from nextcloud/stable10-backport-905
Stable10 backport 905
2016-08-17 17:54:07 +02:00
Lukas Reschke 18bfa83d20 Increase version to 10.0 RC1
Let's get ready for that ;-)
2016-08-17 17:02:41 +02:00
Morris Jobke b3cc9c6998 Fix null reference in IE 2016-08-17 16:27:18 +02:00
Morris Jobke 6f48494b08 Empty tags are not allowed for image and feColorMatrix in IE11 and below 2016-08-17 16:27:12 +02:00
Roeland Jago Douma a3c5aefc96 Add viewBox to app icons
If we don't add a viewbox a lot of browsers will just say NOPE!!! when
we ask them to scale.
2016-08-17 16:27:04 +02:00
Roeland Jago Douma ed950eb861 Remove hack 2016-08-17 16:24:31 +02:00
Morris Jobke b8d4baacdc Introduce weird hack for Firefox
* everything is 4 times as big (doubled width and doubled height)
2016-08-17 16:24:27 +02:00
Roeland Jago Douma 57c09bbba4 Filter can't be named invert in FF 2016-08-17 16:24:20 +02:00
Lukas Reschke f3336e93b8 Merge pull request #907 from nextcloud/nfd-default-10
[uc][10] Disable NFD encoding wrapper by default
2016-08-17 16:24:12 +02:00
Jörn Friedrich Dreyer 29565ec423 use $userId instead of $user 2016-08-17 15:51:36 +02:00
Thomas Müller 63fc5b601d Ensure the user exists before calling a method on it - fixes #24751 2016-08-17 15:51:19 +02:00
Morris Jobke 582250e55c Merge pull request #909 from nextcloud/stable10-backport-l10n
[stable10][tx-robot] updated from transifex
2016-08-17 15:44:22 +02:00
Nextcloud bot 4470ab36bb [tx-robot] updated from transifex 2016-08-17 13:32:21 +00:00
Vincent Petry 3c2de97ab1 Disable NFD encoding wrapper by default
Seems I forgot to set it back to false after testing.
Will give a performance boost for all storages.
2016-08-17 14:45:18 +02:00
Joas Schilling f900861485 Revert "Always add activities for comments to the stream"
This reverts commit 48c41b888c
2016-08-17 13:33:53 +02:00
Morris Jobke 263c73c685 Fix casing of external storage app 2016-08-17 13:22:28 +02:00
Morris Jobke 8ffbe757d2 layout refinements 2016-08-17 13:22:17 +02:00
Robin Appelman cc422e556b hide files external in personal settings if it's empty 2016-08-17 13:22:09 +02:00
Robin Appelman d2edd38155 don't show dependency info if we cant create new mounts 2016-08-17 13:21:59 +02:00
Robin Appelman d429f472c3 hide global credentials in personal when a user cant add mounts 2016-08-17 13:21:47 +02:00
Julius Härtl 29e45dd5ba Merge pull request #897 from nextcloud/stable10-backport-834
[stable10] Use darker colors for app icons in app management
2016-08-17 11:12:01 +02:00
Lukas Reschke f9b4a6ae61 Merge pull request #896 from nextcloud/backport-890-quota-unlimited-via-api
[stable10] Allow to retrieve the quota itself via the provisioning api
2016-08-17 10:45:06 +02:00
Raghu Nayyar ff65e0cf9b Fixes image preview when fetched from the store. 2016-08-17 09:58:17 +02:00
Raghu Nayyar c76f60e733 Adds opacity to image container. 2016-08-17 09:58:13 +02:00
Raghu Nayyar bbd764399f Removes uneeded styles. 2016-08-17 09:58:09 +02:00
Raghu Nayyar e96e652f72 Uses javascript to invert the SVGs. 2016-08-17 09:58:04 +02:00
Joas Schilling 7d700fa806 Fix constant name, copy-pasterino 2016-08-17 09:42:13 +02:00
Joas Schilling 670bbc65c8 Allow to retrieve the quota itself via the provisioning api 2016-08-17 09:42:09 +02:00
Lukas Reschke a2942c3e94 Merge pull request #894 from nextcloud/stable10-implement_712
[Stable10] Backport 796
2016-08-17 09:39:35 +02:00
Lukas Reschke 1f177aa105 Use getMockBuilder instead of createMock 2016-08-16 21:36:59 +02:00
Lukas Reschke 6ed721dde3 Rename class reference
File has been renamed only on master
2016-08-16 21:28:26 +02:00
Arthur Schiwon f4aa676cb0 adjust tests to latest changes 2016-08-16 21:11:29 +02:00
Arthur Schiwon c5fdee2678 for new we cannot have nested settings, default module is only appended if available 2016-08-16 21:11:25 +02:00
Arthur Schiwon 8ef08e46e8 add missing encryption modules to settings 2016-08-16 21:11:17 +02:00
Arthur Schiwon 4d505b72de fix missing parameters in sharing settings page 2016-08-16 21:11:10 +02:00
Arthur Schiwon e6116627b6 final db indexes 2016-08-16 21:11:06 +02:00
Arthur Schiwon eed879ab3e adopt to Controller constructor changes 2016-08-16 21:11:01 +02:00
Arthur Schiwon 6e37a007b9 check registered sections and settings after an app got updated to garbage collect orphaned classes 2016-08-16 21:10:57 +02:00
Arthur Schiwon 1e62bd3d92 attempt to remove section and settings entries when an app got disabled 2016-08-16 21:10:54 +02:00
Lukas Reschke 436e6c1078 Use MockBuilder instead of createMock
CI uses an older PHPUnit
2016-08-16 21:10:47 +02:00
Lukas Reschke 687f5bee94 Add unit tests 2016-08-16 21:10:41 +02:00
Arthur Schiwon 1ebbcdcc96 satisfy dependencies for files_external 2016-08-16 21:10:37 +02:00
Arthur Schiwon 57295ee35f simplify encryption manager fetching in DIContainer 2016-08-16 21:10:27 +02:00
Arthur Schiwon 9111b52fef move mail settings and file handling to additional ones, thus files_external gets its own section 2016-08-16 21:10:21 +02:00
Arthur Schiwon 2d66b16e34 change federatedfilesharing css class to followupsection to reduce whitespace 2016-08-16 21:10:17 +02:00
Arthur Schiwon 0c904c8de7 move systemstags to sharign section, drop collaboration section 2016-08-16 21:10:13 +02:00
Arthur Schiwon c93453e878 make updatenotification settings appear as if it is part of the version part in server settings 2016-08-16 21:10:09 +02:00
Arthur Schiwon d056f575c9 change casing in section display names 2016-08-16 21:10:04 +02:00
Arthur Schiwon ef4452e3c3 mark current section 2016-08-16 21:10:00 +02:00
Arthur Schiwon fe29483a9d fix theming tests 2016-08-16 21:09:54 +02:00
Arthur Schiwon 6fa34e334f added some missed diagnosis output 2016-08-16 21:09:50 +02:00
Arthur Schiwon cd08307bb8 rename remaining occurences of OCA/Theming/Template 2016-08-16 21:09:46 +02:00
Bjoern Schiessle 4132319bae rename "Tenmplate" to "ThemingDefaults" to make the auto loader happy" 2016-08-16 21:09:41 +02:00
Arthur Schiwon a5ba5bb19f register app autoload instead of loading apps 2016-08-16 21:09:36 +02:00
Lukas Reschke 3ad89a76b5 Resolve conflict 2016-08-16 21:09:31 +02:00
Lukas Reschke df3b708cec Add since tags to class 2016-08-16 21:09:26 +02:00
Lukas Reschke c4b35dceb0 Add missing since annotations 2016-08-16 21:09:22 +02:00
Arthur Schiwon 40778560be adjust systemtags app 2016-08-16 21:09:08 +02:00
Arthur Schiwon 63efdb35df adjust federation app 2016-08-16 21:08:41 +02:00
Arthur Schiwon 0c86f69626 superfluous 2016-08-16 21:08:22 +02:00
Arthur Schiwon ea419a29c2 adjust files app, and integrate files_external into that section 2016-08-16 21:08:16 +02:00
Arthur Schiwon 3ae0a380ae adjust Theming app 2016-08-16 21:07:09 +02:00
Arthur Schiwon 6a35c7d124 superfluous 2016-08-16 21:06:51 +02:00
Arthur Schiwon 10249f48f1 make sure shipped apps also setup their admin settings on a fresh install 2016-08-16 21:06:45 +02:00
Arthur Schiwon 09573dbbba adjust files_external 2016-08-16 21:06:38 +02:00
Arthur Schiwon 94c3d614da adjust federatedfilesharing 2016-08-16 21:06:16 +02:00
Arthur Schiwon e37db63e47 rename IAdmin to ISettings, the interface is not bound to a specific settings scope 2016-08-16 21:05:54 +02:00
Arthur Schiwon c956901949 fixes, improvements, and another app:
* setupSettings now also triggered on enable
* fixes detection of present admin section or settings in the DB
* add update routine in such cases
* encryption app migrated
2016-08-16 21:05:38 +02:00
Arthur Schiwon d7bbebb8f5 fix registration of admin settings and section on app install 2016-08-16 21:05:19 +02:00
Arthur Schiwon 2e9794f53e more admin page splitup improvements
* bump version to ensure tables are created
* make updatenotification app use settings api
* change IAdmin::render() to getForm() and change return type from Template to TemplateResponse
* adjust User_LDAP accordingly, as well as built-in forms
* add IDateTimeFormatter to AppFramework/DependencyInjection/DIContainer.php. This is important so that \OC::$server->query() is able to resolve the
constructor parameters. We should ensure that all OCP/* stuff that is available from \OC::$server is available here. Kudos to @LukasReschke
* make sure apps that have settings info in their info.xml are loaded before triggering adding the settings setup method
2016-08-16 21:05:11 +02:00
Arthur Schiwon a548902d5f Fallback for legacy settings. They are placed into Additional Settings 2016-08-16 21:04:41 +02:00
Arthur Schiwon bbb086f0d2 remove mistakenly added file 2016-08-16 21:04:34 +02:00
Arthur Schiwon 9e39c4155a fix duplicated db index name 2016-08-16 21:04:29 +02:00
Arthur Schiwon d01689037d Initial work on Apps page split:
* interfaces for the Admin settings (IAdmin) and section (ISection)
* SettingsManager service
* example setup with LDAP app
2016-08-16 21:04:22 +02:00
Lukas Reschke 737591f239 Merge pull request #858 from nextcloud/stable10-when-logged-in-then-just-redirect-to-redirected-page
[stable10] when logged in then just redirect to redirected page
2016-08-16 18:13:24 +02:00
Björn Schießle 9250ffdaa1 Merge pull request #887 from nextcloud/stable10_855
[Stable10] Add files drop capability for clients
2016-08-16 11:38:51 +02:00
Marius Blüm e3daa8e3ce Merge pull request #872 from nextcloud/move-apps-stable10
[stable10] move apps between 'Language' and 'Session' in personal settings
2016-08-16 11:26:13 +02:00
Lukas Reschke 716adb8462 Merge pull request #884 from nextcloud/stable10-use-proper-test-execution
[stable10] Use proper casing
2016-08-15 21:50:38 +02:00
Roeland Jago Douma f1d4341dd7 Add files drop capability for clients 2016-08-15 21:29:03 +02:00
Roeland Jago Douma a8ba573ba9 We have to mock the is_uploaded_file in the OC\Core\Controller namespace 2016-08-15 20:09:48 +02:00
Roeland Jago Douma b860fa7125 Fix mock call in AvatarControllerTest 2016-08-15 20:09:37 +02:00
Lukas Reschke 5e9c7d3ff3 Use generated URL 2016-08-15 19:26:24 +02:00
Lukas Reschke 81467f7c4e Fix CheckSetupController tests 2016-08-15 17:55:36 +02:00
Lukas Reschke ab9a8ce952 Fix tests for LoginController 2016-08-15 17:52:54 +02:00
Lukas Reschke 349f5e4a60 Fix template test 2016-08-15 17:48:58 +02:00
Lukas Reschke 18388a01f5 Add reference to current user 2016-08-15 17:48:55 +02:00
Lukas Reschke db34a8c861 Use proper casing 2016-08-15 17:48:45 +02:00
Roeland Jago Douma b6f0a06725 Merge pull request #875 from nextcloud/stable10_composer_files
Recreate the composer autoloader files
2016-08-15 14:52:00 +02:00
Roeland Jago Douma 17d0988a83 Recreate the composer autoloader files
* Adds missing files (so they are statically loaded)
2016-08-15 13:38:22 +02:00
Bjoern Schiessle a3cb247d88 move apps between 'Language' and 'Session' in personal settings 2016-08-15 12:06:19 +02:00
Lukas Reschke 9ac6b83687 Use createMock instead of deprecated getMock 2016-08-13 21:04:16 +02:00
Lukas Reschke be1e64486f Redirect users when already logged-in on login form 2016-08-13 21:04:10 +02:00
Lukas Reschke 3b27a2a412 Merge pull request #833 from nextcloud/stable10-backport-819
[stable10] Theming support for apps
2016-08-11 11:24:06 +02:00
Julius Haertl 0b838b8eef Theming: Add OCA.Theming Js for app interaction 2016-08-10 18:46:39 +02:00
Julius Haertl 5bf85b727b Add css classes to allow app developers using the theming colors 2016-08-10 18:46:28 +02:00
Lukas Reschke 550c5ee7c4 Merge pull request #811 from nextcloud/shared-cachethepropagatorinstance-stable10
Store the shared propagator instance
2016-08-10 17:24:44 +02:00
Lukas Reschke f3a3953ca3 Merge pull request #809 from nextcloud/skip_expiry_for_users_that_never_logged_in-stable10
Skip version and trash expiry for users that never logged in
2016-08-10 16:31:19 +02:00
Lukas Reschke 93677b2ca3 Merge pull request #817 from nextcloud/jail-root-stable10
[stable10] getJailedPath expects $path to have a trailing /
2016-08-10 16:04:13 +02:00
Lukas Reschke 5e7973b869 Merge pull request #822 from nextcloud/shared-storage-lazy-numeric-id-10
[10] get shared storage storage id without setting up the storage
2016-08-10 16:03:21 +02:00
Lukas Reschke 72d31ac074 Merge pull request #825 from nextcloud/add-warning-for-php7.1-stable10
[stable10] Nextcloud is not compatible with PHP 7.1
2016-08-10 16:02:58 +02:00
Lukas Reschke c79f885031 Merge pull request #821 from nextcloud/stable10_806
[Stable10] Token polish
2016-08-10 16:00:25 +02:00
Björn Schießle 4128c9986c Merge pull request #823 from nextcloud/stable10_807
[Stable10] OCSController requires DataResponse
2016-08-10 15:26:23 +02:00
Lukas Reschke f629bb88cb [stable10] Nextcloud is not compatible with PHP 7.1
Make the code fail hard before people update and then experience some half-broken stuff. See also https://github.com/nextcloud/docker-ci/issues/10
2016-08-10 14:29:51 +02:00
Roeland Jago Douma a54f9c6aef OCSController requires DataResponse
The OCS Controller requires a DataResponse object to be returned.
This means that all error handling will have to be done via exceptions
thrown and handling in the middleware.
2016-08-10 13:09:01 +02:00
Robin Appelman 5321a8728e get shared storage storage id without setting up the storage 2016-08-10 13:05:32 +02:00
Björn Schießle 5d11b5b278 Merge pull request #815 from nextcloud/fix-undefined-offset-in-login-controller-stable10
[stable10] Add missing array element
2016-08-10 12:50:22 +02:00
Morris Jobke 728631f1eb add more margin to right of the icon 2016-08-10 12:16:03 +02:00
Roeland Jago Douma 0727f4e372 Add sliding animation 2016-08-10 12:15:53 +02:00
Roeland Jago Douma 79b7ff3bf8 Add clipboardjs for token 2016-08-10 12:14:37 +02:00
Roeland Jago Douma 806f9b80f1 Always show delete icon for new tokens
* Always show delete icon
* Hide form if the new icon is deleted
2016-08-10 12:14:26 +02:00
Roeland Jago Douma 7d5578dd06 Add note password is only shown once 2016-08-10 12:14:16 +02:00
Thomas Müller 2e0e2064e8 Adding test case for getPathById including a jailed cache where root is just empty 2016-08-10 11:29:11 +02:00
Thomas Müller 0253300e2a getJailedPath expects $path to have a trailing / - fixes #25464 2016-08-10 11:29:02 +02:00
Thomas Müller 67534dfba0 [stable9.1] Add missing array element - fixes #25714 2016-08-10 11:13:53 +02:00
Vincent Petry 5edd5100fe Store the shared propagator instance
This instead of recreating it for every call.
2016-08-10 10:59:56 +02:00
Jörn Friedrich Dreyer 73de15fb08 Skip version and trash expiry for users that never logged in 2016-08-10 10:54:02 +02:00
Morris Jobke 0475315dd4 Merge pull request #805 from nextcloud/stable10_799
[Stable10] Open exiration date picker directly on toggle
2016-08-10 10:41:56 +02:00
Roeland Jago Douma d569d8ed88 Open exiration date picker directly on toggle 2016-08-10 08:23:26 +02:00
Roeland Jago Douma c591776afd Merge pull request #804 from nextcloud/10-admin_php_smtp_casing
[stable10] Admin setting PHP and SMTP casing
2016-08-10 08:20:11 +02:00
Lukas Reschke 94d9d52de2 Merge pull request #743 from nextcloud/fix_smb_attributes-10
[10] Fix file permissions for SMB (read-only folders will be writeable
2016-08-10 00:23:17 +02:00
Lukas Reschke 6888dee06c Merge pull request #803 from nextcloud/use-correct-version
Use correct version
2016-08-10 00:14:46 +02:00
Roeland Jago Douma 232b1f4417 Admin setting PHP and SMTP casing 2016-08-09 23:46:11 +02:00
Lukas Reschke 808a82dd6c Use correct version
Fixes https://github.com/nextcloud/server/issues/800, other apps such as fileaccesscontrol and workflow already have the correct version.
2016-08-09 23:02:42 +02:00
Roeland Jago Douma 4bab962cca Merge pull request #798 from nextcloud/stable10_781
[Stable10] Remove AGPL title
2016-08-09 21:54:07 +02:00
Roeland Jago Douma cb2e535565 Merge pull request #794 from nextcloud/stable10_780
[Stable10] Add clipboard action to Personal Settings Fed Cloud Id
2016-08-09 20:47:47 +02:00
Björn Schießle e7e81e9e76 Merge pull request #795 from nextcloud/stable10-backport-786
[stable10] log class name, ID only is hard to debug
2016-08-09 20:33:17 +02:00
Björn Schießle 044f2734af Merge pull request #792 from nextcloud/stable10_789
[Stable10] Padding of federated server
2016-08-09 19:34:05 +02:00
Roeland Jago Douma f3ae93ddd7 Remove AGPL title 2016-08-09 19:24:53 +02:00
Jörn Friedrich Dreyer 9b760aafa1 log class name, ID only is hard to debug 2016-08-09 16:19:06 +02:00
Roeland Jago Douma b5f32a055f Add clipboard action to Personal Settings Fed Cloud Id 2016-08-09 16:18:44 +02:00
Roeland Jago Douma 8fc5f6bcd0 Padding of federated server 2016-08-09 16:14:26 +02:00
Björn Schießle 289704f13d Merge pull request #788 from nextcloud/stable10-federation-error-messages
[stable10] improve federation error messages
2016-08-09 15:50:33 +02:00
Roeland Jago Douma 3914861b90 Merge pull request #785 from nextcloud/stable10_779
[Stable10] Make 'Add to your website' toggleable
2016-08-09 15:47:52 +02:00
Bjoern Schiessle d61c49a0b0 improve federation error messages 2016-08-09 14:36:30 +02:00
Roeland Jago Douma 1d6448beb1 Make 'Add to your website' toggleable 2016-08-09 14:16:32 +02:00
Björn Schießle 25a72c8099 Merge pull request #776 from nextcloud/workflow-cleanup-stable10
[stable10] Workflow cleanup
2016-08-09 12:36:03 +02:00
Joas Schilling 7637c2e366 Allow a description for workflow sections 2016-08-09 11:33:04 +02:00
Joas Schilling ae1a41f05b Add placeholder to the name field 2016-08-09 11:32:57 +02:00
Joas Schilling 1f527576a4 Rename operations and checks 2016-08-09 11:32:50 +02:00
Joas Schilling 99494925fe Highlight the check row on hover 2016-08-09 11:32:42 +02:00
Joas Schilling 47a3700973 Add some space between the rule groups 2016-08-09 11:32:32 +02:00
Roeland Jago Douma 63c8011a15 Merge pull request #773 from nextcloud/stable10-fix-systemtags-icon
[stable10] Add black version of system tags icon
2016-08-08 21:35:19 +02:00
Bugsbane 0174579fb5 Add black version of system tags icon
Includes PNG (16x16px) and SVG (scoured) versions in black, to be uniform with the other icon files.
2016-08-08 20:23:50 +02:00
Roeland Jago Douma 167e248177 Merge pull request #738 from nextcloud/increment-versions
[stable10] Increment the versions and adjust the capitilization
2016-08-08 18:26:30 +02:00
Roeland Jago Douma 5332ec4a27 Fix intergration test for admin_audit 2016-08-08 16:48:10 +02:00
Joas Schilling 924b0ac060 Disable by default 2016-08-08 16:48:00 +02:00
Joas Schilling f910837722 More casing 2016-08-08 16:48:00 +02:00
Joas Schilling 7b3974501e Increment the versions and adjust the capitilization 2016-08-08 16:48:00 +02:00
Björn Schießle 7321baa108 Merge pull request #713 from nextcloud/stable10_474
[Stable 10] Group shares with same source and target
2016-08-08 10:55:26 +02:00
Morris Jobke 65dd174655 Merge pull request #756 from nextcloud/twofactor-isset-10
[10] Check if an app provide two-factor-auth providers before we try to use them
2016-08-08 09:15:13 +02:00
Roeland Jago Douma f5bd7a3dd6 Disable buggy test for now 2016-08-07 14:05:54 +02:00
Marius Blüm eb9d0b4664 Merge pull request #757 from nextcloud/nextcloud-version-check-10
[10] Translate the server version for nextcloud
2016-08-07 09:08:49 +02:00
Joas Schilling 9bc13eb7eb Translate the server version for nextcloud 2016-08-06 10:42:26 +02:00
Robin Appelman e9310f750c Check if an app provide two-factor-auth providers before we try to use them 2016-08-06 10:30:36 +02:00
blizzz 0e808a45b8 Merge pull request #748 from nextcloud/stable10-backport-name-changes
[stable10] correct name
2016-08-05 15:42:40 +02:00
Daniel Hansson 61b3796ea5 ownCloud -> Nextcloud 2016-08-05 14:37:43 +02:00
blizzz 6bbcbb22e9 Correct name in Console Application.php
see changes :)
2016-08-05 14:37:32 +02:00
Julius Härtl efe8f7d136 Merge pull request #705 from nextcloud/backport-408-psr4-for-theming
[stable10] Theming input validation
2016-08-05 11:51:42 +02:00
Juan Pablo Villafañez 91c6c451f4 Fix file permissions for SMB (read-only folders will be writeable) (#25301)
* Fix file permissions for SMB (read-only folders will be writeable)

* Read-only folders won't be deletable

* Added comment for the read-only behaviour for folders
2016-08-05 10:23:50 +02:00
Vincent Petry e75a0a44c6 Make share target consistent when grouping group share with user share
In some situations, a group share is created before a user share, and
the recipient renamed the received share before the latter is created.
In this situation, the "file_target" was already modified and the second
created share must align to the already renamed share.

To achieve this, the MountProvider now groups only by "item_source"
value and sorts by share time. This makes it so that the least recent
share is selected as super-share and its "file_target" value is then
adjusted in all grouped shares.

This fixes the issue where this situation would have different
"file_target" values resulting in two shared folders appearing instead
of one.
2016-08-04 19:50:16 +02:00
Vincent Petry 56e9f7cdf9 Add integration tests for double shares with rename in between 2016-08-04 19:50:16 +02:00
Vincent Petry 21907c4f3e Fix RepairUnmergedShares to not skip valid repair cases
The repair step was a bit overeager to skip repairing so it missed the
case where a group share exists without subshares but with an
additional direct user share.
2016-08-04 19:50:16 +02:00
Vincent Petry 3a86dd1d1a Adjust repair version check for unmerged shares 2016-08-04 19:50:16 +02:00
Vincent Petry bee0a8f32a Group incoming shares for resharing in JS 2016-08-04 19:50:16 +02:00
Vincent Petry 2ab799f674 Added more tests for sharing's MountProvider 2016-08-04 19:50:16 +02:00
Vincent Petry 6638e1857a Add repair step for unmerged shares (WIP) 2016-08-04 19:50:16 +02:00
Vincent Petry 3e8b787dd1 Improved share grouping readability + fixed test 2016-08-04 19:50:16 +02:00
Vincent Petry c5095e760e Add integration tests for merging received shares 2016-08-04 19:50:16 +02:00
Roeland Jago Douma 39ebf120c2 Group shares with same source and target
Fixes #24575

Note that this is a very limited solution and eventually we want smarter
merging!
2016-08-04 19:49:27 +02:00
Bernhard Posselt f4f43dddf5 Merge pull request #733 from nextcloud/fix-724-stable10
Backport Stable 10: Fix #724 by using step instead of job
2016-08-04 16:23:53 +02:00
Lukas Reschke c707150dd6 Merge pull request #731 from nextcloud/stable10-add-new-apps-as-official
[stable10] Add new apps as official
2016-08-04 16:09:38 +02:00
Bernhard Posselt 5e24c6b5fd fix #724 by using step instead of job 2016-08-04 14:52:38 +02:00
Joas Schilling 4d5df58378 Merge pull request #727 from jurgenhaas/patch-2
Backport of #718
2016-08-04 14:45:28 +02:00
Joas Schilling 4bb277aee9 Order alphabetically and deduplicate the shipped.json 2016-08-04 14:42:44 +02:00
Lukas Reschke 66f6a91ade [stable10] Add new apps as official 2016-08-04 14:28:24 +02:00
Joas Schilling 713e201074 Merge pull request #602 from nextcloud/backport-workflow-engine
🚧 [WIP] Backport workflow engine 🚧
2016-08-04 14:20:14 +02:00
Jürgen Haas 2037ff1f2f Backport of #718
Backporting https://github.com/nextcloud/server/pull/718 to stable10
2016-08-04 09:14:40 +02:00
Björn Schießle d896d42931 Merge pull request #706 from nextcloud/backport-637-prevent-delete-update-on-group-shares
[stable10] Do not allow to delete/update group shares as a group member
2016-08-03 14:52:49 +02:00
Joas Schilling fc7bd03822 Add access control and automated tagging as shipped 2016-08-03 14:50:53 +02:00
Joas Schilling 8d23405602 Ooops 2016-08-03 14:44:18 +02:00
Joas Schilling 065763f117 No multi support, less magic 2016-08-03 14:44:08 +02:00
Joas Schilling 7d71535f57 Allow to define the operation 2016-08-03 14:44:01 +02:00
Joas Schilling c12c083eba Tags need to be loaded before 2016-08-03 14:43:52 +02:00
Joas Schilling cc719c9bb7 Translate the errors 2016-08-03 14:43:44 +02:00
Joas Schilling 66fd216d3a Load the timezones via select2 2016-08-03 14:43:35 +02:00
Morris Jobke e978c39b13 add a UI to render proper time picker 2016-08-03 14:43:26 +02:00
Joas Schilling f1869cd183 Add request time 2016-08-03 14:43:14 +02:00
Joas Schilling af3eaa86ac Add remote address 2016-08-03 14:42:55 +02:00
Joas Schilling 01d269bb4d Add Request URL 2016-08-03 14:42:48 +02:00
Joas Schilling 45c74cdc5a User agent check 2016-08-03 14:40:40 +02:00
Joas Schilling d146df5820 Add file mime type 2016-08-03 14:40:29 +02:00
Joas Schilling 627f24396c Add file size as check 2016-08-03 14:40:20 +02:00
Joas Schilling 7b87935cb9 Add system tag check 2016-08-03 14:40:12 +02:00
Joas Schilling 7b73c0f5a2 Add the systemtag js files 2016-08-03 14:40:03 +02:00
Joas Schilling df3ca567ad Make sure each plugin is only added once 2016-08-03 14:39:56 +02:00
Morris Jobke c425a677b2 Add workflowengine to check-code call 2016-08-03 14:35:54 +02:00
Roeland Jago Douma e2c4f4f9aa Add intergration test 2016-08-03 09:17:57 +02:00
Joas Schilling 7289cb5ec0 Do not allow to delete/update group shares as a group member 2016-08-03 09:17:50 +02:00
Joas Schilling 3d3614d233 Validate the input of the theming options 2016-08-03 09:15:00 +02:00
Joas Schilling 16b2d2d935 Fix tests 2016-08-03 09:14:52 +02:00
Joas Schilling eac3b8d992 Update routes.php 2016-08-03 09:14:44 +02:00
Joas Schilling 02773efe4f Remove useless check 2016-08-03 09:14:34 +02:00
Joas Schilling 08ea343adb Use the methods on the Response object 2016-08-03 09:14:24 +02:00
Joas Schilling d248fbde92 Use public API preferable 2016-08-03 09:14:15 +02:00
Joas Schilling 8bf034ffbf Move classes to PSR-4 2016-08-03 09:14:04 +02:00
Julius Härtl 482a725a8b [stable10] Change app menu to white background with dark icons (#665)
* Change app menu to white

* adjust opacity of icons in apps and user menu

* Move to svg filter on app menu to support IE9+

* fix shading of apps icon in app menu

* Fix wrong preserveAspectRatio at app menu icons

* Apply inverted app icon style to newly installed icons
2016-08-02 19:18:00 +02:00
Jan-Christoph Borchardt 16358381cc Merge pull request #696 from nextcloud/stable10-backport-shake-login
[stable10] Shake the login fields if password is wrong
2016-08-02 15:33:33 +02:00
Morris Jobke 1ae21d1e33 Rebranded to Nextcloud for the occ command line tool (#692) 2016-08-02 10:14:19 +02:00
Morris Jobke c0f2207016 Shake the login fields if password is wrong 2016-08-01 22:03:56 +02:00
Jan-Christoph Borchardt 80470093dd Merge pull request #683 from nextcloud/stable10-fix-theming-logo
[stable10] fix missing semicolon to fix themed logo on log in page
2016-08-01 21:01:51 +02:00
Morris Jobke 481418ff40 Merge pull request #593 from nextcloud/ldap-avoidneedlesssetemailonlogin-stable10
[stable10] Prevent setting email and triggering events at login time (#25554)
2016-08-01 18:22:20 +02:00
Morris Jobke a60fd5b34a Merge pull request #668 from nextcloud/stable10-video-container-size
[stable10] up the minimum size of the public share video a bit, use 16/9 ratio
2016-08-01 18:17:40 +02:00
Jan-Christoph Borchardt a32d9bbc6e fix missing semicolon to fix themed logo on log in page 2016-08-01 18:16:32 +02:00
Morris Jobke ab18c72400 Merge pull request #667 from thelinuxfr/stable10
[Stable10] Transifex Owncloud > Nextcloud
2016-07-30 09:58:53 +02:00
Frédéric LIETART f7170b39ea Transifex Owncloud > Nextcloud
Change transifex link Owncloud > Nextcloud
2016-07-29 23:35:45 +02:00
Jan-Christoph Borchardt 0d5b8f3293 up the minimum size of the public share video a bit, use 16/9 ratio, fix #603 2016-07-29 23:35:18 +02:00
Morris Jobke 558a8a62a4 Merge pull request #654 from nextcloud/add-quotaplugin-v2-stable10
[stable10] Add quotaplugin v2 stable10
2016-07-29 14:10:57 +02:00
Thomas Müller f944a8861a Adding quota plugin to new dav endpoint (#25615)
* Adding quota plugin to new dav endpoint

* Added integrated test failing in old endpoint

* Added 0B quota test
2016-07-29 12:31:56 +02:00
Björn Schießle 6301f75cb0 Merge pull request #639 from nextcloud/theming-firstrunwizard-stable10
[stable10] apply theme to the firstrunwizard
2016-07-29 11:37:25 +02:00
Morris Jobke eee791ad56 Merge pull request #641 from nextcloud/backport-566-stable10
[stable10] revert to old setup connection logic
2016-07-29 08:59:36 +02:00
Robin Appelman de8bb68325 revert to old setup connection logic 2016-07-29 00:41:12 +02:00
Morris Jobke 51be4bf2f0 Merge pull request #618 from nextcloud/backport-519-stable10
Backport LDAPProvider to Nextcloud 10
2016-07-28 23:13:21 +02:00
Morris Jobke 94f4e1009c Merge pull request #610 from nextcloud/no-missing-preview-10
[10] Don't try to load previews when we know there is none
2016-07-28 17:48:42 +02:00
Bjoern Schiessle 35acbd6279 fix background id selector for the first run wizard 2016-07-28 17:44:23 +02:00
Bjoern Schiessle 39f88c74f9 fix unit tests 2016-07-28 17:44:01 +02:00
Bjoern Schiessle 6aede49ea1 re-use background color from theme in the firstrunwizard 2016-07-28 17:43:52 +02:00
Bjoern Schiessle 39712d1adc apply theme to the firstrunwizard 2016-07-28 17:43:45 +02:00
Björn Schießle b28e6a7938 Merge pull request #635 from nextcloud/stable10-backport-415
[stable10] Colorize checkboxes depending on theming color
2016-07-28 17:41:20 +02:00
Morris Jobke 2830b80042 Merge pull request #619 from nextcloud/backport-494-systemtags-management
[stable10] Add a simple Admin UI to manage systemtags
2016-07-28 17:02:22 +02:00
Morris Jobke 0a14cd4d60 Merge pull request #628 from nextcloud/stable10-backport-612
[stable10] libxml - compare against loaded version
2016-07-28 16:56:55 +02:00
Julius Haertl 4eb85f10a9 Theming: Cleanup and remove opacity from checkbox/radiobutton 2016-07-28 16:18:51 +02:00
Julius Haertl 1f3e55bc86 Theming: Generate colorized radio buttons dynamically 2016-07-28 16:18:50 +02:00
Julius Haertl b7024b454f Theming: Colorize radio buttons and append new styles on preview 2016-07-28 16:18:50 +02:00
Julius Haertl aa4e133443 Theming: Clean up css generation and fix tests 2016-07-28 16:18:50 +02:00
Julius Haertl 49ef99474f Theming: Colorize checkboxes depending on luminance 2016-07-28 16:18:47 +02:00
Julius Haertl 5c12c8cb02 Theming: Preview for colorized checkboxes 2016-07-28 16:17:53 +02:00
Morris Jobke b1830b74fe Merge pull request #622 from nextcloud/stable10-fix-searchbox-background
[stable10] fix searchbox background
2016-07-28 16:14:09 +02:00
Joas Schilling f814ef6ea7 Add L10N support 2016-07-28 16:13:43 +02:00
Roeland Jago Douma e184e4ad75 Merge pull request #609 from nextcloud/stable10_606
Support subdir in the OCS v2 endpoint
2016-07-28 14:23:40 +02:00
Morris Jobke 1913419520 libxml - compare against loaded version
* if the compiled in version is older than the loaded version Nextcloud doesn't work
* uses the loaded libxml version to check against

fixes #205
2016-07-28 14:11:32 +02:00
Roeland Jago Douma 6990a4e550 Support subdir in the OCS v2 endpoint
We should check against the ending substring since people could
run their nextcloud in a subfolder.

* Added test
2016-07-28 13:12:01 +02:00
Morris Jobke 77c18e4ec2 Merge pull request #614 from nextcloud/stable10-ns-server-contributing.md
[stable10] change core to server - backport of #533
2016-07-28 11:08:59 +02:00
Joas Schilling cba370634f Add a simple Admin UI to manage systemtags 2016-07-28 10:37:48 +02:00
root aa02f518ad Backport LDAPProvider to Nextcloud 10
New LDAPProvider for user_ldap

final changes

comments amended

Nextcloud license header for new files
2016-07-28 10:20:38 +02:00
Morris Jobke c9b4a2b4cc Fix unit tests 2016-07-28 10:08:36 +02:00
Jan-Christoph Borchardt 12a35e46ce also adjust log in background color in theme 2016-07-28 10:08:02 +02:00
Jan-Christoph Borchardt 88560096d4 fix searchbox overlapping on mobile 2016-07-28 10:07:57 +02:00
Olivier Paroz dbafc183da change core to server 2016-07-28 09:22:59 +02:00
Robin Appelman 05b6850a9e fix js test 2016-07-27 16:38:07 +02:00
Robin Appelman b9dfc1674c only load sidebar previews when we know it's available 2016-07-27 16:38:03 +02:00
Robin Appelman 276383ebf5 dont load filelist previews if we know we dont have one 2016-07-27 16:37:59 +02:00
Robin Appelman 76b2cffb08 add dav property to check if a file has a preview available 2016-07-27 16:37:56 +02:00
Morris Jobke 1fc7248dae Merge pull request #591 from nextcloud/fixing-undefined-OfflineUser-composeAndStoreDisplayName-stable10
[stable10] Fix undefined OfflineUser::composeAndStoreDisplayName()
2016-07-27 15:25:31 +02:00
Morris Jobke 0e816a65b5 Merge pull request #580 from nextcloud/backport-550-stable10
[stable10] fix autoloading in LPAP integration tests, resolves #544
2016-07-27 14:55:26 +02:00
Björn Schießle b0f23598e1 Merge pull request #599 from nextcloud/fix-defaultapp-master-stable10
Redirect to default page after login
2016-07-27 14:30:56 +02:00
Morris Jobke 8e0e85c631 Fix loading icon for workflowengine 2016-07-27 14:13:18 +02:00
Joas Schilling 2a4a1278fa Allow DI of the workflow manager by the OCP interface 2016-07-27 14:13:08 +02:00
Joas Schilling ec8ec17cf4 Allow to reuse the template 2016-07-27 14:12:47 +02:00
Joas Schilling 0ebc3bbc9f Fix default value of operator 2016-07-27 14:12:39 +02:00
Joas Schilling 34f46c8e7f Fix morris comments 2016-07-27 14:12:28 +02:00
Joas Schilling 6a21289378 Remove php side of check registration 2016-07-27 14:12:19 +02:00
Joas Schilling 155e4ced3f Generate the checks list in JS 2016-07-27 14:12:12 +02:00
Morris Jobke 01ec62e3d2 fix enabled apps tests 2016-07-27 14:11:53 +02:00
Morris Jobke b2e4a8c0d3 fix unit tests 2016-07-27 14:11:46 +02:00
Joas Schilling 80eeedc005 Add app to provisioning output 2016-07-27 14:11:36 +02:00
Morris Jobke 497954ca34 Move template to workflowengine app 2016-07-27 14:11:14 +02:00
Morris Jobke 6eabcf134f create an operation based on the correct model 2016-07-27 14:10:55 +02:00
Morris Jobke bc6c05afb6 Add workflowengine 2016-07-27 14:10:43 +02:00
Morris Jobke df3cacdc50 Merge pull request #588 from nextcloud/stable10-app-icons
[stable10] Add app icons for Comments and Tags
2016-07-27 13:03:51 +02:00
Bjoern Schiessle 7c476e4fa2 Redirect to default page after login 2016-07-27 12:14:13 +02:00
Vincent Petry b9266e7141 Prevent setting email and triggering events at login time (#25554)
Whenever an LDAP user also has an email address defined in LDAP, the
LDAP code will try and update the email address of the locally known
user. This happens at login time or every time the user's LDAP
attributes are processed.

There is code listening to the email setting hook which updates the
system address book, which also will trigger FS setup due to avatars
and other things.

This fix only sets the email address when really necessary.
2016-07-27 11:32:10 +02:00
Thomas Müller ac5987a017 [stable9.1] Fix undefined OfflineUser::composeAndStoreDisplayName() - fixes #23248 2016-07-27 11:21:26 +02:00
Marius Blüm 4b96e3a93e Add icon for tags app 2016-07-27 11:10:52 +02:00
Marius Blüm 24d3164abe Add icon for comments app 2016-07-27 11:09:32 +02:00
Björn Schießle cb10ca5c23 Merge pull request #569 from nextcloud/stable10-fix-theme-logo-position
[stable10] fix theme logo position
2016-07-27 10:21:45 +02:00
Arthur Schiwon 1013fac447 fix autoloading in LPAP integration tests, resolves #544 2016-07-26 21:06:29 +02:00
Julius Haertl db755d7236 Theming: Fix preview and center alignment of logo 2016-07-26 13:24:41 +02:00
Lukas Reschke 9281b008c5 Adjust tests 2016-07-26 13:24:34 +02:00
Jos Poortvliet a8616f68b5 Update header.css
make the logo look good on the login page
2016-07-26 13:24:28 +02:00
Jos Poortvliet 148cb09e00 Update themingcontroller.php 2016-07-26 13:24:08 +02:00
Morris Jobke 010a8b49f3 Merge pull request #562 from nextcloud/stable10-backport-557
[stable10] Add proper scope to files external CSS
2016-07-26 12:06:49 +02:00
Morris Jobke d5e783d2bd Add proper scope to files external CSS
* for select2
2016-07-26 09:20:40 +02:00
Morris Jobke 4c45d0fcd3 Merge pull request #551 from nextcloud/stable10-backport-547
[stable10] Fix error message while restoring all files
2016-07-25 16:08:14 +02:00
Morris Jobke edc15db3bd Fix error message while restoring all files
* use $_POST['files'] only of ssinlge files are restored
* fixes #528
2016-07-25 12:57:18 +02:00
Morris Jobke d181301699 Merge pull request #508 from nextcloud/stable10_ocs_appframework_xml
[Stable10] AppFramework do not get default response
2016-07-25 12:52:13 +02:00
Morris Jobke 750644aa15 Merge pull request #548 from nextcloud/backport-530-theming-autoloading
[stable10] Make sure we try to autoload the class
2016-07-25 11:10:01 +02:00
Joas Schilling 28dffaa32f Make sure we try to autoload the class 2016-07-25 09:42:28 +02:00
Morris Jobke 3a212651d2 Merge pull request #513 from nextcloud/backport-505-license-mailmap
[stable10] license and mailmap backports
2016-07-22 12:58:31 +02:00
Morris Jobke 09812c60ec Merge pull request #515 from nextcloud/run-le-script-10
[stable10] Run the license script
2016-07-22 12:58:19 +02:00
Joas Schilling 23b205ed48 Run the license script 2016-07-22 11:40:41 +02:00
Roeland Jago Douma a08e201d19 Fix e-mail in mailmap 2016-07-22 11:20:57 +02:00
Joas Schilling 2d5a854f45 Fix more mailmap entries 2016-07-22 11:20:57 +02:00
Bjoern Schiessle d3a11e9cf1 only search the license header for @copyright statements 2016-07-22 11:20:57 +02:00
Joas Schilling 3f4db2d02b Fix the license script 2016-07-22 11:20:54 +02:00
Roeland Douma 49a4654150 Merge pull request #512 from nextcloud/backport-496-doc-fix-10
[stable10] Make the changes from doc fix persistant
2016-07-22 11:12:19 +02:00
Joas Schilling 413968d4ba FIx typo 2016-07-22 09:54:03 +02:00
Joas Schilling f4fbdbabee Change the app name 2016-07-22 09:24:59 +02:00
Joas Schilling c8c78fd981 Make the changes from https://github.com/nextcloud/documentation/commit/6ccd2c5678b85d35a8673d784bef5c6c89e7ecb9 persistant 2016-07-22 09:23:50 +02:00
Roeland Jago Douma 2abd83212e AppFramework do not get default response
The OCSResponse differs from other responses in that it defaults to
XML. However we fell back to json by default.

This makes sure that if nothing is set we don't pass anything.
Which defaults then to the controllers default (which is often 'json')
but in the case of the OCSResponse 'xml'.
2016-07-21 20:32:48 +02:00
Morris Jobke b4c7eb5326 Merge pull request #495 from nextcloud/fix-layout-public-upload-stable10
[stable10] move closing div to the right place
2016-07-21 19:50:42 +02:00
Bjoern Schiessle f98bc936d7 move closing div to the right place 2016-07-21 11:30:37 +02:00
Morris Jobke d8b9672ad8 Merge pull request #485 from nextcloud/stable10-reenable-help-section
[Stable10] reenable help section
2016-07-21 09:18:50 +02:00
Morris Jobke db5a709885 Merge pull request #487 from nextcloud/stable10-link-proper
[stable10] Properly link to nextcloud
2016-07-21 09:18:10 +02:00
Morris Jobke cb08ab7c00 Merge pull request #489 from nextcloud/stable10-brand-to-nextcloud
[stable10] Use proper branding
2016-07-21 09:17:22 +02:00
Lukas Reschke 0caeb31d83 Use proper branding
Stable9 has this already
2016-07-21 02:21:28 +02:00
Lukas Reschke 10f3178215 [master] Properly link to nextcloud 2016-07-21 02:15:37 +02:00
Lukas Reschke ed21916999 Add proper links 2016-07-21 02:11:34 +02:00
Lukas Reschke 305534225e Revert "Remove "Help" link from personal sidebar"
This reverts commit deef15a3c7.
2016-07-21 02:11:30 +02:00
Lukas Reschke decfd1ab59 Link to proper clients 2016-07-21 01:57:03 +02:00
Lukas Reschke d4f9a69a72 Port 2d37341 to stable10 2016-07-21 01:46:11 +02:00
Lukas Reschke fb006181ad Add ownCloud cert 2016-07-21 01:35:23 +02:00
Lukas Reschke 96c2b0de66 Use proper certificates
Ports https://github.com/nextcloud/server/commit/bcf693539be82e872ba4d6cceb1f430a4bb841d9
2016-07-21 01:35:19 +02:00
7263 changed files with 517381 additions and 556451 deletions
-15
View File
@@ -1,15 +0,0 @@
codecov:
branch: master
ci:
- drone.nextcloud.com
- !scrutinizer-ci.com
coverage:
precision: 2
round: down
range: "70...100"
status:
project: off
patch: off
comment: off
+250 -2311
View File
File diff suppressed because it is too large Load Diff
-2
View File
@@ -1,2 +0,0 @@
*/Activity/* @nickvergessen
*/Notifications/* @nickvergessen
+3 -25
View File
@@ -1,39 +1,32 @@
# the default generated dir + db file
/data
/owncloud
/config/config.php
/config/*.config.php
/config/mimetype*.json
/config/mount.php
/apps/inc.php
/assets
/.htaccess
/translationfiles
/translationtool.phar
# ignore all apps except core ones
/apps*/*
!/apps/accessibility
!/apps/comments
!/apps/dav
!/apps/files
!/apps/federation
!/apps/federatedfilesharing
!/apps/sharebymail
!/apps/encryption
!/apps/files_external
!/apps/files_sharing
!/apps/files_trashbin
!/apps/files_versions
!/apps/lookup_server_connector
!/apps/user_ldap
!/apps/oauth2
!/apps/provisioning_api
!/apps/systemtags
!/apps/testing
!/apps/admin_audit
!/apps/updatenotification
!/apps/theming
!/apps/twofactor_backupcodes
!/apps/workflowengine
/apps/files_external/3rdparty/irodsphp/PHPUnitTest
/apps/files_external/3rdparty/irodsphp/web
@@ -42,8 +35,6 @@
/apps/files_external/3rdparty/irodsphp/prods/test*
/apps/files_external/tests/config.*.php
# apps modules
/apps/*/node_modules
# ignore themes except the example and the README
@@ -79,16 +70,13 @@ RCS/*
.project
.settings
# netbeans
# netbeans
nbproject
# phpStorm
.idea
*.iml
# vscode
.vscode
# geany
*.geany
@@ -101,7 +89,7 @@ nbproject
# ack(-grep)
.ackrc
# Mac OS
.DS_Store
@@ -116,12 +104,10 @@ nbproject
/build/node_modules/
# nodejs
/build/bin
/build/lib/
/build/jsdocs/
/npm-debug.log
/PhantomJS_*
/build/package-lock.json
# puphpet
puphpet
@@ -133,19 +119,11 @@ Vagrantfile
# Tests - auto-generated files
/data-autotest
/tests/coverage*
/tests/css
/tests/karma-coverage
/tests/autoconfig*
/tests/autotest*
/tests/data/lorem-copy.txt
/tests/data/testimage-copy.png
/tests/ui-regression/out/
/tests/ui-regression/node_modules/
/tests/ui-regression/package-lock.json
/config/config-autotest-backup.php
/config/autoconfig.php
clover.xml
# Tests - dependencies
tests/acceptance/composer.lock
tests/acceptance/vendor/
+9 -16
View File
@@ -14,25 +14,20 @@
Header set X-Content-Type-Options "nosniff"
Header set X-XSS-Protection "1; mode=block"
Header set X-Robots-Tag "none"
Header set X-Frame-Options "SAMEORIGIN"
Header set X-Download-Options "noopen"
Header set X-Permitted-Cross-Domain-Policies "none"
Header set Referrer-Policy "no-referrer"
SetEnv modHeadersAvailable true
</IfModule>
# Add cache control for static resources
<FilesMatch "\.(css|js|svg|gif)$">
Header set Cache-Control "max-age=15778463"
</FilesMatch>
# Let browsers cache WOFF files for a week
<FilesMatch "\.woff$">
Header set Cache-Control "max-age=604800"
# Add cache control for CSS and JS files
<FilesMatch "\.(css|js)$">
Header set Cache-Control "max-age=7200, public"
</FilesMatch>
</IfModule>
<IfModule mod_php5.c>
php_value upload_max_filesize 511M
php_value post_max_size 511M
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 always_populate_raw_post_data -1
@@ -43,8 +38,8 @@
</IfModule>
</IfModule>
<IfModule mod_php7.c>
php_value upload_max_filesize 511M
php_value post_max_size 511M
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'
@@ -55,8 +50,6 @@
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} DavClnt
RewriteRule ^$ /remote.php/webdav/ [L,R=302]
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
@@ -64,7 +57,7 @@
RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]
RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
RewriteCond %{REQUEST_URI} !^/\.well-known/(acme-challenge|pki-validation)/.*
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*
RewriteRule ^(?:\.|autotest|occ|issue|indie|db_|console).* - [R=404,L]
</IfModule>
<IfModule mod_mime.c>
+1 -4
View File
@@ -28,10 +28,7 @@
"_": true,
"OC": true,
"OCA": true,
"OCP": true,
"t": true,
"n": true,
"escapeHTML": true,
"Promise": true
"n": true
}
}
+2
View File
@@ -0,0 +1,2 @@
pattern = "(?i):shipit:|:\\+1:|LGTM|👍"
self_approval_off = true
+6 -10
View File
@@ -100,7 +100,6 @@ derkostka <sebastian.kostka@gmail.com>
Diederik de Haas <diederik@cknow.org>
Dominik Schmidt <dev@dominik-schmidt.de>
Donald Buczek <buczek@molgen.mpg.de>
Donquixote <marjunebatac@gmail.com> Donquixote <marjunebatac@gmailcom>
Doug Neiner <doug@pixelgraphics.us>
drarko <drarko@users.noreply.github.com>
dratini0 <dratini0@gmail.com>
@@ -141,13 +140,12 @@ ganomi <ganomi@gmail.com>
Gaël Beaudoin <gaboo@home.gaboo.org>
geez0x1 <geez0x1@users.noreply.github.com>
gekmihesg <markus@gekmihesg.de>
Georg Ehrke <oc.list@georgehrke.com> Georg Ehrke <dev@georgswebsite.de>
Georg Ehrke <oc.list@georgehrke.com> Georg Ehrke <developer@georgehrke.com>
Georg Ehrke <oc.list@georgehrke.com> Georg Ehrke <georg.stefan.germany@googlemail.com>
Georg Ehrke <oc.list@georgehrke.com> Georg Ehrke <ownclouddev@georgswebsite.de>
Georg Ehrke <oc.list@georgehrke.com> Georg Ehrke <devgeorg@ownCloud.com>
Georg Ehrke <oc.list@georgehrke.com> Georg Ehrke <georg@ownCloud.com>
Georg Ehrke <oc.list@georgehrke.com> Georg Ehrke <georg@owncloud.com>
Georg Ehrke <georg@owncloud.com> Georg Ehrke <dev@georgswebsite.de>
Georg Ehrke <georg@owncloud.com> Georg Ehrke <developer@georgehrke.com>
Georg Ehrke <georg@owncloud.com> Georg Ehrke <georg.stefan.germany@googlemail.com>
Georg Ehrke <georg@owncloud.com> Georg Ehrke <ownclouddev@georgswebsite.de>
Georg Ehrke <georg@owncloud.com> Georg Ehrke <devgeorg@ownCloud.com>
Georg Ehrke <georg@owncloud.com> Georg Ehrke <georg@ownCloud.com>
Golnaz Nilieh <g382nilieh@gmail.com>
Grundik <grundik@ololo.cc>
Guillaume AMAT <guillaume.amat@informatique-libre.com>
@@ -317,7 +315,6 @@ Robin McCorkell <robin@mccorkell.me.uk> Robin McCorkell <rmccorkell@owncloud.com
Rodrigo Hjort <rodrigo.hjort@gmail.com>
Roeland Jago Douma <roeland@famdouma.nl> Roeland Jago Douma <rullzer@owncloud.com>
Roeland Jago Douma <roeland@famdouma.nl> Roeland Douma <rullzer@users.noreply.github.com>
Roger Szabo <roger.szabo@web.de> root <roger.szabo@web.de>
rok <brejktru@gmail.com>
Roland Hager <roland.hager@tu-berlin.de>
Roland van Laar <roland@micite.net>
@@ -403,7 +400,6 @@ Victor Dubiniuk <dubiniuk@owncloud.com> VicDeo <victor.dubiniuk@gmail.com>
Vincent Cloutier <vincent1cloutier@gmail.com>
Vincent Petry <pvince81@owncloud.com> Vincent Petry <PVince81@yahoo.fr>
Vincent Petry <pvince81@owncloud.com> Vincent Petry <vincent@vvortex.site>
Vinicius Cubas Brand <vinicius@eita.org.br> Vinicius Cubas Brand <viniciuscb@gmail.com>
Vitaly Kuznetsov <vitty@altlinux.ru>
Vladimir Sapronov <vladimir.sapronov@gmail.com>
Volkan Gezer <volkangezer@gmail.com> Volkan Gezer <wakeup@users.noreply.github.com>
+30
View File
@@ -0,0 +1,30 @@
{
"maxReviewers": 3,
"numFilesToCheck": 5,
"alwaysNotifyForPaths": [
{
"name": "nickvergessen",
"files": [
"lib/private/Activity/**",
"lib/private/Notification/**",
"lib/public/Activity/**",
"lib/public/Notification/**"
]
},
{
"name": "Xenopathic",
"files": [
"apps/files_external/**"
]
}
],
"userBlacklist": [
"DeepDiver1975",
"nextcloud-bot",
"owncloud-bot",
"PVince81",
"scrutinizer-auto-fixer",
"th3fallen",
"zander"
]
}
-5
View File
@@ -1,11 +1,6 @@
before_commands:
- 'git submodule update --init --recursive'
checks:
php:
excluded_dependencies:
- etsy/phan
filter:
excluded_paths:
- '3rdparty/*'
-135
View File
@@ -1,135 +0,0 @@
[main]
host = https://www.transifex.com
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
[nextcloud.core]
file_filter = translationfiles/<lang>/core.po
source_file = translationfiles/templates/core.pot
source_lang = en
type = PO
[nextcloud.files]
file_filter = translationfiles/<lang>/files.po
source_file = translationfiles/templates/files.pot
source_lang = en
type = PO
[nextcloud.settings-1]
file_filter = translationfiles/<lang>/settings.po
source_file = translationfiles/templates/settings.pot
source_lang = en
type = PO
[nextcloud.lib]
file_filter = translationfiles/<lang>/lib.po
source_file = translationfiles/templates/lib.pot
source_lang = en
type = PO
[nextcloud.dav]
file_filter = translationfiles/<lang>/dav.po
source_file = translationfiles/templates/dav.pot
source_lang = en
type = PO
[nextcloud.files_encryption]
file_filter = translationfiles/<lang>/encryption.po
source_file = translationfiles/templates/encryption.pot
source_lang = en
type = PO
[nextcloud.files_external]
file_filter = translationfiles/<lang>/files_external.po
source_file = translationfiles/templates/files_external.pot
source_lang = en
type = PO
[nextcloud.files_sharing]
file_filter = translationfiles/<lang>/files_sharing.po
source_file = translationfiles/templates/files_sharing.pot
source_lang = en
type = PO
[nextcloud.files_trashbin]
file_filter = translationfiles/<lang>/files_trashbin.po
source_file = translationfiles/templates/files_trashbin.pot
source_lang = en
type = PO
[nextcloud.files_versions]
file_filter = translationfiles/<lang>/files_versions.po
source_file = translationfiles/templates/files_versions.pot
source_lang = en
type = PO
[nextcloud.user_ldap]
file_filter = translationfiles/<lang>/user_ldap.po
source_file = translationfiles/templates/user_ldap.pot
source_lang = en
type = PO
[nextcloud.comments]
file_filter = translationfiles/<lang>/comments.po
source_file = translationfiles/templates/comments.pot
source_lang = en
type = PO
[nextcloud.federatedfilesharing]
file_filter = translationfiles/<lang>/federatedfilesharing.po
source_file = translationfiles/templates/federatedfilesharing.pot
source_lang = en
type = PO
[nextcloud.federation]
file_filter = translationfiles/<lang>/federation.po
source_file = translationfiles/templates/federation.pot
source_lang = en
type = PO
[nextcloud.oauth2]
file_filter = translationfiles/<lang>/oauth2.po
source_file = translationfiles/templates/oauth2.pot
source_lang = en
type = PO
[nextcloud.sharebymail]
file_filter = translationfiles/<lang>/sharebymail.po
source_file = translationfiles/templates/sharebymail.pot
source_lang = en
type = PO
[nextcloud.systemtags]
file_filter = translationfiles/<lang>/systemtags.po
source_file = translationfiles/templates/systemtags.pot
source_lang = en
type = PO
[nextcloud.updatenotification]
file_filter = translationfiles/<lang>/updatenotification.po
source_file = translationfiles/templates/updatenotification.pot
source_lang = en
type = PO
[nextcloud.theming]
file_filter = translationfiles/<lang>/theming.po
source_file = translationfiles/templates/theming.pot
source_lang = en
type = PO
[nextcloud.twofactor_backupcodes]
file_filter = translationfiles/<lang>/twofactor_backupcodes.po
source_file = translationfiles/templates/twofactor_backupcodes.pot
source_lang = en
type = PO
[nextcloud.workflowengine]
file_filter = translationfiles/<lang>/workflowengine.po
source_file = translationfiles/templates/workflowengine.pot
source_lang = en
type = PO
[nextcloud.accessibility]
file_filter = translationfiles/<lang>/accessibility.po
source_file = translationfiles/templates/accessibility.pot
source_lang = en
type = PO
+2 -2
View File
@@ -1,5 +1,5 @@
upload_max_filesize=511M
post_max_size=511M
upload_max_filesize=513M
post_max_size=513M
memory_limit=512M
mbstring.func_overload=0
always_populate_raw_post_data=-1
+27 -104
View File
@@ -1,24 +1,16 @@
Nextcloud is written by:
- 1 Man Projects <reed@1manprojects.de>
- AW-UC <git@a-wesemann.de>
- Aaron Wood <aaronjwood@gmail.com>
- Achim Königs <garfonso@tratschtante.de>
- Adam Williamson <awilliam@redhat.com>
- Administrator "Administrator@WINDOWS-2012"
- Administrator <Administrator@WINDOWS-2012>
- Aldo "xoen" Giambelluca <xoen@xoen.org>
- Alex Weirig <alex.weirig@technolink.lu>
- Alexander Bergolth <leo@strike.wu.ac.at>
- Allan Nordhøy <epost@anotheragency.no>
- Andreas Fischer <bantu@owncloud.com>
- Andreas Pflug <dev@admin4.org>
- Andrew Brown <andrew@casabrown.com>
- Andrius <andrius.kulbis@ktu.lt>
- André Gaul <gaul@web-yard.de>
- Ardinis <Ardinis@users.noreply.github.com>
- Artem Kochnev <MrJeos@gmail.com>
- Artem Sidorenko <artem@posteo.de>
- Arthur Schiwon <blizzz@arthur-schiwon.de>
- Axel Helmert <axel.helmert@luka.de>
- Bart Visscher <bartv@thisnet.nl>
- Bartek Przybylski <bart.p.pl@gmail.com>
- Bastien Ho <bastienho@urbancube.fr>
@@ -29,9 +21,7 @@ Nextcloud is written by:
- Birk Borkason <daniel.niccoli@gmail.com>
- Bjoern Schiessle <bjoern@schiessle.org>
- Björn Schießle <bjoern@schiessle.org>
- Boris Rybalkin <ribalkin@gmail.com>
- Borjan Tchakaloff <borjan@tchakaloff.fr>
- Brent Bloxam <brent.bloxam@gmail.com>
- Brice Maron <brice@bmaron.net>
- Byron Marohn <combustible@live.com>
- Carla Schroder <carla@owncloud.com>
@@ -41,48 +31,41 @@ Nextcloud is written by:
- Christian Jürges <christian@eqipe.ch>
- Christian Kampka <christian@kampka.net>
- Christian Weiske <cweiske@cweiske.de>
- Christoph Schaefer "christophł@wolkesicher.de"
- Christoph Wickert <cwickert@suse.de>
- Christoph Schaefer <christophł@wolkesicher.de>
- Christoph Wurst <christoph@owncloud.com>
- Christopher Bartz <bartz@dkrz.de>
- Christopher Schäpers <kondou@ts.unde.re>
- Christopher T. Johnson <ctjctj@gmail.com>
- Clark Tomlinson <fallen013@gmail.com>
- Cornelius Kölbel <cornelius.koelbel@netknights.it>
- Damjan Georgievski <gdamjan@gmail.com>
- Craig Morrissey <craig@owncloud.com>
- Dan Bartram <daneybartram@gmail.com>
- Daniel Calviño Sánchez <danxuliu@gmail.com>
- Daniel Hansson <daniel@techandme.se>
- Daniel Hansson <enoch85@gmail.com>
- Daniel Jagszent <daniel@jagszent.de>
- Daniel Molkentin <daniel@molkentin.de>
- Daniel Tosello <tosello.daniel@gmail.com>
- David Prévot <taffit@debian.org>
- David Toledo <dtoledo@solidgear.es>
- Derek <derek.kelly27@gmail.com>
- Dominik Schmidt <dev@dominik-schmidt.de>
- Donquixote <marjunebatac@gmail.com>
- Fabian Henze <flyser42@gmx.de>
- Fabrizio Steiner <fabrizio.steiner@gmail.com>
- Felix A. Epp <work@felixepp.de>
- Felix Epp <work@felixepp.de>
- Felix Heidecke <felix@heidecke.me>
- Faruk Uzun <farukuzun@collabora.com>
- Felix Böhm <felixboehm@gmx.de>
- Felix Moeller <mail@felixmoeller.de>
- Felix Rupp <github@felixrupp.com>
- Florian Preinstorfer <nblock@archlinux.us>
- Florian Pritz <bluewind@xinu.at>
- Florin Peter <github@florin-peter.de>
- Frank Isemann <frank@isemann.name>
- Francesco Rovelli <francesco.rovelli@gmail.com>
- Frank Karlitschek <frank@karlitschek.de>
- François Kubler <francois@kubler.org>
- Frédéric Fortier <frederic.fortier@oronospolytechnique.com>
- Gadzy <dev@gadzy.fr>
- Georg Ehrke <oc.list@georgehrke.com>
- Hemanth Kumar Veeranki <hems.india1997@gmail.com>
- Georg Ehrke <georg@owncloud.com>
- Guillaume AMAT <guillaume.amat@informatique-libre.com>
- Hasso Tepper <hasso@zone.ee>
- Hendrik Leppelsack <hendrik@leppelsack.de>
- Ilja Neumann <ineumann@owncloud.com>
- Hugo Gonzalez Labrador <hglavra@gmail.com>
- Individual IT Services <info@individual-it.net>
- Jakob Sack <mail@jakobsack.de>
- Jan-Christoph Borchardt <hey@jancborchardt.net>
- Jan-Philipp Litza <jplitza@users.noreply.github.com>
- Jarkko Lehtoranta <devel@jlranta.com>
- Jarrett <JetUni@users.noreply.github.com>
- Jean-Louis Dupond <jean-louis@dupond.be>
- Jens-Christian Fischer <jens-christian.fischer@switch.ch>
- Jesús Macias <jmacias@solidgear.es>
@@ -91,121 +74,80 @@ Nextcloud is written by:
- Joas Schilling <coding@schilljs.com>
- Johan Björk <johanimon@gmail.com>
- Johannes Ernst <jernst@indiecomputing.com>
- Johannes Schlichenmaier <johannes@schlichenmaier.info>
- Johannes Willnecker <johannes@willnecker.com>
- John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
- John Molakvoæ <skjnldsv@users.noreply.github.com>
- Jonny007-MKD <1-23-4-5@web.de>
- Juan Pablo Villafañez <jvillafanez@solidgear.es>
- Juan Pablo Villafáñez <jvillafanez@solidgear.es>
- Juan Pablo Villafáñez <jvillafanez@solidgear.es>
- Julius Haertl <jus@bitgrid.net>
- Julius Härtl <jus@bitgrid.net>
- Jörn Friedrich Dreyer <jfd@butonic.de>
- Jürgen Haas <juergen@paragon-es.de>
- KB7777 <k.burkowski@gmail.com>
- Kamil Domanski <kdomanski@kdemail.net>
- Kawohl <john@owncloud.com>
- Kenneth Newwood <kenneth@newwood.name>
- Klaas Freitag <freitag@owncloud.com>
- Knut Ahlers <knut@ahlers.me>
- Ko- <k.stoffelen@cs.ru.nl>
- Kristof Provost <github@sigsegv.be>
- Lars <winnetou+github@catolic.de>
- Laurens Post <Crote@users.noreply.github.com>
- Laurens Post <lkpost@scept.re>
- Lennart Rosam <hello@takuto.de>
- Lennart Rosam <lennart.rosam@medien-systempartner.de>
- Leon Klingele <git@leonklingele.de>
- Leon Klingele <leon@struktur.de>
- Loki3000 <github@labcms.ru>
- Leonardo Diez <leio10@users.noreply.github.com>
- Lorenzo M. Catucci <lorenzo@sancho.ccd.uniroma2.it>
- Lukas Reschke <lukas@statuscode.ch>
- Luke Policinski <lpolicinski@gmail.com>
- Lyonel Vincent <lyonel@ezix.org>
- Magnus Walbeck <mw@mwalbeck.org>
- Manish Bisht <manish.bisht490@gmail.com>
- Marcel Waldvogel <marcel.waldvogel@uni-konstanz.de>
- Marin Treselj <marin@pixelipo.com>
- Mario Kolling <mario.kolling@serpro.gov.br>
- Marius Blüm <marius@lineone.io>
- Markus Goetz <markus@woboq.com>
- Martin <github@diemattels.at>
- Martin Konrad <info@martin-konrad.net>
- Martin Konrad <konrad@frib.msu.edu>
- Martin Mattel <martin.mattel@diemattels.at>
- Marvin Thomas Rabe <mrabe@marvinrabe.de>
- Masaki Kawabata Neto <masaki.kawabata@gmail.com>
- Matthew Setter <matthew@matthewsetter.com>
- Maxence Lange <maxence@artificial-owl.com>
- Maxence Lange <maxence@nextcloud.com>
- Maxence Lange <maxence@pontapreta.net>
- Michael Gapczynski <GapczynskiM@gmail.com>
- Michael Göhler <somebody.here@gmx.de>
- Michael Jobst <mjobst+github@tecratech.de>
- Michael Letzgus <www@chronos.michael-letzgus.de>
- Michael Kuhn <suraia@ikkoku.de>
- Michael Roitzsch <reactorcontrol@icloud.com>
- Michael Roth <michael.roth@rz.uni-augsburg.de>
- Michael U <mdusher@users.noreply.github.com>
- Miguel Prokop <miguel.prokop@vtu.com>
- Miha Frangez <miha.frangez@gmail.com>
- Mitar <mitar.git@tnode.com>
- Morris Jobke <hey@morrisjobke.de>
- Nicolai Ehemann <en@enlightened.de>
- Nicolas Grekas <nicolas.grekas@gmail.com>
- Nils <git@to.nilsschnabel.de>
- Nmz <nemesiz@nmz.lt>
- Noveen Sachdeva <noveen.sachdeva@research.iiit.ac.in>
- Normal Ra <normalraw@gmail.com>
- Oliver Gasser <oliver.gasser@gmail.com>
- Oliver Kohl D.Sc. <oliver@kohl.bz>
- Olivier Mehani <shtrom@ssji.net>
- Olivier Paroz <github@oparoz.com>
- Otto Sabart <ottosabart@seberm.com>
- Owen Winkler <a_github@midnightcircus.com>
- Pascal de Bruijn <pmjdebruijn@pcode.nl>
- Patrick Paysant <patrick.paysant@linagora.com>
- Patrick Paysant <ppaysant@linagora.com>
- Patrik Kernstock <info@pkern.at>
- Pauli Järvinen <pauli.jarvinen@gmail.com>
- Pellaeon Lin <nfsmwlin@gmail.com>
- Petr Svoboda <weits666@gmail.com>
- Phiber2000 <phiber2000@gmx.de>
- Phil Davis <phil.davis@inf.org>
- Philipp Kapfer <philipp.kapfer@gmx.at>
- Philipp Schaffrath <github@philipp.schaffrath.email>
- Philippe Jung <phil.jung@free.fr>
- Pierre Jochem <pierrejochem@msn.com>
- Pierre Ozoux <pierre@ozoux.net>
- Pierre Rudloff <contact@rudloff.pro>
- Piotr Filiciak <piotr@filiciak.pl>
- Piotr M <mrow4a@yahoo.com>
- Piotr Mrowczynski <mrow4a@yahoo.com>
- Piotr Mrówczyński <mrow4a@yahoo.com>
- Qingping Hou <dave2008713@gmail.com>
- Raghu Nayyar <hey@raghunayyar.com>
- Raghu Nayyar <me@iraghu.com>
- Ralph Krimmel <rkrimme1@gwdg.de>
- Ramiro Aparicio <rapariciog@gmail.com>
- Randolph Carter <RandolphCarter@fantasymail.de>
- RealRancor <Fisch.666@gmx.de>
- RealRancor <fisch.666@gmx.de>
- Rello <Rello@users.noreply.github.com>
- Remco Brenninkmeijer <requist1@starmail.nl>
- Renaud Fortier <Renaud.Fortier@fsaa.ulaval.ca>
- Robert Scheck <robert@fedoraproject.org>
- Robin Appelman <robin@icewind.nl>
- Robin McCorkell <robin@mccorkell.me.uk>
- Roeland Jago Douma <roeland@famdouma.nl>
- Roger Szabo <roger.szabo@web.de>
- Roman Geber <rgeber@owncloudapps.com>
- Roman Kreisel <mail@romankreisel.de>
- Ross Nicoll <jrn@jrn.me.uk>
- SA <stephen@mthosting.net>
- Sam Tuke <mail@samtuke.com>
- Sander <brantje@gmail.com>
- Sander Ruitenbeek <sander@grids.be>
- Sandro Lutz <sandro.lutz@temparus.ch>
- Sascha Sambale <mastixmc@gmail.com>
- Sean Comeau <sean@ftlnetworks.ca>
- Sebastian Döll <sebastian.doell@libasys.de>
- Sebastian Wessalowski <sebastian@wessalowski.org>
- Semih Serhat Karakaya <karakayasemi@itu.edu.tr>
- Senorsen <senorsen.zhang@gmail.com>
- Serge Martin <edb@sigluy.net>
- Sergio Bertolin <sbertolin@solidgear.es>
@@ -214,83 +156,64 @@ Nextcloud is written by:
- Sjors van der Pluijm <sjors@desjors.nl>
- Stefan Herbrechtsmeier <stefan@herbrechtsmeier.net>
- Stefan Rado <owncloud@sradonia.net>
- Stefan Schneider <stefan.schneider@squareweave.com.au>
- Stefan Weil <sw@weilnetz.de>
- Steffen Lindner <mail@steffen-lindner.de>
- Stephan Müller <mail@stephanmueller.eu>
- Stephan Peijnik <speijnik@anexia-it.com>
- Steven Bühner <buehner@me.com>
- Sujith H <sharidasan@owncloud.com>
- TheSFReader <TheSFReader@gmail.com>
- Thibaut GRIDEL <tgridel@free.fr>
- Thomas Citharel <tcit@tcit.fr>
- Thomas Ebert <thomas.ebert@usability.de>
- Thomas Müller <thomas.mueller@tmit.eu>
- Thomas Pulzer <t.pulzer@kniel.de>
- Thomas Tanghus <thomas@tanghus.net>
- Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
- Tim Dettrick <t.dettrick@uq.edu.au>
- Tobia De Koninck <tobia@ledfan.be>
- Tobias Brunner <tobias@tobru.ch>
- Tobias Kaminsky <tobias@kaminsky.me>
- Tom Needham <tom@owncloud.com>
- Torben Dannhauer <torben@dannhauer.de>
- Ujjwal Bhardwaj <ujjwalb1996@gmail.com>
- Victor Dubiniuk <dubiniuk@owncloud.com>
- Viktor Szépe <viktor@szepe.net>
- Vincent Chan <plus.vincchan@gmail.com>
- Vincent Cloutier <vincent1cloutier@gmail.com>
- Vincent Petry <pvince81@owncloud.com>
- Vinicius Cubas Brand <vinicius@eita.org.br>
- Volkan Gezer <volkangezer@gmail.com>
- William Pain <pain.william@gmail.com>
- Xuanwo <xuanwo@yunify.com>
- adrien <adrien.waksberg@believedigital.com>
- alexweirig <alex.weirig@technolink.lu>
- bline <scottbeck@gmail.com>
- brumsel <brumsel@losecatcher.de>
- cetra3 <peter@parashift.com.au>
- cmeh <cmeh@users.noreply.github.com>
- coderkun <olli@coderkun.de>
- dartcafe <github@dartcafe.de>
- dampfklon <me@dampfklon.de>
- davidgumberg <davidnoizgumberg@gmail.com>
- davitol <dtoledo@solidgear.es>
- derkostka <sebastian.kostka@gmail.com>
- duritong <peter.meier+github@immerda.ch>
- eduardo <eduardo@vnexu.net>
- fabian <fabian@web2.0-apps.de>
- felixboehm <felix@webhippie.de>
- goodkiller <markopraakli@gmail.com>
- helix84 <helix84@centrum.sk>
- hkjolhede <hkjolhede@gmail.com>
- iamfool <praveenraonp@gmail.com>
- ideaship <ideaship@users.noreply.github.com>
- j-ed <juergen@eisfair.org>
- jknockaert <jasper@knockaert.nl>
- josh4trunks <joshruehlig@gmail.com>
- justin-sleep <justin@quarterfull.com>
- karakayasemi <karakayasemi@itu.edu.tr>
- macjohnny <estebanmarin@gmx.ch>
- martin-rueegg <martin.rueegg@metaworx.ch>
- martin.mattel@diemattels.at <martin.mattel@diemattels.at>
- michag86 <micha_g@arcor.de>
- mmccarn <mmccarn-github@mmsionline.us>
- nhirokinet <nhirokinet@nhiroki.net>
- nishiki <nishiki@yaegashi.fr>
- noveens <noveen.sachdeva@research.iiit.ac.in>
- oparoz <owncloud@interfasys.ch>
- phisch <git@philippschaffrath.de>
- rakekniven <mark.ziegler@rakekniven.de>
- root "root@oc.(none)"
- root <root@localhost.localdomain>
- root <root@oc.(none)>
- scambra <sergio@entrecables.com>
- scolebrook <scolebrook@mac.com>
- shkdee <louis.traynard@m4x.org>
- sualko <klaus@jsxc.org>
- tbartenstein <tbartenstein@users.noreply.github.com>
- tbelau666 <thomas.belau@gmx.de>
- tux-rampage <tux-rampage@users.noreply.github.com>
- unclejamal3000 <andreas.pramhaas@posteo.de>
- v1r0x <vinzenz.rosenkranz@gmail.com>
- vkuimov "vkuimov@nextcloud"
- voxsim "Simon Vocella"
- voxsim <Simon Vocella>
With help from many libraries and frameworks including:
Open Collaboration Services
-4
View File
@@ -1,4 +0,0 @@
Changelog
=========
The change log is at [https://nextcloud.com/changelog/](https://nextcloud.com/changelog/).
-9
View File
@@ -1,9 +0,0 @@
In the Nextcloud community, participants from all over the world come together to create Free Software for a free internet. This is made possible by the support, hard work and enthusiasm of thousands of people, including those who create and use Nextcloud software.
Our code of conduct offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
The Code of Conduct is shared by all contributors and users who engage with the Nextcloud team and its community services. It presents a summary of the shared values and “common sense” thinking in our community.
You can find our full code of conduct on our website: https://nextcloud.com/code-of-conduct/
Please, keep our CoC in mind when you contribute! That way, everyone can be a part of our community in a productive, positive, creative and fun way.
+2 -29
View File
@@ -19,7 +19,7 @@ If you have questions about how to install or use Nextcloud, please direct these
Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
[template]: https://raw.githubusercontent.com/nextcloud/server/master/issue_template.md
[template]: https://raw.github.com/nextcloud/core/master/issue_template.md
[forum]: https://help.nextcloud.com/
[irc]: https://webchat.freenode.net/?channels=nextcloud
@@ -29,38 +29,11 @@ Thanks for wanting to contribute source code to Nextcloud. That's great!
Please read the [Developer Manuals][devmanual] to learn how to create your first application or how to test the Nextcloud code with PHPUnit.
### Tests
In order to constantly increase the quality of our software we can no longer accept pull request which submit un-tested code.
It is a must have that changed and added code segments are unit tested.
In some areas unit testing is hard (aka almost impossible) as of today - in these areas refactoring WHILE fixing a bug is encouraged to enable unit testing.
### Sign your work
We use the Developer Certificate of Origin (DCO) as a additional safeguard
for the Nextcloud project. This is a well established and widely used
mechanism to assure contributors have confirmed their right to license
their contribution under the project's license.
Please read [contribute/developer-certificate-of-origin][dcofile].
If you can certify it, then just add a line to every git commit message:
````
Signed-off-by: Random J Developer <random@developer.example.org>
````
Use your real name (sorry, no pseudonyms or anonymous contributions).
If you set your `user.name` and `user.email` git configs, you can sign your
commit automatically with `git commit -s`. You can also use git [aliases](https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases)
like `git config --global alias.ci 'commit -s'`. Now you can commit with
`git ci` and the commit will be signed.
### Apply a license
In case you are not sure how to add or update the license header correctly please have a look at [contribute/HowToApplyALicense.md][applyalicense]
[devmanual]: https://docs.nextcloud.org/server/13/developer_manual/
[dcofile]: https://github.com/nextcloud/server/blob/master/contribute/developer-certificate-of-origin
[applyalicense]: https://github.com/nextcloud/server/blob/master/contribute/HowToApplyALicense.md
[devmanual]: https://docs.nextcloud.org/server/10/developer_manual/
## Translations
Please submit translations via [Transifex][transifex].
View File
+3 -3
View File
@@ -1,5 +1,5 @@
Files in Nextcloud are licensed under the Affero General Public License version 3,
the text of which can be found in COPYING, or any later version of the AGPL,
Files in ownCloud are licensed under the Affero General Public License version 3,
the text of which can be found in COPYING-AGPL, or any later version of the AGPL,
unless otherwise noted.
Licensing of components:
@@ -12,4 +12,4 @@ Licensing of components:
All unmodified files from these and other sources retain their original copyright
and license notices: see the relevant individual files.
Attribution information for Nextcloud is contained in the AUTHORS file.
Attribution information for ownCloud is contained in the AUTHORS file.
+31 -56
View File
@@ -1,80 +1,55 @@
# Nextcloud Server
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/nextcloud/server/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/nextcloud/server/?branch=master)
[![codecov](https://codecov.io/gh/nextcloud/server/branch/master/graph/badge.svg)](https://codecov.io/gh/nextcloud/server)
[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/209/badge)](https://bestpractices.coreinfrastructure.org/projects/209)
# Nextcloud
[![Build Status](https://drone.weasel.rocks/api/badges/nextcloud/server/status.svg)](https://drone.weasel.rocks/nextcloud/server)
[![irc](https://img.shields.io/badge/IRC-%23nextcloud%20on%20freenode-orange.svg)](https://webchat.freenode.net/?channels=nextcloud)
[![irc](https://img.shields.io/badge/IRC-%23nextcloud--dev%20on%20freenode-blue.svg)](https://webchat.freenode.net/?channels=nextcloud-dev)
**A safe home for all your data.**
Please stay tuned while we get all the repositories up.
Meanwhile check out https://nextcloud.com and follow us on https://twitter.com/nextclouders
If you want to [contribute](https://nextcloud.com/contribute/), you are very welcome:
- on our IRC channels #nextcloud & #nextcloud-dev irc://#nextcloud-dev@freenode.net (on freenode) and
- our forum at https://help.nextcloud.com
Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
if you want to join the Github organization just let us know and well add you! :)
*This is by the community, for the community. Everyone is welcome! :)*
![](https://github.com/nextcloud/screenshots/blob/master/files/filelist.png)
## Why is this so awesome?
* :file_folder: **Access your Data** You can store your files, contacts, calendars and more on a server of your choosing.
* :package: **Sync your Data** You keep your files, contacts, calendars and more synchronized amongst your devices.
* :arrows_counterclockwise: **Share your Data** …by giving others access to the stuff you want them to see or to collaborate with.
* :rocket: **Expandable with dozens of Apps** ...like [Calendar](https://github.com/nextcloud/calendar), [Contacts](https://github.com/nextcloud/contacts), [Mail](https://github.com/nextcloud/mail) and all those you can discover in our [App Store](https://apps.nextcloud.com)
* :lock: **Security** with our encryption mechanisms, [HackerOne bounty program](https://hackerone.com/nextcloud) and two-factor authentication.
* :arrows_counterclockwise: **Share your Data** You share your data with others, and give them access to your latest photo galleries, your calendar or anything else you want them to see.
* :rocket: **Expandable with dozens of Apps** ...like Calendar, Contacts, Mail or News.
* :cloud: **All Benefits of the Cloud** ...on your own Server.
* :lock: **Encryption** You can encrypt data in transit with secure https connections. You can enable the encryption app to encrypt data on storage for improved security and privacy.
* ...
*You want to learn more about how you can use Nextcloud to access, share and protect your files, calendars, contacts, communication & more at home and at your Enterprise?* [**Learn about all our Features**](https://nextcloud.com/features).
## Get your Nextcloud
- [**Install** a server by yourself on your own hardware or by using one of our ready to use **Appliances**](https://nextcloud.com/install/#instructions-server)
- [Buy one of the awesome **devices** coming with a preinstalled Nextcloud](https://nextcloud.com/devices/)
- [Find a service **provider** who is hosting Nextcloud for you or your company](https://nextcloud.com/providers/)
*Enterprise? Public Sector or Education user? You may want to have a look into the [**Enterprise Support Subscription**](https://nextcloud.com/enterprise/) provided by the Nextcloud GmbH*
## Get in touch
* :clipboard: [Forum](https://help.nextcloud.com)
* :busts_in_silhouette: [Facebook](https://facebook.com/nextclouders)
* :hatching_chick: [Twitter](https://twitter.com/Nextclouders)
* :elephant: [Mastodon](https://mastodon.xyz/@nextcloud)
[…learn more about how to get support for Nextcloud here!](https://nextcloud.com/support)
## Join the team :family:
### How to contribute
1. [Set up your local development environment](https://docs.nextcloud.com/server/14/developer_manual/general/devenv.html) :rocket:
2. [Pick a good first issue](https://github.com/nextcloud/server/labels/good%20first%20issue) :notebook:
3. Create a branch, a [Pull Request](https://opensource.guide/how-to-contribute/#opening-a-pull-request) and `@mention` the people from the issue :computer:
4. Wait for it to get merged and :tada:
### Contribution Guidelines
## Contribution Guidelines
All contributions to this repository from June, 16 2016 on are considered to be
licensed under the AGPLv3 or any later version.
Nextcloud doesn't require a CLA (Contributor License Agreement).
The copyright belongs to all the individual contributors. Therefore we recommend
that every contributor adds following line to the header of a file, if they
that every contributor adds following line to the header of a file, if he
changed it substantially:
```
@copyright Copyright (c) <year>, <your name> (<your email address>)
```
Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
More information how to contribute: https://nextcloud.com/contribute/
Please review the [guidelines for contributing](https://github.com/nextcloud/server/blob/master/CONTRIBUTING.md) to this repository.
## Support
Learn about the different ways you can get support for Nextcloud: https://nextcloud.com/support/
More information how to contribute: [https://nextcloud.com/contribute/](https://nextcloud.com/contribute/)
### Running master checkouts
Third-party components are handled as git submodules which have to be initialized first. So aside from the regular git checkout invoking `git submodule update --init` or a similar command is needed, for details see Git documentation.
Several apps that are included by default in regular releases such as [firstrunwizard](https://github.com/nextcloud/firstrunwizard) or [gallery](https://github.com/nextcloud/gallery) are missing in `master` and have to be installed manually.
That aside Git checkouts can be handled the same as release archives.
Note they should never be used on production systems.
## Tools we use
[![BrowserStack](https://user-images.githubusercontent.com/45821/41675934-61fa3442-74c4-11e8-8c8e-90768c56ba08.png)](https://www.browserstack.com/)
## Get in touch
* :clipboard: [Forum](https://help.nextcloud.com)
* :hash: [IRC channel](https://webchat.freenode.net/?channels=nextcloud)
* :busts_in_silhouette: [Facebook] (https://facebook.com/nextclouders)
* :hatching_chick: [Twitter](https://twitter.com/Nextclouders)
-12
View File
@@ -1,12 +0,0 @@
{
"presets": [
[
"env",
{
"targets": {
"browsers": ["last 2 versions", "not ie <= 11"]
}
}
]
]
}
-9
View File
@@ -1,9 +0,0 @@
root = true
[*]
charset = utf-8
indent_style = tab
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
-16
View File
@@ -1,16 +0,0 @@
module.exports = {
env: {
browser: true,
es6: true
},
extends: 'eslint:recommended',
parserOptions: {
sourceType: 'module'
},
rules: {
indent: ['error', 'tab'],
'linebreak-style': ['error', 'unix'],
quotes: ['error', 'single'],
semi: ['error', 'always']
}
};
-12
View File
@@ -1,12 +0,0 @@
.DS_Store
node_modules/
dist/
npm-debug.log
yarn-error.log
# Editor directories and files
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
-3
View File
@@ -1,3 +0,0 @@
{
"esversion": 6
}
-26
View File
@@ -1,26 +0,0 @@
all: dev-setup build-js-production
dev-setup: clean clean-dev npm-init
npm-init:
npm install
npm-update:
npm update
build-js:
npm run dev
build-js-production:
npm run build
watch-js:
npm run watch
clean:
rm -f js/accessibility.js
rm -f js/accessibility.js.map
clean-dev:
rm -rf node_modules
-22
View File
@@ -1,22 +0,0 @@
# Accessibility ♿
> This app provide multiple features to ease the use of nextcloud.
## Build Setup
``` bash
# install dependencies
make dev-setup
# build for development
make build-js
# build for development and watch edits
make watch-js
# build for production with minification
make build-js-production
# clean output files
make clean
```
-30
View File
@@ -1,30 +0,0 @@
<?php
declare (strict_types = 1);
/**
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.com>
*
* @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/>.
*
*/
$app = new \OCA\Accessibility\AppInfo\Application();
// Separate from the constructor since the route are not initialized before that
// 1. create the app
// 2. generate css route and inject
$app->injectCss();
-23
View File
@@ -1,23 +0,0 @@
<?xml version="1.0"?>
<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
<id>accessibility</id>
<name>Accessibility</name>
<summary>Accessibility options for nextcloud</summary>
<description><![CDATA[Provides multiple accessibilities options to ease your use of nextcloud]]></description>
<version>1.0.1</version>
<licence>agpl</licence>
<author>John Molakvoæ</author>
<namespace>Accessibility</namespace>
<category>accessibility</category>
<default_enable/>
<dependencies>
<nextcloud min-version="14" max-version="14"/>
</dependencies>
<default_enable/>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<settings>
<personal>OCA\Accessibility\Settings\Personal</personal>
<personal-section>OCA\Accessibility\Settings\PersonalSection</personal-section>
</settings>
</info>
-40
View File
@@ -1,40 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.com>
*
* @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/>.
*
*/
return [
'routes' => [
['name' => 'accessibility#getCss', 'url' => '/css/user-{md5}', 'verb' => 'GET'],
],
'ocs' => [
[
'name' => 'Config#getConfig',
'url' => '/api/v1/config',
'verb' => 'GET',
],
[
'name' => 'Config#setConfig',
'url' => '/api/v1/config/{key}',
'verb' => 'POST',
],
]
];
-22
View File
@@ -1,22 +0,0 @@
@font-face {
font-family: 'OpenDyslexic';
font-style: normal;
font-weight: 300;
src: url('../fonts/OpenDyslexic-Regular.woff') format('woff');
}
@font-face {
font-family: 'OpenDyslexic';
font-style: normal;
font-weight: normal;
src: url('../fonts/OpenDyslexic-Regular.woff') format('woff');
}
@font-face {
font-family: 'OpenDyslexic';
font-style: normal;
font-weight: 600;
src: url('../fonts/OpenDyslexic-Bold.woff') format('woff');
}
$font-face: OpenDyslexic, 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
-59
View File
@@ -1,59 +0,0 @@
.preview-list {
display: flex;
flex-wrap: wrap;
}
.preview {
display: flex;
flex-direction: column;
min-width: 250px;
max-width: 400px;
flex: 1 1 300px;
border: 1px solid var(--color-border);
padding: 10px;
border-radius: var(--border-radius);
transition: all 200ms ease-in-out;
filter: drop-shadow(0 1px 2px var(--color-box-shadow));
background-color: var(--color-main-background);
opacity: 0.9;
margin: 10px;
position: relative;
&,
* {
cursor: pointer;
user-select: none;
}
&:hover,
&:focus,
&.selected {
filter: drop-shadow(0 1px 4px var(--color-box-shadow));
opacity: 1;
}
.preview-image {
height: 200px;
background-position: top left;
background-size: cover;
background-repeat: no-repeat;
}
h3 {
display: flex;
justify-content: space-between;
line-height: 1em;
align-items: center;
}
p {
text-align: justify;
}
.icon-checkmark-color {
transition: all 100ms ease-in-out;
border-radius: 1em;
padding: 4px 5px 4px 20px;
background-position: 4px center;
opacity: 0;
visibility: hidden;
}
&.selected .icon-checkmark-color {
opacity: 1;
visibility: visible;
box-shadow: 0 0 0 1px var(--color-success);
}
}
-52
View File
@@ -1,52 +0,0 @@
// SCSS variables
$color-main-text: #d8d8d8;
$color-main-background: #181818;
$color-background-dark: lighten($color-main-background, 4%);
$color-background-darker: lighten($color-main-background, 8%);
$color-text-maxcontrast: darken($color-main-text, 30%);
$color-text-light: darken($color-main-text, 10%);
$color-text-lighter: darken($color-main-text, 20%);
$color-loading-light: #777;
$color-loading-dark: #ccc;
$color-box-shadow: rgba(darken($color-main-background, 70%), 0.5);
$color-border: lighten($color-main-background, 7%);
$color-border-dark: lighten($color-main-background, 14%);
#app-navigation > ul > li > a:first-child,
#app-navigation > ul > li > ul > li > a:first-child,
#expanddiv a {
img {
filter: invert(100%);
}
}
.bubble,
.app-navigation-entry-menu,
.popovermenu {
li {
> button,
> a,
> .menuitem {
> img {
filter: invert(100%);
}
}
}
}
.bubble,
.app-navigation-entry-menu,
.popovermenu,
#header .menu {
border: 1px solid var(--color-border);
}
// since svg icons are inverted, revert to white for the header
.header-right > * {
[class^='icon-'], [class*=' icon-'] {
filter: invert(100%);
}
}
@@ -1,57 +0,0 @@
// Fonts
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: normal;
src: local('Open Sans'), local('OpenSans'),
url('../../../core/fonts/OpenSans-Regular.woff') format('woff');
}
/* overriding default light */
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 300;
src: local('Open Sans'), local('OpenSans'),
url('../../../core/fonts/OpenSans-Regular.woff') format('woff');
}
@font-face {
font-family: 'Open Sans';
font-style: normal;
font-weight: 500 700;
src: local('Open Sans Bold'), local('OpenSans-Bold'),
url('../../../core/fonts/OpenSans-Bold.woff') format('woff');
}
// SCSS variables
$color-main-text: #000;
$color-main-background: #fff;
$color-background-dark: darken($color-main-background, 30%);
$color-background-darker: darken($color-main-background, 30%);
$color-text-maxcontrast: $color-main-text;
$color-text-light: $color-main-text;
$color-text-lighter: $color-main-text;
$color-loading-light: #ddd;
$color-loading-dark: #000;
$color-box-shadow: $color-main-text;
$color-border: darken($color-main-background, 50%);
$color-border-dark: darken($color-main-background, 50%);
$font-face: 'Open Sans', Frutiger, Calibri, 'Myriad Pro', Myriad, sans-serif;
// Font weight reset
body {
font-weight: 400;
}
[class^='icon-'], [class*=' icon-'],
.action {
opacity: 1 !important;
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-76
View File
@@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="16"
height="16"
viewBox="0 0 16 16"
sodipodi:docname="app-dark.svg"
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1880"
inkscape:window-height="993"
id="namedview4"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="36.460193"
inkscape:cx="8.4752826"
inkscape:cy="18.273624"
inkscape:window-x="20"
inkscape:window-y="67"
inkscape:window-maximized="0"
inkscape:current-layer="g848"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<g
id="g848"
transform="matrix(1.1307959,0,0,1.0801738,-1.0463882,-0.84269722)"
style="stroke-width:0.90481776;fill:#000000">
<circle
r="1.9587879"
cy="2.8315151"
cx="7.990303"
id="path844"
style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.90481776;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
<path
sodipodi:nodetypes="scsssscsccccczzcccccssssccsscs"
inkscape:connector-curvature="0"
id="path843"
d="m 2.3519709,4.2557871 c -0.3126291,0 -0.4819578,0.1287194 -0.5322266,0.4028321 -0.053173,0.2899914 0.1062609,0.5159057 0.4370117,0.6274414 1.420521,0.4790277 2.4256503,0.6675279 3.8410483,0.9800416 0.327839,0.072385 0.6900295,0.2893751 0.6520998,1.0948483 C 6.6985575,8.451345 6.6372144,9.7041167 6.2631031,11.323353 6.0397526,12.290062 5.6782112,13.622766 5.4305838,14.3922 5.3416728,14.668443 5.281658,14.922355 5.281658,15.031849 c 0,0.08257 0.053443,0.249642 0.097656,0.307617 0.023823,0.03125 0.075039,0.07397 0.1147462,0.09522 0.062879,0.03361 0.096262,0.03787 0.2612304,0.03663 0.3361373,-0.0026 0.4608113,-0.08245 0.6665037,-0.429687 0.4838657,-0.939315 0.7378785,-2.132191 0.9402993,-3.014266 0.092189,-0.517235 0.2624476,-1.66347 0.6710287,-1.66347 0.4085811,0 0.4979093,0.95008 0.6812062,1.687228 0.1832969,0.737148 0.6122738,2.295202 0.7738717,2.704862 0.2137476,0.54186 0.5742238,0.836985 0.8764648,0.717774 0.03316,-0.01301 0.116937,-0.04526 0.187989,-0.0708 0.147435,-0.053 0.186715,-0.07824 0.219726,-0.156249 0.0655,-0.154793 -0.01013,-0.454047 -0.349121,-1.41114 C 9.7721847,11.597192 9.2651806,9.3990255 9.3334308,7.2974743 9.3630343,6.3859259 9.6837054,6.305369 10.075725,6.2075087 c 1.17285,-0.2927798 2.00228,-0.379973 3.387085,-0.8579717 0.468513,-0.1617184 0.727539,-0.2608264 0.727539,-0.5590819 0,-0.2554049 -0.153084,-0.4346541 -0.437011,-0.5102538 -0.116851,-0.031101 -0.318383,-0.028905 -0.632326,0.00243 -1.085189,0.10834 -2.939683,0.5153868 -4.0234365,0.6710819 -0.529944,0.076133 -1.7229392,0.094015 -2.2729489,0 C 5.6763224,4.7574297 4.1363176,4.4147025 2.9061699,4.2997326 2.6560099,4.2763537 2.4068766,4.2557871 2.3519709,4.2557871 Z"
style="fill:#000000;stroke-width:0.9048177" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.0 KiB

-76
View File
@@ -1,76 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="16"
height="16"
viewBox="0 0 16 16"
sodipodi:docname="app.svg"
inkscape:version="0.92.2 5c3e80d, 2017-08-06">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1880"
inkscape:window-height="993"
id="namedview4"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="36.460193"
inkscape:cx="8.4752826"
inkscape:cy="18.273624"
inkscape:window-x="20"
inkscape:window-y="67"
inkscape:window-maximized="0"
inkscape:current-layer="g848"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<g
id="g848"
transform="matrix(1.1307959,0,0,1.0801738,-1.0463882,-0.84269722)"
style="stroke-width:0.90481776;fill:#000000">
<circle
r="1.9587879"
cy="2.8315151"
cx="7.990303"
id="path844"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.90481776;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
<path
sodipodi:nodetypes="scsssscsccccczzcccccssssccsscs"
inkscape:connector-curvature="0"
id="path843"
d="m 2.3519709,4.2557871 c -0.3126291,0 -0.4819578,0.1287194 -0.5322266,0.4028321 -0.053173,0.2899914 0.1062609,0.5159057 0.4370117,0.6274414 1.420521,0.4790277 2.4256503,0.6675279 3.8410483,0.9800416 0.327839,0.072385 0.6900295,0.2893751 0.6520998,1.0948483 C 6.6985575,8.451345 6.6372144,9.7041167 6.2631031,11.323353 6.0397526,12.290062 5.6782112,13.622766 5.4305838,14.3922 5.3416728,14.668443 5.281658,14.922355 5.281658,15.031849 c 0,0.08257 0.053443,0.249642 0.097656,0.307617 0.023823,0.03125 0.075039,0.07397 0.1147462,0.09522 0.062879,0.03361 0.096262,0.03787 0.2612304,0.03663 0.3361373,-0.0026 0.4608113,-0.08245 0.6665037,-0.429687 0.4838657,-0.939315 0.7378785,-2.132191 0.9402993,-3.014266 0.092189,-0.517235 0.2624476,-1.66347 0.6710287,-1.66347 0.4085811,0 0.4979093,0.95008 0.6812062,1.687228 0.1832969,0.737148 0.6122738,2.295202 0.7738717,2.704862 0.2137476,0.54186 0.5742238,0.836985 0.8764648,0.717774 0.03316,-0.01301 0.116937,-0.04526 0.187989,-0.0708 0.147435,-0.053 0.186715,-0.07824 0.219726,-0.156249 0.0655,-0.154793 -0.01013,-0.454047 -0.349121,-1.41114 C 9.7721847,11.597192 9.2651806,9.3990255 9.3334308,7.2974743 9.3630343,6.3859259 9.6837054,6.305369 10.075725,6.2075087 c 1.17285,-0.2927798 2.00228,-0.379973 3.387085,-0.8579717 0.468513,-0.1617184 0.727539,-0.2608264 0.727539,-0.5590819 0,-0.2554049 -0.153084,-0.4346541 -0.437011,-0.5102538 -0.116851,-0.031101 -0.318383,-0.028905 -0.632326,0.00243 -1.085189,0.10834 -2.939683,0.5153868 -4.0234365,0.6710819 -0.529944,0.076133 -1.7229392,0.094015 -2.2729489,0 C 5.6763224,4.7574297 4.1363176,4.4147025 2.9061699,4.2997326 2.6560099,4.2763537 2.4068766,4.2557871 2.3519709,4.2557871 Z"
style="fill:#ffffff;stroke-width:0.9048177" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,83 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.com>
*
* @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\Accessibility;
use OCP\IL10N;
use OCP\IURLGenerator;
class AccessibilityProvider {
/** @var string */
protected $appName;
/** @var IURLGenerator */
private $urlGenerator;
/** @var IL10N */
private $l;
/**
* Account constructor.
*
* @param string $appName
* @param IURLGenerator $urlGenerator
* @param IL10N $l
*/
public function __construct(string $appName,
IURLGenerator $urlGenerator,
IL10N $l) {
$this->appName = $appName;
$this->urlGenerator = $urlGenerator;
$this->l = $l;
}
public function getThemes() {
return array(
[
'id' => 'themehighcontrast',
'img' => $this->urlGenerator->imagePath($this->appName, 'theme-highcontrast.jpg'),
'title' => $this->l->t('High contrast theme'),
'text' => $this->l->t('A high contrast theme to ease your navigation. Visual quality will be reduced but clarity will be increased.')
], [
'id' => 'themedark',
'img' => $this->urlGenerator->imagePath($this->appName, 'theme-dark.jpg'),
'title' => $this->l->t('Dark theme (beta)'),
'text' => $this->l->t('A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find.')
]
);
}
public function getFonts() {
return array(
[
'id' => 'fontdyslexic',
'img' => $this->urlGenerator->imagePath($this->appName, 'font-opendyslexic.jpg'),
'title' => $this->l->t('Dyslexia font'),
'text' => $this->l->t('OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia. The typeface was created by Abelardo Gonzalez, who released it through an open-source license.')
]
);
}
}
@@ -1,65 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.com>
*
* @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\Accessibility\AppInfo;
use OCP\AppFramework\App;
use OCP\IConfig;
use OCP\IUserSession;
use OCP\IURLGenerator;
class Application extends App {
/** @var string */
protected $appName = 'accessibility';
/** @var IConfig */
private $config;
/** @var IUserSession */
private $userSession;
/** @var IURLGenerator */
private $urlGenerator;
public function __construct() {
parent::__construct($this->appName);
$this->config = \OC::$server->getConfig();
$this->userSession = \OC::$server->getUserSession();
$this->urlGenerator = \OC::$server->getURLGenerator();
}
public function injectCss() {
// Inject the fake css on all pages if enabled and user is logged
$loggedUser = $this->userSession->getUser();
if (!is_null($loggedUser)) {
$userValues = $this->config->getUserKeys($loggedUser->getUID(), $this->appName);
// we want to check if any theme or font is enabled.
if (count($userValues) > 0) {
$hash = $this->config->getUserValue($loggedUser->getUID(), $this->appName, 'icons-css', md5(implode('-', $userValues)));
$linkToCSS = $this->urlGenerator->linkToRoute($this->appName . '.accessibility.getCss', ['md5' => $hash]);
\OCP\Util::addHeader('link', ['rel' => 'stylesheet', 'href' => $linkToCSS]);
}
}
}
}
@@ -1,259 +0,0 @@
<?php
declare (strict_types = 1);
/**
* @copyright Copyright (c) 2018 John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
*
* @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\Accessibility\Controller;
use Leafo\ScssPhp\Compiler;
use Leafo\ScssPhp\Exception\ParserException;
use Leafo\ScssPhp\Formatter\Crunched;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataDisplayResponse;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\App\IAppManager;
use OCP\IConfig;
use OCP\ILogger;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\IUserSession;
use OC\Template\IconsCacher;
class AccessibilityController extends Controller {
/** @var string */
protected $appName;
/** @var string */
protected $serverRoot;
/** @var IConfig */
private $config;
/** @var IUserManager */
private $userManager;
/** @var ILogger */
private $logger;
/** @var IURLGenerator */
private $urlGenerator;
/** @var ITimeFactory */
protected $timeFactory;
/** @var IUserSession */
private $userSession;
/** @var IAppManager */
private $appManager;
/** @var IconsCacher */
protected $iconsCacher;
/** @var \OC_Defaults */
private $defaults;
/** @var null|string */
private $injectedVariables;
/**
* Account constructor.
*
* @param string $appName
* @param IRequest $request
* @param IConfig $config
* @param IUserManager $userManager
* @param ILogger $logger
* @param IURLGenerator $urlGenerator
* @param ITimeFactory $timeFactory
* @param IUserSession $userSession
* @param IAppManager $appManager
* @param \OC_Defaults $defaults
*/
public function __construct(string $appName,
IRequest $request,
IConfig $config,
IUserManager $userManager,
ILogger $logger,
IURLGenerator $urlGenerator,
ITimeFactory $timeFactory,
IUserSession $userSession,
IAppManager $appManager,
IconsCacher $iconsCacher,
\OC_Defaults $defaults) {
parent::__construct($appName, $request);
$this->appName = $appName;
$this->config = $config;
$this->userManager = $userManager;
$this->logger = $logger;
$this->urlGenerator = $urlGenerator;
$this->timeFactory = $timeFactory;
$this->userSession = $userSession;
$this->appManager = $appManager;
$this->iconsCacher = $iconsCacher;
$this->defaults = $defaults;
$this->serverRoot = \OC::$SERVERROOT;
$this->appRoot = $this->appManager->getAppPath($this->appName);
}
/**
* @NoAdminRequired
* @NoCSRFRequired
*
* @return DataDisplayResponse
*/
public function getCss(): DataDisplayResponse {
$css = '';
$imports = '';
$userValues = $this->getUserValues();
foreach ($userValues as $key => $scssFile) {
if ($scssFile !== false) {
$imports .= '@import "' . $scssFile . '";';
}
}
if ($imports !== '') {
$scss = new Compiler();
$scss->setImportPaths([
$this->appRoot . '/css/',
$this->serverRoot . '/core/css/'
]);
// Continue after throw
$scss->setIgnoreErrors(true);
$scss->setFormatter(Crunched::class);
// Import theme, variables and compile css4 variables
try {
$css .= $scss->compile(
$imports .
$this->getInjectedVariables() .
'@import "variables.scss";' .
'@import "css-variables.scss";'
);
} catch (ParserException $e) {
$this->logger->error($e->getMessage(), ['app' => 'core']);
}
}
// We don't want to override vars with url since path is different
$css = $this->filterOutRule('/--[a-z-:]+url\([^;]+\)/mi', $css);
// Rebase all urls
$appWebRoot = substr($this->appRoot, strlen($this->serverRoot) - strlen(\OC::$WEBROOT));
$css = $this->rebaseUrls($css, $appWebRoot . '/css');
if (in_array('themedark', $userValues) && $this->iconsCacher->getCachedCSS() && $this->iconsCacher->getCachedCSS()->getSize() > 0) {
$iconsCss = $this->invertSvgIconsColor($this->iconsCacher->getCachedCSS()->getContent());
$css = $css . $iconsCss;
}
$response = new DataDisplayResponse($css, Http::STATUS_OK, ['Content-Type' => 'text/css']);
// Set cache control
$ttl = 31536000;
$response->addHeader('Cache-Control', 'max-age=' . $ttl . ', immutable');
$expires = new \DateTime();
$expires->setTimestamp($this->timeFactory->getTime());
$expires->add(new \DateInterval('PT' . $ttl . 'S'));
$response->addHeader('Expires', $expires->format(\DateTime::RFC1123));
$response->addHeader('Pragma', 'cache');
// store current cache hash
$this->config->setUserValue($this->userSession->getUser()->getUID(), $this->appName, 'icons-css', md5($css));
return $response;
}
/**
* Return an array with the user theme & font settings
*
* @return array
*/
private function getUserValues(): array{
$userTheme = $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'theme', false);
$userFont = $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'font', false);
return [$userTheme, $userFont];
}
/**
* Remove all matches from the $rule regex
*
* @param string $rule regex to match
* @param string $css string to parse
* @return string
*/
private function filterOutRule(string $rule, string $css): string {
return preg_replace($rule, '', $css);
}
/**
* Add the correct uri prefix to make uri valid again
*
* @param string $css
* @param string $webDir
* @return string
*/
private function rebaseUrls(string $css, string $webDir): string {
$re = '/url\([\'"]([^\/][\.\w?=\/-]*)[\'"]\)/x';
$subst = 'url(\'' . $webDir . '/$1\')';
return preg_replace($re, $subst, $css);
}
/**
* Remove all matches from the $rule regex
*
* @param string $css string to parse
* @return string
*/
private function invertSvgIconsColor(string $css) {
return str_replace(['/000', '/fff', '/***'], ['/***', '/000', '/fff'], $css);
}
/**
* @return string SCSS code for variables from OC_Defaults
*/
private function getInjectedVariables(): string {
if ($this->injectedVariables !== null) {
return $this->injectedVariables;
}
$variables = '';
foreach ($this->defaults->getScssVariables() as $key => $value) {
$variables .= '$' . $key . ': ' . $value . ';';
}
// check for valid variables / otherwise fall back to defaults
try {
$scss = new Compiler();
$scss->compile($variables);
$this->injectedVariables = $variables;
} catch (ParserException $e) {
$this->logger->error($e, ['app' => 'core']);
}
return $variables;
}
}
@@ -1,133 +0,0 @@
<?php
declare (strict_types = 1);
/**
* @copyright Copyright (c) 2018 John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
*
* @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\Accessibility\Controller;
use OCA\Accessibility\AccessibilityProvider;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\OCSController;
use OCP\AppFramework\OCS\OCSBadRequestException;
use OCP\IConfig;
use OCP\IRequest;
use OCP\IUserSession;
class ConfigController extends OCSController {
/** @var string */
protected $appName;
/** @var string */
protected $userId;
/** @var string */
protected $serverRoot;
/** @var IConfig */
private $config;
/** @var IUserSession */
private $userSession;
/** @var AccessibilityProvider */
private $accessibilityProvider;
/**
* Config constructor.
*
* @param string $appName
* @param IRequest $request
* @param IConfig $config
* @param IUserSession $userSession
* @param AccessibilityProvider $accessibilityProvider
*/
public function __construct(string $appName,
IRequest $request,
IConfig $config,
IUserSession $userSession,
AccessibilityProvider $accessibilityProvider) {
parent::__construct($appName, $request);
$this->appName = $appName;
$this->config = $config;
$this->userSession = $userSession;
$this->accessibilityProvider = $accessibilityProvider;
$this->userId = $userSession->getUser()->getUID();
}
/**
* @NoAdminRequired
*
* Get user accessibility config
*
* @param string $key theme or font
* @return DataResponse
*/
public function getConfig(): DataResponse {
return new DataResponse([
'theme' => $this->config->getUserValue($this->userId, $this->appName, 'theme', false),
'font' => $this->config->getUserValue($this->userId, $this->appName, 'font', false)
]);
}
/**
* @NoAdminRequired
*
* Set theme or font config
*
* @param string $key theme or font
* @return DataResponse
* @throws Exception
*/
public function setConfig(string $key, $value): DataResponse {
if ($key === 'theme' || $key === 'font') {
if ($value === false) {
$this->config->deleteUserValue($this->userId, $this->appName, $key);
$userValues = $this->config->getUserKeys($this->userId, $this->appName);
// remove hash if no settings selected
if (count($userValues) === 1 && $userValues[0] === 'icons-css') {
$this->config->deleteUserValue($this->userId, $this->appName, 'icons-css');
}
return new DataResponse();
}
$themes = $this->accessibilityProvider->getThemes();
$fonts = $this->accessibilityProvider->getFonts();
$availableOptions = array_map(function($option) {
return $option['id'];
}, array_merge($themes, $fonts));
if (in_array($value, $availableOptions)) {
$this->config->setUserValue($this->userId, $this->appName, $key, $value);
return new DataResponse();
}
throw new OCSBadRequestException('Invalid value: ' . $value);
}
throw new OCSBadRequestException('Invalid key: ' . $key);
}
}
@@ -1,113 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.com>
*
* @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\Accessibility\Settings;
use OCA\Accessibility\AccessibilityProvider;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUserSession;
use OCP\Settings\ISettings;
class Personal implements ISettings {
/** @var string */
protected $appName;
/** @var IConfig */
private $config;
/** @var IUserSession */
private $userSession;
/** @var IL10N */
private $l;
/** @var IURLGenerator */
private $urlGenerator;
/** @var AccessibilityProvider */
private $accessibilityProvider;
/**
* Settings constructor.
*
* @param string $appName
* @param IConfig $config
* @param IUserSession $userSession
* @param IL10N $l
* @param IURLGenerator $urlGenerator
* @param AccessibilityProvider $accessibilityProvider
*/
public function __construct(string $appName,
IConfig $config,
IUserSession $userSession,
IL10N $l,
IURLGenerator $urlGenerator,
AccessibilityProvider $accessibilityProvider) {
$this->appName = $appName;
$this->config = $config;
$this->userSession = $userSession;
$this->l = $l;
$this->urlGenerator = $urlGenerator;
$this->accessibilityProvider = $accessibilityProvider;
}
/**
* @return TemplateResponse returns the instance with all parameters set, ready to be rendered
* @since 9.1
*/
public function getForm() {
$serverData = [
'themes' => $this->accessibilityProvider->getThemes(),
'fonts' => $this->accessibilityProvider->getFonts(),
'theme' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'theme', false),
'font' => $this->config->getUserValue($this->userSession->getUser()->getUID(), $this->appName, 'font', false)
];
return new TemplateResponse($this->appName, 'settings-personal', ['serverData' => $serverData]);
}
/**
* @return string the section ID, e.g. 'sharing'
* @since 9.1
*/
public function getSection() {
return $this->appName;
}
/**
* @return int whether the form should be rather on the top or bottom of
* the admin section. The forms are arranged in ascending order of the
* priority values. It is required to return a value between 0 and 100.
*
* E.g.: 70
* @since 9.1
*/
public function getPriority() {
return 40;
}
}
@@ -1,100 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.com>
*
* @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\Accessibility\Settings;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\Settings\IIconSection;
class PersonalSection implements IIconSection {
/** @var string */
protected $appName;
/** @var IURLGenerator */
private $urlGenerator;
/** @var IL10N */
private $l;
/**
* Personal Section constructor.
*
* @param string $appName
* @param IURLGenerator $urlGenerator
* @param IL10N $l
*/
public function __construct(string $appName,
IURLGenerator $urlGenerator,
IL10N $l) {
$this->appName = $appName;
$this->urlGenerator = $urlGenerator;
$this->l = $l;
}
/**
* returns the relative path to an 16*16 icon describing the section.
* e.g. '/core/img/places/files.svg'
*
* @returns string
* @since 13.0.0
*/
public function getIcon() {
return $this->urlGenerator->imagePath($this->appName, 'app-dark.svg');
}
/**
* returns the ID of the section. It is supposed to be a lower case string,
* e.g. 'ldap'
*
* @returns string
* @since 9.1
*/
public function getID() {
return $this->appName;
}
/**
* returns the translated name as it should be displayed, e.g. 'LDAP / AD
* integration'. Use the L10N service to translate it.
*
* @return string
* @since 9.1
*/
public function getName() {
return $this->l->t('Accessibility');
}
/**
* @return int whether the form should be rather on the top or bottom of
* the settings navigation. The sections are arranged in ascending order of
* the priority values. It is required to return a value between 0 and 99.
*
* E.g.: 70
* @since 9.1
*/
public function getPriority() {
return 15;
}
}
File diff suppressed because it is too large Load Diff
-33
View File
@@ -1,33 +0,0 @@
{
"name": "accessibility",
"description": "Provides multiple accessibilities options to ease your use of nextcloud",
"version": "1.0.2",
"author": "John Molakvoæ <skjnldsv@protonmail.com>",
"license": "agpl",
"private": true,
"scripts": {
"dev": "webpack --config webpack.dev.js",
"watch": "webpack --progress --watch --config webpack.dev.js",
"build": "webpack --progress --hide-modules --config webpack.prod.js"
},
"dependencies": {
"axios": "^0.18.1",
"vue": "^2.5.16"
},
"browserslist": [
"last 2 versions",
"not ie <= 11"
],
"devDependencies": {
"babel-core": "^6.26.3",
"babel-loader": "^7.1.5",
"babel-preset-env": "^1.7.0",
"css-loader": "^1.0.0",
"file-loader": "^1.1.11",
"vue-loader": "^15.2.6",
"vue-template-compiler": "^2.5.16",
"webpack": "^4.16.1",
"webpack-cli": "^3.1.0",
"webpack-merge": "^4.1.3"
}
}
-116
View File
@@ -1,116 +0,0 @@
<template>
<div id="accessibility">
<div id="themes" class="section">
<h2>{{t('accessibility', 'Themes')}}</h2>
<div class="themes-list preview-list">
<preview v-for="preview in themes" :preview="preview"
:key="preview.id" :selected="selected.theme"
v-on:select="selectTheme"></preview>
</div>
</div>
<div id="fonts" class="section">
<h2>{{t('accessibility', 'Fonts')}}</h2>
<div class="fonts-list preview-list">
<preview v-for="preview in fonts" :preview="preview"
:key="preview.id" :selected="selected.font"
v-on:select="selectFont"></preview>
</div>
</div>
</div>
</template>
<script>
import preview from './components/itemPreview';
import axios from 'axios';
export default {
name: 'Accessibility',
components: { preview },
beforeMount() {
// importing server data into the app
const serverDataElmt = document.getElementById('serverData');
if (serverDataElmt !== null) {
this.serverData = JSON.parse(
document.getElementById('serverData').dataset.server
);
}
},
data() {
return {
serverData: []
};
},
computed: {
themes() {
return this.serverData.themes;
},
fonts() {
return this.serverData.fonts;
},
selected() {
return {
theme: this.serverData.theme,
font: this.serverData.font
};
},
tokenHeaders() {
return { headers: { requesttoken: OC.requestToken } };
}
},
methods: {
selectTheme(id) {
this.selectItem('theme', id);
},
selectFont(id) {
this.selectItem('font', id);
},
/**
* Commit a change and force reload css
* Fetching the file again will trigger the server update
*
* @param {string} type type of the change (font or theme)
* @param {string} id the data of the change
*/
selectItem(type, id) {
axios.post(
OC.linkToOCS('apps/accessibility/api/v1/config', 2) + type,
{ value: id },
this.tokenHeaders
)
.then(response => {
this.serverData[type] = id;
// Remove old link
let link = document.querySelector('link[rel=stylesheet][href*=accessibility][href*=user-]');
if (!link) {
// insert new css
let link = document.createElement('link');
link.rel = 'stylesheet';
link.href = OC.generateUrl('/apps/accessibility/css/user-style.css') + '?v=' + new Date().getTime();
document.head.appendChild(link);
} else {
// compare arrays
if (
JSON.stringify(Object.values(this.selected)) ===
JSON.stringify([false, false])
) {
// if nothing is selected, blindly remove the css
link.remove();
} else {
// force update
link.href =
link.href.split('?')[0] +
'?v=' +
new Date().getTime();
}
}
})
.catch(err => {
console.log(err, err.response);
OC.Notification.showTemporary(t('accessibility', err.response.data.ocs.meta.message + '. Unable to apply the setting.'));
});
}
}
};
</script>
@@ -1,27 +0,0 @@
<template>
<a :class="{preview: true, selected: preview.id === selected}"
href="#" @click="selectItem">
<div class="preview-image" :style="{backgroundImage: 'url(' + preview.img + ')'}"></div>
<h3>
<span>{{preview.title}}</span>
<div class="icon-checkmark-color">{{t('accessibility', 'enabled')}}</div>
</h3>
<p>{{preview.text}}</p>
</a>
</template>
<script>
export default {
name: 'itemPreview',
props: ['preview', 'selected'],
methods: {
selectItem() {
this.$emit(
'select',
// if we clicked the already selected one: disable it
this.preview.id === this.selected ? false : this.preview.id
);
}
}
};
</script>
-12
View File
@@ -1,12 +0,0 @@
import Vue from 'vue';
import App from './App.vue';
/* global t */
// bind to window
Vue.prototype.OC = OC;
Vue.prototype.t = t;
new Vue({
el: '#accessibility',
render: h => h(App)
});
@@ -1,29 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>
*
* @author John Molakvoæ <skjnldsv@protonmail.com>
*
* @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/>.
*
*/
script('accessibility', 'accessibility');
style('accessibility', 'style');
?>
<span id="serverData" data-server="<?php p(json_encode($_['serverData']));?>"></span>
<span id="accessibility"></span>
-42
View File
@@ -1,42 +0,0 @@
const path = require('path');
const { VueLoaderPlugin } = require('vue-loader');
module.exports = {
entry: path.join(__dirname, 'src', 'main.js'),
output: {
path: path.resolve(__dirname, './js'),
publicPath: '/js/',
filename: 'accessibility.js'
},
module: {
rules: [
{
test: /\.css$/,
use: ['vue-style-loader', 'css-loader']
},
{
test: /\.vue$/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
},
{
test: /\.(png|jpg|gif|svg)$/,
loader: 'file-loader',
options: {
name: '[name].[ext]?[hash]'
}
}
]
},
plugins: [new VueLoaderPlugin()],
resolve: {
alias: {
vue$: 'vue/dist/vue.esm.js'
},
extensions: ['*', '.js', '.vue', '.json']
}
};
-12
View File
@@ -1,12 +0,0 @@
const merge = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: 'development',
devServer: {
historyApiFallback: true,
noInfo: true,
overlay: true
},
devtool: '#eval-source-map'
});
-7
View File
@@ -1,7 +0,0 @@
const merge = require('webpack-merge');
const common = require('./webpack.common.js');
module.exports = merge(common, {
mode: 'production',
devtool: '#source-map'
});
+8 -6
View File
@@ -1,10 +1,8 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
* @copyright Copyright (c) 2017 Lukas Reschke <lukas@statuscode.ch>
*
* @author Joas Schilling <coding@schilljs.com>
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
@@ -24,5 +22,9 @@ declare(strict_types=1);
*
*/
$app = new \OCA\AdminAudit\AppInfo\Application();
$app->register();
$logger = \OC::$server->getLogger();
$userSession = \OC::$server->getUserSession();
$groupManager = \OC::$server->getGroupManager();
$auditLogger = new \OCA\Admin_Audit\AuditLogger($logger, $userSession, $groupManager);
$auditLogger->registerHooks();
+9 -15
View File
@@ -1,23 +1,17 @@
<?xml version="1.0"?>
<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
<info>
<id>admin_audit</id>
<name>Auditing / Logging</name>
<summary>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</summary>
<description>Provides logging abilities for Nextcloud such as logging file accesses or otherwise sensitive actions.</description>
<version>1.4.0</version>
<licence>agpl</licence>
<description>Provides logging abilities for Nextcloud such as logging file
accesses or otherwise sensitive actions.
</description>
<licence>AGPL</licence>
<author>Nextcloud</author>
<namespace>AdminAudit</namespace>
<version>1.0.0</version>
<dependencies>
<owncloud min-version="9.0" max-version="9.1" />
</dependencies>
<types>
<logging/>
</types>
<category>monitoring</category>
<bugs>https://github.com/nextcloud/server/issues</bugs>
<dependencies>
<nextcloud min-version="14" max-version="14" />
</dependencies>
<background-jobs>
<job>OCA\AdminAudit\BackgroundJobs\Rotate</job>
</background-jobs>
</info>
-7
View File
@@ -1,7 +0,0 @@
<?php
// autoload.php @generated by Composer
require_once __DIR__ . '/composer/autoload_real.php';
return ComposerAutoloaderInitAdminAudit::getLoader();
-13
View File
@@ -1,13 +0,0 @@
{
"config" : {
"vendor-dir": ".",
"optimize-autoloader": true,
"classmap-authoritative": true,
"autoloader-suffix": "AdminAudit"
},
"autoload" : {
"psr-4": {
"OCA\\AdminAudit\\": "../lib/"
}
}
}
@@ -1,445 +0,0 @@
<?php
/*
* This file is part of Composer.
*
* (c) Nils Adermann <naderman@naderman.de>
* Jordi Boggiano <j.boggiano@seld.be>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Composer\Autoload;
/**
* ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
*
* $loader = new \Composer\Autoload\ClassLoader();
*
* // register classes with namespaces
* $loader->add('Symfony\Component', __DIR__.'/component');
* $loader->add('Symfony', __DIR__.'/framework');
*
* // activate the autoloader
* $loader->register();
*
* // to enable searching the include path (eg. for PEAR packages)
* $loader->setUseIncludePath(true);
*
* In this example, if you try to use a class in the Symfony\Component
* namespace or one of its children (Symfony\Component\Console for instance),
* the autoloader will first look for the class under the component/
* directory, and it will then fallback to the framework/ directory if not
* found before giving up.
*
* This class is loosely based on the Symfony UniversalClassLoader.
*
* @author Fabien Potencier <fabien@symfony.com>
* @author Jordi Boggiano <j.boggiano@seld.be>
* @see http://www.php-fig.org/psr/psr-0/
* @see http://www.php-fig.org/psr/psr-4/
*/
class ClassLoader
{
// PSR-4
private $prefixLengthsPsr4 = array();
private $prefixDirsPsr4 = array();
private $fallbackDirsPsr4 = array();
// PSR-0
private $prefixesPsr0 = array();
private $fallbackDirsPsr0 = array();
private $useIncludePath = false;
private $classMap = array();
private $classMapAuthoritative = false;
private $missingClasses = array();
private $apcuPrefix;
public function getPrefixes()
{
if (!empty($this->prefixesPsr0)) {
return call_user_func_array('array_merge', $this->prefixesPsr0);
}
return array();
}
public function getPrefixesPsr4()
{
return $this->prefixDirsPsr4;
}
public function getFallbackDirs()
{
return $this->fallbackDirsPsr0;
}
public function getFallbackDirsPsr4()
{
return $this->fallbackDirsPsr4;
}
public function getClassMap()
{
return $this->classMap;
}
/**
* @param array $classMap Class to filename map
*/
public function addClassMap(array $classMap)
{
if ($this->classMap) {
$this->classMap = array_merge($this->classMap, $classMap);
} else {
$this->classMap = $classMap;
}
}
/**
* Registers a set of PSR-0 directories for a given prefix, either
* appending or prepending to the ones previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 root directories
* @param bool $prepend Whether to prepend the directories
*/
public function add($prefix, $paths, $prepend = false)
{
if (!$prefix) {
if ($prepend) {
$this->fallbackDirsPsr0 = array_merge(
(array) $paths,
$this->fallbackDirsPsr0
);
} else {
$this->fallbackDirsPsr0 = array_merge(
$this->fallbackDirsPsr0,
(array) $paths
);
}
return;
}
$first = $prefix[0];
if (!isset($this->prefixesPsr0[$first][$prefix])) {
$this->prefixesPsr0[$first][$prefix] = (array) $paths;
return;
}
if ($prepend) {
$this->prefixesPsr0[$first][$prefix] = array_merge(
(array) $paths,
$this->prefixesPsr0[$first][$prefix]
);
} else {
$this->prefixesPsr0[$first][$prefix] = array_merge(
$this->prefixesPsr0[$first][$prefix],
(array) $paths
);
}
}
/**
* Registers a set of PSR-4 directories for a given namespace, either
* appending or prepending to the ones previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
* @param bool $prepend Whether to prepend the directories
*
* @throws \InvalidArgumentException
*/
public function addPsr4($prefix, $paths, $prepend = false)
{
if (!$prefix) {
// Register directories for the root namespace.
if ($prepend) {
$this->fallbackDirsPsr4 = array_merge(
(array) $paths,
$this->fallbackDirsPsr4
);
} else {
$this->fallbackDirsPsr4 = array_merge(
$this->fallbackDirsPsr4,
(array) $paths
);
}
} elseif (!isset($this->prefixDirsPsr4[$prefix])) {
// Register directories for a new namespace.
$length = strlen($prefix);
if ('\\' !== $prefix[$length - 1]) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
} elseif ($prepend) {
// Prepend directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
(array) $paths,
$this->prefixDirsPsr4[$prefix]
);
} else {
// Append directories for an already registered namespace.
$this->prefixDirsPsr4[$prefix] = array_merge(
$this->prefixDirsPsr4[$prefix],
(array) $paths
);
}
}
/**
* Registers a set of PSR-0 directories for a given prefix,
* replacing any others previously set for this prefix.
*
* @param string $prefix The prefix
* @param array|string $paths The PSR-0 base directories
*/
public function set($prefix, $paths)
{
if (!$prefix) {
$this->fallbackDirsPsr0 = (array) $paths;
} else {
$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
}
}
/**
* Registers a set of PSR-4 directories for a given namespace,
* replacing any others previously set for this namespace.
*
* @param string $prefix The prefix/namespace, with trailing '\\'
* @param array|string $paths The PSR-4 base directories
*
* @throws \InvalidArgumentException
*/
public function setPsr4($prefix, $paths)
{
if (!$prefix) {
$this->fallbackDirsPsr4 = (array) $paths;
} else {
$length = strlen($prefix);
if ('\\' !== $prefix[$length - 1]) {
throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
}
$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
$this->prefixDirsPsr4[$prefix] = (array) $paths;
}
}
/**
* Turns on searching the include path for class files.
*
* @param bool $useIncludePath
*/
public function setUseIncludePath($useIncludePath)
{
$this->useIncludePath = $useIncludePath;
}
/**
* Can be used to check if the autoloader uses the include path to check
* for classes.
*
* @return bool
*/
public function getUseIncludePath()
{
return $this->useIncludePath;
}
/**
* Turns off searching the prefix and fallback directories for classes
* that have not been registered with the class map.
*
* @param bool $classMapAuthoritative
*/
public function setClassMapAuthoritative($classMapAuthoritative)
{
$this->classMapAuthoritative = $classMapAuthoritative;
}
/**
* Should class lookup fail if not found in the current class map?
*
* @return bool
*/
public function isClassMapAuthoritative()
{
return $this->classMapAuthoritative;
}
/**
* APCu prefix to use to cache found/not-found classes, if the extension is enabled.
*
* @param string|null $apcuPrefix
*/
public function setApcuPrefix($apcuPrefix)
{
$this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
}
/**
* The APCu prefix in use, or null if APCu caching is not enabled.
*
* @return string|null
*/
public function getApcuPrefix()
{
return $this->apcuPrefix;
}
/**
* Registers this instance as an autoloader.
*
* @param bool $prepend Whether to prepend the autoloader or not
*/
public function register($prepend = false)
{
spl_autoload_register(array($this, 'loadClass'), true, $prepend);
}
/**
* Unregisters this instance as an autoloader.
*/
public function unregister()
{
spl_autoload_unregister(array($this, 'loadClass'));
}
/**
* Loads the given class or interface.
*
* @param string $class The name of the class
* @return bool|null True if loaded, null otherwise
*/
public function loadClass($class)
{
if ($file = $this->findFile($class)) {
includeFile($file);
return true;
}
}
/**
* Finds the path to the file where the class is defined.
*
* @param string $class The name of the class
*
* @return string|false The path if found, false otherwise
*/
public function findFile($class)
{
// class map lookup
if (isset($this->classMap[$class])) {
return $this->classMap[$class];
}
if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
return false;
}
if (null !== $this->apcuPrefix) {
$file = apcu_fetch($this->apcuPrefix.$class, $hit);
if ($hit) {
return $file;
}
}
$file = $this->findFileWithExtension($class, '.php');
// Search for Hack files if we are running on HHVM
if (false === $file && defined('HHVM_VERSION')) {
$file = $this->findFileWithExtension($class, '.hh');
}
if (null !== $this->apcuPrefix) {
apcu_add($this->apcuPrefix.$class, $file);
}
if (false === $file) {
// Remember that this class does not exist.
$this->missingClasses[$class] = true;
}
return $file;
}
private function findFileWithExtension($class, $ext)
{
// PSR-4 lookup
$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
$first = $class[0];
if (isset($this->prefixLengthsPsr4[$first])) {
$subPath = $class;
while (false !== $lastPos = strrpos($subPath, '\\')) {
$subPath = substr($subPath, 0, $lastPos);
$search = $subPath . '\\';
if (isset($this->prefixDirsPsr4[$search])) {
$pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
foreach ($this->prefixDirsPsr4[$search] as $dir) {
if (file_exists($file = $dir . $pathEnd)) {
return $file;
}
}
}
}
}
// PSR-4 fallback dirs
foreach ($this->fallbackDirsPsr4 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
return $file;
}
}
// PSR-0 lookup
if (false !== $pos = strrpos($class, '\\')) {
// namespaced class name
$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
} else {
// PEAR-like class name
$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
}
if (isset($this->prefixesPsr0[$first])) {
foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
if (0 === strpos($class, $prefix)) {
foreach ($dirs as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}
}
}
}
// PSR-0 fallback dirs
foreach ($this->fallbackDirsPsr0 as $dir) {
if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
return $file;
}
}
// PSR-0 include paths.
if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
return $file;
}
return false;
}
}
/**
* Scope isolated include.
*
* Prevents access to $this/self from included files.
*/
function includeFile($file)
{
include $file;
}
@@ -1,21 +0,0 @@
Copyright (c) Nils Adermann, Jordi Boggiano
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@@ -1,22 +0,0 @@
<?php
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = $vendorDir;
return array(
'OCA\\AdminAudit\\Actions\\Action' => $baseDir . '/../lib/Actions/Action.php',
'OCA\\AdminAudit\\Actions\\AppManagement' => $baseDir . '/../lib/Actions/AppManagement.php',
'OCA\\AdminAudit\\Actions\\Auth' => $baseDir . '/../lib/Actions/Auth.php',
'OCA\\AdminAudit\\Actions\\Console' => $baseDir . '/../lib/Actions/Console.php',
'OCA\\AdminAudit\\Actions\\Files' => $baseDir . '/../lib/Actions/Files.php',
'OCA\\AdminAudit\\Actions\\GroupManagement' => $baseDir . '/../lib/Actions/GroupManagement.php',
'OCA\\AdminAudit\\Actions\\Security' => $baseDir . '/../lib/Actions/Security.php',
'OCA\\AdminAudit\\Actions\\Sharing' => $baseDir . '/../lib/Actions/Sharing.php',
'OCA\\AdminAudit\\Actions\\Trashbin' => $baseDir . '/../lib/Actions/Trashbin.php',
'OCA\\AdminAudit\\Actions\\UserManagement' => $baseDir . '/../lib/Actions/UserManagement.php',
'OCA\\AdminAudit\\Actions\\Versions' => $baseDir . '/../lib/Actions/Versions.php',
'OCA\\AdminAudit\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
'OCA\\AdminAudit\\BackgroundJobs\\Rotate' => $baseDir . '/../lib/BackgroundJobs/Rotate.php',
);
@@ -1,9 +0,0 @@
<?php
// autoload_namespaces.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = $vendorDir;
return array(
);
@@ -1,10 +0,0 @@
<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = $vendorDir;
return array(
'OCA\\AdminAudit\\' => array($baseDir . '/../lib'),
);
@@ -1,43 +0,0 @@
<?php
// autoload_real.php @generated by Composer
class ComposerAutoloaderInitAdminAudit
{
private static $loader;
public static function loadClassLoader($class)
{
if ('Composer\Autoload\ClassLoader' === $class) {
require __DIR__ . '/ClassLoader.php';
}
}
public static function getLoader()
{
if (null !== self::$loader) {
return self::$loader;
}
spl_autoload_register(array('ComposerAutoloaderInitAdminAudit', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInitAdminAudit', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require_once __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInitAdminAudit::getInitializer($loader));
} else {
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
}
$loader->setClassMapAuthoritative(true);
$loader->register(true);
return $loader;
}
}
@@ -1,48 +0,0 @@
<?php
// autoload_static.php @generated by Composer
namespace Composer\Autoload;
class ComposerStaticInitAdminAudit
{
public static $prefixLengthsPsr4 = array (
'O' =>
array (
'OCA\\AdminAudit\\' => 15,
),
);
public static $prefixDirsPsr4 = array (
'OCA\\AdminAudit\\' =>
array (
0 => __DIR__ . '/..' . '/../lib',
),
);
public static $classMap = array (
'OCA\\AdminAudit\\Actions\\Action' => __DIR__ . '/..' . '/../lib/Actions/Action.php',
'OCA\\AdminAudit\\Actions\\AppManagement' => __DIR__ . '/..' . '/../lib/Actions/AppManagement.php',
'OCA\\AdminAudit\\Actions\\Auth' => __DIR__ . '/..' . '/../lib/Actions/Auth.php',
'OCA\\AdminAudit\\Actions\\Console' => __DIR__ . '/..' . '/../lib/Actions/Console.php',
'OCA\\AdminAudit\\Actions\\Files' => __DIR__ . '/..' . '/../lib/Actions/Files.php',
'OCA\\AdminAudit\\Actions\\GroupManagement' => __DIR__ . '/..' . '/../lib/Actions/GroupManagement.php',
'OCA\\AdminAudit\\Actions\\Security' => __DIR__ . '/..' . '/../lib/Actions/Security.php',
'OCA\\AdminAudit\\Actions\\Sharing' => __DIR__ . '/..' . '/../lib/Actions/Sharing.php',
'OCA\\AdminAudit\\Actions\\Trashbin' => __DIR__ . '/..' . '/../lib/Actions/Trashbin.php',
'OCA\\AdminAudit\\Actions\\UserManagement' => __DIR__ . '/..' . '/../lib/Actions/UserManagement.php',
'OCA\\AdminAudit\\Actions\\Versions' => __DIR__ . '/..' . '/../lib/Actions/Versions.php',
'OCA\\AdminAudit\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
'OCA\\AdminAudit\\BackgroundJobs\\Rotate' => __DIR__ . '/..' . '/../lib/BackgroundJobs/Rotate.php',
);
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInitAdminAudit::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInitAdminAudit::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInitAdminAudit::$classMap;
}, null, ClassLoader::class);
}
}
-91
View File
@@ -1,91 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @author Joas Schilling <coding@schilljs.com>
* @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/>.
*
*/
namespace OCA\AdminAudit\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
* @param bool $obfuscateParameters
*/
public function log(string $text,
array $params,
array $elements,
bool $obfuscateParameters = false) {
foreach($elements as $element) {
if(!isset($params[$element])) {
if ($obfuscateParameters) {
$this->logger->critical(
'$params["'.$element.'"] was missing.',
['app' => 'admin_audit']
);
} else {
$this->logger->critical(
sprintf(
'$params["'.$element.'"] was missing. Transferred value: %s',
print_r($params, true)
),
['app' => 'admin_audit']
);
}
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'
]
);
}
}
@@ -1,59 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
*
* @author Joas Schilling <coding@schilljs.com>
*
* @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\AdminAudit\Actions;
class AppManagement extends Action {
/**
* @param string $appName
*/
public function enableApp(string $appName) {
$this->log('App "%s" enabled',
['app' => $appName],
['app']
);
}
/**
* @param string $appName
* @param string[] $groups
*/
public function enableAppForGroups(string $appName, array $groups) {
$this->log('App "%s" enabled for groups: %s',
['app' => $appName, 'groups' => implode(', ', $groups)],
['app', 'groups']
);
}
/**
* @param string $appName
*/
public function disableApp(string $appName) {
$this->log('App "%s" disabled',
['app' => $appName],
['app']
);
}
}
-63
View File
@@ -1,63 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @author Joas Schilling <coding@schilljs.com>
* @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/>.
*
*/
namespace OCA\AdminAudit\Actions;
/**
* Class Auth logs all auth related actions
*
* @package OCA\AdminAudit\Actions
*/
class Auth extends Action {
public function loginAttempt(array $params) {
$this->log(
'Login attempt: "%s"',
$params,
[
'uid',
],
true
);
}
public function loginSuccessful(array $params) {
$this->log(
'Login successful: "%s"',
$params,
[
'uid',
],
true
);
}
public function logout(array $params) {
$this->log(
'Logout occurred',
[],
[]
);
}
}
-46
View File
@@ -1,46 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
*
* @author Joas Schilling <coding@schilljs.com>
*
* @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\AdminAudit\Actions;
class Console extends Action {
/**
* @param $arguments
*/
public function runCommand(array $arguments) {
if ($arguments[1] === '_completion') {
// Don't log autocompletion
return;
}
// Remove `./occ`
array_shift($arguments);
$this->log('Console command executed: %s',
['arguments' => implode(' ', $arguments)],
['arguments']
);
}
}
-167
View File
@@ -1,167 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @author Joas Schilling <coding@schilljs.com>
* @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/>.
*
*/
namespace OCA\AdminAudit\Actions;
/**
* Class Files logs the actions to files
*
* @package OCA\AdminAudit\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) {
if ($params['path'] === '/' || $params['path'] === '' || $params['path'] === null) {
return;
}
$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) {
if ($params['path'] === '/' || $params['path'] === '' || $params['path'] === null) {
return;
}
$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',
]
);
}
/**
* Logs preview access to a file
*
* @param array $params
*/
public function preview(array $params) {
$this->log(
'Preview accessed: "%s" (width: "%s", height: "%s" crop: "%s", mode: "%s")',
$params,
[
'path',
'width',
'height',
'crop',
'mode'
]
);
}
}
@@ -1,108 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Joas Schilling <coding@schilljs.com>
* @author Lukas Reschke <lukas@statuscode.ch>
* @author Roger Szabo <roger.szabo@web.de>
*
* @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\AdminAudit\Actions;
use OCP\IGroup;
use OCP\IUser;
/**
* Class GroupManagement logs all group manager related events
*
* @package OCA\AdminAudit\Actions
*/
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'
]
);
}
/**
* log create group to group event
*
* @param IGroup $group
*/
public function createGroup(IGroup $group) {
$this->log('Group created: "%s"',
[
'group' => $group->getGID()
],
[
'group'
]
);
}
/**
* log delete group to group event
*
* @param IGroup $group
*/
public function deleteGroup(IGroup $group) {
$this->log('Group deleted: "%s"',
[
'group' => $group->getGID()
],
[
'group'
]
);
}
}
-75
View File
@@ -1,75 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
*
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @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\AdminAudit\Actions;
use OCP\IUser;
/**
* Class Sharing logs the sharing actions
*
* @package OCA\AdminAudit\Actions
*/
class Security extends Action {
/**
* Log twofactor auth enabled
*
* @param IUser $user
* @param array $params
*/
public function twofactorFailed(IUser $user, array $params) {
$params['uid'] = $user->getUID();
$params['displayName'] = $user->getDisplayName();
$this->log(
'Failed two factor attempt by user %s (%s) with provider %s',
$params,
[
'displayName',
'uid',
'provider',
]
);
}
/**
* Logs unsharing of data
*
* @param IUser $user
* @param array $params
*/
public function twofactorSuccess(IUser $user, array $params) {
$params['uid'] = $user->getUID();
$params['displayName'] = $user->getDisplayName();
$this->log(
'Successful two factor attempt by user %s (%s) with provider %s',
$params,
[
'displayName',
'uid',
'provider',
]
);
}
}
-221
View File
@@ -1,221 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @author Joas Schilling <coding@schilljs.com>
* @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/>.
*
*/
namespace OCA\AdminAudit\Actions;
use OCP\Share;
/**
* Class Sharing logs the sharing actions
*
* @package OCA\AdminAudit\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',
]
);
} elseif($params['shareType'] === Share::SHARE_TYPE_ROOM) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the room "%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',
]
);
} elseif($params['shareType'] === Share::SHARE_TYPE_ROOM) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the room "%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',
]
);
}
}
-43
View File
@@ -1,43 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Joas Schilling <coding@schilljs.com>
*
* @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\AdminAudit\Actions;
class Trashbin extends Action {
public function delete(array $params) {
$this->log('File "%s" deleted from trash bin.',
['path' => $params['path']], ['path']
);
}
public function restore(array $params) {
$this->log('File "%s" restored from trash bin.',
['path' => $params['filePath']], ['path']
);
}
}
@@ -1,140 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Joas Schilling <coding@schilljs.com>
* @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/>.
*
*/
namespace OCA\AdminAudit\Actions;
use OCP\IUser;
/**
* Class UserManagement logs all user management related actions.
*
* @package OCA\AdminAudit\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 assignments of users (typically user backends)
*
* @param string $uid
*/
public function assign(string $uid) {
$this->log(
'UserID assigned: "%s"',
[ 'uid' => $uid ],
[ 'uid' ]
);
}
/**
* Log deletion of users
*
* @param array $params
*/
public function delete(array $params) {
$this->log(
'User deleted: "%s"',
$params,
[
'uid',
]
);
}
/**
* Log unassignments of users (typically user backends, no data removed)
*
* @param string $uid
*/
public function unassign(string $uid) {
$this->log(
'UserID unassigned: "%s"',
[ 'uid' => $uid ],
[ 'uid' ]
);
}
/**
* Log enabling of users
*
* @param array $params
*/
public function change(array $params) {
switch($params['feature']) {
case 'enabled':
$this->log(
$params['value'] === 'true' ? 'User enabled: "%s"' : 'User disabled: "%s"',
['user' => $params['user']->getUID()],
[
'user',
]
);
break;
case 'eMailAddress':
$this->log(
'Email address changed for user %s',
['user' => $params['user']->getUID()],
[
'user',
]
);
break;
}
}
/**
* 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',
]
);
}
}
}
-48
View File
@@ -1,48 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Bjoern Schiessle <bjoern@schiessle.org>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Joas Schilling <coding@schilljs.com>
*
* @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\AdminAudit\Actions;
class Versions extends Action {
public function rollback(array $params) {
$this->log('Version "%s" of "%s" was restored.',
[
'version' => $params['revision'],
'path' => $params['path']
],
['version', 'path']
);
}
public function delete(array $params) {
$this->log('Version "%s" was deleted.',
['path' => $params['path']],
['path']
);
}
}
@@ -1,257 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2017 Joas Schilling <coding@schilljs.com>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @author Joas Schilling <coding@schilljs.com>
*
* @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\AdminAudit\AppInfo;
use OC\Files\Filesystem;
use OC\Files\Node\File;
use OC\Group\Manager;
use OC\User\Session;
use OCA\AdminAudit\Actions\AppManagement;
use OCA\AdminAudit\Actions\Auth;
use OCA\AdminAudit\Actions\Console;
use OCA\AdminAudit\Actions\Files;
use OCA\AdminAudit\Actions\GroupManagement;
use OCA\AdminAudit\Actions\Security;
use OCA\AdminAudit\Actions\Sharing;
use OCA\AdminAudit\Actions\Trashbin;
use OCA\AdminAudit\Actions\UserManagement;
use OCA\AdminAudit\Actions\Versions;
use OCP\App\ManagerEvent;
use OCP\AppFramework\App;
use OCP\Authentication\TwoFactorAuth\IProvider;
use OCP\Console\ConsoleEvent;
use OCP\IGroupManager;
use OCP\ILogger;
use OCP\IPreview;
use OCP\IUserSession;
use OCP\Util;
use Symfony\Component\EventDispatcher\GenericEvent;
use OCP\Share;
class Application extends App {
/** @var ILogger */
protected $logger;
public function __construct() {
parent::__construct('admin_audit');
$this->initLogger();
}
public function initLogger() {
$c = $this->getContainer()->getServer();
$config = $c->getConfig();
$default = $config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/audit.log';
$logFile = $config->getAppValue('admin_audit', 'logfile', $default);
if($logFile === null) {
$this->logger = $c->getLogger();
return;
}
$this->logger = $c->getLogFactory()->getCustomLogger($logFile);
}
public function register() {
$this->registerHooks();
}
/**
* Register hooks in order to log them
*/
protected function registerHooks() {
$this->userManagementHooks();
$this->groupHooks();
$this->authHooks();
$this->consoleHooks();
$this->appHooks();
$this->sharingHooks();
$this->fileHooks();
$this->trashbinHooks();
$this->versionsHooks();
$this->securityHooks();
}
protected function userManagementHooks() {
$userActions = new UserManagement($this->logger);
Util::connectHook('OC_User', 'post_createUser', $userActions, 'create');
Util::connectHook('OC_User', 'post_deleteUser', $userActions, 'delete');
Util::connectHook('OC_User', 'changeUser', $userActions, 'change');
/** @var IUserSession|Session $userSession */
$userSession = $this->getContainer()->getServer()->getUserSession();
$userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']);
$userSession->listen('\OC\User', 'assignedUserId', [$userActions, 'assign']);
$userSession->listen('\OC\User', 'postUnassignedUserId', [$userActions, 'unassign']);
}
protected function groupHooks() {
$groupActions = new GroupManagement($this->logger);
/** @var IGroupManager|Manager $groupManager */
$groupManager = $this->getContainer()->getServer()->getGroupManager();
$groupManager->listen('\OC\Group', 'postRemoveUser', [$groupActions, 'removeUser']);
$groupManager->listen('\OC\Group', 'postAddUser', [$groupActions, 'addUser']);
$groupManager->listen('\OC\Group', 'postDelete', [$groupActions, 'deleteGroup']);
$groupManager->listen('\OC\Group', 'postCreate', [$groupActions, 'createGroup']);
}
protected function sharingHooks() {
$shareActions = new Sharing($this->logger);
Util::connectHook(Share::class, 'post_shared', $shareActions, 'shared');
Util::connectHook(Share::class, 'post_unshare', $shareActions, 'unshare');
Util::connectHook(Share::class, 'post_update_permissions', $shareActions, 'updatePermissions');
Util::connectHook(Share::class, 'post_update_password', $shareActions, 'updatePassword');
Util::connectHook(Share::class, 'post_set_expiration_date', $shareActions, 'updateExpirationDate');
Util::connectHook(Share::class, 'share_link_access', $shareActions, 'shareAccessed');
}
protected 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');
}
protected function appHooks() {
$eventDispatcher = $this->getContainer()->getServer()->getEventDispatcher();
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE, function(ManagerEvent $event) {
$appActions = new AppManagement($this->logger);
$appActions->enableApp($event->getAppID());
});
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_ENABLE_FOR_GROUPS, function(ManagerEvent $event) {
$appActions = new AppManagement($this->logger);
$appActions->enableAppForGroups($event->getAppID(), $event->getGroups());
});
$eventDispatcher->addListener(ManagerEvent::EVENT_APP_DISABLE, function(ManagerEvent $event) {
$appActions = new AppManagement($this->logger);
$appActions->disableApp($event->getAppID());
});
}
protected function consoleHooks() {
$eventDispatcher = $this->getContainer()->getServer()->getEventDispatcher();
$eventDispatcher->addListener(ConsoleEvent::EVENT_RUN, function(ConsoleEvent $event) {
$appActions = new Console($this->logger);
$appActions->runCommand($event->getArguments());
});
}
protected function fileHooks() {
$fileActions = new Files($this->logger);
$eventDispatcher = $this->getContainer()->getServer()->getEventDispatcher();
$eventDispatcher->addListener(
IPreview::EVENT,
function(GenericEvent $event) use ($fileActions) {
/** @var File $file */
$file = $event->getSubject();
$fileActions->preview([
'path' => substr($file->getInternalPath(), 5),
'width' => $event->getArguments()['width'],
'height' => $event->getArguments()['height'],
'crop' => $event->getArguments()['crop'],
'mode' => $event->getArguments()['mode']
]);
}
);
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'
);
}
protected function versionsHooks() {
$versionsActions = new Versions($this->logger);
Util::connectHook('\OCP\Versions', 'rollback', $versionsActions, 'rollback');
Util::connectHook('\OCP\Versions', 'delete',$versionsActions, 'delete');
}
protected function trashbinHooks() {
$trashActions = new Trashbin($this->logger);
Util::connectHook('\OCP\Trashbin', 'preDelete', $trashActions, 'delete');
Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', $trashActions, 'restore');
}
protected function securityHooks() {
$eventDispatcher = $this->getContainer()->getServer()->getEventDispatcher();
$eventDispatcher->addListener(IProvider::EVENT_SUCCESS, function(GenericEvent $event) {
$security = new Security($this->logger);
$security->twofactorSuccess($event->getSubject(), $event->getArguments());
});
$eventDispatcher->addListener(IProvider::EVENT_FAILED, function(GenericEvent $event) {
$security = new Security($this->logger);
$security->twofactorFailed($event->getSubject(), $event->getArguments());
});
}
}
@@ -1,52 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2018 Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
*
* @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\AdminAudit\BackgroundJobs;
use OC\BackgroundJob\TimedJob;
use OCP\Log\RotationTrait;
class Rotate extends TimedJob {
use RotationTrait;
public function __construct() {
$this->setInterval(60*60*3);
}
protected function run($argument) {
$config = \OC::$server->getConfig();
$default = $config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/audit.log';
$this->filePath = $config->getAppValue('admin_audit', 'logfile', $default);
if($this->filePath === '') {
// default log file, nothing to do
return;
}
$this->maxSize = $config->getSystemValue('log_rotate_size', 100 * 1024 * 1024);
if($this->shouldRotateBySize()) {
$this->rotate();
}
}
}
+88
View File
@@ -0,0 +1,88 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @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/>.
*
*/
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
* @param bool $obfuscateParameters
*/
public function log($text,
array $params,
array $elements,
$obfuscateParameters = false) {
foreach($elements as $element) {
if(!isset($params[$element])) {
if ($obfuscateParameters) {
$this->logger->critical(
'$params["'.$element.'"] was missing.',
['app' => 'admin_audit']
);
} else {
$this->logger->critical(
sprintf(
'$params["'.$element.'"] was missing. Transferred value: %s',
print_r($params, true)
),
['app' => 'admin_audit']
);
}
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'
]
);
}
}
+60
View File
@@ -0,0 +1,60 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @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/>.
*
*/
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',
],
true
);
}
public function loginSuccessful(array $params) {
$this->log(
'Login successful: "%s"',
$params,
[
'uid',
],
true
);
}
public function logout(array $params) {
$this->log(
'Logout occurred',
[],
[]
);
}
}
+137
View File
@@ -0,0 +1,137 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @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/>.
*
*/
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',
]
);
}
}
@@ -0,0 +1,76 @@
<?php
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @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/>.
*
*/
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'
]
);
}
}
+191
View File
@@ -0,0 +1,191 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @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/>.
*
*/
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',
]
);
}
}
+45
View File
@@ -0,0 +1,45 @@
<?php
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @author 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 {
public function delete($params) {
$this->log('File "%s" deleted from trash bin.',
['path' => $params['path']], ['path']
);
}
public function restore($params) {
$this->log('File "%s" restored from trash bin.',
['path' => $params['filePath']], ['path']
);
}
}
@@ -0,0 +1,81 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @author Bjoern Schiessle <bjoern@schiessle.org>
* @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/>.
*
*/
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',
]
);
}
}
}
+47
View File
@@ -0,0 +1,47 @@
<?php
/**
* @copyright Bjoern Schiessle <bjoern@schiessle.org>
*
* @author 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']
);
}
}
+188
View File
@@ -0,0 +1,188 @@
<?php
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @author 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);
Util::connectHook('\OCP\Trashbin', 'preDelete', $trashActions, 'delete');
Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', $trashActions, 'restore');
}
}
@@ -1,75 +0,0 @@
<?php
declare(strict_types=1);
/**
* @copyright Copyright (c) 2018 Roeland Jago Douma <roeland@famdouma.nl>
*
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
* @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\AdminAudit\Tests\Actions;
use OCA\AdminAudit\Actions\Security;
use OCP\ILogger;
use OCP\IUser;
use Test\TestCase;
class SecurityTest extends TestCase {
/** @var ILogger|\PHPUnit_Framework_MockObject_MockObject */
private $logger;
/** @var Security */
private $security;
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject */
private $user;
public function setUp() {
parent::setUp();
$this->logger = $this->createMock(ILogger::class);
$this->security = new Security($this->logger);
$this->user = $this->createMock(IUser::class);
$this->user->method('getUID')->willReturn('myuid');
$this->user->method('getDisplayName')->willReturn('mydisplayname');
}
public function testTwofactorFailed() {
$this->logger->expects($this->once())
->method('info')
->with(
$this->equalTo('Failed two factor attempt by user mydisplayname (myuid) with provider myprovider'),
['app' => 'admin_audit']
);
$this->security->twofactorFailed($this->user, ['provider' => 'myprovider']);
}
public function testTwofactorSuccess() {
$this->logger->expects($this->once())
->method('info')
->with(
$this->equalTo('Successful two factor attempt by user mydisplayname (myuid) with provider myprovider'),
['app' => 'admin_audit']
);
$this->security->twofactorSuccess($this->user, ['provider' => 'myprovider']);
}
}
-661
View File
@@ -1,661 +0,0 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.
-2
View File
@@ -1,2 +0,0 @@
# cloud_federation_api
The cloud federation API allows to share information like files, contacts, calendars, incoming calls, etc accross Nextcloud instances
-22
View File
@@ -1,22 +0,0 @@
<?php
/**
* @copyright Copyright (c) 2018 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/>.
*
*/
$app = new \OCA\CloudFederationAPI\AppInfo\Application();
@@ -1,20 +0,0 @@
<?xml version="1.0"?>
<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
<id>cloud_federation_api</id>
<name>Cloud Federation API</name>
<summary>Enable clouds to communicate with each other and exchange data</summary>
<description>The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data.</description>
<version>0.0.1</version>
<licence>agpl</licence>
<author>Bjoern Schiessle</author>
<namespace>CloudFederationAPI</namespace>
<types>
<filesystem/>
</types>
<category>files</category>
<bugs>https://github.com/nextcloud/cloud_federation/issues</bugs>
<dependencies>
<nextcloud min-version="14" max-version="14"/>
</dependencies>
</info>

Some files were not shown because too many files have changed in this diff Show More