Commit graph

10637 commits

Author SHA1 Message Date
Vincent Petry
d0cca6c3ad Add explicit check for groups excluded from sharing
Since isSharable() doesn't do the check for groups excluded from
sharing, adding an explicit check in the sharing code.
2015-12-08 16:48:33 +01:00
Lukas Reschke
7c45eaa70b Add type description
Allows IDEs and static code analyzers. Would have saved me some minutes today :)
2015-12-08 15:20:54 +01:00
Thomas Müller
49095fa4bb Merge pull request #21031 from owncloud/sanitize-findAppInDirectories
Sanitize the appId passed to `findAppInDirectories`
2015-12-08 13:52:04 +01:00
Thomas Müller
45fe8271ab Merge pull request #21030 from owncloud/querybuilder-new-features
Querybuilder new features
2015-12-08 13:51:45 +01:00
Thomas Müller
85409b6701 Merge pull request #20786 from owncloud/systemtags-dav
DAV endpoint for system tags
2015-12-08 13:51:25 +01:00
Vincent Petry
6e4006d139 Add reshare permission checks
Added in isSharable() in incoming remote share.
Added in isSharable() in regular incoming share.
Added in FileInfo to make sure the proper attributes are returned to the
clients.
2015-12-08 13:13:26 +01:00
Vincent Petry
e241d26316 Compute share permissions in the view
The share permissions are now computed in the View/FileInfo instead of
storing them directly/permanently on the storage
2015-12-08 13:04:22 +01:00
Joas Schilling
9f98849306 Add a method to the get "to use" table and column name 2015-12-08 11:04:28 +01:00
Thomas Müller
fe8dc0bd5e Merge pull request #21022 from owncloud/get-rid-of-by-reference
Get rid of by reference
2015-12-08 11:04:25 +01:00
Lukas Reschke
715f89a9d9 Sanitize the appId passed to findAppInDirectories
Would have prevented quite some security bugs in the past. Nice hardening for now.
2015-12-08 10:03:22 +01:00
Joas Schilling
a3391248e4 Add select distinct to the query builder 2015-12-08 09:49:21 +01:00
Joas Schilling
f2c7acb3c0 Allow getting the last insert id without much hassle 2015-12-08 09:40:20 +01:00
Lukas Reschke
4b293dffe5 Use \OCP\Util::sanitizeHTML instead of \OC_Util::sanitizeHTML 2015-12-08 08:56:47 +01:00
Lukas Reschke
70c228a7cc Get rid of passing a reference
Fixes https://github.com/owncloud/core/issues/14643
2015-12-08 08:56:46 +01:00
Lukas Reschke
8289943a0f Do not trust casting 2015-12-08 08:50:00 +01:00
Lukas Reschke
451ba4ddaa Remove unused repair steps
These ones are not necessary anymore for the new major release.
2015-12-08 08:46:41 +01:00
Lukas Reschke
6ea7410041 Remove legacy check
This one is not required anymore as we have the RepairConfig repair step since November 2014.
2015-12-08 08:44:42 +01:00
Lukas Reschke
8903afec26 Don't write directives from CLI 2015-12-08 08:17:04 +01:00
Lukas Reschke
0a89073c47 Run .htaccess updates in any case
This is the same what we also do in updater.php and thus this aligns the code. Makes the code paths more consistent.
2015-12-08 08:16:24 +01:00
Lukas Reschke
235094ab54 Remove version check out of .htaccess
This can now be achieved using the new code signing.
2015-12-08 08:16:23 +01:00
Lukas Reschke
3bce1b20fe Add DirectorySlash to dynamic .htaccess write
When `DirectorySlash off` is set then Apache will not lookup folders anymore. This is required for example when we use the rewrite directives on an existing path such as  `/core/search`. By default Apache would load `/core/search/` instead `/core/search` so the redirect would fail here.

This leads however to the problem that URLs such as `localhost/owncloud` would not load anymore while `localhost/owncloud/` would. This has caused problems such as https://github.com/owncloud/core/pull/21015

