Compare commits

...

753 Commits

Author SHA1 Message Date
Lukas Reschke
b25db4bf01 v9.0.53 2016-08-01 10:57:23 +02:00
Lukas Reschke
6d9809ef45 Merge pull request #310 from nextcloud/version-number
Increase version to 9.0.52
2016-07-05 11:07:11 +02:00
Lukas Reschke
04d88bc874 Increase version to 9.0.52 2016-07-05 11:04:01 +02:00
Lukas Reschke
179a9c28b7 Merge pull request #308 from nextcloud/use-proper-branding-again
Use proper branding again
2016-07-04 21:09:40 +02:00
Lukas Reschke
70f36b40df Use proper branding again
The merge of the theming app changed these defaults back again.
2016-07-04 20:43:35 +02:00
Morris Jobke
01f6f26343 Merge pull request #304 from nextcloud/versions-fix
add additional check if we have a valid uid and filename
2016-07-04 12:24:10 +02:00
Morris Jobke
dd8af5c36d Merge pull request #298 from nextcloud/use-parameterized-query
[stable9] Use paramterized parameter for \OC\SystemTag\SystemTagManager
2016-07-04 11:50:06 +02:00
Bjoern Schiessle
717b480a2e add additional check if we have a valid uid and filename 2016-07-04 11:00:50 +02:00
Morris Jobke
42d8ef5a0e Merge pull request #291 from nextcloud/stable9-update-transifex-link
[stable9] We have our own Transifex org now ;)
2016-07-04 08:07:01 +02:00
Lukas Reschke
ce70ea3501 [stable9] Use paramterized parameter for \OC\SystemTag\SystemTagManager
$nameSearchPattern was passed in and directly appended to the SQL query. Luckily the code path isn't reached anywhere in Nextcloud or the included apps.
2016-07-03 16:50:28 +02:00
Marius Blüm
0ae10eaf1e We have our own Transifex org now ;) 2016-07-02 14:22:13 +02:00
Lukas Reschke
37a6636840 Merge pull request #287 from nextcloud/rc1-for-9-0-52
9.0.52 RC1
2016-07-01 23:37:31 +02:00
Lukas Reschke
bc025ee777 9.0.52 RC1 2016-07-01 23:11:16 +02:00
Lukas Reschke
531e69947f Revert "Revert "[stable9] Don't show the updater if updater is incompatible""
This reverts commit f896470542.
2016-07-01 23:09:32 +02:00
Björn Schießle
12796500e0 Merge pull request #277 from nextcloud/traversal-directory-js
[stable9] Do not allow directory traversal using "../" in JS file list
2016-07-01 18:00:25 +02:00
Björn Schießle
756b0c05b6 Merge pull request #282 from nextcloud/fix-tests
Fix unit test compatibility issues with phpunit 5.2+
2016-07-01 17:11:19 +02:00
Joas Schilling
ce6009e475 Fix Single execution of preview tests 2016-07-01 16:41:46 +02:00
Joas Schilling
3399d66c8e Fix Comments tests with phpunit 5.2+ 2016-07-01 16:41:29 +02:00
Joas Schilling
eb715dd1b6 Fix Sharing app tests with phpunit 5.2+ 2016-07-01 16:29:53 +02:00
Joas Schilling
fd5bdf5e1a Fix Encryption tests with phpunit 5.2+ 2016-07-01 16:22:50 +02:00
Björn Schießle
7e4366ec86 Merge pull request #244 from nextcloud/theming-app-stable9
[stable9] theming app
2016-07-01 16:22:01 +02:00
Joas Schilling
28b3a0a37e Fix DAV tests with phpunit 5.2+ 2016-07-01 16:16:40 +02:00
Joas Schilling
75c172a062 Fix Share Manager tests with phpunit 5.2+ 2016-07-01 16:08:26 +02:00
Joas Schilling
777dbec369 Fix Notification tests with phpunit 5.2+ 2016-07-01 16:05:16 +02:00
Joas Schilling
ea9c79b7c0 Fix Appframework tests with phpunit 5.2+ 2016-07-01 16:05:00 +02:00
Joas Schilling
197e94457f Fix AvatarControllerTest with phpunit 5.2+ 2016-07-01 16:04:25 +02:00
Joas Schilling
497c3fbfd7 Also fix the dav test 2016-07-01 15:45:58 +02:00
Joas Schilling
8ab26381a4 Clear the storage wrappers after clearing the hooks 2016-07-01 15:42:19 +02:00
Morris Jobke
6e3bf06c1d Merge pull request #274 from nextcloud/stable9-sync-upstream
[Stable9] sync upstream
2016-07-01 15:20:08 +02:00
Lukas Reschke
dea8e29289 Match on 405 2016-07-01 15:19:08 +02:00
Lukas Reschke
8aa0832bd4 Match for /../ 2016-07-01 15:00:31 +02:00
Lukas Reschke
2da43e3751 Do not allow directory traversal using "../"
We should not allow directory traversals using "../" here.

To test access the following URL once with and then without this patch:

http://localhost/server/index.php/apps/files/?dir=../../This+Should+Not+Be+Here
2016-07-01 13:33:00 +02:00
Lukas Reschke
2c785ebdf1 Merge remote-tracking branch 'upstream/stable9' into stable9-sync-upstream 2016-07-01 11:31:15 +02:00
Vincent Petry
abdc587b5c Merge pull request #25264 from owncloud/stable9-search-fixsearchfromotherfilelists
[stable9] Fix search result link for file results outside default list
2016-07-01 11:22:35 +02:00
Vincent Petry
98818283e5 Merge pull request #25234 from owncloud/stable9-iedavclient-nullheaders
[stable9] Init the headers in iedavclient.js
2016-07-01 11:22:06 +02:00
Morris Jobke
23cc465b0d Merge pull request #254 from nextcloud/fix-229-stable9
[stable9] get only vcard which match both the address book id and the vcard uri
2016-06-30 17:43:46 +02:00
Bjoern Schiessle
3cb7672b06 initial commit for the theming app 2016-06-30 17:26:03 +02:00
Björn Schießle
eed6c6a8b9 Merge pull request #266 from nextcloud/fix-262
[stable9] getShareByToken() should also consider remote shares
2016-06-30 17:17:21 +02:00
Lukas Reschke
d52343fc4e Merge pull request #260 from nextcloud/fix-versions-stable9
[stable9] check permissions before rollback
2016-06-30 17:15:28 +02:00
Lukas Reschke
912f07e2a9 Merge pull request #249 from nextcloud/add-exemption-for-acs
[stable9] Add exemption for ACS endpoint
2016-06-30 17:06:11 +02:00
Marius Blüm
1f9735b204 Merge pull request #261 from nextcloud/stable9-fix243
[stable9] targets 3rdparty submodule from Nc instead of oC
2016-06-30 17:05:36 +02:00
Morris Jobke
07c43751d1 Merge pull request #265 from nextcloud/stable9-add-wnd
[stable9] Backport WND
2016-06-30 16:47:29 +02:00
Bjoern Schiessle
347787d92c getShareByToken() should also consider remote shares 2016-06-30 16:45:13 +02:00
Marius Blüm
212ff8ef6f Merge pull request #251 from nextcloud/make-it-user-saml
Mark user_saml official and kill user_shibboleth
2016-06-30 16:36:23 +02:00
Morris Jobke
be7980c826 Merge pull request #263 from nextcloud/dav-permission-check-stable9
add some additonal permission checks to the webdav backend
2016-06-30 15:59:21 +02:00
Lukas Reschke
da0666e4f0 Name method properly 2016-06-30 15:37:33 +02:00
Lukas Reschke
a80af7079d [stable9] Backport WND
Backports:

- https://github.com/nextcloud/server/pull/233
- https://github.com/nextcloud/server/pull/190
- https://github.com/nextcloud/server/pull/188
2016-06-30 15:36:03 +02:00
Lukas Reschke
29929c9728 Merge pull request #240 from nextcloud/password_policy_events_stable9
[stable9] add events to check passwords with the password policy app
2016-06-30 15:06:40 +02:00
Bjoern Schiessle
3491400261 add some additonal permission checks to the webdav backend 2016-06-30 15:05:13 +02:00
Marius Blüm
4b05f1c7b4 targets 3rdparty submodule from Nc instead of oC
* backport of #245
* fixes #243
2016-06-30 14:51:47 +02:00
Lukas Reschke
723cf78169 Merge pull request #259 from nextcloud/stable9-set-disposition
[stable9] Set content-type to "application/octet-stream"
2016-06-30 14:29:11 +02:00
Bjoern Schiessle
1208953ba1 check permissions before rollback 2016-06-30 14:22:40 +02:00
Lukas Reschke
94975af6db [stable9] Set content-type to "application/octet-stream"
Some browsers such as Firefox on Microsoft Windows otherwise do offer to open the file directly which is kinda silly.

Backport of https://github.com/nextcloud/server/pull/258
2016-06-30 13:04:54 +02:00
Bjoern Schiessle
6a61cc0e35 get only vcard which match both the address book id and the vcard uri 2016-06-30 10:46:21 +02:00
Lukas Reschke
5037d097e1 Mark user_saml official and kill user_shibboleth 2016-06-30 00:52:56 +02:00
Lukas Reschke
f56ea98993 Add exemption for ACS endpoint
In a SAML scenario we don't get any strict or lax cookie send for
the ACS endpoint. Since we have some legacy code in Nextcloud
(direct PHP files) the enforcement of lax cookies is performed here
instead of the middleware.

This means we cannot exclude some routes from the cookie validation,
which normally is not a problem but is a little bit cumbersome for
this use-case.

Once the old legacy PHP endpoints have been removed we can move
the verification into a middleware and also adds some exemptions.

Not super awesome code to have but the best that I could come up
with that doesn't add another ton of technical debt.
2016-06-29 19:51:27 +02:00
Daniel Molkentin
735411d166 ownCloud 9.0.3 2016-06-29 11:20:32 +02:00
Bjoern Schiessle
27059107f8 add events to check passwords with the password policy app 2016-06-28 11:43:23 +02:00
Lukas Reschke
95f6dd909b Merge pull request #227 from nextcloud/stable9-channel-should-be-inside-config
[stable9] Move OC_Channel to system config
2016-06-27 21:20:36 +02:00
Lukas Reschke
9f7141d26d Move OC_Channel to system config
The Nextcloud and ownCloud updaters allow someone to configure a custom release channel, this can then be used to publish different versions. (e.g. one channel stays on 9.x while another one already gets 10.x)

There is however one big problem with it: The value is effectively stored in the app config, which is stored in the database. So to be able to read the update channel a connection to the database is necessary. This is quite error prone and also causes some of the issues in the original ownCloud updater.