With this change we add the `DirectorySlash off` directive only when the `.htaccess` is writable to the dynamic part of it. This would also make `localhost/owncloud` work again as it would trigger the 404 directive which triggers the redirect in base.php.
2015-12-08 08:10:55 +01:00
Jenkins for ownCloud
736e133c04 [tx-robot] updated from transifex 2015-12-08 01:56:19 -05:00
Thomas Müller
4100263bd6 Merge pull request #20996 from owncloud/issue-12215-remove-password-reset-when-not-possible
Issue 12215 remove password reset when not possible
2015-12-07 19:55:26 +01:00
Scrutinizer Auto-Fixer
453e1bf66e Scrutinizer Auto-Fixes
This commit consists of patches automatically generated for this project on https://scrutinizer-ci.com
2015-12-07 15:43:36 +00:00
Roeland Jago Douma
780d80d7c3 The ajax code path unshares a link share when updating the password
In order to not mess up existing shares if the password gets verified we
should first fire this validation.
2015-12-07 16:38:49 +01:00
Thomas Müller
663f31b127 Merge pull request #20993 from owncloud/issue-20666-language-always-overwritten
Do not overwrite the language when it's just missing for one app
2015-12-07 16:19:21 +01:00
Joas Schilling
87bc02c6cd Allow specifying a custom reset-password-url 2015-12-07 15:41:40 +01:00
Thomas Müller
a9e5faf7d0 Merge pull request #20981 from owncloud/issue-19848-multiple-emails-for-sharelink
Allow sending a share email to multiple users
2015-12-07 15:17:19 +01:00
Joas Schilling
f8f3c9ecf9 Remove password reset when the user can not change the password 2015-12-07 15:14:19 +01:00
Joas Schilling
c6dbe8ac63 Do not overwrite the language when it's just missing for one app 2015-12-07 14:46:53 +01:00
Thomas Müller
d155c8e5fe Add unix_socket support for mysql during initial installation - fixes #20210 2015-12-07 12:00:31 +01:00
Joas Schilling
5b87413792 Allow sending a share email to multiple users 2015-12-07 10:49:34 +01:00
Thomas Müller
764b2932ff Merge pull request #20960 from owncloud/drop-OC_Util-getUrlContent
Remove OC_Util::getUrlContent and replace by proper usage of public i…
2015-12-07 10:21:16 +01:00
Thomas Müller
f3d49a89fe Merge pull request #11131 from owncloud/use-phpini-wrapper
Replacing ini_get instances with inigetwrapper usages
2015-12-07 10:20:59 +01:00
Thomas Müller
0c3d97921f Merge pull request #20904 from owncloud/view-mime-filter
Fix mimetype filter in getDirectoryContent
2015-12-07 10:20:43 +01:00
Thomas Müller
e1f2965e54 Merge pull request #20949 from owncloud/fix_20892
[Sharing] Properly check if a group already has access
2015-12-07 10:20:05 +01:00
Thomas Müller
c1fb9fa483 Merge pull request #20957 from owncloud/use-correct-method-signature
Use correct method signature
2015-12-07 10:18:03 +01:00
Thomas Müller
c9069d5711 Merge pull request #20959 from owncloud/drop-OC_App-setActiveNavigationEntry
Remove unused setActiveNavigationEntry of OC_App - it's also in OCP\App
2015-12-07 10:17:44 +01:00
Jenkins for ownCloud
884946276e [tx-robot] updated from transifex 2015-12-07 01:54:35 -05:00
Jenkins for ownCloud
d14f128329 [tx-robot] updated from transifex 2015-12-06 01:54:33 -05:00
Jenkins for ownCloud
f0b1ba713d [tx-robot] updated from transifex 2015-12-05 01:55:14 -05:00
Morris Jobke
4548a0aa90 Remove OC_Util::getUrlContent and replace by proper usage of public interfaces 2015-12-04 18:02:47 +01:00
Vincent Petry
316b907a13 Fixed system tags DAV and API and docs 2015-12-04 17:30:50 +01:00
Morris Jobke
46a6c6d70b remove OC_App::getActiveNavigationEntry - not unsed anymore 2015-12-04 17:26:28 +01:00
Morris Jobke
e6d4496fc2 Remove unused setActiveNavigationEntry of OC_App - it's also in OCP\App 2015-12-04 17:23:51 +01:00
Lukas Reschke
d522797227 Use correct method signature
This function takes only one parameter
2015-12-04 15:52:42 +01:00
Roeland Jago Douma
11d8b336e2 [Sharing] Properly check if a group already has access
The old code check was to liberal resulting in wrong matches if a user
with the same name as the group already had access.

Fixes 20892
2015-12-04 12:22:21 +01:00
Thomas Müller
6034c9142d Merge pull request #20933 from owncloud/more-OC_Config-cleanups
More cleanups of OC_Config usage
2015-12-04 09:06:47 +01:00
Jenkins for ownCloud
a2848af625 [tx-robot] updated from transifex 2015-12-04 01:56:31 -05:00
Thomas Müller
602b636d3e Merge pull request #20807 from owncloud/dont-append-redirect-url-if-user-is-already-logged-in
Don't append redirect URL if user is logged-in
2015-12-03 16:53:59 +01:00
Thomas Müller
2ceae43989 Merge pull request #20545 from owncloud/scan-storage-in-background-job
Move files/ajax/scan.php to background job
2015-12-03 16:53:46 +01:00
Morris Jobke
c60c793cf2 More cleanups of OC_Config usage 2015-12-03 16:41:23 +01:00
Thomas Müller
1fe7957fd0 Merge pull request #20924 from owncloud/use-url-generator-to-generate-link
Use URLGenerator instead of hard-coded WEBROOT
2015-12-03 15:26:14 +01:00
Vincent Petry
cc72c6a30d Added dav endpoints for system tags 2015-12-03 15:23:21 +01:00
Lukas Reschke
1f69dcb593 Use URLGenerator instead of hard-coded WEBROOT
Fixes https://github.com/owncloud/core/issues/20922
2015-12-03 14:42:14 +01:00
Morris Jobke
aa0265bd34 Replace OC_Config in setup 2015-12-03 14:35:15 +01:00
Thomas Müller
2d1cc8aaeb Merge pull request #19461 from owncloud/reuse_code
reuse code
2015-12-03 13:55:50 +01:00
Robin Appelman
19b2fe6a3a Fix mimetype filter in getDirectoryContent 2015-12-03 13:09:13 +01:00
Jesús Macias
9dd11091d4 Fix code from comments 2015-12-03 10:00:11 +01:00
Jesús Macias
98f5c50aa4 Migrate storate status code to storagenotavailablexception 2015-12-03 09:59:45 +01:00
Jesús Macias
4ead2bc861 Fix code from PR comments 2015-12-03 09:58:55 +01:00
Jesús Macias
7cd13f462a Add new external storage exceptions for different errors 2015-12-03 09:57:59 +01:00
Thomas Müller
e7239b6553 Merge pull request #20872 from owncloud/systemtags-better-not-found-exception
Systemtags better not found exception
2015-12-03 09:26:05 +01:00
Thomas Müller
a5c80ba8bc Merge pull request #20894 from owncloud/post-delete-meta-view
Also add metadata for postDelete hooks triggered from the view
2015-12-03 09:24:54 +01:00
Thomas Müller
7fefd4f4d9 Merge pull request #20860 from owncloud/use-user-getEMailAddress-all-over-the-place
User IUser::getEMailAddress() all over the place
2015-12-03 09:21:53 +01:00
Thomas Müller
09600058d0 Merge pull request #20901 from owncloud/get-rid-of-more-legacy-config-stuff
Replace old config code with usage of proper APIs
2015-12-02 21:54:42 +01:00
Thomas Müller
dcc7ff09ba Adding unit test for MailNotifications::sendInternalShareMail() 2015-12-02 21:42:14 +01:00
Thomas Müller
eebe2b9c23 User IUser::getEMailAddress() all over the place 2015-12-02 21:25:05 +01:00
Thomas Müller
df5872ec50 Merge pull request #20719 from owncloud/adding-system-addressbook-of-users
Adding system addressbook for users of this instance - a occ command …
2015-12-02 16:17:58 +01:00
Morris Jobke
37ecde065b Replace old config code with usage of proper APIs 2015-12-02 15:56:59 +01:00
Morris Jobke
baecfc4080 Reduce OC_Config usage in lib/
* replaced by proper public interfaces
2015-12-02 14:49:40 +01:00
Thomas Müller
28ceab2f61 Fix endless recursion 2015-12-02 14:44:41 +01:00
Robin Appelman
0062888aaf Also add metadata for postDelete hooks triggered from the view 2015-12-02 13:51:26 +01:00
Thomas Müller
8d218bf3ef Merge pull request #20875 from owncloud/remove-changepropagator
remove old propagation logic
2015-12-02 13:03:31 +01:00
Lukas Reschke
4d9af08f12 Execute only for web and not for CLI 2015-12-02 11:49:33 +01:00
Lukas Reschke
09d9e430d8 Add a trailing slash to generated URLs 2015-12-02 11:27:07 +01:00
Lukas Reschke
125b7e7512 Ensure that ownCloud is always accessed with a trailing slash 2015-12-02 11:26:41 +01:00
Thomas Müller
812a390f32 Merge pull request #20879 from owncloud/check-if-rewrite-base-is-set-if-rewrite-is-active
Check if rewrite base is set if rewrite is active
2015-12-02 10:56:44 +01:00
Thomas Müller
c46ea30248 Merge pull request #20865 from owncloud/post-delete-meta
Add metadata to post delete hooks
2015-12-02 10:12:54 +01:00
Thomas Müller
f840d8dee7 Merge pull request #20874 from owncloud/allow-di-mimetypedetector
Allow DI for OCP\Files\IMimeTypeDetector
2015-12-02 10:12:35 +01:00
Thomas Müller
0bd0212731 Merge pull request #20877 from owncloud/fix-empty-expirationDate
Check the expiration date for null
2015-12-02 10:12:16 +01:00
Thomas Müller
4c695e63c0 Fix comments 2015-12-02 09:20:58 +01:00
Thomas Müller
0391cc0451 Fix getCloudId 2015-12-02 09:14:41 +01:00
Thomas Müller
6abc02cb88 Proposal: add enumeration function to IUserManager which simply calls a callbask for each user in all backends 2015-12-02 09:14:41 +01:00
Thomas Müller
df6fc6cc70 Add the user's cloud id to the vCard 2015-12-02 09:14:41 +01:00
Thomas Müller
dad6470baa Add IUser::getAvatarImage() for easy access 2015-12-02 09:14:41 +01:00
Jenkins for ownCloud
4f4b91a9ec [tx-robot] updated from transifex 2015-12-02 02:00:28 -05:00
Roeland Jago Douma
b00db2c933 DI in avatar code
* DI in avatar code
* Use the node API
* More unit tests
* Unit tests no longer require DB
2015-12-01 22:15:43 +01:00
Lukas Reschke
6a067b1ec9 Set RewriteBase to / if OC::WEBROOT is not set 2015-12-01 22:03:25 +01:00
Lukas Reschke
002e719789 Set "SetEnv" within base .htaccess file
mod_rewrite as used by the front controller may require a `RewriteBase` in case the installation is done using an alias. Since we cannot enforce a writable `.htaccess` file this will move the `front_controller_active` environment variable into the main .htaccess file. If administrators decide to have this one not writable they can still enable this feature by setting the `front_controller_active` environment variable within the Apache config.
2015-12-01 19:06:48 +01:00
Morris Jobke
3061e5d2fc Check the expiration date for null
* null is always less than any value -> expirationDate gets null
  which is "no date set"