This moves the channel registration to the config.php and also includes a repair step.
2016-06-27 17:13:40 +02:00
Marius Blüm
efc4a1b3bf Merge pull request #228 from nextcloud/show-updater-all-the-time
Revert "[stable9] Don't show the updater if updater is incompatible"
2016-06-27 06:53:20 +02:00
Morris Jobke
62391e9776 Merge pull request #210 from Zollak/stable9-config-sample
[stable9] changed ownCloud to Nextcloud, updated config options
2016-06-26 23:59:44 +02:00
Patric Lenhart
c9898fac4a removed more options that are not in stable9 2016-06-26 23:32:40 +02:00
Lukas Reschke
f896470542 Revert "[stable9] Don't show the updater if updater is incompatible"
This reverts commit 5e2bf16db1.
2016-06-26 17:33:05 +02:00
Patric Lenhart
506e739a20 removed parameter that is not relevant for stable9 2016-06-26 15:17:38 +02:00
Lukas Reschke
49a916fb46 Merge pull request #225 from nextcloud/stable9-upstream-sync
[Stable9] upstream sync
2016-06-26 14:50:58 +02:00
Lukas Reschke
dcb5f00461 Merge remote-tracking branch 'upstream/stable9' into stable9-upstream-sync 2016-06-26 12:48:19 +02:00
Vincent Petry
fd05ff0392 Hide search results after switching directory
When clicking on a folder result in the search result list, the result
box for "results in another folder" must disappear.
2016-06-24 17:14:12 +02:00
Vincent Petry
3128a2c03e Fix search result link for file results outside default list
When outside the "All files" list, the search result link must properly
redirect to the "All files" list.
2016-06-24 17:14:04 +02:00
Christoph Wurst
907c90165a Merge pull request #25256 from owncloud/stable9-setupchecks-preventreload
[stable9] Don't reload page in case of auth errors during setup checks
2016-06-24 17:12:42 +02:00
Marius Blüm
ea327cdea1 Merge pull request #216 from nextcloud/stable9-replace-occurence-of-owncloud-by-nextcloud
[stable9] Replace occurence of "ownCloud" by "Nextcloud"
2016-06-24 15:01:53 +02:00
Marius Blüm
7a3aafda96 Replace occurence of "ownCloud" by "Nextcloud"
* backport of #214
2016-06-24 12:50:43 +02:00
Vincent Petry
e366ed6485 Don't reload page in case of auth errors during setup checks
If an error occurs during setup checks, do not let the global ajax
error handler reload the page.
2016-06-24 09:51:26 +02:00
Vincent Petry
eb8e151458 Merge pull request #25248 from owncloud/stable9-unique_targets
[stable9] On mount make sure multiple shares with same target map to unique one…
2016-06-23 18:08:54 +02:00
Patric Lenhart
2cf4ae2925 changed ownCloud to Nextcloud, updated config options 2016-06-23 16:11:56 +02:00
Roeland Douma
b6192c39d8 On mount make sure multiple shares with same target map to unique ones (#23937)
Scenario:
user0 shares a folder 'foo' with user2
user1 shares a folder 'foo' with user2
user2 logs in

Before: show only the 'foo' from user1

After: show both.

* Added intergration tests
2016-06-23 14:27:51 +02:00
Vincent Petry
f44500f77a Init the headers in iedavclient.js 2016-06-22 18:16:32 +02:00
Vincent Petry
3aaa33d9d4 Merge pull request #25228 from owncloud/stable9-enc-revertversionsize
[stable9] Rollback version must also adjust cached size
2016-06-22 18:11:20 +02:00
Vincent Petry
880ff122f1 Rollback version must also adjust cached size 2016-06-22 15:18:19 +02:00
Lukas Reschke
bab4f65388 Merge pull request #203 from nextcloud/fix_audit_log-stable9
[stable9] don't try to log the currently logged in user, this fails on cronjobs
2016-06-22 15:09:57 +02:00
Bjoern Schiessle
a7766ca72e don't try to log the currently logged in user, this fails on cronjobs. The users are logged anyway 2016-06-22 14:39:07 +02:00
Morris Jobke
e26386e372 Merge pull request #200 from nextcloud/stable9-backport-197
[stable9] some text-changes to nextcloud
2016-06-22 11:01:55 +02:00
Björn Schießle
29a83d8ac6 Merge pull request #199 from nextcloud/stable9-backport-194
[stable9] default.php for nextcloud
2016-06-22 10:40:42 +02:00
Joachim Sokolowski
b1d60eb738 some text-changes to nextcloud 2016-06-22 10:22:55 +02:00
Joachim Sokolowski
e69f0cbdec default.php for nextcloud
changing it to nextcloud
2016-06-22 10:10:09 +02:00
Marius Blüm
a9a7e0edee Merge pull request #192 from nextcloud/drop-authtoken
Drop old authtoken table (pre 5.0.0)
2016-06-21 21:28:01 +02:00
Marius Blüm
ce3437e755 Merge pull request #193 from nextcloud/stable9-backport-191
[stable9] Add postgres to CI
2016-06-21 21:23:20 +02:00
Morris Jobke
8153290dd6 Add postgres to CI 2016-06-21 16:49:40 +02:00
Morris Jobke
ce7d9998dc Drop old authtoken table (pre 5.0.0)
* fixes #155
2016-06-21 16:35:08 +02:00
Vincent Petry
54209abb74 Merge pull request #25197 from owncloud/fix-npe-in-user-ldap-stable9
[stable9] Fix null pointer exception in user_ldap
2016-06-21 16:10:48 +02:00
Vincent Petry
ddd4f367c3 Merge pull request #25199 from owncloud/shared-mount-catch-9
[9.0] Catch exceptions while creating shared mounts
2016-06-21 16:07:44 +02:00
Juan Pablo Villafañez
bf7a08f62d dd support to know where the storage test comes from (#25166) 2016-06-21 15:04:08 +02:00
Robin Appelman
fa9ba64552 Catch exceptions while creating shared mounts 2016-06-21 12:45:33 +02:00
Jörn Friedrich Dreyer
11c1d399af Fix null pointer exception in user_ldap 2016-06-21 11:16:15 +02:00
Lukas Reschke
0236535fd3 Merge pull request #178 from nextcloud/fix-it
[stable9] Branding
2016-06-20 22:43:28 +02:00
Lukas Reschke
851b277a8e Adjust integration test 2016-06-20 22:28:13 +02:00
Lukas Reschke
9a0b78e757 Merge pull request #177 from nextcloud/v9.0.51
v9.0.51
2016-06-20 22:21:35 +02:00
Lukas Reschke
a11896766c Some more branding 2016-06-20 22:10:20 +02:00
Lukas Reschke
ceea666190 v9.0.51 2016-06-20 21:46:06 +02:00
Morris Jobke
8abf6e0ed1 fixed code 2016-06-20 18:50:56 +02:00
Morris Jobke
555a3b597e fixed translations 2016-06-20 18:50:46 +02:00
Morris Jobke
bbe16db5a6 Merge pull request #174 from nextcloud/stable9-upstream-sync
[stable9] Upstream Sync
2016-06-20 18:02:18 +02:00
Vincent Petry
dc3db4e1c0 Delay files_sharing's registerMountProviders
This moves registerMountProviders until after the sharing backends were
registered. In some situations registerMountProviders will trigger
listeners which might require filesystem access which itself would
mount shares, which itself requires the sharing backends to be
initialized.
2016-06-20 17:39:00 +02:00
Vincent Petry
f11e486025 Make getShareFolder use given view instead of static FS (#25150) 2016-06-20 17:39:00 +02:00
Jörn Friedrich Dreyer
cf3b5e3e86 Capped cache for user config 2016-06-20 17:39:00 +02:00
Roeland Jago Douma
07436d089b Do not recurse link share fetching
* Might fix an issue on oracle
2016-06-20 17:38:59 +02:00
Vincent Petry
280c288bc0 Convert Dropbox Forbidden exception to StorageNotAvailableException 2016-06-20 17:37:55 +02:00
Jan-Christoph Borchardt
5e6a724c5c fix grouped input fields, make sure they take precedence 2016-06-20 17:37:50 +02:00
Christoph Wurst
43065e7369 load authentication apps first 2016-06-20 17:37:45 +02:00
Vincent Petry
ac56629c86 Capped cache for cache info in UserMountCache 2016-06-20 17:37:38 +02:00
Jörn Friedrich Dreyer
38663e13cc Allow empty host when installing on oracle via CLI (#25034) 2016-06-20 17:37:31 +02:00
Jörn Friedrich Dreyer
459aa933b9 decrease initial users to load to 50
Prevents timeouts on the initial loading of users. proper fix will be in https://github.com/owncloud/core/pull/10994
Workaround for https://github.com/owncloud/core/issues/24734
2016-06-20 17:37:25 +02:00
Thomas Müller
0934153ed2 Use an explicit version of sabre/dav to allow caching on the jenkins slaves - fixes #25087 (#25089) 2016-06-20 17:37:17 +02:00
Vincent Petry
3189c22ff3 Use capped cache for encryption's user access list 2016-06-20 17:37:09 +02:00
Vincent Petry
826654bb70 Merge pull request #25165 from owncloud/stable9-capped-user-cache
[stable9] Capped cache for user config
2016-06-20 17:15:18 +02:00
Vincent Petry
3e3c17a577 Merge pull request #25187 from owncloud/share-app-initorder-stable9
[stable9] Delay files_sharing's registerMountProviders
2016-06-20 17:10:30 +02:00
Morris Jobke
4ca0963973 Merge pull request #170 from nextcloud/fix-references-stable9
[stable9] Fix some ownCloud/Nextcloud references
2016-06-20 16:02:32 +02:00
Björn Schießle
4495b539a5 Merge pull request #172 from nextcloud/fix-references-trash-and-versions-stable9
[stable9] no need to mention ownCloud explicitely in the versions and trash bin app
2016-06-20 15:50:32 +02:00
Bjoern Schiessle
741f5fefea no need to mention ownCloud explicitely 2016-06-20 15:16:04 +02:00
Bjoern Schiessle
bf15ec5914 fix references in encryption app 2016-06-20 15:09:08 +02:00
Lukas Reschke
1d5d777c2d Merge pull request #110 from nextcloud/stable9-soften-policy-if-no-cookie-is-sent
Soften the cookie check if no cookies are sent
2016-06-20 15:03:14 +02:00
Bjoern Schiessle
5dd48347ea fix references in the federation app 2016-06-20 15:02:58 +02:00
Bjoern Schiessle
299f854f00 fix references in the federated files sharing provider 2016-06-20 14:50:13 +02:00
Vincent Petry
2f61c2963c Delay files_sharing's registerMountProviders
This moves registerMountProviders until after the sharing backends were
registered. In some situations registerMountProviders will trigger
listeners which might require filesystem access which itself would
mount shares, which itself requires the sharing backends to be
initialized.
2016-06-20 13:48:00 +02:00
Björn Schießle
eabf633d66 Merge pull request #161 from nextcloud/stable9-backport-160
[stable9] fix translations
2016-06-20 13:09:47 +02:00
Vincent Petry
0129437cd5 Make getShareFolder use given view instead of static FS (#25150) 2016-06-20 12:02:04 +02:00
Morris Jobke
3a4a0ef009 fix translations 2016-06-20 08:51:26 +02:00
Morris Jobke
03dfb22b46 Merge pull request #134 from hailthemelody/stable9-backport-updater-url
[stable9] revise updater.server.url to reflect nextcloud.org URL
2016-06-19 10:27:44 +02:00
Vincent Petry
a3111e8589 Merge pull request #25160 from owncloud/fix-oracle-endless-loop-stable9
Do not recurse link share fetching
2016-06-17 15:24:47 +02:00
Jörn Friedrich Dreyer
0e3682d810 Capped cache for user config 2016-06-17 12:46:28 +02:00
Roeland Jago Douma
2d7bbf4a63 Do not recurse link share fetching
* Might fix an issue on oracle
2016-06-17 11:09:27 +02:00
Vincent Petry
7aa825f7dc Revert "[stable9] Remove shares of the root folder" (#25157) 2016-06-17 11:08:26 +02:00
Vincent Petry
b5d3e877f1 Remove shares of the root folder (#25138) 2016-06-17 10:06:08 +02:00
Daniel Molkentin
2ce078e7c3 ownCloud 9.0.3 RC1 2016-06-16 18:25:42 +02:00
Vincent Petry
82384ab91c Merge pull request #25149 from owncloud/backport25146
–emit correct signal when disabling an app
2016-06-16 18:06:48 +02:00
Jörn Friedrich Dreyer
3ac02c9032 –emit correct signal when disabling an app 2016-06-16 17:17:02 +02:00
Vincent Petry
f429be1e1d Merge pull request #25137 from owncloud/stable9-backport-25126
[stable9] load authentication apps first
2016-06-16 17:02:52 +02:00
Vincent Petry
d55ad778ae Merge pull request #25148 from owncloud/stable9-dropbox-catchratelimit
[stable9] Convert Dropbox Forbidden exception to StorageNotAvailableException
2016-06-16 17:02:42 +02:00
=
6d9a4759d8 revise updater.server.url to reflect nextcloud.org URL, also it's comment 2016-06-16 10:55:25 -04:00
Vincent Petry
5e17e992b0 Convert Dropbox Forbidden exception to StorageNotAvailableException 2016-06-16 16:05:14 +02:00
Vincent Petry
b1e60cc349 Merge pull request #25143 from owncloud/stable9-fix-grouped-inputs
[9.0] fix grouped input fields, make sure they take precedence
2016-06-16 12:32:20 +02:00
Jan-Christoph Borchardt
416d4c5141 fix grouped input fields, make sure they take precedence 2016-06-16 11:44:49 +02:00
Christoph Wurst
2656f68d60 load authentication apps first 2016-06-16 11:28:02 +02:00
Vincent Petry
ffec0f197b Merge pull request #25118 from owncloud/stable9-fs-usermountcache-capped
[stable9] Capped cache for cache info in UserMountCache
2016-06-16 09:18:43 +02:00
Marius Blüm
bbfd0e2821 Merge pull request #118 from nextcloud/stable9-backport-111
[stable9] Fix strengthify issues
2016-06-15 18:57:40 +02:00
Morris Jobke
ac5122f45a fix strengthify in personal settings 2016-06-15 17:54:57 +02:00
Morris Jobke
91b089855a fix setup page strengthify
* fixes #105
2016-06-15 17:54:54 +02:00
Morris Jobke
957d35f590 Update strengthify to 0.5.1 2016-06-15 17:54:49 +02:00
Marius Blüm
fff42812c7 Merge pull request #114 from nextcloud/stable9-fix-more-button
[stable9] fix padding of 3-dot button on mobile
2016-06-15 17:32:23 +02:00
Morris Jobke
ae8f750039 Merge pull request #109 from nextcloud/stable9-ci-integration-tests
[stable9] Add integration tests
2016-06-15 16:17:03 +02:00
Jan-Christoph Borchardt
8ea06c8569 fix padding of 3-dot button on mobile 2016-06-15 15:54:30 +02:00
Vincent Petry
3da5d06aa0 Merge pull request #25052 from owncloud/stable9-webdav-download-mimetype
[stable9] DAV now returns file name with Content-Disposition header
2016-06-15 15:27:36 +02:00
Marius Blüm
76eef55ff6 Merge pull request #108 from nextcloud/stable9-backport-97
[stable9] Change name of the product in update message
2016-06-15 13:26:57 +02:00
Vincent Petry
a9c98daffb Capped cache for cache info in UserMountCache 2016-06-15 13:02:39 +02:00
Morris Jobke
7d3bc95fa6 Merge pull request #88 from nextcloud/add-strict-cookie-check-also-to-config-js
[stable9] Add strict config check to config.js
2016-06-15 12:37:39 +02:00
Lukas Reschke
bdc6d21da5 Remove duplicate data folder 2016-06-15 12:31:01 +02:00
Morris Jobke
9fc6118247 add temporary cleanup step for CI 2016-06-15 12:30:56 +02:00
Morris Jobke
bd278c2081 fix integration tests for new admin_audit app 2016-06-15 12:30:50 +02:00
Morris Jobke
97ae4d8b00 Add integration tests 2016-06-15 12:30:45 +02:00
Morris Jobke
4e323a42ba Change name of the product in update message 2016-06-15 12:25:35 +02:00
Lukas Reschke
202530f4f3 Soften the cookie check if no cookies are sent
When no cookies are sent it is not required to perform any check for the strict or lax cookie, it does not provide any significant security advantage.

It does however interfer with the Android client which requests thumbnails from the unofficial API at `/index.php/apps/files/api/v1/thumbnail/256/256/{filename}`. This endpoint expects the strict cookie to be existent to not leak the existence of files. The Android client authenticates against this endpoint using Basic Auth and without cookies in some cases at least. This will make these endpoints work again with such cases.

To test this issue the following cURL command once without the patch and once with:

> curl http://localhost/index.php/apps/files/api/v1/thumbnail/256/256/welcome.txt  -u admin -v

Without the patch the request is redirected (which the client does not obey) and with the patch the preview is returned.
2016-06-15 11:50:26 +02:00
Vincent Petry
c5a60c3ae0 Merge pull request #25084 from owncloud/stable9-enc-cappedcache-getaccesslist
[stable9] Use capped cache for encryption's user access list
2016-06-15 10:42:22 +02:00
Vincent Petry
57d3bb36eb Merge pull request #25105 from owncloud/stable9-initial-userloading-workaround
[stable9] decrease initial users to load to 50
2016-06-15 10:33:30 +02:00
Vincent Petry
173f732b9d Merge pull request #25106 from owncloud/stable9-allow-empty-host-when-installing-on-oracle-via-cli
[stable9] Allow empty host when installing on oracle via CLI (#25034)
2016-06-15 10:14:57 +02:00
Jörn Friedrich Dreyer
ea330dfa6a Allow empty host when installing on oracle via CLI (#25034) 2016-06-14 20:09:44 +02:00
Jörn Friedrich Dreyer
a0215b191d decrease initial users to load to 50
Prevents timeouts on the initial loading of users. proper fix will be in https://github.com/owncloud/core/pull/10994
Workaround for https://github.com/owncloud/core/issues/24734
2016-06-14 17:48:53 +02:00
Lukas Reschke
7a5093c43e Merge pull request #92 from nextcloud/stable9-fix-htaccess-warning
[stable9] Fix data directory warning
2016-06-14 13:39:55 +02:00
Lukas Reschke
6efe6b47ba Fix data directory warning
Otherwise always the warning is displayed that the data directory is accessible from the internet when URLs without index.php are enabled.

Fixes https://github.com/nextcloud/server/issues/91
2016-06-14 13:29:38 +02:00
Lukas Reschke
326dcd7b66 9.0.50 it is 2016-06-14 12:28:40 +02:00
Thomas Müller
3e846a4821 Use an explicit version of sabre/dav to allow caching on the jenkins slaves - fixes #25087 (#25089) 2016-06-14 12:11:35 +02:00
Lukas Reschke
d3374220f5 Merge pull request #75 from nextcloud/brand-to-nextcloud
Brand to nextcloud
2016-06-14 11:42:48 +02:00
Morris Jobke
b308b9521a Merge pull request #87 from nextcloud/add-some-basic-cache-busting
[stable9] Add some basic cache busting
2016-06-14 10:57:38 +02:00
Morris Jobke
4a22f79ac3 Merge pull request #86 from nextcloud/adjust-release-string
Adjust release string
2016-06-14 10:55:50 +02:00
Lukas Reschke
6d559ff5cf [stable9] Add strict config check to config.js 2016-06-14 09:18:33 +02:00
Lukas Reschke
3ead2b12ed Add some super basic cache busting
At least the logo should be correct after an update.....
2016-06-14 09:10:52 +02:00
Lukas Reschke
ae1ed8c205 Adjust release string 2016-06-14 08:55:25 +02:00
Lukas Reschke
b63482bd97 Merge pull request #80 from nextcloud/dont-show-updater-if-updater-is-incompatible
[stable9] Don't show the updater if updater is incompatible
2016-06-14 08:51:38 +02:00
Morris Jobke
447ab7cd99 Merge pull request #84 from nextcloud/stable9-downstream-160613
[Stable9] downstream 16-06-13
2016-06-14 00:02:59 +02:00
Lukas Reschke
5e2bf16db1 [stable9] Don't show the updater if updater is incompatible
Prevents us from breaking instances.
2016-06-13 23:49:46 +02:00
Arthur Schiwon
a761fd65f0 Merge branch 'stable9' of https://github.com/owncloud/core into downstream-160613 2016-06-13 23:45:21 +02:00
Morris Jobke
a5a42e20f9 Merge pull request #82 from nextcloud/more-branding-yay
[stable9] Add more branding
2016-06-13 23:35:11 +02:00
Morris Jobke
ee72b3bf2d Merge pull request #79 from nextcloud/stable9-this-is-nextcloud
[stable9] This is Nextcloud (CONTRIBUTING.md)
2016-06-13 23:32:54 +02:00
Lukas Reschke
b73972f3a1 Add more branding
- Shows "Nextcloud will be updated" in the updater screen
- Shows "Nextcloud" if you add a bookmark on iOS instead of "ownCloud"
2016-06-13 22:44:12 +02:00
Marius Blüm
a081923ffa [stable9] This is Nextcloud (CONTRIBUTING.md) 2016-06-13 21:33:04 +02:00
Marius Blüm
757ca9593a Merge pull request #78 from nextcloud/stable9-lgtm-noself
[stable9] LGTM: no self approval
2016-06-13 20:28:51 +02:00
Marius Blüm
5c9fa5ade7 [stable9] LGTM: no self approval 2016-06-13 20:19:57 +02:00
Lukas Reschke
9adc2bd5ef Adjust url to Nc docs 2016-06-13 19:35:05 +02:00
Lukas Reschke
7e5b0ad249 Do not link to ownCloud Federation page 2016-06-13 19:33:27 +02:00
Lukas Reschke
5727a0dbe0 Remove translate link
We don't have any translation platform yet
2016-06-13 18:53:51 +02:00
Lukas Reschke
ea0e443b88 Merge pull request #72 from nextcloud/stable9-backport-33
[stable9] Add JS Unit tests
2016-06-13 18:20:48 +02:00
Vincent Petry
9e3cf794ea Use capped cache for encryption's user access list 2016-06-13 17:47:57 +02:00
Morris Jobke
b6e102d3da place password input directly below label 2016-06-13 16:39:24 +02:00
Morris Jobke
0cbfdf7d8b revert suspicious change - please check this @schiessle & @LukasReschke 2016-06-13 16:30:20 +02:00
Morris Jobke
12df3eb71d fix unit tests 2016-06-13 16:28:52 +02:00
Morris Jobke
74a93290aa Use proper PhantomJS library and run the tests as separate step
* add dependency for phantomjs
2016-06-13 14:20:20 +02:00
Roeland Douma
d41d5c48f0 Show the path relative to the requesting user (#25067)
A share can only be requested by 3 'types' of people

* owner
* initiator
* recipient

So we have to get the path as the current user. Since that is the only
path that has any meaning to the user.

- Fixed tests
2016-06-13 12:47:21 +02:00
Roeland Douma
7863987b19 Repair job to fix permissions for avatars (#25068)
Backport of #24898

Cherry-picked:
1b66db72d9
60225284f3
28d9ad2817

But manually since we renamed stuff and the repair procedures changed
2016-06-13 12:47:02 +02:00
Vincent Petry
81761b87e4 DAV now returns file name with Content-Disposition header 2016-06-13 10:50:10 +02:00
Lukas Reschke
577cf92009 Merge pull request #70 from nextcloud/show-spinner-again
[stable9] Show spinner for files_drop again
2016-06-13 10:25:51 +02:00
Lukas Reschke
f3b299be78 Show spinner for files_drop again
Somehow the spinner wasn't there anymore after some changes. This makes it appear again.
2016-06-13 01:07:05 +02:00
Lukas Reschke
3e93bd1e68 9.0.0 alpha it is 2016-06-13 00:46:00 +02:00
Lukas Reschke
470f23c8b9 Merge pull request #54 from nextcloud/backport-upload-only-shares
[stable9] Backport files drop feature
2016-06-13 00:26:47 +02:00
Lukas Reschke
4fcc8c9140 Merge pull request #69 from nextcloud/add-owncloud-root-ca
[stable9] Add ownCloud root CA
2016-06-13 00:21:45 +02:00
Arthur Schiwon
7f5048e2e5 smaller files drop fixes
* fix infinite spinner on blacklisted files
* move HTML to template
* indentation
2016-06-13 00:15:09 +02:00
Lukas Reschke
bcf693539b Add ownCloud root CA
As the apps from the appstore are at the moment signed by the ownCloud Root CA we have to add it as fallback as well. We can remove that once Nextcloud 10 with new appstore has been released.
2016-06-13 00:08:48 +02:00
Lukas Reschke
145954d360 Merge pull request #68 from nextcloud/stable9-custom-updater-url
[stable9] Use custom updater URL
2016-06-12 23:56:03 +02:00
Lukas Reschke
eb7ed2356f [stable9] Use custom updater URL 2016-06-12 23:49:23 +02:00
Lukas Reschke
84607f42dc Link to Nextcloud Android client 2016-06-12 23:14:34 +02:00
Lukas Reschke
ce6479e3dc Update certificates to 2096 bit 2016-06-12 23:08:01 +02:00
Lukas Reschke
e647ccf375 Merge pull request #67 from nextcloud/signing-certificates
Use new certificates
2016-06-12 22:45:15 +02:00
Lukas Reschke
3f8792a28c Use new certificates 2016-06-12 22:43:00 +02:00
Lukas Reschke
df2902a701 Merge pull request #66 from nextcloud/stable9-downstream-160612
[Stable9] downstream 16-06-12
2016-06-12 20:23:47 +02:00
Arthur Schiwon
cd7a1eca3f Merge branch 'stable9' of https://github.com/owncloud/core into stable9-downstream-160612 2016-06-12 20:14:19 +02:00
Lukas Reschke
fe5a50a21f Merge pull request #65 from nextcloud/add-nextcloud-docs
Add nextcloud docs
2016-06-12 19:48:30 +02:00
Lukas Reschke
b4eefc00cd Link to Nextcloud docs 2016-06-12 19:19:46 +02:00
Lukas Reschke
b60b0f558e Link to Nextcloud domains in the help section 2016-06-12 19:15:31 +02:00
Lukas Reschke
40950edbab Revert "Remove "Help" link from personal sidebar"
This reverts commit 34ad3f7ada.
2016-06-12 19:12:35 +02:00
Lukas Reschke
689cbb1bbd Merge pull request #64 from nextcloud/stable9-more-patterns-lgtm
[stable9] Match more patterns for LGTM bot
2016-06-12 12:05:48 +02:00
Lukas Reschke
352ad5a5b8 Match more patterns for LGTM bot
Also adds :shipit: and 👍
2016-06-12 12:00:50 +02:00
Lukas Reschke
7ca1eca653 Merge pull request #62 from nextcloud/stable9-pr
Stable9 Upload progress Colour Fix
2016-06-12 11:56:26 +02:00
William Bargent
c791a95267 Upload progress nextcloud blue 2016-06-12 10:01:03 +01:00
William Bargent
f4206f1412 Sets notification background to white 2016-06-12 09:40:30 +01:00
Lukas Reschke
68c38ae8c2 [stable9] Backport files drop feature 2016-06-11 11:38:16 +02:00
Lukas Reschke
96c3a3a647 Merge pull request #51 from nextcloud/fix-some-more-branding-texts
Adjust some more branding texts
2016-06-11 10:52:52 +02:00
Lukas Reschke
7cc37b08ed Merge pull request #37 from nextcloud/downstream-stable9-160610
Downstream stable9 16-06-10
2016-06-11 10:49:45 +02:00
Lukas Reschke
218e4b48ad Adjust some more branding texts
Replaces ownCloud with Nextcloud in the user-facing messages
2016-06-11 10:46:02 +02:00
Lukas Reschke
bd8d50d125 Merge pull request #44 from nextcloud/stable9-add-same-site-cookies
[stable9] Add Same Site Cookie protection
2016-06-11 10:31:24 +02:00
Jan-Christoph Borchardt
7a10bedbc6 Merge pull request #46 from nextcloud/stable9-color-inversion
invert colors of favicons to match header and log in site, white on blue
2016-06-10 18:25:41 +02:00
Jan-Christoph Borchardt
d969ceef9e invert colors of favicons to match header and log in site, white on blue 2016-06-10 18:17:48 +02:00
Lukas Reschke
7d92165b99 Merge pull request #43 from nextcloud/stable9-pr
[stable9] Backport auditing app
2016-06-10 18:13:53 +02:00
Marius
d152935a80 Merge pull request #40 from nextcloud/stable9-design-nextcloud
backport design change
2016-06-10 18:11:47 +02:00
Lukas Reschke
2c6a5fcf91 Add Same Site Cookie protection 2016-06-10 17:15:43 +02:00
Vincent Petry
851b7ca27f Merge pull request #25054 from owncloud/issue-24536-language-name-reused-for-fallback-languages-stable9
[stable9] Do not use the language name, when it's not the one from the language…
2016-06-10 17:02:48 +02:00
Bjoern Schiessle
22bbb047a0 log events from versions app 2016-06-10 15:49:58 +02:00
Bjoern Schiessle
0880cba816 listen to trash bin and group manager hooks 2016-06-10 15:49:46 +02:00
Lukas Reschke
c2571cca41 Add basic audit component to logger
Logs already:
- Share events
- Authentication events
- User management events
- File action events
2016-06-10 15:44:27 +02:00
Lukas Reschke
6c69cdf860 Add user ID to log entries in admin page 2016-06-10 15:44:24 +02:00
Jan-Christoph Borchardt
8d32813c42 backport design change 2016-06-10 15:31:57 +02:00
Joas Schilling
b4f14f1f48 Do not use the language name, when it's not the one from the language we want 2016-06-10 12:44:12 +02:00
Arthur Schiwon
674e1d0205 Merge branch 'stable9' of https://github.com/owncloud/core into downstream-stable9-160610 2016-06-10 11:42:07 +02:00
Vincent Petry
9edcdb33c7 Merge pull request #24950 from owncloud/stable9-fixdynamicldapgroupaccess
[stable9] Fixed dynamic group ldap access
2016-06-10 11:07:28 +02:00
Vincent Petry
fba4460342 Add unit test for LDAP multi group caching 2016-06-09 18:02:09 +02:00
Vincent Petry
251a24b0cb Merge pull request #25039 from owncloud/stable9-construct-path
[Stable9] Construct path to the version file from the current directory and fil…
2016-06-09 16:21:19 +02:00
Vincent Petry
72b76228fc Merge pull request #25035 from owncloud/stable9-err-reload-delay
[stable9] Delay reloading the page if an ajax error occurs, show notification
2016-06-09 16:15:17 +02:00
Vincent Petry
9dff5501e8 Merge pull request #25045 from owncloud/stable9-admin-datadircheck-fix
[stable9] Use temporary htaccesstest.txt for data dir security check
2016-06-09 15:59:01 +02:00
Vincent Petry
05870bb659 Merge pull request #25044 from owncloud/stable9-scanner-user-not-setup
[stable9] skip scanning for a user when the user is not setup yet
2016-06-09 14:52:44 +02:00
Vincent Petry
eb34e95fd3 Use temporary htaccesstest.txt for data dir security check 2016-06-09 11:59:42 +02:00
Robin Appelman
d46cb39e3c skip scanning for a user when the user is not setup yet 2016-06-09 11:37:02 +02:00
Victor Dubiniuk
f5d83e85b7 Construct path to the version file from the current directory and filename. Fixes #22450 2016-06-08 20:32:51 +03:00
Robin McCorkell
3f16ce7403 Add test for reload delay 2016-06-08 17:33:00 +02:00
Robin McCorkell
40f066ab6d Delay reloading the page if an ajax error occurs, show notification 2016-06-08 17:32:54 +02:00
Marius
73a9afed6d Merge pull request #22 from nextcloud/fix-3rdparty-notice-stable9
[stable9] Print error message again, when 3rdparty submodule is not initialized
2016-06-08 13:25:56 +02:00
Arthur Schiwon
a49f5b72c6 Print error message again, when 3rdparty submodule is not initialized
- old code used Response which attempted to use OC::$server which is not
and cannot be intialised at this part of the code.
2016-06-08 12:26:16 +02:00
Lukas Reschke
fb4981953d Merge pull request #23 from nextcloud/stable9-ci
Add CI to stable9 🚀
2016-06-08 12:14:25 +02:00
Vincent Petry
b37f2e230b Use array_merge when reading cached groups members 2016-06-08 11:24:22 +02:00
Morris Jobke
34727f26d0 skip failing tests 2016-06-07 19:24:56 +02:00
Morris Jobke
557fb01f58 Add drone.io support 2016-06-07 19:11:34 +02:00
VicDeo
7f3f06cdd9 Fix update from 9.0.0 and 9.0.1 (#24854) 2016-06-07 09:46:53 +02:00
Jan-Christoph Borchardt
267692b14c Merge pull request #10 from nextcloud/stable9-remove-links-to-documentation-in-menu
[stable9] Remove "Help" link from personal sidebar
2016-06-06 23:01:47 +02:00
Lukas Reschke
34ad3f7ada Remove "Help" link from personal sidebar
At the moment we want to hide the help link from the personal sidebar as it contains the original ownCloud documentation.

Once we have our own documentation with our proper branding and so on we can reenable this.
2016-06-06 18:45:27 +02:00
Joas Schilling
afb4c1e694 Allow public upload when the quota is unlimited (#24988) 2016-06-06 13:48:38 +02:00
Vincent Petry
6e7eb87c80 Merge pull request #24951 from owncloud/backport-24949-internal-server-error-in-sync-client-on-forbidden-directurl
[9.0] Catch the ForbiddenException to make sure it gets handled
2016-06-06 11:34:18 +02:00
Vincent Petry
93699d4224 Merge pull request #24966 from owncloud/stable9-fix-singlefileselect-download
[stable9] File not found when single file in a folde…
2016-06-06 11:28:05 +02:00
Joas Schilling
c433218aa1 Catch the ForbiddenException to make sure it gets handled 2016-06-03 15:16:11 +02:00
Dmitry Popov
825d1c105d My fix for #24272, #23613, File not found when single file in a folder (#24800)
* Fixed group share searching for members of
multiple group. Issue #11808.

* Fixed group share searching, continued.

Avoid searching for empty group list in getItemSharedWithUser().
Broke tests in previous commit, #12030.

* Simler check for group count.

* Fix for https://github.com/owncloud/core/issues/24783 , described there

* Now it's #24272, 24783 was a duplicate. Previous change was also not very good. Now we don't create ZIP with a single file inside.
2016-06-02 18:46:03 +02:00
Vincent Petry
7f3bfeffe2 Merge pull request #24921 from owncloud/stable9-backport-24795
[9.0] Allow opening the password reset link in a new window when …
2016-06-02 15:31:36 +02:00
Vincent Petry
4eb87be488 Merge pull request #24944 from owncloud/fix_21173_stable9
stable9: normalize path in getInternalPath
2016-06-02 15:30:47 +02:00
Vincent Petry
afe8ee0674 Merge pull request #24958 from owncloud/stable9_24869
[stable9] Use a capped memory cache for the user/group cache
2016-06-02 10:38:30 +02:00
Vincent Petry
a780a4c966 Merge pull request #24956 from owncloud/stable9-fix-shareidstring
[stable9] Backport of share id as string fix
2016-06-02 10:11:54 +02:00
Roeland Jago Douma
0efe3ba62e Use a capped memory cache for the user/group cache
For #24403
When upgrading huge installations this can lead to memory problems as
the cache will only grow and grow.

Capping this memory will make sure we don't run out while during normal
operation still basically cache everything.
2016-06-01 21:31:14 +02:00
Vincent Petry
8f04bf3793 Backport of share id as string fix 2016-06-01 17:48:35 +02:00
Arthur Schiwon
087f005936 formatting, white-space changes only 2016-06-01 16:28:02 +02:00
alexweirig
f112ece1f2 fixed possible indention problem
spaces -> tab conversion
2016-06-01 16:27:57 +02:00
alexweirig
c342dcbcee Fixing group handling
added back the cache processing and fixed
2016-06-01 16:27:52 +02:00
alexweirig
6d74ef71b5 Fixed dynamic group ldap access
getUserGroups:
Using $userDN instead of $uid to query LDAP
Converting groupDN to group name using API instead of substring
Removing cache processing at the end of the method
2016-06-01 16:27:42 +02:00
Vincent Petry
96bf7f5513 Merge pull request #24894 from owncloud/scanner-size-propagation-09
[9.0] trigger size calculation after scanning
2016-06-01 14:53:46 +02:00
Georg Ehrke
a08c9b3526 normalize path in getInternalPath 2016-06-01 13:06:59 +02:00
Joas Schilling
69e54bde1f Allow opening the password reset link in a new window when its a URL 2016-06-01 12:15:10 +02:00
Robin Appelman
2ca5f3f957 trigger size calculation after scanning 2016-06-01 10:27:56 +02:00
Joas Schilling
9070fd2c03 Add a warning when the transaction isolation level is not READ_COMMITED (#24915) 2016-05-31 16:11:51 +02:00
Vincent Petry
95cdbd45b8 Merge pull request #24908 from owncloud/stable9-backport-properly-check-for-mbstring
[stable9] Properly check for mbstring extension
2016-05-31 13:52:23 +02:00
Lukas Reschke
2516d07fdd [stable9] Properly check for mbstring extension
mb_detect_encoding is in the fallback we ship in the polyfill library, mb_strcut is not. Thus this lead to a false positive and ownCloud would just break.
2016-05-31 08:15:18 +02:00
Joas Schilling
abd8475336 Only show message in the UI when the checker is enabled (#24773) 2016-05-30 14:50:45 +02:00
Vincent Petry
0ec4098955 Merge pull request #24830 from owncloud/stable9-lenz1111-share_download_range_requests_support
[stable9] lenz1111's fantastic share download range requests support
2016-05-30 12:27:16 +02:00
Vincent Petry
761a0b252c Merge pull request #24839 from owncloud/shared-storage-local-9
[9.0] Improve isLocal performance for SharedStorage
2016-05-30 12:23:32 +02:00
Fabian
da0ee2ce3a dont update search onResize (#24848) 2016-05-30 11:31:39 +02:00
Björn Schießle
b8c4233c7d don't fail on "bad signature" during login. Most likely this happens because (#24837)
the login password changed at the user back-end (e.g ldap). Such failures will
be handled after login correctly by allowing the user to adjust the passwords
2016-05-30 11:19:57 +02:00
Piotr Filiciak
002a7f8294 replaced UnseekableException => NotPermittedException 2016-05-25 15:38:48 +02:00
Robin Appelman
35c32ca721 Improve isLocal performance for SharedStorage 2016-05-25 13:40:34 +02:00
Vincent Petry
8c439643a1 Lowercase class name for unseekableexception
Because 9.1 was PSR-4 and the backport goes back to the old style
2016-05-25 11:13:06 +02:00
Piotr Filiciak
7a791c5472 Code style and doc fix 2016-05-25 11:11:56 +02:00
Piotr Filiciak
f29f85709a Http Range requests support in downloads
Http range requests support is required for video preview
2016-05-25 11:11:47 +02:00
Vincent Petry
a9c8eee15c Merge pull request #24817 from owncloud/filesystem_check_changes-9
clarify filesystem_check_changes in config.sample.php
2016-05-25 09:40:43 +02:00
Carla Schroder
cb8b4740e3 clarify filesystem_check_changes in config.sample.php 2016-05-24 08:14:57 -07:00
Vincent Petry
3d4f29f622 Merge pull request #24417 from owncloud/fix_24182_9.0
[stable9] first call the post_login hooks, before we call getUserFolder.
2016-05-24 10:41:09 +02:00
Vincent Petry
64ec70a70f Merge pull request #24772 from owncloud/backport-24765-boolean-installed-config
[9.0] Make sure we evaluate installed everywhere as a boolean
2016-05-24 10:31:59 +02:00
Joas Schilling
b30f4c2799 Make sure we evaluate installed like we do it everywhere 2016-05-23 13:24:03 +02:00
Joas Schilling
3c73e54eb9 Make sure that installed is a boolean 2016-05-23 13:23:51 +02:00
Vincent Petry
ad81dff3b4 Merge pull request #24709 from owncloud/backport-24336-remove-password-from-exception-trace-in-dav-auth
Remove the password from the validateUserPass() method as well
2016-05-20 10:35:12 +02:00
Joas Schilling
5da9f10af2 Remove the password from the validateUserPass() method as well 2016-05-19 12:11:31 +02:00
Vincent Petry
173e304be9 Merge pull request #24414 from owncloud/stable9_24405
[Stable9] Use a CappedCache in the user database backend
2016-05-19 10:31:31 +02:00
Vincent Petry
ceea3e9104 Merge pull request #24705 from owncloud/locking-mark-reload-free-9
[9.0] free up memory when releasing the last shared lock
2016-05-19 10:28:23 +02:00
Vincent Petry
fe1b8adf08 Merge pull request #24676 from owncloud/stable9-fixchunkttl
[stable9] Allow chunk GC mtime tolerance for unfinished part chunks
2016-05-18 18:19:26 +02:00
Robin Appelman
e36d70c0de free up memory when releasing the last shared lock 2016-05-18 16:19:35 +02:00
Vincent Petry
dfc0a7a4a6 Allow chunk GC mtime tolerance for unfinished part chunks
Whenever part chunks are written, every fwrite in the write loop will
reset the mtime to the current mtime. Only at the end will the touch()
operation set the mtime to now + ttl, in the future.

However the GC code is expecting that every chunk with mtime < now are
old and must be deleted. This causes the GC to sometimes delete part
chunks in which the write loop is slow.

To fix this, a tolerance value is added in the GC code to allow for
more time before a part chunk gets deleted.
2016-05-17 17:15:09 +02:00
Vincent Petry
de97110f58 Merge pull request #24441 from owncloud/backport-24432-never-save-app-language-into-request-lang
[9.0] Do not save the language as request lang for apps when we didn't find…
2016-05-17 16:15:05 +02:00
Vincent Petry
56031fe155 Merge pull request #24540 from owncloud/stable9-do-not-automatically-try-to-enable-index-php-less-urls
[Stable9] do not automatically try to enable index php less urls
2016-05-13 16:13:09 +02:00
Vincent Petry
27b12d2901 Merge pull request #24530 from owncloud/backport-24526-forward-user-manager-error-messages-to-ui
[9.0] Pass on the error message from the user manager to the UI
2016-05-13 16:11:55 +02:00
Robin Appelman
f8979a9ee2 cap the normalized path cache (#24390) 2016-05-12 16:24:56 +02:00
Lukas Reschke
283347a026 Remove repair steps for broken updater repair (#24438)
That's only required for an update to 9.0.2, the updater server has the required logic to ensure that clients get the right update delivered.
2016-05-12 12:08:54 +02:00
VicDeo
60ec1fc85d Put back pcntl warning (#24295) 2016-05-12 12:08:08 +02:00
Thomas Müller
de915934e6 Merge pull request #24538 from owncloud/fix-oracle-ci-stable9
[stable9] Wait a while even after successful connect ...
2016-05-11 19:20:48 +02:00
Thomas Müller
7de566b7c0 Wait a while even after successful conect ... 2016-05-11 18:25:01 +02:00
Thomas Müller
d9a2b85059 Merge pull request #24502 from owncloud/stable9-updater-server-configurable
[stable9] Make update server URL configurable
2016-05-11 16:43:41 +02:00
Thomas Müller
877a8f09b4 Merge pull request #24574 from owncloud/stable9_24568
[Stable 9] Fix etag propegation test race condition
2016-05-11 16:29:08 +02:00
Roeland Jago Douma
8aebab9853 Fix test race condition
E-tag propagation replies on the mtime of the file. Order of events:

1. add file 'foo.txt' with content 'bar'
2. Set mtime to now() - 1
3. Check if etag changed.

Now this goes right often when 1 and 2 happen in the same second.
However imagine

1. add file 'foo.txt' with content 'bar' (at t=0.999)
2. Set mtime to now() - 1 (at t=1.001)

Now the mtime will be set to the same time. Thus not chaning the etag.
2016-05-11 14:54:21 +02:00
Lukas Reschke
3505776b6e Make update server URL configurable
Currently testing the updates is a big problem and not really super easy possible. Since we now have a new updater server we should also make this configurable so that people can properly test updates.
2016-05-11 14:37:53 +02:00
Thomas Müller
d7da0ac1dc Merge pull request #24384 from owncloud/backport-24327-memory-usage-in-callForAllUsers
[9.0] Better callForAllUsers memory usage
2016-05-11 14:37:13 +02:00
Thomas Müller
6c6cf01af1 Merge pull request #24554 from owncloud/kill-en@pirate-stable9
[stable9] Yo-ho-oh - Murder all band 'o pirates
2016-05-11 13:25:14 +02:00
Thomas Müller
750aeda8b7 Yo-ho-oh - Murder all band 'o pirates - backport of #24550 2016-05-11 11:22:08 +02:00
Joas Schilling
decb4789bb Pass on the error message from the user manager to the UI 2016-05-11 11:08:00 +02:00
Thomas Müller
45413d7952 Merge pull request #24541 from owncloud/stable9-backport-23705
[stable9] Fixed 'Help Translate' link
2016-05-11 09:38:56 +02:00
Pau
5d73670686 Fixed 'Help Translate' link 2016-05-10 17:24:56 +02:00
Lukas Reschke
b78625e0ae Add repair step for copying the RewriteBase 2016-05-10 17:19:45 +02:00
Lukas Reschke
4e10b81eb0 Move file since stable9 uses old autoloader 2016-05-10 16:53:50 +02:00
Lukas Reschke
fefb59e7d0 Do not automatically try to enable index.php-less URLs
The current logic for mod_rewrite relies on the fact that people have properly configured ownCloud, basically it reads from the `overwrite.cli.ur
l` entry and then derives the `RewriteBase` from it.

This usually works. However, since the ownCloud packages seem to install themselves at `/owncloud` (because subfolders are cool or so…) _a lot_ of people have just created a new Virtual Host for it or have simply symlinked the path etc.

This means that `overwrite.cli.url` is wrong, which fails hard if it is used as RewriteBase since Apache does not know where it should serve files from. In the end the ownCloud instance will not be accessible anymore and users will be frustrated. Also some shared hosters like 1&1 (because using shared hosters is so awesome… ;-)) have somewhat dubious Apache configurations or use versions of mod_rewrite from the mediveal age. (because updating is money or so…)

Anyhow. This makes this explicitly an opt-in configuration flag. If `htaccess.RewriteBase` is set then it will configure index.php-less URLs, if
admins set that after installation and don't want to wait until the next ownCloud version they can run `occ maintenance:update:htaccess`.

For ownCloud 9.0 we also have to add a repair step to make sure that instances that already have a RewriteBase configured continue to use it by copying it into the config file. That way all existing URLs stay valid. That one is not in this PR since this is unneccessary in master.

Effectively this reduces another risk of breakage when updating from ownCloud 8 to ownCloud 9.

Fixes https://github.com/owncloud/core/issues/24525, https://github.com/owncloud/core/issues/24426 and probably some more.
2016-05-10 16:49:36 +02:00
Thomas Müller
a3bdcfbb90 Merge pull request #24446 from weits/cherry_webdav
solves problem with moving files via WebDAV
2016-05-09 09:17:59 +02:00
Petr Svoboda
7fb631a13b solves problem with moving files via WebDAV
When moving files via WebDAV I sometimes got 

PHP Fatal error:  Nesting level too deep - recursive dependency? in /var/www/owncloud/lib/private/files/view.php on line 729

This small change has fixed the problem for me
2016-05-04 17:23:12 +02:00
Joas Schilling
f7f9ef55b6 Do not save the language as request lang for apps when we didn't find any 2016-05-04 14:07:07 +02:00
Björn Schießle
6c797eed82 first call the post_login hooks, before we call getUserFolder.
The login process needs to be completed before we can safely create
the users home folder. For example we need to give encryption a chance
to initialize the users encryption keys in order to copy the skeleton
files correctly
2016-05-03 14:16:17 +02:00
Thomas Müller
f9aef7ab9f Fixes #23899 2016-05-03 14:14:59 +02:00
Roeland Jago Douma
1c7ec3a7f5 Use a CappedCache in the user database backend
When running with a user database backend on large installations the
cache can grow to significant sizes. This can be especially problematic
when running big cron/repair jobs.
2016-05-03 13:08:30 +02:00
C Montero-Luque
e13d02de2d 9.0.2 2016-05-03 04:37:42 -04:00
Joas Schilling
bbcef57d2a When we iterate over all users that might be too much memory 2016-05-02 13:03:56 +02:00
Joas Schilling
13ea66e791 Don't loop over the backends, we already know where the user should be 2016-05-02 13:03:47 +02:00
C Montero-Luque
fb82321090 9.0.2 RC2 2016-05-02 04:14:16 -04:00
C. Montero Luque
218a206a6e Merge pull request #24343 from owncloud/stable9_24326
[Stable 9] Make ownCloud work again in php 7.0.6
2016-05-02 04:09:23 -04:00
Roeland Jago Douma
a834531aef Make ownCloud work again in php 7.0.6
See https://bugs.php.net/bug.php?id=72117
Basically a bugfix in php caused this issue. So isset is not called more
often. We have to catch this.
2016-05-01 12:31:26 +02:00
Thomas Müller
ec1a66b8a6 Merge pull request #24311 from owncloud/more-intelligent-update-detection
[stable9] Check for hash instead of file existence
2016-04-28 07:02:12 +02:00
Lukas Reschke
145810dc20 Check for hash instead of file existence
The previous logic did not necessarily trigger in every case. This logic is more error-resistant, the autoload_classmap.php file has a guaranteed different hash on 9.0.0, 9.0.1 and 9.0.2

Fixes https://github.com/owncloud/updater/issues/342
2016-04-27 15:46:24 +02:00
C Montero-Luque
795f321a19 9.0.2 RC1 2016-04-26 21:22:56 -04:00
C. Montero Luque
d359311afc Merge pull request #24294 from owncloud/stable9-remove-pcntl-warning
Remove pcntl warning for 9.0.2
2016-04-26 21:19:30 -04:00
C. Montero Luque
1c23fa5d16 Merge pull request #24289 from owncloud/local-invalid-9
[9.0] error out if a local storage isn't setup correctly
2016-04-26 21:19:23 -04:00
C. Montero Luque
fe753fe722 Merge branch 'stable9' into local-invalid-9 2016-04-26 16:46:23 -04:00
C. Montero Luque
62a35d3f7a Merge branch 'stable9' into stable9-remove-pcntl-warning 2016-04-26 16:46:12 -04:00
C. Montero Luque
98820f2af3 Merge pull request #24292 from owncloud/stable9-work-around-more-updater-issues
[stable9] Also exclude __apps
2016-04-26 14:51:09 -04:00
C. Montero Luque
4f5c03e310 Merge pull request #24261 from owncloud/scanner-propagate-9
[9.0] triger the propagator from the command line scanner
2016-04-26 14:50:02 -04:00
C. Montero Luque
36bba77575 Merge pull request #24282 from owncloud/backport-24262-stable9
[stable9] check whether index is set before using it
2016-04-26 14:49:51 -04:00
C. Montero Luque
438d451391 Merge pull request #24281 from owncloud/backport-disable-paste-zone
[stable9] Disable pastezone for jquery.fileupload
2016-04-26 14:49:38 -04:00
Robin Appelman
884c8215f8 add tests 2016-04-26 20:17:17 +02:00
Robin Appelman
06bfd58b2c error out if a local storage isn't setup correctly 2016-04-26 20:17:17 +02:00
Lukas Reschke
9a1688db7c Merge pull request #24278 from owncloud/stable9-more-sanity
[stable9] Don't write empty RewriteBase
2016-04-26 20:16:23 +02:00
Lukas Reschke
7ee7d091f2 Don't write empty RewriteBase
ownCloud may be configured to live at the root folder without a
trailing slash being specified. In this case manually set the
rewrite base to `/`
2016-04-26 20:13:20 +02:00
Victor Dubiniuk
ffe561df62 Remove pcntl warning for now 2016-04-26 21:08:33 +03:00
Lukas Reschke
590ed3edda Also exclude __apps
Workaround for https://github.com/owncloud/updater/issues/331 for 9.0.2
2016-04-26 19:18:31 +02:00
Lukas Reschke
a70d6f6a62 Disable pastezone for jquery.fileupload
jquery.fileupload offers the [`pastezone`](https://github.com/blueimp/jQuery-File-Upload/wiki/Options#pastezone) functionality. This functionality is enabled by default and if somebody copy-pastes something into Chrome it will automatically trigger an upload of the content to any configured jquery.fileupload element embedded in the JS.

This implementation triggers some problems:

1. The pastezone is defined globally by default (🙈). So if there are multiple fileupload's on a page (such as in the personal settings) then stuff is going to be uploaded to all embedded uploads.
2. Our server code is not able to parse the data. For example for uploads in the files app we expect a file name which is not specified => Just an error is thrown. You can reproduce this by taking a file into your clipboard and in Chrome then pressing <kbd>CTRL + V</kbd>.
3. When copy-pasting some string from MS Office on the personal page a temporary avatar with said content is created.

Considering that this is anyways was never working at all and causes bugs I've set the `pastezone` to `null`. This mens that upload via copy and paste will be disabled.

Lesson learned: Third-party JS libraries can have some weird details.
2016-04-26 14:37:40 +02:00
Arthur Schiwon
e542bfd1d7 check whether index is set before using it 2016-04-26 14:36:24 +02:00
Thomas Müller
1087385cae Merge pull request #24259 from owncloud/stable9-mount-unique
[stable9] don't get the config for the same mount multiple times
2016-04-26 14:35:12 +02:00
Thomas Müller
80a31b7565 Merge pull request #24242 from owncloud/stable9-backport-24052
[stable9] Fix LDAP race conditions
2016-04-26 14:34:57 +02:00
Thomas Müller
6c861f71eb Merge pull request #24202 from owncloud/backport-stable9-23972
[9.0] Call private cache methods only for `OC\Files\Cache\Cache`
2016-04-25 23:10:51 +02:00
Thomas Müller
bec8465902 Merge pull request #24250 from owncloud/scanner-locking-9
[9.0] add locks in the scanner to prevent multiple scanners running on the …
2016-04-25 23:03:20 +02:00
Thomas Müller
b425a0e307 Merge pull request #24236 from owncloud/backport-24214-stable9
[stable9] on clone Connection, do not take over the existing LDAP resource
2016-04-25 23:03:05 +02:00
Robin Appelman
1397d9a93c triger the propagator from the command line scanner 2016-04-25 18:29:57 +02:00
Robin Appelman
b375086c47 add test 2016-04-25 17:43:52 +02:00
Robin Appelman
d436326e19 don't get the config for the same mount multiple times 2016-04-25 17:43:40 +02:00
Robin Appelman
51f5edd749 add locks in the scanner to prevent multiple scanners running on the same files 2016-04-25 15:46:04 +02:00
Daniel Jagszent
1aa8765177 [9.0] Call private cache methods only for OC\Files\Cache\Cache 2016-04-25 14:55:05 +02:00
Thomas Müller
5925ab99f8 Merge pull request #24241 from owncloud/backport-24240-add-missing-use-statement
Add missing use statement
2016-04-25 14:45:58 +02:00
Joas Schilling
dd415b62f5 Add missing use statement 2016-04-25 13:34:20 +02:00
Morris Jobke
5b126cde48 Fix LDAP race conditions
* getFromCache is wrapped in isCached
* inbetween the two calls the cache entry hits it's TTL
* getFromCache returns null
* this fix only checkes if the returned value is null and
  return only non-null values
2016-04-25 13:32:40 +02:00
Arthur Schiwon
8ebde1e74d on clone Connection, do not take over the existing LDAP resource
For one, it solves potential conflicts when using the resource. For the
other, one on the login check (the only place where a clone happens
currently) we do not need to rebind after confirming the user's login
was successful.
2016-04-25 12:41:52 +02:00
Thomas Müller
57b9ae18f0 Merge pull request #24196 from owncloud/backport-24183-change-background-job-sort-order
[9.0] Change the sort order of background jobs to be DESC instead of ASC
2016-04-22 17:26:26 +02:00
Thomas Müller
98431b490e Merge pull request #24195 from owncloud/stable9-fs-initmountpoint-nulluser
[stable9] Throw NoUserException when attempting to init mount point for null user
2016-04-22 17:26:06 +02:00
Thomas Müller
a6164472a3 Merge pull request #24180 from owncloud/backport-24145-limit-background-job-runtime-9.0
[9.0] Make sure that CLI cron doesn't run for ever, but makes use of the ne…
2016-04-22 17:23:53 +02:00
Thomas Müller
d2b4bf7682 Merge pull request #24158 from owncloud/encryped-size-progation-9
[9.0] dont do optimized size propagation for encrypted files
2016-04-22 15:24:38 +02:00
Thomas Müller
bbc720d2d3 Merge pull request #24192 from owncloud/create-personal-calendar-stable9
Personal calendar should be generated even if the birthday calendar a…
2016-04-22 14:23:09 +02:00
Joas Schilling
3e1dc64737 Change the sort order of background jobs to be DESC instead of ASC
In theory, if your instance ever creates more jobs then your system cron can
handle, the default background jobs get never executed anymore. Because
everytime when the joblist returns the next job it looks for the next ID,
however there is always a new next ID, so it will never wrap back to execute
the low IDs. But when we change the sort order to be DESC, we make sure that
these low IDs are always executed, before the system jumps back up to
execute the new IDs.
2016-04-22 14:11:26 +02:00
Vincent Petry
27d12f7a99 Throw NoUserException when attempting to init mount point for null user
In some scenarios initMountPoints is called with an empty user, and
also there is no user in the session.

In such cases, it is unsafe to let the code move on with an empty user.
2016-04-22 14:02:55 +02:00
Thomas Müller
711641e4a9 Personal calendar should be generated even if the birthday calendar already exists - fixes #24082 2016-04-22 13:03:31 +02:00
Thomas Müller
27d6852b3e Merge pull request #24131 from owncloud/dont-transfer-files-to-not-ready-user-stable9
[9.0] Introduce isReadyForUser and verify in file transfer ownership
2016-04-22 10:33:18 +02:00
Joas Schilling
9dc1c6c41f Make sure that CLI cron doesn't run for ever, but makes use of the next spawn 2016-04-22 09:56:18 +02:00
Thomas Müller
81b5df3236 Merge pull request #24172 from owncloud/stable9-certificate
[stable9] Ignore certificate file if it starts with file://
2016-04-22 09:36:32 +02:00
Thomas Müller
6365851672 Merge pull request #24153 from owncloud/stable9-remember-email-when-setting-expiration
[stable9] remember email when setting expiration date
2016-04-21 23:22:01 +02:00
Thomas Müller
7a2a6ce609 Merge pull request #24163 from owncloud/fix-birthday_calendar-acl-stable9
[stable9] Birthday calendar should never have write acl
2016-04-21 23:21:05 +02:00
Lukas Reschke
830a080f0e [stable9] Ignore certificate file if it starts with file:// 2016-04-21 19:00:27 +02:00
Thomas Müller
4e50dd87d5 Birthday calendar should never have write acl - fixes #24154 2016-04-21 16:44:06 +02:00
Thomas Müller
ed746a7ec2 Merge pull request #24112 from owncloud/backport-24111-chunking-users-in-background-jobs
[9.0] Chunk the users correctly in the trashbin and versions background job
2016-04-21 16:21:12 +02:00
Robin Appelman
74ed0a8aba dont do optimized size propagation for encrypted files 2016-04-21 14:24:53 +02:00
Robin Appelman
440cf335ad Add unit tests for shared size propagation with encryption 2016-04-21 14:24:49 +02:00
Christoph Wurst
e33adcf0df remember email when setting expiration date
fixes #22947
2016-04-21 13:01:17 +02:00
Thomas Müller
68f62ad50a Merge pull request #24129 from owncloud/stable9_24098
[stable9] When the scanner detects a file is changed clear checksum
2016-04-21 12:56:04 +02:00
Thomas Müller
80993b245b Merge pull request #24134 from owncloud/fix-problems-caused-by-updater
[stable9] Add repair step for updater issues
2016-04-21 12:55:42 +02:00
Thomas Müller
a4a800fe30 Merge pull request #24136 from owncloud/backport-24135
[stable9] Write .htaccess also from CLI
2016-04-21 12:51:34 +02:00
Lukas Reschke
572ff9c9fe Write .htaccess also from CLI
The new updater as shipped with ownCloud 9.0.x invokes `occ` via `shell_exec`. This means that the `\OC::$CLI` code is used when updating.

This removes the manual `.htaccess` modifications, effectively leading to the fact that URLs without index.php in it stop working. This also affects share URLs which could be considered a rather serious regression.

- User installs 9.0.0 via web
- User shares /s/1234
- User updates to 9.0.1 via ownCloud updater
- Link to /s/1234 is broken, /index.php/s/1234 works
2016-04-20 22:25:02 +02:00
Lukas Reschke
2d373416d8 Add repair step for updater issues
The updater as shipped with ownCloud =< 9.0.1 has several bugs leading to a not properly executed update. For example the third-party changes are not copied.

This pull request:

1. Ships the third-party files changed since ownCloud 9.0.1 in the resources folder. On update the files are replaced. (https://github.com/owncloud/updater/issues/316)
2. Adds updater/* and _oc_upgrade/* as an exemption to the code integrity checker since the updater is updating in the wrong order. (https://github.com/owncloud/updater/issues/318)
2016-04-20 21:40:53 +02:00
Thomas Müller
22f9a12c74 Merge pull request #24108 from owncloud/fix_24032
Allow setting can edit permissions on federated shares in webUI
2016-04-20 20:42:03 +02:00
Thomas Müller
fcebd32e37 Merge pull request #24099 from owncloud/fix_23632_9.0
[stable9] init users mount point before recovery
2016-04-20 20:41:35 +02:00
Thomas Müller
e2a274fdd3 Merge pull request #23831 from owncloud/backport-23511
[9.0] sidebar click modification
2016-04-20 20:41:03 +02:00
Thomas Müller
df544e8dbe Introduce isReadyForUser and verify in file transfer ownership - fixes #23786 2016-04-20 20:25:22 +02:00
Thomas Müller
fdab395925 Merge pull request #23576 from owncloud/background-scan-unscanned-9
[9.0] handle completely unscanned storages in the background scanner
2016-04-20 20:22:07 +02:00
Roeland Jago Douma
2296552104 When the scanner detects a file is changed clear checksum
Fixes #23782 and #23783

If the file scanner detects a changed file we clear the checksum while
we update the cache.

* Unit test added
2016-04-20 19:09:26 +02:00
Thomas Müller
98647b8fe4 Merge pull request #24119 from owncloud/fix_24095_9.0
[stable9] preserve information if it is a rename operation or not
2016-04-20 13:47:19 +02:00
Björn Schießle
ccddb18cab preserve information if it is a rename operation or not 2016-04-20 12:34:20 +02:00
Roeland Jago Douma
466b7dc05f Allow setting can edit permissions on federated shares in webUI
Fixes #24032

Since we have a slightly different UI for the federated shares our
normal logic fails us. This makes sure to add the correct permissions
when it is a federated share.
2016-04-20 11:14:32 +02:00
Joas Schilling
21970c1b19 Chunk the users correctly in the trashbin and versions background job 2016-04-20 10:39:14 +02:00
Björn Schießle
288b4e21d0 we need to initialize the mount points of the given user before we recover
access to his files
2016-04-19 17:17:39 +02:00
Thomas Müller
bd19bbb926 Merge pull request #23924 from josh4trunks/stable9
Backport  #23752 to stable9
2016-04-13 14:11:37 +02:00
Thomas Müller
6f5d30b8ee Merge pull request #23941 from owncloud/stable9-exclude-autoload-static
Exclude autoload_static.php (#23935)
2016-04-13 00:32:49 +02:00
Thomas Müller
57c08cfd77 Fix the exclude path 2016-04-12 16:26:25 +02:00
Lukas Reschke
6e8adea2ab Exclude autoload_static.php (#23935)
Composer 1.1 has since yesterday a new performance improvement that will be automatically used for PHP >= 5.6, however this file is incompatible with older PHP versions and thus we need to exclude it from the checks.

Note that this performance improvement is only used on >= 5.6 so ownCloud will still run fine on older PHP versions as well.
2016-04-12 14:37:10 +02:00
Thomas Müller
4f5d1e9f60 Merge pull request #23930 from owncloud/stable9-backport-23901
[stable9] Catch the AutoloadNotAllowedException also for legacy jobs
2016-04-12 14:27:17 +02:00
Thomas Müller
a87d961d01 Merge pull request #23784 from owncloud/stable9-backport-23304
[stable9] Fix PHP memory leak in file_get_contents()
2016-04-12 13:11:28 +02:00
Morris Jobke
aecfcf64c4 Catch the AutoloadNotAllowedException also for legacy jobs
* same as #18839 for legacy jobs
* avoids spamming the log with useless entries
2016-04-12 09:16:44 +02:00
Joshua Ruehlig
5408b16728 Backport #23752 to stable9
Fixes orientation of thumbnails and gallery view of JPG's with exif rotation.
2016-04-11 09:40:41 -07:00
Thomas Müller
3e0f106876 Merge pull request #23840 from owncloud/backport-23839-sabre-dav-3.0.9
Update sabre/dav to 3.0.9 on stable9
2016-04-11 14:03:34 +02:00
Joas Schilling
3587531331 Update sabre/dav to 3.0.9 onb stable9 2016-04-11 11:28:23 +02:00
Thomas Müller
847834ee73 Merge pull request #23897 from owncloud/add-VCFExportPlugin-stable9
Adding VCFExportPlugin
2016-04-11 10:17:34 +02:00
Thomas Müller
1d4d45e91f Adding VCFExportPlugin 2016-04-10 20:41:44 +02:00
Joas Schilling
d2c11a35b7 Correctly return an empty string for empty files 2016-04-08 15:08:52 +02:00
Thomas Müller
c929c4db84 Merge pull request #23801 from owncloud/fix-23496-master-stable9
[stable9] Avoid fatal php error dring cron execution
2016-04-08 14:50:32 +02:00
Thomas Müller
0a79241a0a Merge pull request #23837 from owncloud/stable9-handle-null-in-usermanager
[stable9] Prevent null to be passed into the closure of callForAllUsers
2016-04-08 14:50:15 +02:00
Thomas Müller
8b87837a4d Prevent null to be passed into the closure of callForAllUsers 2016-04-07 14:11:48 +02:00
Erik Pellikka
35d044c121 sidebar click modification 2016-04-07 05:07:15 -04:00
C Montero-Luque
54fc92c372 9.0.1 2016-04-06 17:30:21 -04:00
Thomas Müller
76342fa27d Merge pull request #23572 from owncloud/stabe9-release-notes
[Stable9] release notes
2016-04-06 20:53:59 +02:00
Joas Schilling
c43713515b Remove duplicated message 2016-04-06 15:51:25 +02:00
Joas Schilling
e5bec54e4e Make the version a string 2016-04-06 15:41:25 +02:00
Victor Dubiniuk
b87b27cbd9 Show hint in CLI 2016-04-06 15:34:16 +02:00
Thomas Müller
dca6869a89 Merge pull request #23574 from owncloud/sabre-plugin-browser-error-page-stable9
[stable9] Sabre plugin browser error page
2016-04-06 15:32:12 +02:00
C. Montero Luque
1092de539f Merge pull request #23799 from owncloud/dont-collide-with-php-internals
[stable9] Use static method
2016-04-06 09:20:19 -04:00
C. Montero Luque
6e55f93836 Merge branch 'stable9' into dont-collide-with-php-internals 2016-04-06 09:20:11 -04:00
Thomas Müller
fa7f1874dd Merge pull request #23805 from owncloud/backport-of-#23760
[stable9] Fix conditional check in MySQL setup
2016-04-06 14:28:57 +02:00
Victor Dubiniuk
cfd8cc3fd8 Show release notes 2016-04-05 17:13:31 +03:00
Victor Dubiniuk
118c39d472 Show cli notice for big installations 2016-04-05 17:13:31 +03:00
Victor Dubiniuk
b05269826a Add releasenotes class 2016-04-05 17:13:31 +03:00
Daniel Hansson
cff3122a37 [stable9] Fix conditional check in MySQL setup
Backport of #23760

Fix conditional check in MySQL setup.
2016-04-05 15:16:02 +02:00
Thomas Müller
19541dd1ce fixes #23496 2016-04-05 14:01:23 +02:00
Lukas Reschke
a50619200c Use static method
This is ugly as hell. But if we directly access `\OCP\IUserSession::getUser` here PHP throws a segfault on some servers:

```
gdb /usr/sbin/apache2 --batch --quiet -ex "run -f /etc/apache2/apache2.conf -DNO_DETACH -DONE_PROCESS -DDEBUG $defines" -ex "quit"
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.6. Set the 'ServerName' directive globally to suppress this message
warning: the debug information found in "/usr/lib/debug//usr/lib/php5/20121212/mysql.so" does not match "/usr/lib/php5/20121212/mysql.so" (CRC mismatch).

warning: the debug information found in "/usr/lib/debug/usr/lib/php5/20121212/mysql.so" does not match "/usr/lib/php5/20121212/mysql.so" (CRC mismatch).

warning: the debug information found in "/usr/lib/debug//usr/lib/php5/20121212/mysqli.so" does not match "/usr/lib/php5/20121212/mysqli.so" (CRC mismatch).

warning: the debug information found in "/usr/lib/debug/usr/lib/php5/20121212/mysqli.so" does not match "/usr/lib/php5/20121212/mysqli.so" (CRC mismatch).

warning: the debug information found in "/usr/lib/debug//usr/lib/php5/20121212/pdo_mysql.so" does not match "/usr/lib/php5/20121212/pdo_mysql.so" (CRC mismatch).

warning: the debug information found in "/usr/lib/debug/usr/lib/php5/20121212/pdo_mysql.so" does not match "/usr/lib/php5/20121212/pdo_mysql.so" (CRC mismatch).

[New Thread 0x7fffdd206700 (LWP 28386)]
[Thread 0x7fffdd206700 (LWP 28386) exited]
[New Thread 0x7fffdd206700 (LWP 28387)]
[New Thread 0x7fffdc975700 (LWP 28388)]

Program received signal SIGSEGV, Segmentation fault.
zend_parse_parameters (num_args=2, type_spec=type_spec@entry=0x7ffff3f85227 "s|s") at /build/php5-pO28mL/php5-5.5.9+dfsg/Zend/zend_API.c:923
923 /build/php5-pO28mL/php5-5.5.9+dfsg/Zend/zend_API.c: No such file or directory.
A debugging session is active.

    Inferior 1 [process 28382] will be killed.

Quit anyway? (y or n) [answered Y; input not from terminal]
```

I'm still struggling to get a minimal example of this (also considering that it doesn't happen on every system :party). Anyways, it's a functional workaround until I determined the root cause… (also given the fact that patches may never be backported to distributions 🙈
2016-04-05 12:45:46 +02:00
Morris Jobke
7fdac35654 Fix PHP memory leak in file_get_contents()
* ref https://bugs.php.net/bug.php?id=61961
* ref https://github.com/owncloud/core/issues/20261#issuecomment-180000256
* code is based on the proposal of @chriseqipe
* fixes #20261
2016-04-04 18:14:39 +02:00
Thomas Müller
277c9f4a03 Merge pull request #23764 from owncloud/backport-23743-transfer-ownership
[9.0] Unmount the share before deleting it, so we don't try to use it later on
2016-04-04 16:48:29 +02:00
Thomas Müller
4da4163d14 Merge pull request #23541 from owncloud/backport-23515-menu-language
[9.0] Fix the translations of the User menu
2016-04-04 16:47:39 +02:00
Morris Jobke
85a0dd3689 [stable9] Read available l10n files also from theme folder
* Read available l10n files also from theme folder

The old behaviour was that only languages could be used for an app
that are already present in the apps/$app/l10n folder. If there is
a themed l10n that is not present in the apps default l10n folder
the language could not be used and the texts are not translated.

With this change this is possible and also the l10n files are
loaded even if the default l10n doesn't contain the l10n file.

* Inject server root - allows proper testing and separation of concerns
2016-04-04 13:29:04 +02:00
Thomas Müller
f8b1e2cca1 Merge pull request #23723 from owncloud/stable9-also-hide-password-for-private-key-password-update
[stable9] Also replace password in updatePrivateKeyPassword
2016-04-04 10:54:47 +02:00
Thomas Müller
501cb1a147 Merge pull request #23735 from owncloud/stable9-core-globalajaxerrorwhengoingaway
[stable9] Detect user navigating away, don't interpret as ajax error
2016-04-04 10:54:34 +02:00
Joas Schilling
dd5f38e351 Inject the Mount Manager 2016-04-04 09:10:43 +02:00
Joas Schilling
d857f7caf2 Unmount the share before deleting it, so we don't try to use it later on 2016-04-04 09:10:33 +02:00
C Montero-Luque
6774f60240 9.0.1 RC2 2016-04-01 23:00:23 +02:00
Vincent Petry
c58e96e639 Adjust core unit tests for unload/reload cases 2016-04-01 16:55:55 +02:00
Vincent Petry
51ff3e7443 Stronger fix for navigate away detection 2016-04-01 16:55:47 +02:00
Vincent Petry
d8261d41cc Firefox returns 303 on cross-domain redirect
Added 303 to catch SSO cross-domain redirect in Firefox.
2016-04-01 16:55:40 +02:00
Vincent Petry
752e6676e1 Detect user navigating away, don't interpret as ajax error
Whenever a user navigates away, all ajax calls will fail with the same
result like a cross-domain redirect (SSO). To distinguish these cases,
we need to detect whether the error is a result of the user navigating
away. For this, we introduce a new flag that will be set in
"beforeunload".

Additional handling was required for false positives in case "beforeunload" is
used (ex: cancelled upload) and the user cancelled the navigation.
2016-04-01 16:55:34 +02:00
Lukas Reschke
78ee14dad5 Also replace password in updatePrivateKeyPassword
Fixes https://github.com/owncloud/core/issues/23717
2016-04-01 11:06:31 +02:00
Thomas Müller
9c800f62dd Merge pull request #23590 from owncloud/fix-themes-for-stable9
[stable9] Fix for themes with .jpg backgrounds
2016-04-01 11:02:42 +02:00
Thomas Müller
059df32542 Merge pull request #23684 from owncloud/stable9-backport-23676
[stable9] Properly handle return values of OC_App::getAppInfo()
2016-04-01 11:02:09 +02:00
Morris Jobke
43579e784f Properly handle return values of OC_App::getAppInfo()
* fixes #23668
2016-04-01 09:16:47 +02:00
Thomas Müller
193a33a8ad Merge pull request #23709 from owncloud/stable9-make-sure-that-encrypted-version-is-set
[stable9] Make sure that the encrypted version is set
2016-04-01 09:08:50 +02:00
Thomas Müller
b84746ce36 Merge pull request #23710 from owncloud/fix_encryption_versions_on_external_storages_9.0
[stable9] fix creation of versions of encrypted files on external storages
2016-04-01 09:08:09 +02:00
Bjoern Schiessle
2cb45e71ea fix creation of versions of encrypted files on external storages
in order to create a 1:1 copy of a file if a version gets created
we need to store this information on copyBetweenStorage(). This
allows us to by-pass the encryption wrapper if we read the source file.
2016-03-31 23:18:45 +02:00
Thomas Müller
e3cc82df38 Merge pull request #23518 from owncloud/stable9-gdrive-stream-download
[stable9] GDrive stream download with RetryWrapper
2016-03-31 23:14:49 +02:00
Frank Karlitschek
05fd4f2da0 Merge pull request #23522 from owncloud/stable9-dropbox-stream-download
[stable9] Dropbox stream download with RetryWrapper
2016-03-31 21:18:29 +02:00
Lukas Reschke
d16553d2d8 Make sure that the encrypted version is set
The code path called when using external storage with WebDAV is using `\OC\Files\Storage\Wrapper\Encryption::getMetaData` which did not contain the actual encrypted version inside the cache entry version. This lead to the following:

1. User uploaded a file
2. File is created and `\OC\Files\Storage\Wrapper\Encryption::getMetaData` is called. It has an empty `encryptedVersion` but sets `encrypted` to either `true` or `false`.
3. The call when updating the file cache will use the old version.
2016-03-31 20:39:35 +02:00
Thomas Müller
8453073fdb Merge pull request #23689 from owncloud/revert-23629
Revert "Explicitly add the current principal to the acl in case of gr…
2016-03-31 12:32:34 +02:00
Thomas Müller
b6fb3148c2 Revert "Explicitly add the current principal to the acl in case of group sharing"
This reverts commit 52f4acf23d.
2016-03-31 11:22:47 +02:00
Thomas Müller
cfe0a6450e Merge pull request #23673 from owncloud/stable9-fix-sftp-retry-wrapper
[stable9] Use RetryWrapper for SFTP storage
2016-03-31 11:12:29 +02:00
Thomas Müller
5f5e13351a Merge pull request #23552 from owncloud/fix-group-sharing-for-v1-caldav-and-carddav-stable9
Fix group sharing for v1 caldav and carddav stable9
2016-03-31 11:12:12 +02:00
Thomas Müller
ef8b75960c Handle group shares of addressbooks on v1 as well ... now FINALLY .... 2016-03-31 09:07:36 +02:00
Thomas Müller
f28817aed5 Fix acls for calendar objects and cards - fixes #23273 2016-03-31 09:07:36 +02:00
Thomas Müller
cb300d164e Return proper current-user-principal on v1 endpoints - fixes #23306 2016-03-31 09:05:39 +02:00
Thomas Müller
e664e582fb Fix group shares on v1 caldav and carddav - fixes #23328 2016-03-31 09:05:39 +02:00
Thomas Müller
9bd5fd23e7 Merge pull request #23629 from owncloud/fix-group-sharing-access-stable9
Explicitly add the current principal to the acl in case of group sharing
2016-03-31 09:04:07 +02:00
Thomas Müller
835e24826d Merge pull request #23640 from owncloud/backport-23545-lock-mountpoint-on-removal
[9.0] Lock the mountpoint while removing
2016-03-31 08:59:28 +02:00
Thomas Müller
8d6aff69a8 Merge pull request #23659 from owncloud/backport-23654-xcache-availablility
[9.0] xcache.var_size with 64M should evaluate to isAvailable
2016-03-31 08:58:18 +02:00
Joas Schilling
7c7e079a36 Lock the mountpoint while removing 2016-03-30 23:50:10 +02:00
Lukas Reschke
1f7b037a59 Use RetryWrapper for SFTP storage
Equivalent to https://github.com/owncloud/core/pull/23442

Required for making encryption work with external storage reliable.
2016-03-30 23:01:42 +02:00
Vincent Petry
99843c06f9 GDrive stream download with RetryWrapper 2016-03-30 18:43:01 +02:00
Thomas Müller
ed88f7b8b5 Merge pull request #23664 from owncloud/stable9-share-displayownerfix
[stable9] Fix displaying owner before share icon in file list
2016-03-30 18:42:49 +02:00
Thomas Müller
03f89d8242 Merge pull request #23662 from owncloud/make-google-drive-drumpf-again
[stable9] Use the shipped cacerts.pem instead of the global one
2016-03-30 18:41:36 +02:00
Vincent Petry
f981661195 Fix displaying owner before share icon in file list
Initial display of owner was missing
2016-03-30 18:10:56 +02:00
Thomas Müller
424c2b8263 Merge pull request #23652 from owncloud/stable9_23651
[Stable 9] Non moveable mount points should always be UPDATE+DELETE shareable
2016-03-30 17:01:41 +02:00
Thomas Müller
2ab503f70a Merge pull request #23641 from owncloud/avatar-remove-9
[9.0] only remove avatars from the folder we store them in
2016-03-30 17:00:53 +02:00
Thomas Müller
cdff098357 Merge pull request #23618 from owncloud/backport-23543-activity-emails-always-short
Backport 23543 activity emails always short
2016-03-30 16:59:22 +02:00
Lukas Reschke
57596e1415 Use the shipped cacerts.pem instead of the global one
The one we ship may cause problems since Equifax is not included anymore (SHA-1 certs) are deprecated. We should just be consistent here and also use the certificate file which is used by the other calls in the library.
2016-03-30 16:55:26 +02:00
Joas Schilling
dd8d1c2b94 xcache.var_size with 64M should evaluate to isAvailable 2016-03-30 16:43:28 +02:00
Roeland Jago Douma
2660cf80c3 Non moveable mount points should always be UPDATE+DELETE shareable
Fixes #23536

The new sharing code is much stricter in checking permissions. However
for non moveable mounts the permissions UPDATE+DELETE are not reported
on the mount point.

This is just a quick fix.

* Updated unit tests
2016-03-30 13:42:08 +02:00
Robin Appelman
3cadc45ca5 only remove avatars from the folder we store them in 2016-03-30 10:25:37 +02:00
Thomas Müller
8c9842fbd9 Fix unit test 2016-03-30 10:01:17 +02:00
Thomas Müller
456035a750 Merge pull request #23631 from owncloud/stable9-upload-white
[stable9] correct form of upload-white icon to be same as upload icon
2016-03-30 09:09:20 +02:00
C Montero-Luque
fb77aa2e62 9.0.1 RC1 2016-03-29 22:03:08 +02:00
Jan-Christoph Borchardt
3b4999c835 correct form of upload-white icon to be same as upload icon 2016-03-29 19:18:54 +02:00
Thomas Müller
52f4acf23d Explicitly add the current principal to the acl in case of group sharing 2016-03-29 19:09:31 +02:00
Thomas Müller
6b7c694a42 Merge pull request #23582 from owncloud/avatar-save-failure-9
[9.0] dont die when we cant save the resized avatar, log instead
2016-03-29 18:49:22 +02:00
Thomas Müller
605abf9088 Merge pull request #23570 from owncloud/stable9-dav-sharetypes-remote
[stable9] Return remote shares in oc:share-types Webdav property
2016-03-29 18:41:25 +02:00
Joas Schilling
b5922e467a Allow the activity app to set the current user when sending emails 2016-03-29 09:12:12 +02:00
Joas Schilling
1733b6e8c8 We are only formatting an object when it's not null 2016-03-29 09:11:48 +02:00
Daniel Hansson
c066882309 [stable9] Fix for themes with .jpg backgrounds
Without this all themes with .jpg or .jpeg are broken.
2016-03-26 15:10:04 +01:00
Robin Appelman
b456035aa7 dont die when we cant save the resized avatar, log instead 2016-03-25 14:13:17 +01:00
Thomas Müller
03f461591e Merge pull request #23550 from owncloud/backport-23542
[stable9] getAppPath can return false
2016-03-24 22:44:31 +01:00
Robin Appelman
4f78cb1e3d handle completely unscanned storages in the background scanner 2016-03-24 19:41:03 +01:00
Lukas Reschke
1f4e824d0b Add magical regex to catch browsers 2016-03-24 19:03:21 +01:00
Thomas Müller
7a6d4a3287 In case of exception we return an html page in case the client is a browser 2016-03-24 19:03:21 +01:00
Vincent Petry
1f4738c372 Return remote shares in oc:share-types Webdav property
Fixes web UI to properly display the share status icon when an outgoing
remote share exists
2016-03-24 17:22:09 +01:00
Thomas Müller
af7c34d9a6 Merge pull request #23401 from owncloud/backport-23282-stable9
[stable9] fix writing to cache when fallback server should be used immediately
2016-03-24 13:30:44 +01:00
Thomas Müller
515ebc02b0 Merge pull request #23539 from owncloud/backport-23530
[stable9] Backport 23530
2016-03-24 13:06:00 +01:00
Lukas Reschke
0bb7644150 getAppPath can return false
Fixes https://github.com/owncloud/core/issues/23533
2016-03-24 12:22:42 +01:00
Thomas Müller
c9eadb7b77 Merge pull request #23520 from owncloud/node-get-from-cache-9
[9.0] Query the cache when checking if a node exists
2016-03-24 11:58:48 +01:00
Joas Schilling
a381cbc241 Fix the translations of the User menu 2016-03-24 09:17:17 +01:00
Lukas Reschke
2139130ec8 Check if request is sent from official ownCloud client
There are authentication backends such as Shibboleth that do send no Basic Auth credentials for DAV requests. This means that the ownCloud DAV backend would consider these requests coming from an untrusted source and require higher levels of security checks. (e.g. a CSRF check)

While an elegant solution would rely on authenticating via token (so that one can properly ensure that the request came indeed from a trusted client) this is a okay'ish workaround for this problem until we have something more reliable in the authentication code.
2016-03-24 09:00:35 +01:00
Vincent Petry
195cf4111e Dropbox stream download with RetryWrapper 2016-03-23 18:07:13 +01:00
Vincent Petry
443d72ee87 Fix dropbox storage to not store the whole file in memory
Since the library can only store the full response in memory on
download, we use an alternate client lib and set the correct headers to
be able to stream the content to a temp file.
2016-03-23 18:07:13 +01:00
Robin Appelman
5a630c6a0e properly use fileinfo objects 2016-03-23 17:13:32 +01:00
Robin Appelman
24670b4218 set watch policy in test 2016-03-23 17:13:28 +01:00
Robin Appelman
c864420d6c improve reuse in getUserFolder 2016-03-23 17:13:24 +01:00
Robin Appelman
f77ce8829c pass the fileinfo to the node if available 2016-03-23 17:13:21 +01:00
Robin Appelman
70a5233f69 Query the cache when checking if a node exists 2016-03-23 17:13:17 +01:00
Thomas Müller
5ca10cf6f8 Merge pull request #23308 from owncloud/smb-not-available-9
[9.0] handle connection errors as storage not available in smb
2016-03-23 11:03:15 +01:00
Thomas Müller
0009bf244b Merge pull request #23464 from owncloud/stable9-backport-23443
[stable9] Log more information by default
2016-03-23 09:13:10 +01:00
Thomas Müller
3d0e4bdc82 Merge pull request #23493 from owncloud/stable9_22679
[Stable 9] When the Share API is disabled do not return shares
2016-03-23 08:07:06 +01:00
Thomas Müller
6edf403f3f Merge pull request #23475 from owncloud/stable9-RealRancor-exclude_lost_and_found
[stable9] Exclude lost+found dir in integrity check
2016-03-23 08:06:36 +01:00
Lukas Reschke
43516ebef9 Only use the user session if ownCloud is already installed
When installing ownCloud with autotest and MySQL some log entries may be created which will invoke the logging class. IUserSession has a dependency on the database which will make the installation fail => 💣
2016-03-22 22:27:35 +01:00
C Montero-Luque
53f95373ba 9.0.1 beta 2016-03-22 17:01:51 -04:00
Thomas Müller
a9c13dc58a Merge pull request #23361 from owncloud/stable9-gdrive-chunkupload
[stable9] Chunk upload for GDrive
2016-03-22 21:27:14 +01:00
Roeland Jago Douma
7fb32f8358 When the Share API is disabled do not return shares
Fixes #22668

Block everything in the OCS Share API
2016-03-22 19:51:01 +01:00
Thomas Müller
656c7f38b6 Merge pull request #23478 from owncloud/backport-l10n
Backport translations to stable9
2016-03-22 17:44:59 +01:00
Thomas Müller
97dc57a143 Merge pull request #23456 from owncloud/backport-23329-stable9
[stable9] Avatar must be saved after login is done and external storages set up…
2016-03-22 17:40:48 +01:00
Thomas Müller
3b98e8c56d Merge pull request #23467 from owncloud/early-creation-of-birthday-calendar-stable9
Create the contact birthday calendar right away as soon as the comman…
2016-03-22 17:28:11 +01:00
Thomas Müller
1a100c69ba Merge pull request #23473 from owncloud/stable9_23398
[stable 9]  Allow blocking of group sharing
2016-03-22 17:16:23 +01:00
Thomas Müller
03fcbc8ceb Merge pull request #23479 from owncloud/backport-23461-activity-without-sharing
[9.0] Fix "AutoloadNotAllowedException" when files_sharing is disabled
2016-03-22 17:15:24 +01:00
Thomas Müller
49b5b1b08c Merge pull request #23447 from owncloud/smb-permissions-9
[9.0] properly use smb permissions
2016-03-22 17:12:41 +01:00
Thomas Müller
2da2f26e56 Merge pull request #23466 from owncloud/backport-23448-exception-on-enabling-default-app
[9.0] Do not abort with an exception when a default app can not be enabled
2016-03-22 16:26:06 +01:00
Thomas Müller
d60f39e4f2 Merge pull request #23442 from owncloud/fix_22286_9.0
[stable9] apply retry wrapper to make sure that we always read/write a complete block
2016-03-22 16:23:54 +01:00
Thomas Müller
329e72a286 Merge pull request #23480 from owncloud/backport-23404-stable9
[stable9] adjust PrincipalUri as returned from Sabre to effective username
2016-03-22 16:20:22 +01:00
Arthur Schiwon
90a2be58f8 adjust PrincipalUri as returned from Sabre to effective username
backport of #23404
2016-03-22 15:24:01 +01:00
Thomas Müller
9b2fdc5358 Merge pull request #23359 from owncloud/streams-0.4-9
[9.0] Update icewind/streams and icewind/smb
2016-03-22 15:10:36 +01:00
Joas Schilling
0d9edd80f1 Fix "AutoloadNotAllowedException" when files_sharing is disabled 2016-03-22 15:01:52 +01:00
Joas Schilling
4fdb2254a4 Backport translations to stable9 2016-03-22 13:10:33 +01:00
RealRancor
b3ead7568d Exclude lost+found dir in integrity check 2016-03-22 12:59:18 +01:00
Roeland Jago Douma
f8f292ab16 Fix js strings if group sharing is disabled 2016-03-22 12:37:45 +01:00
Roeland Jago Douma
c7f1b82b4b Respect disabled group sharing in sharee endpoint
* Fix tests
2016-03-22 12:37:34 +01:00
Roeland Jago Douma
aa75cfcf14 Block group sharing in API and in share manager
* Fix tests
2016-03-22 12:37:20 +01:00
Roeland Jago Douma
e9fc791e9f Add config to sharemanager 2016-03-22 12:37:08 +01:00
Roeland Jago Douma
4d8c81a2d9 Add allow sharing with groups checkbox to admin page 2016-03-22 12:36:59 +01:00
Thomas Müller
ad852ca24a Create the contact birthday calendar right away as soon as the command is executed once - fixes #23203 2016-03-22 10:31:53 +01:00
Joas Schilling
50e94db4d5 Do not abort with an exception when a default app can not be enabled 2016-03-22 10:28:59 +01:00
Thomas Müller
ae2c207b6e Merge pull request #23453 from owncloud/generate-birthdays-on-upgrade-stable9
Generate birthdays on upgrade stable9
2016-03-22 10:17:41 +01:00
Thomas Müller
f5fe2b4d08 Merge pull request #23462 from owncloud/backport-23422-comments-activities
[9.0] Add comment icons and "You commented" translations
2016-03-22 10:05:25 +01:00
Robin Appelman
77afc18b82 properly use smb permissions 2016-03-22 09:57:38 +01:00
Vincent Petry
3a955ca43c Adjusted 3rdparty submodule commit 2016-03-22 09:46:32 +01:00
Robin Appelman
204288f4a5 update icewind/smb to 1.0.8 2016-03-22 09:46:32 +01:00
Robin Appelman
8af75c734a update icewind/streams to 0.4.0 and icewind/smb to 1.0.7 in files_external 2016-03-22 09:46:32 +01:00
Lukas Reschke
177ad39854 Log more information by default
This modifies the logger to add the following logging information by default:

- Request Method
- Request URL
- Current user
2016-03-22 09:46:02 +01:00
Joas Schilling
d59860aacd Add comment icons and "You commented" translations 2016-03-22 08:55:32 +01:00
Arthur Schiwon
f6b6813f5f Avatar must be saved after login is done and external storages set up properly, fixes #21555 2016-03-21 22:20:50 +01:00
Thomas Müller
da95db78d0 Merge pull request #23436 from owncloud/backport-23388-infinite-cronjob
[9.0] Do not create a new job when it failed to connect atm
2016-03-21 18:05:30 +01:00
Thomas Müller
3d19a179c7 Merge pull request #23383 from owncloud/backport-use-raw-path
[stable9] Use raw PATH_INFO
2016-03-21 18:03:10 +01:00
Thomas Müller
3f4be066f9 Generate birthdays on upgrade from 8.2 as well 2016-03-21 17:53:03 +01:00
Thomas Müller
419adc8d50 Birthday events are generated on upgrade 2016-03-21 17:52:59 +01:00
Bjoern Schiessle
627724bc6a apply retry wrapper to make sure that we always read/write a complete block 2016-03-21 15:18:13 +01:00
Thomas Müller
b3fef39006 Merge pull request #23307 from owncloud/stable9-update-sabre3.0.8-fseek-only
[stable9] Update 3rdparty submodule for sabre 3.0.8 update
2016-03-21 14:31:18 +01:00
Thomas Müller
3d9187e231 Merge pull request #23390 from owncloud/stable9-share-keepoptioncheckboxinblocks
[stable9] Keep share checkboxes together
2016-03-21 14:15:40 +01:00
Joas Schilling
1a239b2f0d Do not create a new job when it failed to connect atm 2016-03-21 14:00:29 +01:00
Thomas Müller
6afac05937 Merge pull request #23389 from owncloud/backport-23287-fed-share-action-links
[9.0] Make sure to append the web root as per doc
2016-03-21 11:16:15 +01:00
Thomas Müller
571de654cd Merge pull request #23378 from owncloud/stable9-backport-23370
[stable9] Update avatar on username change if avatar is set
2016-03-21 09:49:32 +01:00
Thomas Müller
546a0929a6 Merge pull request #23163 from owncloud/stable9-wording
[stable9] Adjust wording a bit
2016-03-21 09:48:49 +01:00
Thomas Müller
fefaa1fd87 Merge pull request #23293 from owncloud/backport-23108
[stable9] Ensure that stored version is at least 1 for cross-storage copy
2016-03-21 09:48:15 +01:00
Thomas Müller
ce0f68c7ce Merge pull request #23382 from owncloud/backport-fix-htaccess-issues
[stable9] Write .htaccess update only if not already written
2016-03-21 09:42:57 +01:00
Thomas Müller
660c0da0a9 Merge pull request #23384 from owncloud/stable9-dav-sharesproperty
[stable9] Add webdav share-types property to fix favorites/tags share status icon
2016-03-21 09:42:36 +01:00
Thomas Müller
179ac2b98c Merge pull request #23387 from owncloud/stable9-systemtags-create-same-prefix
[stable9] Allow creating tags where another one with same prefix exists
2016-03-21 09:42:18 +01:00
Arthur Schiwon
d282affec2 fix writing to cache when fallback server should be used immediately 2016-03-18 20:34:23 +01:00
Vincent Petry
8ef8be6be5 Keep share checkboxes together
- removed leading spaces before markup which can affect rendering in
  some cases
- added shareOption CSS class to group and keep share option checkbox +
  label
- moved ".showCruds" arrow into the matching shareOption to keep the
  arrow together with the checkbox
2016-03-18 14:16:26 +01:00
Joas Schilling
064e13511f Make sure to append the web root as per doc 2016-03-18 13:36:51 +01:00
Vincent Petry
a7dfc70e2e Allow creating tags where another one with same prefix exists
When creating a new entry, compare the full tag name and not only the
prefix.
2016-03-18 12:32:29 +01:00
Roeland Jago Douma
df056e1299 Remove duplicated copyright 2016-03-18 11:38:02 +01:00
Roeland Jago Douma
26deb0a897 Add intergration tests
Intergration tests to ensure the share-types property is set correctly.

* Unshared item
* Shared with user
* Shared with group
* Shared by link
* Shared with user & group & link
2016-03-18 11:37:56 +01:00
Vincent Petry
3c77311397 Display share status info in favorite list
Returns the shareTypes share status info to the favorites file list.
2016-03-18 11:36:43 +01:00
Vincent Petry
fb705fa305 Add webdav property for share info in PROPFIND response 2016-03-18 11:36:39 +01:00
Vincent Petry
c513317c49 Update 3rdparty submodule for sabre 3.0.8 update 2016-03-18 11:03:41 +01:00
Lukas Reschke
d9b632c001 Use raw PATH_INFO
PATH_INFO will be empty at this point and thus the logic in base.php did not catch this. Changing this to "getRawPathInfo" will ensure that the path info is properly read.

Fixes https://github.com/owncloud/core/issues/23199
2016-03-18 10:30:26 +01:00
Lukas Reschke
1fdf790c8f Write .htaccess update only if not already written
The ownCloud update routine also runs the "updateHtaccess" code in case only an application gets updated. This leads to having entries multiple time in the .htaccess file leading to unpredictable behaviour.

With 9.0 we added the "#### DO NOT CHANGE ANYTHING ABOVE THIS LINE ####" entry to the .htaccess file, this change uses it to ensure that only to the .htaccess gets written if the file has not been modified already. Since the .htaccess modifications are optional this is not a big deal.

Without this change updates of applications can break the rewrite rules (ending in endless redirects) as well as breaking the code integrity checker.
2016-03-18 09:18:46 +01:00
Morris Jobke
d65c3a77e2 Update avatar on username change if avatar is set
* fixes #20455
2016-03-18 08:51:29 +01:00
Thomas Müller
382b18e85e Merge pull request #23309 from owncloud/backport-23164-stable9
[stable9] Prevent certain DBs throwing exceptions on same-value updates
2016-03-17 20:52:11 +01:00
Thomas Müller
9e5c5c804b Merge pull request #23358 from owncloud/stable9-backport-occ-typos
Some typo corrections in occ command output
2016-03-17 20:50:41 +01:00
Thomas Müller
7d80b20368 Merge pull request #23355 from owncloud/stable9_backport_23346
[Stable 9] Set proper public webdav permissions when public upload disabled
2016-03-17 17:14:13 +01:00
Vincent Petry
1e1c0885c6 Only use GDrive chunks when needed 2016-03-17 16:12:42 +01:00
Vincent Petry
8e0b78c746 Chunk upload for GDrive
Instead of storing the WHOLE file in memory in a PHP variable, use the
library's chunk upload support.
2016-03-17 16:12:38 +01:00
Carla Schroder
e7152f495c Some typo corrections in occ command output 2016-03-17 07:05:34 -07:00
Thomas Müller
00ef623f1c Merge pull request #23259 from owncloud/backport-22998
[stable9] Delay check till scanner is used
2016-03-17 14:29:39 +01:00
Roeland Jago Douma
9dfcb55a2f Set proper public webdav permissions when public upload disabled
Fixes #23325

It can happen that a user shares a folder with public upload. And some
time later the admin disables public upload on the server.

To make sure this is handled correctly we need to check the config value
and reduce the permissions.

Fix is kept small to be easy backportable.
2016-03-17 13:54:53 +01:00
Thomas Müller
ec4c5a3e75 Merge pull request #23128 from owncloud/contacts_calendar_name_color-stable9
add title and color to birthday calendar
2016-03-17 13:08:03 +01:00
Thomas Müller
f46225fa2c Merge pull request #23335 from owncloud/ext-user-mounting-gui-stable9
[stable9] Display external storage GUI even if user mounting disabled
2016-03-17 12:25:53 +01:00
Thomas Müller
f28f6a3001 Merge pull request #23302 from owncloud/fed-unshare-with-9
[9.0] Specify the target user when unsharing a federated share
2016-03-17 10:07:19 +01:00
Thomas Müller
25027c31ff Merge pull request #23313 from owncloud/check-syntax-travis-stable9
[stable9] Execute parallel-lint
2016-03-17 09:29:26 +01:00
Joas Schilling
b8af6e703a Don't try to execute a dav syntax test 2016-03-17 09:07:55 +01:00
Robin McCorkell
403eb87f4d Display external storage GUI even if user mounting disabled 2016-03-16 22:10:36 +00:00
Thomas Müller
ed4ed0e26f Merge pull request #23319 from owncloud/backport-23189-1
[stable9] Require at least libxml 2.7.0
2016-03-16 21:53:33 +01:00
Thomas Müller
24dcdf9d5c Merge pull request #23324 from owncloud/stable9-backport-23253
[stable9] Give swift 15 seconds after startup
2016-03-16 21:53:09 +01:00
Morris Jobke
3a773f4eca Give swift 15 seconds after startup 2016-03-16 18:08:42 +01:00
Lukas Reschke
e71ebf334d [stable9] Execute parallel-lint
Backport of #22994 and #23303
2016-03-16 17:31:18 +01:00
Thomas Müller
08b9193919 Merge pull request #23315 from owncloud/travis-stable9
Execute travis on stable9 as well
2016-03-16 17:29:27 +01:00
Lukas Reschke
dbcb037639 Require at least libxml 2.7.0
Fixes https://github.com/owncloud/core/issues/23168
2016-03-16 17:13:13 +01:00
Thomas Müller
adbc5bbd1f Merge pull request #23271 from owncloud/backport-23192
[stable9] Backport 23192
2016-03-16 16:50:04 +01:00
Thomas Müller
4720719b08 Merge pull request #23270 from owncloud/backport-fix-support-for-php7-in-htaccess
[stable9] Backport fix support for php7 in htaccess
2016-03-16 16:49:38 +01:00
Morris Jobke
7b818d9442 Execute travis on stable9 as well
Backport of #23100 to stable9
2016-03-16 15:39:07 +01:00
Robin McCorkell
aa91d50d04 Prevent certain DBs throwing exceptions on same-value updates
A PreconditionNotMetException must only be thrown if explicit
preconditions are specified for setValues(), not if the value is merely
the same as was already in the DB.
2016-03-16 14:50:00 +01:00
Robin Appelman
95cd1671b3 handle connection errors as storage not available in smb 2016-03-16 14:47:03 +01:00
Robin Appelman
8c035ae6f6 Specify the target user when unsharing a federated share 2016-03-16 13:29:04 +01:00
Thomas Müller
d54106dada Merge pull request #23264 from owncloud/fix_22907_9.0
allow group shares, even if not all public keys are available
2016-03-16 11:18:51 +01:00
Lukas Reschke
f9ad57ee52 Ensure that stored version is at least 1 for cross-storage copy
In case of a move operation from an unencrypted to an encrypted
storage the old encrypted version would stay with "0" while the
correct value would be "1". Thus we manually set the value to "1"
for those cases.

See also https://github.com/owncloud/core/issues/23078
2016-03-16 10:37:41 +01:00
Lukas Reschke
cdadd4cd1b Fallback for crappy ancient distributions
Fixes https://github.com/owncloud/core/issues/23181
2016-03-15 17:14:53 +01:00
Lukas Reschke
6f7fc6c5db always_populate_raw_post_data has been removed with PHP 7.0 2016-03-15 17:03:19 +01:00
Lukas Reschke
9ef7340dc7 Add support for custom values in integrity checker 2016-03-15 17:03:16 +01:00
Lukas Reschke
d1978a6950 Replace all required values 2016-03-15 17:03:13 +01:00
Lukas Reschke
dfc7e6b421 Duplicate block for PHP 7 2016-03-15 17:03:09 +01:00
Thomas Müller
b580d26270 Merge pull request #23237 from owncloud/backport-22901
[stable9] Add DAV authenticated also to other scopes
2016-03-15 16:03:35 +01:00
Thomas Müller
5466a800fa Merge pull request #23252 from owncloud/invalid-share-storage-9
[9.0] dont break when there is an invalid share
2016-03-15 15:59:24 +01:00
Bjoern Schiessle
0f372a2a8c allow group shares, even if not all public keys are available 2016-03-15 15:13:55 +01:00
Lukas Reschke
987146d5db Delay check till scanner is used
Fixes https://github.com/owncloud/core/issues/22973 and https://github.com/owncloud/core/issues/22987
2016-03-15 14:39:16 +01:00
Robin Appelman
9d688e655d move failedstorage to core 2016-03-15 12:49:12 +01:00
Robin Appelman
f29440dbbc dont break when there is an invalid share 2016-03-15 12:49:06 +01:00
Thomas Müller
5a6b2956d8 Merge pull request #23022 from owncloud/stable9_backport_22602
[stable 9]   Do not check all chunks of a chunked upload if we do not need to
2016-03-15 12:15:45 +01:00
Thomas Müller
99de93a6c6 Merge pull request #23075 from owncloud/backport-23074-oracle-ext-storage
[9.0] Correctly escape join statements and use selectAlias
2016-03-15 12:13:54 +01:00
Thomas Müller
4159187a6e Merge pull request #23229 from owncloud/backport-23218-memcached-exceptions-on-success
[9.0] Fix errors in memcached implementation
2016-03-15 12:10:23 +01:00
Thomas Müller
6f64c99653 Merge pull request #23230 from owncloud/backport-23191
[stable9] Verify the getResponse returns a ResponseInterface
2016-03-15 12:09:55 +01:00
Thomas Müller
ce0f28c123 Merge pull request #23231 from owncloud/backport-23190
[stable9] Use proper URLs for search results
2016-03-15 12:07:45 +01:00
Thomas Müller
cca3a249fd Merge pull request #23240 from owncloud/backport-23222
backport of #23222
2016-03-15 12:07:15 +01:00
Thomas Müller
0608455b01 Merge pull request #23247 from owncloud/stable9_backport_23226
[stable 9] Generate a valid URL for link notification
2016-03-15 12:06:41 +01:00
Roeland Jago Douma
3a5e90fa03 Generate a valid URL for link notification
fixes #23197

* Updated unit test
2016-03-15 07:34:53 +01:00
Phiber2000
e2c557ab82 backport of #23222 (#23225) 2016-03-14 17:59:40 +01:00
Lukas Reschke
e1727477ac Add DAV authenticated also to other scopes
Fixes https://github.com/owncloud/core/issues/22893
2016-03-14 17:57:37 +01:00
Thomas Müller
cf232c4182 Merge pull request #23112 from owncloud/backport-23086-stable9
[9.0] remove deprecated ldap_sort
2016-03-14 17:16:36 +01:00
Thomas Müller
efa673136e Merge pull request #23223 from owncloud/backport-23091-case-insensitive-group-sharing
[9.0] Case insensitive group sharing
2016-03-14 16:33:51 +01:00
Thomas Müller
3380a3af74 Merge pull request #22949 from owncloud/stable9-fix-group-share-migration-for-calendars-and-contacts
Fix group sharing and sharing permissions - fixes #22932
2016-03-14 16:31:08 +01:00
Thomas Müller
80d0e43fc7 Merge pull request #22933 from owncloud/stable9-backport-22872
[stable9] Update error text for link passwords
2016-03-14 16:20:00 +01:00
Lukas Reschke
effc522572 Use proper URLs for search results
Fixes https://github.com/owncloud/core/issues/23136
2016-03-14 16:16:25 +01:00
Thomas Müller
689f3dea45 Merge pull request #22943 from owncloud/backport-22800-stable9
[9.0] don't hide server not available exception, fixes #20536
2016-03-14 16:15:50 +01:00
Lukas Reschke
3a73f97706 Verify the getResponse returns a ResponseInterface
Can also return `null` as per PHPDoc. Regression added by 97f5c095f4

Fixes https://github.com/owncloud/core/issues/23145
2016-03-14 16:15:18 +01:00
Thomas Müller
a09ffb274b Merge pull request #23065 from owncloud/stable9-add-rewrite-rules-after-setup
[stable9] Add base rewrite rule only when RewriteBase is defined
2016-03-14 16:14:21 +01:00
Thomas Müller
2609bf3500 Merge pull request #23114 from owncloud/no-fatal-error-if-DSTART-is-not-set-stable9
No fatal error if dstart is not set stable9
2016-03-14 16:14:03 +01:00
Joas Schilling
9190885b4e Fix errors in memcached implementation 2016-03-14 16:13:35 +01:00
Thomas Müller
f79195853e Merge pull request #23221 from owncloud/backport-23214-url-cache-key-length
[9.0] Shorter cache key for URL entries
2016-03-14 16:08:29 +01:00
Thomas Müller
884a3b9bb4 Merge pull request #23105 from owncloud/readonly-birthday-cal-stable9
The birthday_calendar is read-only
2016-03-14 16:07:42 +01:00
Joas Schilling
a9ed80869a Correctly lower the search input as well 2016-03-14 13:48:45 +01:00
Joas Schilling
8e49a99896 Add integration tests for sharee API 2016-03-14 13:48:21 +01:00
Joas Schilling
5b593450c3 Return the correct group casing in sharee api 2016-03-14 13:48:13 +01:00
Joas Schilling
69cf557d0b Shorter cache key for URL entries 2016-03-14 13:34:34 +01:00
Thomas Müller
5c38c1c845 Merge pull request #23156 from owncloud/add-port-support-to-trusteddomain-stable9
Explicitly check for port
2016-03-14 12:30:58 +01:00
Thomas Müller
dac69225d2 Merge pull request #23102 from owncloud/stable9-backport-23094
[stable9] Fake LOCK statement for Windows 7, 8 and 10 network mounts
2016-03-13 19:51:26 +01:00
Lukas Reschke
f984718921 Adjust wording a bit
**Before:**
> Your PHP version (5.4.16) is no longer supported by PHP. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by PHP.

**After:**
> You are currently running PHP 5.4.0. We encourage you to upgrade your PHP version to take advantage of performance and security updates provided by the PHP Group as soon as your distribution supports it.

Fixes https://github.com/owncloud/enterprise/issues/1170
2016-03-11 17:46:21 +01:00
Thomas Müller
b752a08d63 Merge pull request #23127 from owncloud/fix-getOwner-on-fileshome-stable9
getOwner is not available on FileHome - fixes #23116
2016-03-11 15:05:20 +01:00
Lukas Reschke
9bc99bb297 Explicitly check for port
The setup uses `\OCP\IRequest::getInsecureServerHost` which in some cases can also include a port. This makes the trusted domain check fail thus.

I've decided to add this here that way because adjusting the setup would require parsing the host properly. This is not something that can be done very good in PHP. Check the following example for why `parse_url` is not our friend: https://3v4l.org/k501Z
2016-03-11 14:54:20 +01:00
Thomas Müller
e3de44ea51 Merge pull request #23060 from owncloud/stable9_backport_23056
[stable 9] Add mimetype to OCS Share API output
2016-03-11 14:51:21 +01:00
Thomas Müller
aeb480a8c3 Merge pull request #23113 from owncloud/allow-migrating-all-calendars-stable9
Allow to migrate calendars of all users
2016-03-10 23:10:41 +01:00
Georg Ehrke
b0c7eba7d0 add title and color to birthday calendar 2016-03-10 22:55:32 +01:00
Thomas Müller
e89f27e191 getOwner is not available on FileHome - fixes #23116 2016-03-10 22:51:02 +01:00
Lukas Reschke
bd17cc793c Improved rewrite rule
As per https://github.com/owncloud/core/issues/23098 and https://github.com/owncloud/core/issues/23117
2016-03-10 22:18:53 +01:00
Thomas Müller
62a36ee884 The birthday_calendar is read-only 2016-03-10 21:36:11 +01:00
Thomas Müller
a58e374956 Merge pull request #22909 from owncloud/backport-22244-prevent-calendar-proppatch
[9.0] Prevent calendar proppatch for share recipients
2016-03-10 21:32:38 +01:00
Roeland Jago Douma
67c4759017 Add intergration tests 2016-03-10 21:20:49 +01:00
Thomas Müller
36b543c490 fixes #23004 2016-03-10 17:59:02 +01:00
Thomas Müller
8465f9b6c6 fixes #23020 2016-03-10 17:58:53 +01:00
Thomas Müller
281a0e9e03 Merge pull request #23096 from owncloud/stable9_backport_23084
[stable 9] Fix MKCOL for IE11 as well
2016-03-10 17:49:01 +01:00
Joas Schilling
7126b64088 Allow to migrate calendars of all users 2016-03-10 17:47:08 +01:00
Arthur Schiwon
38d137c34c remove deprecated ldap_sort 2016-03-10 17:08:25 +01:00
Morris Jobke
098ce188b7 Fake LOCK statement for Windows 7, 8 and 10 network mounts
* fixes #22596
2016-03-10 15:57:33 +01:00
Thomas Müller
730620cfb2 Merge pull request #22912 from owncloud/stable9-diskfreespace-filesworkaround
[stable9] Fix call to disk_free_space when a file is provided
2016-03-10 15:31:38 +01:00
Roeland Jago Douma
dd7131512d Fix MKCOL for IE11 as well
Using https://github.com/owncloud/core/pull/22274 we have to patch the
iedavclient.js as well.
2016-03-10 15:18:58 +01:00
Thomas Müller
85168315ab Merge pull request #23071 from owncloud/backport-23032-no-response-on-cli
[9.0] Do not set response status in CLI in case of error
2016-03-10 10:54:25 +01:00
Joas Schilling
09febaad49 Correctly escape join statements and use selectAlias 2016-03-10 10:28:39 +01:00
Thomas Müller
83894b58fe Merge pull request #23016 from owncloud/stable9_backport_23008
[stable 9] Select queries in the default share provider should query for file/folder
2016-03-10 09:10:22 +01:00
Vincent Petry
f374368568 Do not set response status in CLI in case of error 2016-03-10 08:57:29 +01:00
Thomas Müller
4030b82c97 Merge pull request #23030 from owncloud/require-xmlreader
[stable9] Add XMLReader as requirement
2016-03-10 08:26:48 +01:00
Thomas Müller
4e90bc017e Merge pull request #22825 from owncloud/backport-22778-stable9
[backport] [stable9] untangle different user manager instances, fixes #22770
2016-03-10 08:26:11 +01:00
Lukas Reschke
b315a5ee29 Add base rewrite rule only when RewriteBase is defined
In case Apache is configured with an `Alias` such as with the ownCloud packages the rewrite rules will fail when no valid RewriteBase is configured.
2016-03-09 22:41:32 +01:00
Thomas Müller
b017434302 Merge pull request #23024 from owncloud/stable9-backport-22986
[stable9] Remove disabled autocorrect for new file names
2016-03-09 21:44:47 +01:00
Roeland Jago Douma
48cdf38d00 Add mimetype to OCS Share API output
Fixes #23044
2016-03-09 21:28:38 +01:00
Vincent Petry
11f76b2918 Fix call to disk_free_space when a file is provided
In the case of shared files, we have to call free_space() on the file
name. This has the side-effect that when uploading to a local storage
without quota set, it will call disk_free_space with the file name,
which fails.

This fix uses the parent folder in case the given path is a file.
2016-03-09 15:53:37 +01:00
Lukas Reschke
316f86f2a3 Add XMLReader as requirement
The SabreDAV release in 9.0 requires XMLReader, while this is usually compiled in by default some distributions like Gentoo don't.

Without this ownCloud gives a fatal 500 error instead of telling people to enable XMLReader.

Fixes https://github.com/owncloud/core/issues/23003
2016-03-09 15:29:08 +01:00
Thomas Müller
bd144efeb1 Merge pull request #22990 from owncloud/stable9-backport-has-key
[stable9] Use "hasKey" instead of checking the value
2016-03-09 15:04:59 +01:00
Morris Jobke
88b9db44a0 Remove disabled autocorrect for new file names
* ref #22784
2016-03-09 14:59:57 +01:00
Roeland Jago Douma
91c7d293ca Added tests
* Unit tests for OC_Filechunking to verify the isComplete function
* Intergration tests to show that shuffling chunks is all fine
2016-03-09 14:48:42 +01:00
Roeland Jago Douma
313b881d2b Do not check all chunks of a chunked upload if we do not need to
Fixes #22601

Before we did a full test on all chunks to verify if a chunked upload
was completed. This is unneeded since if we are missing one chunk we can
already fail.

Also we look from back to front since it is much more likely that we
find a missing chunk thus can error out early.
2016-03-09 14:48:31 +01:00
Roeland Jago Douma
9120448302 Select queries in the default share provider should query for file/folder
There can be leftover calendar and contacts shares in the oc_share
table. We need to filter those out properly.
2016-03-09 13:56:35 +01:00
Thomas Müller
d4d4b8d51a Merge pull request #22841 from owncloud/stable9_22830
[Stable 9] Rename and move permissions are set when a file is updatable
2016-03-09 12:27:03 +01:00
Thomas Müller
b955ce6141 Merge pull request #22886 from owncloud/stable9-show-version-to-update-to
[stable9] Show version to update to properly
2016-03-09 12:26:53 +01:00
Thomas Müller
e2b43c4095 Merge pull request #22908 from owncloud/backport-22904-group-manager-wrong-return
[9.0] Make sure that the return value is an array
2016-03-09 12:26:42 +01:00
Thomas Müller
d84cccb911 Merge pull request #22919 from owncloud/backport-double-url-encoding
[stable9] Remove double URL encoding
2016-03-09 12:26:29 +01:00
Thomas Müller
c2a16e0584 Merge pull request #22922 from owncloud/stable9-share-archivenamedownloadall
[stable9] Fix archive file name when downloading public share
2016-03-09 12:26:18 +01:00
Thomas Müller
d652c87f86 Merge pull request #22924 from owncloud/stable9-versions-fixmtimetooltip
[stable9] Fix tooltip for versions mtime
2016-03-09 12:26:04 +01:00
Thomas Müller
72d4e672b2 Merge pull request #22925 from owncloud/stable9-trash-returnfalseon401
[stable9] Return false on 401 in file list + trash file list
2016-03-09 12:25:47 +01:00
Thomas Müller
95201a829f Merge pull request #22926 from owncloud/stable9-files-newmenu-removebrowsercomplete
[stable9] Remove browser autocomplete in new file menu
2016-03-09 12:25:30 +01:00
Thomas Müller
734b3e1408 Merge pull request #22965 from owncloud/stable9-fix-gdrive
[stable9] Fix compatibility with PHP 5.4
2016-03-09 12:20:24 +01:00
Lukas Reschke
ddf56b84d4 Use "hasKey" instead of checking the value
If the check is negative it would depending on the used cache store the value as an empty string. When reading the value this check would thus return "false" even if a value exists.
2016-03-09 09:19:11 +01:00
Lukas Reschke
1975ffa9e7 Fix compatibility with PHP 5.4
Fixes https://github.com/owncloud/core/issues/22960
2016-03-08 19:58:49 +01:00
C Montero-Luque
81f694d83e 9.0.0 2016-03-08 08:48:12 -05:00
Thomas Müller
8d6a6667e5 Fix group sharing and sharing permissions - fixes #22932 2016-03-08 14:45:36 +01:00
Thomas Müller
f9a80a9c12 Merge pull request #22945 from owncloud/stable9-fixsharemountrecursion
[stable9] Fix share mounting recursion
2016-03-08 14:42:04 +01:00
Vincent Petry
d63f5561fb Fix share mounting recursion 2016-03-08 12:58:46 +01:00
Arthur Schiwon
213dfa2b85 don't hide server not available exception, fixes #20536 2016-03-08 12:40:12 +01:00
Morris Jobke
859303164e Update error text for link passwords
* this removes the old tooltip first before showing
  the new one to update the text - otherwise the old
  text will be shown
2016-03-08 09:00:37 +01:00
Vincent Petry
795331212a Remove browser autocomplete in new file menu 2016-03-07 22:04:36 +01:00
Vincent Petry
c9476115b0 Return false on 401 in file list + trash file list
This gives a chance to the global ajax error handler to do its work if
the session expired.
2016-03-07 22:02:19 +01:00
Vincent Petry
cfd9c7f6b9 Fix tooltip for versions mtime
It was missing a call to jquery.tooltip
2016-03-07 21:58:17 +01:00
Vincent Petry
ebfc8b67d7 Remove "files" arg from download URL in public link page
When no files were specified for download, it means folder download.
In this case, no need to pass an empty "files" argument.
2016-03-07 21:48:15 +01:00
Vincent Petry
f9e1d4d56e Fix archive file name when downloading public share
When download a public link share folder using the button on the top
right, it doesn't provide a list of files.

This fix makes sure to trigger the correct logic when no file list was
given.
2016-03-07 21:48:10 +01:00
Lukas Reschke
fab42c7cd2 Remove double URL encoding
ZipStreamer as bundled with 9.0 will properly encode the filename already.

Fixes https://github.com/owncloud/core/issues/22836#issuecomment-193336245
2016-03-07 19:33:50 +01:00
C. Montero Luque
9232a124e2 Merge pull request #22913 from owncloud/fix-failing-migration-stable9
Fix failing migration stable9
2016-03-07 11:33:14 -05:00
Thomas Müller
b5a06ecd5c Calendar and addressbook migration commands are always available 2016-03-07 15:24:23 +01:00
Thomas Müller
79811b5806 Handle addressbook migration issue by writing the faulty event to the log and continue 2016-03-07 15:24:13 +01:00
Thomas Müller
6413fffdcb Handle calendar migration issue by writing the faulty event to the log and continue 2016-03-07 15:24:03 +01:00
Thomas Müller
b3b57621b7 Merge pull request #22897 from owncloud/backport-22896
[9.0] Correctly default to null and add type hint
2016-03-07 14:59:49 +01:00
Thomas Müller
6bfeb4595d Merge pull request #22906 from owncloud/stable9-quota-allowuploadwhenfreespaceisunlimited
[stable9] Fix uploading to fed shares where free space is unlimited
2016-03-07 14:58:31 +01:00
Joas Schilling
5af8ebe3bd Allow to change properties of readonly calendars 2016-03-07 13:58:44 +01:00
Joas Schilling
27f3dcc682 Allow to hide a shared calendar 2016-03-07 13:58:32 +01:00
Thomas Müller
b1a1a46193 For 9.0 we don't have the possibility to store calendar and addressbook properties on a per-user basis and therefore we simple don't allow this for now 2016-03-07 13:58:24 +01:00
Joas Schilling
71b3033b35 Make sure that the return value is an array 2016-03-07 13:55:33 +01:00
Vincent Petry
c1876ea51c Fix uploading when free space is unlimited
A federated share can report unlimited quota as -3, so the
ajax/upload.php code needs to be adjusted to block uploads when the free
space is unlimited.
2016-03-07 12:41:36 +01:00
Joas Schilling
9ec89b99b1 Correctly default to null and add type hint 2016-03-07 10:55:01 +01:00
C Montero-Luque
0945cb7a0e 9.0.0 RC3 2016-03-06 17:51:05 -05:00
Thomas Müller
6f4712a314 Merge pull request #22884 from owncloud/backport-cache-results
[stable9] Cache results of testRemoteUrl
2016-03-06 19:57:53 +01:00
Thomas Müller
d043b6ba91 Merge pull request #22889 from owncloud/stable9-use-custom-header
[stable9] Use custom header
2016-03-06 19:53:19 +01:00
Lukas Reschke
ef66729980 Use custom header
PHP in CGI mode eats the Authorization header => 💣
2016-03-05 23:07:11 +01:00
Lukas Reschke
17f5f19187 Show version to update to properly
Properly shows the version that will be updated to.
2016-03-05 22:02:55 +01:00
Lukas Reschke
71e3f7f866 Cache results of testRemoteUrl
Otherwise setting up the storage will result in a HTTP request and thus slowing down ownCloud.

Replaces https://github.com/owncloud/core/pull/22855
2016-03-05 21:09:58 +01:00
C Montero-Luque
0a5f34ab80 9.0.0 RC2 2016-03-04 18:08:02 -05:00
C. Montero Luque
5488bb74fe Merge pull request #22879 from owncloud/stable9-backport-use-clob-for-timezone
[stable9] Use CLOB for timezone
2016-03-04 18:02:45 -05:00
C. Montero Luque
4b85660984 Merge pull request #22871 from owncloud/enable-federation-app-stable9
[stable9] Automatically enabled federation app
2016-03-04 18:02:32 -05:00
C. Montero Luque
5080c34d78 Merge pull request #22867 from owncloud/stable9-backport-22865
[stable9] Run cleanup of expired DB file locks to background job
2016-03-04 17:45:07 -05:00
C. Montero Luque
5d402fc817 Merge pull request #22848 from owncloud/stable9-fileactions-downloadspinnerfix
[stable9] Fix download spinner to work with CSS styles
2016-03-04 16:41:26 -05:00
Lukas Reschke
fb62043cc1 [stable9] Use CLOB for timezone
TEXT defaults to a length of 255 which is going to fail in some cases as the timezone can be rather long.

This changes it back to a CLOB as it has been before as well: owncloudarchive/calendar@8d8bb68. I'm not super convinced that CLOB is the best choice here but at least it seems to work.

Fixes #22876

Backport of https://github.com/owncloud/core/pull/22878 to stable9
2016-03-04 22:12:54 +01:00
C. Montero Luque
b3c9ed8d5c Merge pull request #22782 from owncloud/backport-22776-doc-fix
Add Versions app header to config.sample.php
2016-03-04 16:10:35 -05:00
Morris Jobke
9737290e39 Run cleanup of expired DB file locks to background job
* fixes #22819

The old way fired a DELETE statement on each destruction of the
DBLockingProvider. Which could cause a lot of queries. It's enough
to run this every 5 minutes in a background job, which in the end
could result in file locks that exists 5 minutes longer - in the
worst case and for not properly released locks.

This makes the DB based locking a lot more performant and could
result in a similar performance to the Redis based locking provider.
2016-03-04 20:13:05 +01:00
C. Montero Luque
121ff350d4 Merge branch 'stable9' into enable-federation-app-stable9 2016-03-04 13:38:02 -05:00
C. Montero Luque
bb0c304482 Merge pull request #22861 from owncloud/stable9-trashbin-checkpath
[stable9] Properly check path validity before deleting to trash
2016-03-04 13:33:23 -05:00
Lukas Reschke
c9c85b8d4a Adjust OCS test 2016-03-04 17:59:57 +01:00
Lukas Reschke
eb59aa8be4 Automatically enabled federation app 2016-03-04 17:40:45 +01:00
Vincent Petry
96d45e90dc Properly check path validity before deleting to trash
This prevents deleting the whole "files" folder of the user whenever
$ownerPath is empty. This can happen in concurrency situations.
2016-03-04 15:33:02 +01:00
Thomas Müller
0655f25406 Merge pull request #22858 from owncloud/stable9-release-channel
[stable9] Add release channel selection back
2016-03-04 15:29:37 +01:00
Thomas Müller
434747f450 Merge pull request #22832 from owncloud/external-unavailable-recheck9
[9.0] allow availability recheck for external storages
2016-03-04 15:29:27 +01:00
Lukas Reschke
7ff2b9232b Add release channel selection back
Allows to select the release channels again and also shows the last check date
2016-03-04 14:39:14 +01:00
Thomas Müller
3d28f364c5 Merge pull request #22852 from owncloud/backport-22851-php54-for-comments
[9.0] ucwords does not support delimiter on 5.4
2016-03-04 14:05:45 +01:00
Joas Schilling
62399f7852 ucwords does not support delimiter on 5.4 2016-03-04 12:20:50 +01:00
Thomas Müller
4fc6deaaf0 Merge pull request #22822 from owncloud/stable9-exclude-assets
[stable9] Exclude the assets folder from integrity check
2016-03-04 11:50:24 +01:00
Vincent Petry
e6c6ee8d2a Fix download spinner to work with CSS styles
A recent change replaced img elements with CSS icons for file actions.
This fix adjusts the logic to work properly with CSS icons instead of
images.
2016-03-04 10:50:41 +01:00
Roeland Jago Douma
3673cfae3c Rename and move permissions are set when a file is updatable
* Fix unit tests
2016-03-04 09:37:52 +01:00
Thomas Müller
4da858b3b7 Merge pull request #22829 from owncloud/stable9-revert-22264-read-version-from-info.xml-only
[stable9] Revert "No longer evaluate appinfo/version"
2016-03-04 08:55:52 +01:00
Vincent Petry
8e8f5cdddf Properly set exception in FailedStorage 2016-03-03 20:07:22 +01:00
Robin Appelman
f603c57751 allow availability recheck for external storages 2016-03-03 20:07:18 +01:00
Vincent Petry
e155f28f5e Revert "No longer evaluate appinfo/version" 2016-03-03 18:42:23 +01:00
Arthur Schiwon
dd556d77da untangle different user manager instances, fixes #22770 2016-03-03 17:26:52 +01:00
Lukas Reschke
750fc9ae26 Merge pull request #22818 from owncloud/backport-fix-encryption-on-version-restore
[stable9] Keep "encryptedVersion" when calling `\OC\Files\View::copy`
2016-03-03 16:18:51 +01:00
Lukas Reschke
4186bcbdf2 Exclude the assets folder from integrity check
We should not scan the assets folder as this can contain user specific content. Partially addresses https://github.com/owncloud/core/issues/22803
2016-03-03 16:00:34 +01:00
Lukas Reschke
98f79173ed Keep "encryptedVersion" when calling \OC\Files\View::copy
When calling `\OC\Files\View::copy` we should also keep the version to ensure that the file will always have the correct version attached and can be successfully decrypted.

To test this the following steps are necessary (from https://github.com/owncloud/core/issues/22781#issuecomment-191328982):

1. setup a new ownCloud 9.0 beta2
2. enable encryption
2. upload a docx (5.7MB large)
3. upload the same file again and overwrite the existing file
4. I can download the original file and the first version
5. I restore the first version
6. restored version can no longer be downloaded with the error described above

The manual cache operation in `\OCA\Files_Versions\Storage` is unfortunately necessary since `\OCA\Files_Versions\Storage::copyFileContents` is not using `\OCP\Files\Storage::moveFromStorage` in the case when an object storage is used. Due to the workaround added in 54cea05271 the stream is directly copied and thus bypassing the FS.
2016-03-03 14:41:53 +01:00
RealRancor
8d07cb4d85 Add Versions app header to config.sample.php 2016-03-02 15:33:09 +01:00
C Montero-Luque
445957a0e2 9.0.0 RC1 2016-03-01 16:59:42 -05:00
1561 changed files with 34431 additions and 4878 deletions

35
.drone.yml Normal file
View File

@@ -0,0 +1,35 @@
build:
integration:
image: morrisjobke/nextcloud-ci-php7:1.0.3
commands:
- git submodule update --init
- ./occ maintenance:install --admin-pass=admin
- cd build/integration
- ./run.sh
jsunit:
image: morrisjobke/nextcloud-ci-jsunit:1.0.2
commands:
- ./autotest-js.sh
sqlite:
image: morrisjobke/nextcloud-ci-php7:1.0
commands:
- rm -rf data/* config/config.php # TODO: remove this - temporary fix for CI issues
- git submodule update --init
- ./occ maintenance:install --database-name oc_autotest --database-user oc_autotest --admin-user admin --admin-pass admin --database sqlite --database-pass=''
- ./autotest.sh sqlite
postgres:
image: morrisjobke/nextcloud-ci-php7:1.0
commands:
- sleep 10 # gives the database enough time to initialize
- rm -rf data/* config/config.php # TODO: remove this - temporary fix for CI issues
- git submodule update --init
- ./autotest.sh pgsql
compose:
cache:
image: redis
postgres:
image: postgres
environment:
- POSTGRES_USER=oc_autotest
- POSTGRES_PASSWORD=oc_autotest

2
.gitignore vendored
View File

@@ -22,7 +22,9 @@
!/apps/user_ldap
!/apps/provisioning_api
!/apps/systemtags
!/apps/admin_audit
!/apps/updatenotification
!/apps/theming
/apps/files_external/3rdparty/irodsphp/PHPUnitTest
/apps/files_external/3rdparty/irodsphp/web
/apps/files_external/3rdparty/irodsphp/prods/test

2
.gitmodules vendored
View File

@@ -1,3 +1,3 @@
[submodule "3rdparty"]
path = 3rdparty
url = https://github.com/owncloud/3rdparty.git
url = https://github.com/nextcloud/3rdparty.git

View File

@@ -37,6 +37,17 @@
SetEnv htaccessWorking true
</IfModule>
</IfModule>
<IfModule mod_php7.c>
php_value upload_max_filesize 513M
php_value post_max_size 513M
php_value memory_limit 512M
php_value mbstring.func_overload 0
php_value default_charset 'UTF-8'
php_value output_buffering 0
<IfModule mod_env.c>
SetEnv htaccessWorking true
</IfModule>
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
@@ -48,24 +59,6 @@
RewriteRule ^(build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*
RewriteRule ^(\.|autotest|occ|issue|indie|db_|console).* - [R=404,L]
# Rewrite rules for `front_controller_active`
Options -MultiViews
RewriteRule ^core/js/oc.js$ index.php/core/js/oc.js [PT,E=PATH_INFO:$1]
RewriteRule ^core/preview.png$ index.php/core/preview.png [PT,E=PATH_INFO:$1]
RewriteCond %{REQUEST_FILENAME} !\.(css|js|svg|gif|png|html|ttf|woff|ico)$
RewriteCond %{REQUEST_FILENAME} !core/img/favicon.ico$
RewriteCond %{REQUEST_FILENAME} !/remote.php
RewriteCond %{REQUEST_FILENAME} !/public.php
RewriteCond %{REQUEST_FILENAME} !/cron.php
RewriteCond %{REQUEST_FILENAME} !/core/ajax/update.php
RewriteCond %{REQUEST_FILENAME} !/status.php
RewriteCond %{REQUEST_FILENAME} !/ocs/v1.php
RewriteCond %{REQUEST_FILENAME} !/ocs/v2.php
RewriteCond %{REQUEST_FILENAME} !/updater/
RewriteCond %{REQUEST_FILENAME} !/ocs-provider/
RewriteCond %{REQUEST_URI} !^/.well-known/acme-challenge/.*
RewriteRule .* index.php [PT,E=PATH_INFO:$1]
</IfModule>
<IfModule mod_mime.c>
AddType image/svg+xml svg svgz

2
.lgtm Normal file
View File

@@ -0,0 +1,2 @@
pattern = "(?i):shipit:|:\\+1:|LGTM"
self_approval_off=true

View File

@@ -13,7 +13,7 @@ env:
branches:
only:
- master
# - /^stable\d+(\.\d+)?$/
- /^stable\d+(\.\d+)?$/
addons:
apt:
@@ -29,6 +29,7 @@ install:
script:
- sh -c "if [ '$TC' = 'syntax' ]; then composer install && vendor/bin/parallel-lint --exclude vendor/jakub-onderka/ --exclude 3rdparty/symfony/polyfill-php70/Resources/stubs/ --exclude 3rdparty/patchwork/utf8/src/Patchwork/Utf8/Bootup/ --exclude 3rdparty/paragonie/random_compat/lib/ --exclude vendor/composer/autoload_static.php --exclude 3rdparty/composer/autoload_static.php .; fi"
- sh -c "if [ '$TEST_DAV' != '1' ]; then echo \"Not testing DAV\"; fi"
- sh -c "if [ '$TEST_DAV' = '1' ]; then echo \"Testing DAV\"; fi"
@@ -42,5 +43,13 @@ matrix:
env: DB=sqlite;TC=carddav
- php: 5.4
env: DB=sqlite;TC=caldav
- php: 5.4
env: DB=sqlite;TC=syntax;TEST_DAV=0
- php: 5.5
env: DB=sqlite;TC=syntax;TEST_DAV=0
- php: 5.6
env: DB=sqlite;TC=syntax;TEST_DAV=0
- php: 7.0
env: DB=sqlite;TC=syntax;TEST_DAV=0
fast_finish: true

View File

@@ -1,6 +1,6 @@
## Submitting issues
If you have questions about how to install or use ownCloud, please direct these to the [mailing list][mailinglist] or our [forum][forum]. We are also available on [IRC][irc].
If you have questions about how to install or use Nextcloud, please direct these to our [forum][forum]. We are also available on [IRC][irc].
### Short version
@@ -11,40 +11,31 @@ If you have questions about how to install or use ownCloud, please direct these
- Go to one of the repositories, click "issues" and type any word in the top search/command bar.
- You can also filter by appending e. g. "state:open" to the search string.
- More info on [search syntax within github](https://help.github.com/articles/searching-issues)
* This repository ([core](https://github.com/owncloud/core/issues)) is *only* for issues within the ownCloud core code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
* __SECURITY__: Report any potential security bug to us via [our HackerOne page](https://hackerone.com/owncloud) or security@owncloud.com following our [security policy](https://owncloud.org/security/) instead of filing an issue in our bug tracker
* The issues in other components should be reported in their respective repositories:
- [Android client](https://github.com/owncloud/android/issues)
- [iOS client](https://github.com/owncloud/ios/issues)
- [Desktop client](https://github.com/owncloud/client/issues)
- [Documentation](https://github.com/owncloud/documentation/issues)
- [ownCloud apps](https://github.com/owncloud/core/wiki/Maintainers#apps-repo)
* This repository ([core](https://github.com/nextcloud/core/issues)) is *only* for issues within the Nextcloud Server code. This also includes the apps: files, encryption, external storage, sharing, deleted files, versions, LDAP, and WebDAV Auth
* __SECURITY__: Report any potential security bug to us via security@nextcloud.com following our [security policy](https://nextcloud.com/security/) instead of filing an issue in our bug tracker-
* The issues in other components should be reported in their respective repositories: You will find them in our [GitHub Organization](https://github.com/nextcloud/)
* Report the issue using our [template][template], it includes all the information we need to track down the issue.
Help us to maximize the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
[template]: https://raw.github.com/owncloud/core/master/issue_template.md
[mailinglist]: https://mailman.owncloud.org/mailman/listinfo/owncloud
[forum]: https://forum.owncloud.org/
[irc]: https://webchat.freenode.net/?channels=owncloud&uio=d4
[template]: https://raw.github.com/nextcloud/core/master/issue_template.md
[forum]: https://help.nextcloud.com/
[irc]: https://webchat.freenode.net/?channels=nextcloud
## Contributing to Source Code
Thanks for wanting to contribute source code to ownCloud. That's great!
Thanks for wanting to contribute source code to Nextcloud. That's great!
Before we're able to merge your code into the ownCloud core, you need to sign our [Contributor Agreement][agreement].
Please read the [Developer Manuals][devmanual] to learn how to create your first application or how to test the ownCloud code with PHPUnit.
Please read the [Developer Manuals][devmanual] to learn how to create your first application or how to test the Nextcloud code with PHPUnit.
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.
[agreement]: https://owncloud.org/about/contributor-agreement/
[devmanual]: https://owncloud.org/dev
[devmanual]: https://docs.nextcloud.org/server/10/developer_manual/
## Translations
Please submit translations via [Transifex][transifex].
[transifex]: https://www.transifex.com/projects/p/owncloud/
[transifex]: https://www.transifex.com/nextcloud

View File

@@ -0,0 +1,27 @@
<?php
/**
* @author Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
$logger = \OC::$server->getLogger();
$userSession = \OC::$server->getUserSession();
$groupManager = \OC::$server->getGroupManager();
$auditLogger = new \OCA\Admin_Audit\AuditLogger($logger, $userSession, $groupManager);
$auditLogger->registerHooks();

View File

@@ -0,0 +1,18 @@
<?xml version="1.0"?>
<info>
<id>admin_audit</id>
<name>Auditing / Logging</name>
<description>Provides logging abilities for Nextcloud such as logging file
accesses or otherwise sensitive actions.
</description>
<licence>AGPL</licence>
<author>Nextcloud</author>
<version>1.0.0</version>
<dependencies>
<owncloud min-version="9.0" max-version="9.1" />
</dependencies>
<types>
<logging/>
</types>
<default_enable/>
</info>

View File

@@ -0,0 +1,76 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Admin_Audit\Actions;
use OCP\ILogger;
class Action {
/** @var ILogger */
private $logger;
/**
* @param ILogger $logger
*/
public function __construct(ILogger $logger) {
$this->logger = $logger;
}
/**
* Log a single action with a log level of info
*
* @param string $text
* @param array $params
* @param array $elements
*/
public function log($text,
array $params,
array $elements) {
foreach($elements as $element) {
if(!isset($params[$element])) {
$this->logger->critical(
sprintf(
'$params["'.$element.'"] was missing. Transferred value: %s',
print_r($params, true)
)
);
return;
}
}
$replaceArray = [];
foreach($elements as $element) {
if($params[$element] instanceof \DateTime) {
$params[$element] = $params[$element]->format('Y-m-d H:i:s');
}
$replaceArray[] = $params[$element];
}
$this->logger->info(
vsprintf(
$text,
$replaceArray
),
[
'app' => 'admin_audit'
]
);
}
}

View File

@@ -0,0 +1,56 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Admin_Audit\Actions;
/**
* Class Auth logs all auth related actions
*
* @package OCA\Admin_Audit\Actions
*/
class Auth extends Action {
public function loginAttempt(array $params) {
$this->log(
'Login attempt: "%s"',
$params,
[
'uid',
]
);
}
public function loginSuccessful(array $params) {
$this->log(
'Login successful: "%s"',
$params,
[
'uid',
]
);
}
public function logout(array $params) {
$this->log(
'Logout occurred',
[],
[]
);
}
}

View File

@@ -0,0 +1,135 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Admin_Audit\Actions;
/**
* Class Files logs the actions to files
*
* @package OCA\Admin_Audit\Actions
*/
class Files extends Action {
/**
* Logs file read actions
*
* @param array $params
*/
public function read(array $params) {
$this->log(
'File accessed: "%s"',
$params,
[
'path',
]
);
}
/**
* Logs rename actions of files
*
* @param array $params
*/
public function rename(array $params) {
$this->log(
'File renamed: "%s" to "%s"',
$params,
[
'oldpath',
'newpath',
]
);
}
/**
* Logs creation of files
*
* @param array $params
*/
public function create(array $params) {
$this->log(
'File created: "%s"',
$params,
[
'path',
]
);
}
/**
* Logs copying of files
*
* @param array $params
*/
public function copy(array $params) {
$this->log(
'File copied: "%s" to "%s"',
$params,
[
'oldpath',
'newpath',
]
);
}
/**
* Logs writing of files
*
* @param array $params
*/
public function write(array $params) {
$this->log(
'File written to: "%s"',
$params,
[
'path',
]
);
}
/**
* Logs update of files
*
* @param array $params
*/
public function update(array $params) {
$this->log(
'File updated: "%s"',
$params,
[
'path',
]
);
}
/**
* Logs deletions of files
*
* @param array $params
*/
public function delete(array $params) {
$this->log(
'File deleted: "%s"',
$params,
[
'path',
]
);
}
}

View File

@@ -0,0 +1,73 @@
<?php
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Admin_Audit\Actions;
use OCA\Admin_Audit\Actions\Action;
use OCP\IGroup;
use OCP\IUser;
/**
* Class GroupManagement logs all group manager related events
*
* @package OCA\Admin_Audit
*/
class GroupManagement extends Action {
/**
* log add user to group event
*
* @param IGroup $group
* @param IUser $user
*/
public function addUser(IGroup $group, IUser $user) {
$this->log('User "%s" added to group "%s"',
[
'group' => $group->getGID(),
'user' => $user->getUID()
],
[
'user', 'group'
]
);
}
/**
* log remove user from group event
*
* @param IGroup $group
* @param IUser $user
*/
public function removeUser(IGroup $group, IUser $user) {
$this->log('User "%s" removed from group "%s"',
[
'group' => $group->getGID(),
'user' => $user->getUID()
],
[
'user', 'group'
]
);
}
}

View File

@@ -0,0 +1,189 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Admin_Audit\Actions;
use OCP\Share;
/**
* Class Sharing logs the sharing actions
*
* @package OCA\Admin_Audit\Actions
*/
class Sharing extends Action {
/**
* Logs sharing of data
*
* @param array $params
*/
public function shared(array $params) {
if($params['shareType'] === Share::SHARE_TYPE_LINK) {
$this->log(
'The %s "%s" with ID "%s" has been shared via link with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'itemTarget',
'itemSource',
'permissions',
'id',
]
);
} elseif($params['shareType'] === Share::SHARE_TYPE_USER) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the user "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'itemTarget',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
} elseif($params['shareType'] === Share::SHARE_TYPE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been shared to the group "%s" with permissions "%s" (Share ID: %s)',
$params,
[
'itemType',
'itemTarget',
'itemSource',
'shareWith',
'permissions',
'id',
]
);
}
}
/**
* Logs unsharing of data
*
* @param array $params
*/
public function unshare(array $params) {
if($params['shareType'] === Share::SHARE_TYPE_LINK) {
$this->log(
'The %s "%s" with ID "%s" has been unshared (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'id',
]
);
} elseif($params['shareType'] === Share::SHARE_TYPE_USER) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the user "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
} elseif($params['shareType'] === Share::SHARE_TYPE_GROUP) {
$this->log(
'The %s "%s" with ID "%s" has been unshared from the group "%s" (Share ID: %s)',
$params,
[
'itemType',
'fileTarget',
'itemSource',
'shareWith',
'id',
]
);
}
}
/**
* Logs the updating of permission changes for shares
*
* @param array $params
*/
public function updatePermissions(array $params) {
$this->log(
'The permissions of the shared %s "%s" with ID "%s" have been changed to "%s"',
$params,
[
'itemType',
'path',
'itemSource',
'permissions',
]
);
}
/**
* Logs the password changes for a share
*
* @param array $params
*/
public function updatePassword(array $params) {
$this->log(
'The password of the publicly shared %s "%s" with ID "%s" has been changed',
$params,
[
'itemType',
'token',
'itemSource',
]
);
}
/**
* Logs the expiration date changes for a share
*
* @param array $params
*/
public function updateExpirationDate(array $params) {
$this->log(
'The expiration date of the publicly shared %s with ID "%s" has been changed to "%s"',
$params,
[
'itemType',
'itemSource',
'date',
]
);
}
/**
* Logs access of shared files
*
* @param array $params
*/
public function shareAccessed(array $params) {
$this->log(
'The shared %s with the token "%s" by "%s" has been accessed.',
$params,
[
'itemType',
'token',
'uidOwner',
]
);
}
}

View File

@@ -0,0 +1,43 @@
<?php
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Admin_Audit\Actions;
use OCP\ILogger;
use OCP\IUserSession;
class Trashbin extends Action {
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']
);
}
}

View File

@@ -0,0 +1,78 @@
<?php
/**
* @copyright Copyright (c) 2016 Lukas Reschke <lukas@statuscode.ch>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Admin_Audit\Actions;
use OCP\IUser;
/**
* Class UserManagement logs all user management related actions.
*
* @package OCA\Admin_Audit\Actions
*/
class UserManagement extends Action {
/**
* Log creation of users
*
* @param array $params
*/
public function create(array $params) {
$this->log(
'User created: "%s"',
$params,
[
'uid',
]
);
}
/**
* Log deletion of users
*
* @param array $params
*/
public function delete(array $params) {
$this->log(
'User deleted: "%s"',
$params,
[
'uid',
]
);
}
/**
* Logs changing of the user scope
*
* @param IUser $user
*/
public function setPassword(IUser $user) {
if($user->getBackendClassName() === 'Database') {
$this->log(
'Password of user "%s" has been changed',
[
'user' => $user->getUID(),
],
[
'user',
]
);
}
}
}

View File

@@ -0,0 +1,45 @@
<?php
/**
* @copyright Bjoern Schiessle <bjoern@schiessle.org>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Admin_Audit\Actions;
class Versions extends Action {
public function rollback($params) {
$this->log('Version "%s" of "%s" was restored.',
[
'version' => $params['revision'],
'path' => $params['path']
],
['version', 'path']
);
}
public function delete($params) {
$this->log('Version "%s" was deleted.',
['path' => $params['path']],
['path']
);
}
}

View File

@@ -0,0 +1,186 @@
<?php
/**
* @copyright Copyright (c) 2016 Bjoern Schiessle <bjoern@schiessle.org>
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
namespace OCA\Admin_Audit;
use OC\Files\Filesystem;
use OCA\Admin_Audit\Actions\Auth;
use OCA\Admin_Audit\Actions\Files;
use OCA\Admin_Audit\Actions\GroupManagement;
use OCA\Admin_Audit\Actions\Sharing;
use OCA\Admin_Audit\Actions\Trashbin;
use OCA\Admin_Audit\Actions\UserManagement;
use OCA\Admin_Audit\Actions\Versions;
use OCP\IGroupManager;
use OCP\ILogger;
use OCP\IUserSession;
use OCP\Util;
class AuditLogger {
/** @var ILogger */
private $logger;
/** @var IUserSession */
private $userSession;
/** @var IGroupManager */
private $groupManager;
/**
* AuditLogger constructor.
*
* @param ILogger $logger
* @param IUserSession $userSession
* @param IGroupManager $groupManager
*/
public function __construct(ILogger $logger,
IUserSession $userSession,
IGroupManager $groupManager) {
$this->logger = $logger;
$this->userSession = $userSession;
$this->groupManager = $groupManager;
}
/**
* register hooks in order to log them
*/
public function registerHooks() {
$this->userManagementHooks();
$this->groupHooks();
$this->sharingHooks();
$this->authHooks();
$this->fileHooks();
$this->trashbinHooks();
$this->versionsHooks();
}
/**
* connect to user management hooks
*/
private function userManagementHooks() {
$userActions = new UserManagement($this->logger);
Util::connectHook('OC_User', 'post_createUser', $userActions, 'create');
Util::connectHook('OC_User', 'post_deleteUser', $userActions, 'delete');
$this->userSession->listen('\OC\User', 'postSetPassword', [$userActions, 'setPassword']);
}
private function groupHooks() {
$groupActions = new GroupManagement($this->logger);
$this->groupManager->listen('\OC\Group', 'postRemoveUser', [$groupActions, 'removeUser']);
$this->groupManager->listen('\OC\Group', 'postAddUser', [$groupActions, 'addUser']);
}
/**
* connect to sharing events
*/
private function sharingHooks() {
$shareActions = new Sharing($this->logger);
Util::connectHook('OCP\Share', 'post_shared', $shareActions, 'shared');
Util::connectHook('OCP\Share', 'post_unshare', $shareActions, 'unshare');
Util::connectHook('OCP\Share', 'post_update_permissions', $shareActions, 'updatePermissions');
Util::connectHook('OCP\Share', 'post_update_password', $shareActions, 'updatePassword');
Util::connectHook('OCP\Share', 'post_set_expiration_date', $shareActions, 'updateExpirationDate');
Util::connectHook('OCP\Share', 'share_link_access', $shareActions, 'shareAccessed');
}
/**
* connect to authentication event and related actions
*/
private function authHooks() {
$authActions = new Auth($this->logger);
Util::connectHook('OC_User', 'pre_login', $authActions, 'loginAttempt');
Util::connectHook('OC_User', 'post_login', $authActions, 'loginSuccessful');
Util::connectHook('OC_User', 'logout', $authActions, 'logout');
}
/**
* connect to file hooks
*/
private function fileHooks() {
$fileActions = new Files($this->logger);
Util::connectHook(
Filesystem::CLASSNAME,
Filesystem::signal_post_rename,
$fileActions,
'rename'
);
Util::connectHook(
Filesystem::CLASSNAME,
Filesystem::signal_post_create,
$fileActions,
'create'
);
Util::connectHook(
Filesystem::CLASSNAME,
Filesystem::signal_post_copy,
$fileActions,
'copy'
);
Util::connectHook(
Filesystem::CLASSNAME,
Filesystem::signal_post_write,
$fileActions,
'write'
);
Util::connectHook(
Filesystem::CLASSNAME,
Filesystem::signal_post_update,
$fileActions,
'update'
);
Util::connectHook(
Filesystem::CLASSNAME,
Filesystem::signal_read,
$fileActions,
'read'
);
Util::connectHook(
Filesystem::CLASSNAME,
Filesystem::signal_delete,
$fileActions,
'delete'
);
}
public function versionsHooks() {
$versionsActions = new Versions($this->logger);
Util::connectHook('\OCP\Versions', 'rollback', $versionsActions, 'rollback');
Util::connectHook('\OCP\Versions', 'delete',$versionsActions, 'delete');
}
/**
* connect to trash bin hooks
*/
private function trashbinHooks() {
$trashActions = new Trashbin($this->logger);
Util::connectHook('\OCP\Trashbin', 'preDelete', $trashActions, 'delete');
Util::connectHook('\OCA\Files_Trashbin\Trashbin', 'post_restore', $trashActions, 'restore');
}
}

View File

@@ -105,7 +105,7 @@ class Extension implements IExtension {
public function getTypeIcon($type) {
switch ($type) {
case self::APP_NAME:
return false;
return 'icon-comment';
}
return false;
@@ -150,6 +150,9 @@ class Extension implements IExtension {
switch ($text) {
case self::ADD_COMMENT_SUBJECT:
if ($this->authorIsCurrentUser($params[0])) {
return (string) $l->t('You commented');
}
return (string) $l->t('%1$s commented', $params);
case self::ADD_COMMENT_MESSAGE:
return $this->convertParameterToComment($params[0], 120);
@@ -168,6 +171,9 @@ class Extension implements IExtension {
switch ($text) {
case self::ADD_COMMENT_SUBJECT:
if ($this->authorIsCurrentUser($params[0])) {
return (string) $l->t('You commented on %2$s', $params);
}
return (string) $l->t('%1$s commented on %2$s', $params);
case self::ADD_COMMENT_MESSAGE:
return $this->convertParameterToComment($params[0]);
@@ -176,6 +182,21 @@ class Extension implements IExtension {
return false;
}
/**
* Check if the author is the current user
*
* @param string $user Parameter e.g. `<user display-name="admin">admin</user>`
* @return bool
*/
protected function authorIsCurrentUser($user) {
try {
return strip_tags($user) === $this->activityManager->getCurrentUserId();
} catch (\UnexpectedValueException $e) {
// FIXME this is awkward, but we have no access to the current user in emails
return false;
}
}
/**
* The extension can define the type of parameters for translation
*

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Uložit",
"Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
"{count} unread comments" : "{count} nepřečtených komentářů",
"Comment" : "Komentář"
"Comment" : "Komentář",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů"
},
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");

View File

@@ -14,6 +14,7 @@
"Save" : "Uložit",
"Allowed characters {count} of {max}" : "Povolených znaků {count} z {max}",
"{count} unread comments" : "{count} nepřečtených komentářů",
"Comment" : "Komentář"
"Comment" : "Komentář",
"<strong>Comments</strong> for files" : "<strong>Komentáře</strong> souborů"
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Speichern",
"Allowed characters {count} of {max}" : "Erlaubte Zeichen {count} von {max}",
"{count} unread comments" : "{count} ungelesene Kommentare",
"Comment" : "Kommentar"
"Comment" : "Kommentar",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Speichern",
"Allowed characters {count} of {max}" : "Erlaubte Zeichen {count} von {max}",
"{count} unread comments" : "{count} ungelesene Kommentare",
"Comment" : "Kommentar"
"Comment" : "Kommentar",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Speichern",
"Allowed characters {count} of {max}" : "{count} von {max} Zeichen benutzt",
"{count} unread comments" : "[count] ungelesene Kommentare",
"Comment" : "Kommentar"
"Comment" : "Kommentar",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Speichern",
"Allowed characters {count} of {max}" : "{count} von {max} Zeichen benutzt",
"{count} unread comments" : "[count] ungelesene Kommentare",
"Comment" : "Kommentar"
"Comment" : "Kommentar",
"<strong>Comments</strong> for files" : "<strong>Kommentare</strong> für Dateien"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Save",
"Allowed characters {count} of {max}" : "Allowed characters {count} of {max}",
"{count} unread comments" : "{count} unread comments",
"Comment" : "Comment"
"Comment" : "Comment",
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Save",
"Allowed characters {count} of {max}" : "Allowed characters {count} of {max}",
"{count} unread comments" : "{count} unread comments",
"Comment" : "Comment"
"Comment" : "Comment",
"<strong>Comments</strong> for files" : "<strong>Comments</strong> for files"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Konservi",
"Allowed characters {count} of {max}" : "Permesataj karakteroj: {count} el {max}",
"{count} unread comments" : "{count} nelegitaj komentoj",
"Comment" : "Komento"
"Comment" : "Komento",
"<strong>Comments</strong> for files" : "<strong>Komentoj</strong> por dosieroj"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Konservi",
"Allowed characters {count} of {max}" : "Permesataj karakteroj: {count} el {max}",
"{count} unread comments" : "{count} nelegitaj komentoj",
"Comment" : "Komento"
"Comment" : "Komento",
"<strong>Comments</strong> for files" : "<strong>Komentoj</strong> por dosieroj"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Guardar",
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
"{count} unread comments" : "{count} comentarios no leídos",
"Comment" : "Comentario"
"Comment" : "Comentario",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Guardar",
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
"{count} unread comments" : "{count} comentarios no leídos",
"Comment" : "Comentario"
"Comment" : "Comentario",
"<strong>Comments</strong> for files" : "<strong>Comentarios</strong> en archivos"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Tallenna",
"Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}",
"{count} unread comments" : "{count} lukematonta kommenttia",
"Comment" : "Kommentti"
"Comment" : "Kommentti",
"<strong>Comments</strong> for files" : "<strong>Kommentit</strong> tiedostoille"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Tallenna",
"Allowed characters {count} of {max}" : "Sallittujen merkkien määrä {count}/{max}",
"{count} unread comments" : "{count} lukematonta kommenttia",
"Comment" : "Kommentti"
"Comment" : "Kommentti",
"<strong>Comments</strong> for files" : "<strong>Kommentit</strong> tiedostoille"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Enregistrer",
"Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés",
"{count} unread comments" : "{count} commentaires non lus",
"Comment" : "Commenter"
"Comment" : "Commenter",
"<strong>Comments</strong> for files" : "<strong>Commentaires</strong> pour les fichiers"
},
"nplurals=2; plural=(n > 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Enregistrer",
"Allowed characters {count} of {max}" : "{count} sur {max} caractères autorisés",
"{count} unread comments" : "{count} commentaires non lus",
"Comment" : "Commenter"
"Comment" : "Commenter",
"<strong>Comments</strong> for files" : "<strong>Commentaires</strong> pour les fichiers"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "שמירה",
"Allowed characters {count} of {max}" : "תווים מותרים {count} מתוך {max}",
"{count} unread comments" : "{count} תגובות שלא נקראו",
"Comment" : "תגובה"
"Comment" : "תגובה",
"<strong>Comments</strong> for files" : "<strong>תגובות</strong> לקבצים"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "שמירה",
"Allowed characters {count} of {max}" : "תווים מותרים {count} מתוך {max}",
"{count} unread comments" : "{count} תגובות שלא נקראו",
"Comment" : "תגובה"
"Comment" : "תגובה",
"<strong>Comments</strong> for files" : "<strong>תגובות</strong> לקבצים"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -3,6 +3,11 @@ OC.L10N.register(
{
"Cancel" : "Mégsem",
"Save" : "Mentés",
"Comment" : "Komment"
"Comment" : "Komment",
"<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> a fájlokhoz",
"Delete comment" : "Hozzászólás törlése",
"Edit comment" : "Hozzászólás szerkesztése",
"No other comments available" : "Nincs több hozzászólás.",
"Post" : "Küldés"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -1,6 +1,11 @@
{ "translations": {
"Cancel" : "Mégsem",
"Save" : "Mentés",
"Comment" : "Komment"
"Comment" : "Komment",
"<strong>Comments</strong> for files" : "<strong>Hozzászólások</strong> a fájlokhoz",
"Delete comment" : "Hozzászólás törlése",
"Edit comment" : "Hozzászólás szerkesztése",
"No other comments available" : "Nincs több hozzászólás.",
"Post" : "Küldés"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Simpan",
"Allowed characters {count} of {max}" : "Karakter yang diizinkan {count} dari {max}",
"{count} unread comments" : "{count} komentar belum dibaca",
"Comment" : "Komentar"
"Comment" : "Komentar",
"<strong>Comments</strong> for files" : "<strong>Komentar</strong> untuk berkas"
},
"nplurals=1; plural=0;");

View File

@@ -14,6 +14,7 @@
"Save" : "Simpan",
"Allowed characters {count} of {max}" : "Karakter yang diizinkan {count} dari {max}",
"{count} unread comments" : "{count} komentar belum dibaca",
"Comment" : "Komentar"
"Comment" : "Komentar",
"<strong>Comments</strong> for files" : "<strong>Komentar</strong> untuk berkas"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@@ -3,6 +3,11 @@ OC.L10N.register(
{
"Cancel" : "Hætta við",
"Save" : "Vista",
"Comment" : "Athugasemd"
"Comment" : "Athugasemd",
"<strong>Comments</strong> for files" : "<strong>Athugasemdir</strong> við skrár",
"Delete comment" : "Eyða athugasemd",
"Edit comment" : "Breyta athugasemd",
"No other comments available" : "Engar aðrar athugasemdir eru tiltækar",
"Post" : "Senda"
},
"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);");

View File

@@ -1,6 +1,11 @@
{ "translations": {
"Cancel" : "Hætta við",
"Save" : "Vista",
"Comment" : "Athugasemd"
"Comment" : "Athugasemd",
"<strong>Comments</strong> for files" : "<strong>Athugasemdir</strong> við skrár",
"Delete comment" : "Eyða athugasemd",
"Edit comment" : "Breyta athugasemd",
"No other comments available" : "Engar aðrar athugasemdir eru tiltækar",
"Post" : "Senda"
},"pluralForm" :"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Salva",
"Allowed characters {count} of {max}" : "Caratteri consentiti {count} di {max}",
"{count} unread comments" : "{count} commenti non letti",
"Comment" : "Commento"
"Comment" : "Commento",
"<strong>Comments</strong> for files" : "<strong>Commenti</strong> sui file"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Salva",
"Allowed characters {count} of {max}" : "Caratteri consentiti {count} di {max}",
"{count} unread comments" : "{count} commenti non letti",
"Comment" : "Commento"
"Comment" : "Commento",
"<strong>Comments</strong> for files" : "<strong>Commenti</strong> sui file"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "保存",
"Allowed characters {count} of {max}" : "入力文字数 {count} / {max}",
"{count} unread comments" : "未読コメント数 {count}",
"Comment" : "コメント"
"Comment" : "コメント",
"<strong>Comments</strong> for files" : "ファイルについての<strong>コメント</strong>"
},
"nplurals=1; plural=0;");

View File

@@ -14,6 +14,7 @@
"Save" : "保存",
"Allowed characters {count} of {max}" : "入力文字数 {count} / {max}",
"{count} unread comments" : "未読コメント数 {count}",
"Comment" : "コメント"
"Comment" : "コメント",
"<strong>Comments</strong> for files" : "ファイルについての<strong>コメント</strong>"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@@ -3,6 +3,11 @@ OC.L10N.register(
{
"Cancel" : "취소",
"Save" : "저장",
"Comment" : "설명"
"Comment" : "설명",
"<strong>Comments</strong> for files" : "파일에 <strong>댓글</strong> 남기기",
"Delete comment" : "댓글 삭제",
"Edit comment" : "댓글 편집",
"No other comments available" : "더 이상 댓글 없음",
"Post" : "게시"
},
"nplurals=1; plural=0;");

View File

@@ -1,6 +1,11 @@
{ "translations": {
"Cancel" : "취소",
"Save" : "저장",
"Comment" : "설명"
"Comment" : "설명",
"<strong>Comments</strong> for files" : "파일에 <strong>댓글</strong> 남기기",
"Delete comment" : "댓글 삭제",
"Edit comment" : "댓글 편집",
"No other comments available" : "더 이상 댓글 없음",
"Post" : "게시"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Lagre",
"Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}",
"{count} unread comments" : "{count} uleste kommentarer",
"Comment" : "Kommentar"
"Comment" : "Kommentar",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Lagre",
"Allowed characters {count} of {max}" : "Antall tegn tillatt {count} av {max}",
"{count} unread comments" : "{count} uleste kommentarer",
"Comment" : "Kommentar"
"Comment" : "Kommentar",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> for filer"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Bewaren",
"Allowed characters {count} of {max}" : "{count} van de {max} toegestane tekens",
"{count} unread comments" : "{count} ongelezen reacties",
"Comment" : "Reactie"
"Comment" : "Reactie",
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Bewaren",
"Allowed characters {count} of {max}" : "{count} van de {max} toegestane tekens",
"{count} unread comments" : "{count} ongelezen reacties",
"Comment" : "Reactie"
"Comment" : "Reactie",
"<strong>Comments</strong> for files" : "<strong>Reacties</strong> voor bestanden"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -3,6 +3,11 @@ OC.L10N.register(
{
"Cancel" : "Anuluj",
"Save" : "Zapisz",
"Comment" : "Komentarz"
"Comment" : "Komentarz",
"<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików",
"Delete comment" : "Skasuj komentarz",
"Edit comment" : "Edytuj komentarz",
"No other comments available" : "Nie ma więcej komentarzy",
"Post" : "Zapisz"
},
"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");

View File

@@ -1,6 +1,11 @@
{ "translations": {
"Cancel" : "Anuluj",
"Save" : "Zapisz",
"Comment" : "Komentarz"
"Comment" : "Komentarz",
"<strong>Comments</strong> for files" : "<strong>Komentarze</strong> dla plików",
"Delete comment" : "Skasuj komentarz",
"Edit comment" : "Edytuj komentarz",
"No other comments available" : "Nie ma więcej komentarzy",
"Post" : "Zapisz"
},"pluralForm" :"nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Salvar",
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
"{count} unread comments" : "{count} comentários não lidos",
"Comment" : "Comentário"
"Comment" : "Comentário",
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> por arquivos"
},
"nplurals=2; plural=(n > 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Salvar",
"Allowed characters {count} of {max}" : "Caracteres permitidos {count} de {max}",
"{count} unread comments" : "{count} comentários não lidos",
"Comment" : "Comentário"
"Comment" : "Comentário",
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> por arquivos"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Guardar",
"Allowed characters {count} of {max}" : "{count} de {max} caracteres restantes",
"{count} unread comments" : "{count} comentários não lidos",
"Comment" : "Comentário"
"Comment" : "Comentário",
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> para ficheiros"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Guardar",
"Allowed characters {count} of {max}" : "{count} de {max} caracteres restantes",
"{count} unread comments" : "{count} comentários não lidos",
"Comment" : "Comentário"
"Comment" : "Comentário",
"<strong>Comments</strong> for files" : "<strong>Comentários</strong> para ficheiros"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Сохранить",
"Allowed characters {count} of {max}" : "Допустимых символов {count} из {max}",
"{count} unread comments" : "{count} непрочитанных комментариев",
"Comment" : "Коментарий"
"Comment" : "Коментарий",
"<strong>Comments</strong> for files" : "<strong>Комментарии</strong> к файлам"
},
"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);");

View File

@@ -14,6 +14,7 @@
"Save" : "Сохранить",
"Allowed characters {count} of {max}" : "Допустимых символов {count} из {max}",
"{count} unread comments" : "{count} непрочитанных комментариев",
"Comment" : "Коментарий"
"Comment" : "Коментарий",
"<strong>Comments</strong> for files" : "<strong>Комментарии</strong> к файлам"
},"pluralForm" :"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Shrani",
"Allowed characters {count} of {max}" : "Dovoljeni znaki: {count} od {max}",
"{count} unread comments" : "{count} neprebranih opomb",
"Comment" : "Opomba"
"Comment" : "Opomba",
"<strong>Comments</strong> for files" : "<strong>Opombe</strong> datotek"
},
"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);");

View File

@@ -14,6 +14,7 @@
"Save" : "Shrani",
"Allowed characters {count} of {max}" : "Dovoljeni znaki: {count} od {max}",
"{count} unread comments" : "{count} neprebranih opomb",
"Comment" : "Opomba"
"Comment" : "Opomba",
"<strong>Comments</strong> for files" : "<strong>Opombe</strong> datotek"
},"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Ruaje",
"Allowed characters {count} of {max}" : "Shenja të lejuara {count} nga {max}",
"{count} unread comments" : "{count} komente të palexuar",
"Comment" : "Koment"
"Comment" : "Koment",
"<strong>Comments</strong> for files" : "<strong>Komente</strong> për kartela"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Ruaje",
"Allowed characters {count} of {max}" : "Shenja të lejuara {count} nga {max}",
"{count} unread comments" : "{count} komente të palexuar",
"Comment" : "Koment"
"Comment" : "Koment",
"<strong>Comments</strong> for files" : "<strong>Komente</strong> për kartela"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -3,6 +3,11 @@ OC.L10N.register(
{
"Cancel" : "Одустани",
"Save" : "Сачувај",
"Comment" : "Коментар"
"Comment" : "Коментар",
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> фајлова",
"Delete comment" : "Обриши коментар",
"Edit comment" : "Уреди коментар",
"No other comments available" : "Нема других коментара",
"Post" : "Објави"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");

View File

@@ -1,6 +1,11 @@
{ "translations": {
"Cancel" : "Одустани",
"Save" : "Сачувај",
"Comment" : "Коментар"
"Comment" : "Коментар",
"<strong>Comments</strong> for files" : "<strong>Коментари</strong> фајлова",
"Delete comment" : "Обриши коментар",
"Edit comment" : "Уреди коментар",
"No other comments available" : "Нема других коментара",
"Post" : "Објави"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Spara",
"Allowed characters {count} of {max}" : "Tillåtet antal tecken {count} av {max}",
"{count} unread comments" : "{count} olästa kommentarer",
"Comment" : "Kommentar"
"Comment" : "Kommentar",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> till filer"
},
"nplurals=2; plural=(n != 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Spara",
"Allowed characters {count} of {max}" : "Tillåtet antal tecken {count} av {max}",
"{count} unread comments" : "{count} olästa kommentarer",
"Comment" : "Kommentar"
"Comment" : "Kommentar",
"<strong>Comments</strong> for files" : "<strong>Kommentarer</strong> till filer"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
}

View File

@@ -12,6 +12,7 @@ OC.L10N.register(
"Edit comment" : "แก้ไขความคิดเห็น",
"[Deleted user]" : "[ผู้ใช้ถูกลบไปแล้ว]",
"Save" : "บันทึก",
"Comment" : "แสดงความคิดเห็น"
"Comment" : "แสดงความคิดเห็น",
"<strong>Comments</strong> for files" : "<strong>แสดงความคิดเห็น</strong> สำหรับไฟล์"
},
"nplurals=1; plural=0;");

View File

@@ -10,6 +10,7 @@
"Edit comment" : "แก้ไขความคิดเห็น",
"[Deleted user]" : "[ผู้ใช้ถูกลบไปแล้ว]",
"Save" : "บันทึก",
"Comment" : "แสดงความคิดเห็น"
"Comment" : "แสดงความคิดเห็น",
"<strong>Comments</strong> for files" : "<strong>แสดงความคิดเห็น</strong> สำหรับไฟล์"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Kaydet",
"Allowed characters {count} of {max}" : "İzin verilen karakterler {count} {max}",
"{count} unread comments" : "{count} okunmamış yorumlar",
"Comment" : "Yorum"
"Comment" : "Yorum",
"<strong>Comments</strong> for files" : "Dosyalar için <strong>Yorumlar</strong>"
},
"nplurals=2; plural=(n > 1);");

View File

@@ -14,6 +14,7 @@
"Save" : "Kaydet",
"Allowed characters {count} of {max}" : "İzin verilen karakterler {count} {max}",
"{count} unread comments" : "{count} okunmamış yorumlar",
"Comment" : "Yorum"
"Comment" : "Yorum",
"<strong>Comments</strong> for files" : "Dosyalar için <strong>Yorumlar</strong>"
},"pluralForm" :"nplurals=2; plural=(n > 1);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "Зберегти",
"Allowed characters {count} of {max}" : "Доступно символів {count} з {max}",
"{count} unread comments" : "{count} непрочитаних коментарів",
"Comment" : "Коментар"
"Comment" : "Коментар",
"<strong>Comments</strong> for files" : "<strong>Коментарі</strong> до файлів"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);");

View File

@@ -14,6 +14,7 @@
"Save" : "Зберегти",
"Allowed characters {count} of {max}" : "Доступно символів {count} з {max}",
"{count} unread comments" : "{count} непрочитаних коментарів",
"Comment" : "Коментар"
"Comment" : "Коментар",
"<strong>Comments</strong> for files" : "<strong>Коментарі</strong> до файлів"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);"
}

View File

@@ -16,6 +16,7 @@ OC.L10N.register(
"Save" : "保存",
"Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}",
"{count} unread comments" : "{count} 条未读评论",
"Comment" : "评论"
"Comment" : "评论",
"<strong>Comments</strong> for files" : "<strong>评论文件</strong>"
},
"nplurals=1; plural=0;");

View File

@@ -14,6 +14,7 @@
"Save" : "保存",
"Allowed characters {count} of {max}" : "当前字数: {count},最大允许:{max}",
"{count} unread comments" : "{count} 条未读评论",
"Comment" : "评论"
"Comment" : "评论",
"<strong>Comments</strong> for files" : "<strong>评论文件</strong>"
},"pluralForm" :"nplurals=1; plural=0;"
}

View File

@@ -46,6 +46,8 @@ $eventDispatcher->addListener('OCP\Federation\TrustedServerEvent::remove',
$cm = \OC::$server->getContactsManager();
$cm->register(function() use ($cm, $app) {
$userId = \OC::$server->getUserSession()->getUser()->getUID();
$app->setupContactsProvider($cm, $userId);
$user = \OC::$server->getUserSession()->getUser();
if (!is_null($user)) {
$app->setupContactsProvider($cm, $user->getUID());
}
});

View File

@@ -99,18 +99,24 @@ class Application extends App {
$container->registerService('MigrateAddressbooks', function($c) {
/** @var IAppContainer $c */
$db = $c->getServer()->getDatabaseConnection();
$logger = $c->getServer()->getLogger();
return new MigrateAddressbooks(
new AddressBookAdapter($db),
$c->query('CardDavBackend')
$c->query('CardDavBackend'),
$logger,
null
);
});
$container->registerService('MigrateCalendars', function($c) {
/** @var IAppContainer $c */
$db = $c->getServer()->getDatabaseConnection();
$logger = $c->getServer()->getLogger();
return new MigrateCalendars(
new CalendarAdapter($db),
$c->query('CalDavBackend')
$c->query('CalDavBackend'),
$logger,
null
);
});
@@ -204,4 +210,19 @@ class Application extends App {
$this->getContainer()->getServer()->getLogger()->logException($ex);
}
}
public function generateBirthdays() {
try {
/** @var BirthdayService $migration */
$migration = $this->getContainer()->query('BirthdayService');
$userManager = $this->getContainer()->getServer()->getUserManager();
$userManager->callForAllUsers(function($user) use($migration) {
/** @var IUser $user */
$migration->syncUser($user->getUID());
});
} catch (\Exception $ex) {
$this->getContainer()->getServer()->getLogger()->logException($ex);
}
}
}

View File

@@ -283,7 +283,7 @@ CREATE TABLE calendarobjects (
description TEXT,
calendarorder INT(11) UNSIGNED NOT NULL DEFAULT '0',
calendarcolor VARBINARY(10),
timezone TEXT,
timezone CLOB,
components VARBINARY(20),
transparent TINYINT(1) NOT NULL DEFAULT '0',
UNIQUE(principaluri, uri)
@@ -337,7 +337,7 @@ CREATE TABLE calendarobjects (
</field>
<field>
<name>timezone</name>
<type>text</type>
<type>clob</type>
</field>
<field>
<name>components</name>

View File

@@ -2,10 +2,10 @@
<info>
<id>dav</id>
<name>WebDAV</name>
<description>ownCloud WebDAV endpoint</description>
<description>WebDAV endpoint</description>
<licence>AGPL</licence>
<author>owncloud.org</author>
<version>0.1.4</version>
<version>0.1.6</version>
<default_enable/>
<types>
<filesystem/>

View File

@@ -25,3 +25,4 @@ $app = new Application();
$app->setupCron();
$app->migrateAddressbooks();
$app->migrateCalendars();
$app->generateBirthdays();

View File

@@ -29,7 +29,6 @@ use OCA\DAV\Command\SyncSystemAddressBook;
$dbConnection = \OC::$server->getDatabaseConnection();
$userManager = OC::$server->getUserManager();
$groupManager = OC::$server->getGroupManager();
$config = \OC::$server->getConfig();
$app = new Application();
@@ -38,12 +37,5 @@ $application->add(new CreateCalendar($userManager, $groupManager, $dbConnection)
$application->add(new CreateAddressBook($userManager, $app->getContainer()->query('CardDavBackend')));
$application->add(new SyncSystemAddressBook($app->getSyncService()));
$application->add(new SyncBirthdayCalendar($userManager, $app->getContainer()->query('BirthdayService')));
// the occ tool is *for now* only available in debug mode for developers to test
if ($config->getSystemValue('debug', false)){
$app = new \OCA\Dav\AppInfo\Application();
$migration = $app->getContainer()->query('MigrateAddressbooks');
$application->add(new MigrateAddressbooks($userManager, $migration));
$migration = $app->getContainer()->query('MigrateCalendars');
$application->add(new MigrateCalendars($userManager, $migration));
}
$application->add(new MigrateAddressbooks($userManager, $app->getContainer()->query('MigrateAddressbooks')));
$application->add(new MigrateCalendars($userManager, $app->getContainer()->query('MigrateCalendars')));

View File

@@ -23,3 +23,4 @@ use OCA\Dav\AppInfo\Application;
$app = new Application();
$app->setupCron();
$app->generateBirthdays();

View File

@@ -23,11 +23,12 @@
// Backends
use OCA\DAV\CalDAV\CalDavBackend;
use OCA\DAV\Connector\LegacyDAVACL;
use OCA\DAV\CalDAV\CalendarRoot;
use OCA\DAV\Connector\Sabre\Auth;
use OCA\DAV\Connector\Sabre\ExceptionLoggerPlugin;
use OCA\DAV\Connector\Sabre\MaintenancePlugin;
use OCA\DAV\Connector\Sabre\Principal;
use Sabre\CalDAV\CalendarRoot;
$authBackend = new Auth(
\OC::$server->getSession(),
@@ -65,7 +66,7 @@ $server->addPlugin(new MaintenancePlugin());
$server->addPlugin(new \Sabre\DAV\Auth\Plugin($authBackend, 'ownCloud'));
$server->addPlugin(new \Sabre\CalDAV\Plugin());
$acl = new \OCA\DAV\Connector\LegacyDAVACL();
$acl = new LegacyDAVACL();
$server->addPlugin($acl);
$server->addPlugin(new \Sabre\CalDAV\ICSExportPlugin());

View File

@@ -59,6 +59,7 @@ $server = $serverFactory->createServer($baseuri, $requestUri, $authBackend, func
$rootShare = \OCP\Share::resolveReShare($share);
$owner = $rootShare['uid_owner'];
$isWritable = $share['permissions'] & (\OCP\Constants::PERMISSION_UPDATE | \OCP\Constants::PERMISSION_CREATE);
$isReadable = $share['permissions'] & \OCP\Constants::PERMISSION_READ;
$fileId = $share['file_source'];
if (!$isWritable) {
@@ -66,6 +67,9 @@ $server = $serverFactory->createServer($baseuri, $requestUri, $authBackend, func
return new \OC\Files\Storage\Wrapper\PermissionsMask(array('storage' => $storage, 'mask' => \OCP\Constants::PERMISSION_READ + \OCP\Constants::PERMISSION_SHARE));
});
}
if (!$isReadable) {
return false;
}
OC_Util::setupFS($owner);
$ownerView = \OC\Files\Filesystem::getView();

View File

@@ -61,8 +61,8 @@ class MigrateCalendars extends Command {
protected function execute(InputInterface $input, OutputInterface $output) {
$this->service->setup();
if ($input->hasArgument('user')) {
$user = $input->getArgument('user');
$user = $input->getArgument('user');
if (!is_null($user)) {
if (!$this->userManager->userExists($user)) {
throw new \InvalidArgumentException("User <$user> in unknown.");
}

View File

@@ -61,8 +61,8 @@ class SyncBirthdayCalendar extends Command {
* @param OutputInterface $output
*/
protected function execute(InputInterface $input, OutputInterface $output) {
if ($input->hasArgument('user')) {
$user = $input->getArgument('user');
$user = $input->getArgument('user');
if (!is_null($user)) {
if (!$this->userManager->userExists($user)) {
throw new \InvalidArgumentException("User <$user> in unknown.");
}

View File

@@ -50,8 +50,7 @@ class BirthdayService {
$book = $this->cardDavBackEnd->getAddressBookById($addressBookId);
$principalUri = $book['principaluri'];
$calendarUri = self::BIRTHDAY_CALENDAR_URI;
$calendar = $this->ensureCalendarExists($principalUri, $calendarUri, []);
$calendar = $this->ensureCalendarExists($principalUri);
$objectUri = $book['uri'] . '-' . $cardUri. '.ics';
$calendarData = $this->buildBirthdayFromContact($cardData);
$existing = $this->calDavBackEnd->getCalendarObject($calendar['id'], $objectUri);
@@ -77,27 +76,27 @@ class BirthdayService {
public function onCardDeleted($addressBookId, $cardUri) {
$book = $this->cardDavBackEnd->getAddressBookById($addressBookId);
$principalUri = $book['principaluri'];
$calendarUri = self::BIRTHDAY_CALENDAR_URI;
$calendar = $this->ensureCalendarExists($principalUri, $calendarUri, []);
$calendar = $this->ensureCalendarExists($principalUri);
$objectUri = $book['uri'] . '-' . $cardUri. '.ics';
$this->calDavBackEnd->deleteCalendarObject($calendar['id'], $objectUri);
}
/**
* @param string $principal
* @param string $id
* @param array $properties
* @return array|null
* @throws \Sabre\DAV\Exception\BadRequest
*/
public function ensureCalendarExists($principal, $id, $properties) {
$book = $this->calDavBackEnd->getCalendarByUri($principal, $id);
public function ensureCalendarExists($principal) {
$book = $this->calDavBackEnd->getCalendarByUri($principal, self::BIRTHDAY_CALENDAR_URI);
if (!is_null($book)) {
return $book;
}
$this->calDavBackEnd->createCalendar($principal, $id, $properties);
$this->calDavBackEnd->createCalendar($principal, self::BIRTHDAY_CALENDAR_URI, [
'{DAV:}displayname' => 'Contact birthdays',
'{http://apple.com/ns/ical/}calendar-color' => '#FFFFCA',
]);
return $this->calDavBackEnd->getCalendarByUri($principal, $id);
return $this->calDavBackEnd->getCalendarByUri($principal, self::BIRTHDAY_CALENDAR_URI);
}
/**
@@ -156,7 +155,9 @@ class BirthdayService {
* @param string $user
*/
public function syncUser($user) {
$books = $this->cardDavBackEnd->getAddressBooksForUser('principals/users/'.$user);
$principal = 'principals/users/'.$user;
$this->ensureCalendarExists($principal);
$books = $this->cardDavBackEnd->getAddressBooksForUser($principal);
foreach($books as $book) {
$cards = $this->cardDavBackEnd->getCards($book['id']);
foreach($cards as $card) {

View File

@@ -138,6 +138,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
* @return array
*/
function getCalendarsForUser($principalUri) {
$principalUriOriginal = $principalUri;
$principalUri = $this->convertPrincipal($principalUri, true);
$fields = array_values($this->propertyMap);
$fields[] = 'id';
@@ -184,7 +185,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$stmt->closeCursor();
// query for shared calendars
$principals = $this->principalBackend->getGroupMembership($principalUri);
$principals = $this->principalBackend->getGroupMembership($principalUriOriginal, true);
$principals[]= $principalUri;
$fields = array_values($this->propertyMap);
@@ -194,6 +195,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
$fields[] = 'a.components';
$fields[] = 'a.principaluri';
$fields[] = 'a.transparent';
$fields[] = 's.access';
$query = $this->db->getQueryBuilder();
$result = $query->select($fields)
->from('dav_shares', 's')
@@ -221,6 +223,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
'{' . Plugin::NS_CALDAV . '}supported-calendar-component-set' => new SupportedCalendarComponentSet($components),
'{' . Plugin::NS_CALDAV . '}schedule-calendar-transp' => new ScheduleCalendarTransp($row['transparent']?'transparent':'opaque'),
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $row['principaluri'],
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only' => (int)$row['access'] === Backend::ACCESS_READ,
];
foreach($this->propertyMap as $xmlName=>$dbName) {
@@ -815,9 +818,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
function getCalendarObjectByUID($principalUri, $uid) {
$query = $this->db->getQueryBuilder();
$query->select([$query->createFunction('c.`uri` AS `calendaruri`'), $query->createFunction('co.`uri` AS `objecturi`')])
$query->selectAlias('c.uri', 'calendaruri')->selectAlias('co.uri', 'objecturi')
->from('calendarobjects', 'co')
->leftJoin('co', 'calendars', 'c', 'co.`calendarid` = c.`id`')
->leftJoin('co', 'calendars', 'c', $query->expr()->eq('co.calendarid', 'c.id'))
->where($query->expr()->eq('c.principaluri', $query->createNamedParameter($principalUri)))
->andWhere($query->expr()->eq('co.uid', $query->createNamedParameter($uid)));
@@ -1294,7 +1297,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
if (!$componentType) {
throw new \Sabre\DAV\Exception\BadRequest('Calendar objects must have a VJOURNAL, VEVENT or VTODO component');
}
if ($componentType === 'VEVENT') {
if ($componentType === 'VEVENT' && $component->DTSTART) {
$firstOccurence = $component->DTSTART->getDateTime()->getTimeStamp();
// Finding the last occurence is a bit harder
if (!isset($component->RRULE)) {
@@ -1333,7 +1336,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
'etag' => md5($calendarData),
'size' => strlen($calendarData),
'componentType' => $componentType,
'firstOccurence' => $firstOccurence,
'firstOccurence' => is_null($firstOccurence) ? null : max(0, $firstOccurence),
'lastOccurence' => $lastOccurence,
'uid' => $uid,
];

View File

@@ -22,7 +22,9 @@
namespace OCA\DAV\CalDAV;
use OCA\DAV\DAV\Sharing\IShareable;
use Sabre\CalDAV\Backend\BackendInterface;
use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\PropPatch;
class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
@@ -76,7 +78,33 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
}
function getACL() {
$acl = parent::getACL();
$acl = [
[
'privilege' => '{DAV:}read',
'principal' => $this->getOwner(),
'protected' => true,
]];
if ($this->getName() !== BirthdayService::BIRTHDAY_CALENDAR_URI) {
$acl[] = [
'privilege' => '{DAV:}write',
'principal' => $this->getOwner(),
'protected' => true,
];
}
if ($this->getOwner() !== parent::getOwner()) {
$acl[] = [
'privilege' => '{DAV:}read',
'principal' => parent::getOwner(),
'protected' => true,
];
if ($this->canWrite()) {
$acl[] = [
'privilege' => '{DAV:}write',
'principal' => parent::getOwner(),
'protected' => true,
];
}
}
/** @var CalDavBackend $calDavBackend */
$calDavBackend = $this->caldavBackend;
@@ -84,11 +112,7 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
}
function getChildACL() {
$acl = parent::getChildACL();
/** @var CalDavBackend $calDavBackend */
$calDavBackend = $this->caldavBackend;
return $calDavBackend->applyShareAcl($this->getResourceId(), $acl);
return $this->getACL();
}
function getOwner() {
@@ -99,10 +123,6 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
}
function delete() {
if ($this->getName() === BirthdayService::BIRTHDAY_CALENDAR_URI) {
throw new Forbidden();
}
if (isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal'])) {
$principal = 'principal:' . parent::getOwner();
$shares = $this->getShares();
@@ -122,4 +142,21 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
}
parent::delete();
}
function propPatch(PropPatch $propPatch) {
$mutations = $propPatch->getMutations();
// If this is a shared calendar, the user can only change the enabled property, to hide it.
if (isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal']) && (sizeof($mutations) !== 1 || !isset($mutations['{http://owncloud.org/ns}calendar-enabled']))) {
throw new Forbidden();
}
parent::propPatch($propPatch);
}
private function canWrite() {
if (isset($this->calendarInfo['{http://owncloud.org/ns}read-only'])) {
return !$this->calendarInfo['{http://owncloud.org/ns}read-only'];
}
return true;
}
}

View File

@@ -21,15 +21,13 @@
namespace OCA\DAV\CardDAV;
use OCA\DAV\DAV\Sharing\IShareable;
use Sabre\CardDAV\Card;
use Sabre\DAV\Exception\Forbidden;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\PropPatch;
class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
public function __construct(CardDavBackend $carddavBackend, array $addressBookInfo) {
parent::__construct($carddavBackend, $addressBookInfo);
}
/**
* Updates the list of shares.
*
@@ -73,7 +71,31 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
}
function getACL() {
$acl = parent::getACL();
$acl = [
[
'privilege' => '{DAV:}read',
'principal' => $this->getOwner(),
'protected' => true,
]];
$acl[] = [
'privilege' => '{DAV:}write',
'principal' => $this->getOwner(),
'protected' => true,
];
if ($this->getOwner() !== parent::getOwner()) {
$acl[] = [
'privilege' => '{DAV:}read',
'principal' => parent::getOwner(),
'protected' => true,
];
if ($this->canWrite()) {
$acl[] = [
'privilege' => '{DAV:}write',
'principal' => parent::getOwner(),
'protected' => true,
];
}
}
if ($this->getOwner() === 'principals/system/system') {
$acl[] = [
'privilege' => '{DAV:}read',
@@ -82,49 +104,24 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
];
}
// add the current user
if (isset($this->addressBookInfo['{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal'])) {
$owner = $this->addressBookInfo['{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal'];
$acl[] = [
'privilege' => '{DAV:}read',
'principal' => $owner,
'protected' => true,
];
if ($this->addressBookInfo['{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only']) {
$acl[] = [
'privilege' => '{DAV:}write',
'principal' => $owner,
'protected' => true,
];
}
}
/** @var CardDavBackend $carddavBackend */
$carddavBackend = $this->carddavBackend;
return $carddavBackend->applyShareAcl($this->getResourceId(), $acl);
}
function getChildACL() {
$acl = parent::getChildACL();
if ($this->getOwner() === 'principals/system/system') {
$acl[] = [
'privilege' => '{DAV:}read',
'principal' => '{DAV:}authenticated',
'protected' => true,
];
}
/** @var CardDavBackend $carddavBackend */
$carddavBackend = $this->carddavBackend;
return $carddavBackend->applyShareAcl($this->getResourceId(), $acl);
return $this->getACL();
}
function getChild($name) {
$obj = $this->carddavBackend->getCard($this->getResourceId(), $name);
$obj = $this->carddavBackend->getCard($this->addressBookInfo['id'], $name);
if (!$obj) {
throw new NotFound('Card not found');
}
$obj['acl'] = $this->getChildACL();
return new Card($this->carddavBackend, $this->addressBookInfo, $obj);
}
/**
@@ -162,10 +159,24 @@ class AddressBook extends \Sabre\CardDAV\AddressBook implements IShareable {
parent::delete();
}
function propPatch(PropPatch $propPatch) {
if (isset($this->addressBookInfo['{http://owncloud.org/ns}owner-principal'])) {
throw new Forbidden();
}
parent::propPatch($propPatch);
}
public function getContactsGroups() {
/** @var CardDavBackend $cardDavBackend */
$cardDavBackend = $this->carddavBackend;
return $cardDavBackend->collectCardProperties($this->getResourceId(), 'CATEGORIES');
}
private function canWrite() {
if (isset($this->addressBookInfo['{http://owncloud.org/ns}read-only'])) {
return !$this->addressBookInfo['{http://owncloud.org/ns}read-only'];
}
return true;
}
}

View File

@@ -62,10 +62,6 @@ class CardDavBackend implements BackendInterface, SyncSupport {
'BDAY', 'UID', 'N', 'FN', 'TITLE', 'ROLE', 'NOTE', 'NICKNAME',
'ORG', 'CATEGORIES', 'EMAIL', 'TEL', 'IMPP', 'ADR', 'URL', 'GEO', 'CLOUD');
const ACCESS_OWNER = 1;
const ACCESS_READ_WRITE = 2;
const ACCESS_READ = 3;
/** @var EventDispatcherInterface */
private $dispatcher;
@@ -78,7 +74,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
*/
public function __construct(IDBConnection $db,
Principal $principalBackend,
$dispatcher ) {
EventDispatcherInterface $dispatcher = null) {
$this->db = $db;
$this->principalBackend = $principalBackend;
$this->dispatcher = $dispatcher;
@@ -103,6 +99,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
* @return array
*/
function getAddressBooksForUser($principalUri) {
$principalUriOriginal = $principalUri;
$principalUri = $this->convertPrincipal($principalUri, true);
$query = $this->db->getQueryBuilder();
$query->select(['id', 'uri', 'displayname', 'principaluri', 'description', 'synctoken'])
@@ -126,7 +123,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
$result->closeCursor();
// query for shared calendars
$principals = $this->principalBackend->getGroupMembership($principalUri);
$principals = $this->principalBackend->getGroupMembership($principalUriOriginal, true);
$principals[]= $principalUri;
$query = $this->db->getQueryBuilder();
@@ -153,7 +150,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
'{http://calendarserver.org/ns/}getctag' => $row['synctoken'],
'{http://sabredav.org/ns}sync-token' => $row['synctoken']?$row['synctoken']:'0',
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}owner-principal' => $row['principaluri'],
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only' => $row['access'] === self::ACCESS_READ,
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_OWNCLOUD . '}read-only' => (int)$row['access'] === Backend::ACCESS_READ,
];
}
}
@@ -848,7 +845,7 @@ class CardDavBackend implements BackendInterface, SyncSupport {
$query = $this->db->getQueryBuilder();
$query->select('*')->from($this->dbCardsTable)
->where($query->expr()->eq('uri', $query->createNamedParameter($uri)))
->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)));
->andWhere($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId)));
$queryResult = $query->execute();
$contact = $queryResult->fetch();
$queryResult->closeCursor();

View File

@@ -23,7 +23,10 @@
namespace OCA\DAV\Connector;
use OCA\DAV\Connector\Sabre\DavAclPlugin;
use Sabre\DAV\INode;
use Sabre\DAV\PropFind;
use Sabre\HTTP\URLUtil;
use Sabre\DAVACL\Xml\Property\Principal;
class LegacyDAVACL extends DavAclPlugin {
@@ -67,4 +70,16 @@ class LegacyDAVACL extends DavAclPlugin {
}
return "principals/$name";
}
function propFind(PropFind $propFind, INode $node) {
/* Overload current-user-principal */
$propFind->handle('{DAV:}current-user-principal', function () {
if ($url = parent::getCurrentUserPrincipal()) {
return new Principal(Principal::HREF, $url . '/');
} else {
return new Principal(Principal::UNAUTHENTICATED);
}
});
parent::propFind($propFind, $node);
}
}

View File

@@ -61,6 +61,11 @@ class PublicAuth extends \Sabre\DAV\Auth\Backend\AbstractBasic {
return false;
}
if ((int)$linkItem['share_type'] === \OCP\Share::SHARE_TYPE_LINK &&
$this->config->getAppValue('core', 'shareapi_allow_public_upload', 'yes') !== 'yes') {
$this->share['permissions'] &= ~(\OCP\Constants::PERMISSION_CREATE | \OCP\Constants::PERMISSION_UPDATE);
}
// check if the share is password protected
if (isset($linkItem['share_with'])) {
if ($linkItem['share_type'] == \OCP\Share::SHARE_TYPE_LINK) {

View File

@@ -30,6 +30,7 @@
namespace OCA\DAV\Connector\Sabre;
use Exception;
use OC\AppFramework\Http\Request;
use OCP\IRequest;
use OCP\ISession;
use OCP\IUserSession;
@@ -48,6 +49,8 @@ class Auth extends AbstractBasic {
private $userSession;
/** @var IRequest */
private $request;
/** @var string */
private $currentUser;
/**
* @param ISession $session
@@ -130,7 +133,46 @@ class Auth extends AbstractBasic {
$msg = $e->getMessage();
throw new ServiceUnavailable("$class: $msg");
}
}
}
/**
* Checks whether a CSRF check is required on the request
*
* @return bool
*/
private function requiresCSRFCheck() {
// GET requires no check at all
if($this->request->getMethod() === 'GET') {
return false;
}
// Official ownCloud clients require no checks
if($this->request->isUserAgent([
Request::USER_AGENT_OWNCLOUD_DESKTOP,
Request::USER_AGENT_OWNCLOUD_ANDROID,
Request::USER_AGENT_OWNCLOUD_IOS,
])) {
return false;
}
// If not logged-in no check is required
if(!$this->userSession->isLoggedIn()) {
return false;
}
// POST always requires a check
if($this->request->getMethod() === 'POST') {
return true;
}
// If logged-in AND DAV authenticated no check is required
if($this->userSession->isLoggedIn() &&
$this->isDavAuthenticated($this->userSession->getUser()->getUID())) {
return false;
}
return true;
}
/**
* @param RequestInterface $request
@@ -139,27 +181,33 @@ class Auth extends AbstractBasic {
* @throws NotAuthenticated
*/
private function auth(RequestInterface $request, ResponseInterface $response) {
// If request is not GET and not authenticated via WebDAV a requesttoken is required
if($this->userSession->isLoggedIn() &&
$this->request->getMethod() !== 'GET' &&
!$this->isDavAuthenticated($this->userSession->getUser()->getUID())) {
if(!$this->request->passesCSRFCheck()) {
$forcedLogout = false;
if(!$this->request->passesCSRFCheck() &&
$this->requiresCSRFCheck()) {
// In case of a fail with POST we need to recheck the credentials
if($this->request->getMethod() === 'POST') {
$forcedLogout = true;
} else {
$response->setStatus(401);
throw new \Sabre\DAV\Exception\NotAuthenticated('CSRF check not passed.');
}
}
if (\OC_User::handleApacheAuth() ||
//Fix for broken webdav clients
($this->userSession->isLoggedIn() && is_null($this->session->get(self::DAV_AUTHENTICATED))) ||
//Well behaved clients that only send the cookie are allowed
($this->userSession->isLoggedIn() && $this->session->get(self::DAV_AUTHENTICATED) === $this->userSession->getUser()->getUID() && $request->getHeader('Authorization') === null)
) {
$user = $this->userSession->getUser()->getUID();
\OC_Util::setupFS($user);
$this->currentUser = $user;
$this->session->close();
return [true, $this->principalPrefix . $user];
if($forcedLogout) {
$this->userSession->logout();
} else {
if (\OC_User::handleApacheAuth() ||
//Fix for broken webdav clients
($this->userSession->isLoggedIn() && is_null($this->session->get(self::DAV_AUTHENTICATED))) ||
//Well behaved clients that only send the cookie are allowed
($this->userSession->isLoggedIn() && $this->session->get(self::DAV_AUTHENTICATED) === $this->userSession->getUser()->getUID() && $request->getHeader('Authorization') === null)
) {
$user = $this->userSession->getUser()->getUID();
\OC_Util::setupFS($user);
$this->currentUser = $user;
$this->session->close();
return [true, $this->principalPrefix . $user];
}
}
if (!$this->userSession->isLoggedIn() && in_array('XMLHttpRequest', explode(',', $request->getHeader('X-Requested-With')))) {
@@ -169,6 +217,12 @@ class Auth extends AbstractBasic {
throw new \Sabre\DAV\Exception\NotAuthenticated('Cannot authenticate over ajax calls');
}
return parent::check($request, $response);
$data = parent::check($request, $response);
if($data[0] === true) {
$startPos = strrpos($data[1], '/') + 1;
$user = $this->userSession->getUser()->getUID();
$data[1] = substr_replace($data[1], $user, $startPos);
}
return $data;
}
}

View File

@@ -57,7 +57,7 @@ class DummyGetResponsePlugin extends \Sabre\DAV\ServerPlugin {
*/
function httpGet(RequestInterface $request, ResponseInterface $response) {
$string = 'This is the WebDAV interface. It can only be accessed by ' .
'WebDAV clients such as the ownCloud desktop sync client.';
'WebDAV clients such as the Nextcloud desktop sync client.';
$stream = fopen('php://memory','r+');
fwrite($stream, $string);
rewind($stream);

View File

@@ -27,6 +27,7 @@
namespace OCA\DAV\Connector\Sabre;
use OCP\Files\ForbiddenException;
use Sabre\DAV\Exception\NotFound;
use Sabre\DAV\IFile;
use \Sabre\DAV\PropFind;
@@ -75,16 +76,26 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
*/
private $fileView;
/**
* @var IRequest
*/
private $request;
/**
* @param \Sabre\DAV\Tree $tree
* @param \OC\Files\View $view
* @param \OCP\IRequest $request
* @param bool $isPublic
*/
public function __construct(\Sabre\DAV\Tree $tree,
\OC\Files\View $view,
$isPublic = false) {
public function __construct(
\Sabre\DAV\Tree $tree,
\OC\Files\View $view,
\OCP\IRequest $request,
$isPublic = false
) {
$this->tree = $tree;
$this->fileView = $view;
$this->request = $request;
$this->isPublic = $isPublic;
}
@@ -192,7 +203,18 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
if (!($node instanceof IFile)) return;
// adds a 'Content-Disposition: attachment' header
$response->addHeader('Content-Disposition', 'attachment');
$filename = $node->getName();
if ($this->request->isUserAgent(
[
\OC\AppFramework\Http\Request::USER_AGENT_IE,
\OC\AppFramework\Http\Request::USER_AGENT_ANDROID_MOBILE_CHROME,
\OC\AppFramework\Http\Request::USER_AGENT_FREEBOX,
])) {
$response->addHeader('Content-Disposition', 'attachment; filename="' . rawurlencode($filename) . '"');
} else {
$response->addHeader('Content-Disposition', 'attachment; filename*=UTF-8\'\'' . rawurlencode($filename)
. '; filename="' . rawurlencode($filename) . '"');
}
if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
//Add OC-Checksum header
@@ -235,6 +257,16 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
$propFind->handle(self::GETETAG_PROPERTYNAME, function() use ($node) {
return $node->getEtag();
});
$propFind->handle(self::OWNER_ID_PROPERTYNAME, function() use ($node) {
$owner = $node->getOwner();
return $owner->getUID();
});
$propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function() use ($node) {
$owner = $node->getOwner();
$displayName = $owner->getDisplayName();
return $displayName;
});
}
if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
@@ -247,6 +279,8 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
}
} catch (StorageNotAvailableException $e) {
return false;
} catch (ForbiddenException $e) {
return false;
}
return false;
});
@@ -267,16 +301,6 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
return $node->getSize();
});
}
$propFind->handle(self::OWNER_ID_PROPERTYNAME, function() use ($node) {
$owner = $node->getOwner();
return $owner->getUID();
});
$propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function() use ($node) {
$owner = $node->getOwner();
$displayName = $owner->getDisplayName();
return $displayName;
});
}
/**

View File

@@ -230,7 +230,7 @@ abstract class Node implements \Sabre\DAV\INode {
if ($this->info->isDeletable()) {
$p .= 'D';
}
if ($this->info->isDeletable()) {
if ($this->info->isUpdateable()) {
$p .= 'NV'; // Renameable, Moveable
}
if ($this->info->getType() === \OCP\Files\FileInfo::TYPE_FILE) {

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