* ref https://github.com/owncloud/core/issues/20590#issuecomment-158393075
2015-12-01 17:43:05 +01:00
Robin Appelman
62cc316c6a remove old propagation logic 2015-12-01 16:50:20 +01:00
Joas Schilling
44852ce324 Allow DI for OCP\Files\IMimeTypeDetector 2015-12-01 16:49:20 +01:00
Lukas Reschke
2515cb17be Support pretty URLs
This changeset allows ownCloud to run with pretty URLs, they will be used if mod_rewrite and mod_env are available. This means basically that the `index.php` in the URL is not shown to the user anymore.

Also the not deprecated functions to generate URLs have been modified to support this behaviour, old functions such as `filePath` will still behave as before for compatibility reasons.

Examples:
http://localhost/owncloud/index.php/s/AIDyKbxiRZWAAjP => http://localhost/owncloud/s/AIDyKbxiRZWAAjP
http://localhost/owncloud/index.php/apps/files/ => http://localhost/owncloud/apps/files/

Due to the way our CSS and JS is structured the .htaccess uses some hacks for the final result but could be worse... And I was just annoyed by all that users crying for the removal of `index.php` ;-)
2015-12-01 16:46:07 +01:00
Thomas Müller
74e8c25a5b Merge pull request #20285 from owncloud/add-integrity-checker
Add code integrity checker foundation
2015-12-01 15:27:50 +01:00
Joas Schilling
1d0c041ac8 Add a method to get the list of tags from the TagNotFound Exception 2015-12-01 14:54:34 +01:00
Robin Appelman
0d63e95a5d Add metadata to post delete hooks 2015-12-01 13:22:58 +01:00
Joas Schilling
1761fdd9ee Fix the docs of the exceptions and remove hardcoded language from the message 2015-12-01 12:32:50 +01:00
Lukas Reschke
4971015544 Add code integrity check
This PR implements the base foundation of the code signing and integrity check. In this PR implemented is the signing and verification logic, as well as commands to sign single apps or the core repository.

Furthermore, there is a basic implementation to display problems with the code integrity on the update screen.

Code signing basically happens the following way:

- There is a ownCloud Root Certificate authority stored `resources/codesigning/root.crt` (in this PR I also ship the private key which we obviously need to change before a release 😉). This certificate is not intended to be used for signing directly and only is used to sign new certificates.
- Using the `integrity:sign-core` and `integrity:sign-app` commands developers can sign either the core release or a single app. The core release needs to be signed with a certificate that has a CN of `core`,  apps need to be signed with a certificate that either has a CN of `core` (shipped apps!)  or the AppID.
- The command generates a signature.json file of the following format:
```json
{
    "hashes": {
        "/filename.php": "2401fed2eea6f2c1027c482a633e8e25cd46701f811e2d2c10dc213fd95fa60e350bccbbebdccc73a042b1a2799f673fbabadc783284cc288e4f1a1eacb74e3d",
        "/lib/base.php": "55548cc16b457cd74241990cc9d3b72b6335f2e5f45eee95171da024087d114fcbc2effc3d5818a6d5d55f2ae960ab39fd0414d0c542b72a3b9e08eb21206dd9"
    },
    "certificate": "-----BEGIN CERTIFICATE-----MIIBvTCCASagAwIBAgIUPvawyqJwCwYazcv7iz16TWxfeUMwDQYJKoZIhvcNAQEF\nBQAwIzEhMB8GA1UECgwYb3duQ2xvdWQgQ29kZSBTaWduaW5nIENBMB4XDTE1MTAx\nNDEzMTcxMFoXDTE2MTAxNDEzMTcxMFowEzERMA8GA1UEAwwIY29udGFjdHMwgZ8w\nDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANoQesGdCW0L2L+a2xITYipixkScrIpB\nkX5Snu3fs45MscDb61xByjBSlFgR4QI6McoCipPw4SUr28EaExVvgPSvqUjYLGps\nfiv0Cvgquzbx/X3mUcdk9LcFo1uWGtrTfkuXSKX41PnJGTr6RQWGIBd1V52q1qbC\nJKkfzyeMeuQfAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAvF/KIhRMQ3tYTmgHWsiM\nwDMgIDb7iaHF0fS+/Nvo4PzoTO/trev6tMyjLbJ7hgdCpz/1sNzE11Cibf6V6dsz\njCE9invP368Xv0bTRObRqeSNsGogGl5ceAvR0c9BG+NRIKHcly3At3gLkS2791bC\niG+UxI/MNcWV0uJg9S63LF8=\n-----END CERTIFICATE-----",
    "signature": "U29tZVNpZ25lZERhdGFFeGFtcGxl"
}
```
`hashes` is an array of all files in the folder with their corresponding SHA512 hashes (this is actually quite cheap to calculate), the `certificate` is the  certificate used for signing. It has to be issued by the ownCloud Root Authority and it's CN needs to be permitted to perform the required action. The `signature` is then a signature of the `hashes` which can be verified using the `certificate`.

Steps to do in other PRs, this is already a quite huge one:
- Add nag screen in case the code check fails to ensure that administrators are aware of this.
- Add code verification also to OCC upgrade and unify display code more.
- Add enforced code verification to apps shipped from the appstore with a level of "official"
- Add enfocrced code verification to apps shipped from the appstore that were already signed in a previous release
- Add some developer documentation on how devs can request their own certificate
- Check when installing ownCloud
- Add support for CRLs to allow revoking certificates

**Note:** The upgrade checks are only run when the instance has a defined release channel of `stable` (defined in `version.php`). If you want to test this, you need to change the channel thus and then generate the core signature:

```
➜  master git:(add-integrity-checker) ✗ ./occ integrity:sign-core --privateKey=resources/codesigning/core.key --certificate=resources/codesigning/core.crt
Successfully signed "core"
```

Then increase the version and you should see something like the following:

![2015-11-04_12-02-57](https://cloud.githubusercontent.com/assets/878997/10936336/6adb1d14-82ec-11e5-8f06-9a74801c9abf.png)

As you can see a failed code check will not prevent the further update. It will instead just be a notice to the admin. In a next step we will add some nag screen.

For packaging stable releases this requires the following additional steps as a last action before zipping:
1. Run `./occ integrity:sign-core` once
2. Run `./occ integrity:sign-app` _for each_ app. However, this can be simply automated using a simple foreach on the apps folder.
2015-12-01 11:55:20 +01:00
Joas Schilling
3c5a6b829e Allow DI the system tag stuff without Application class 2015-11-30 17:08:29 +01:00