Joas Schilling
0d154595f8
Fix the subject of notifications
2015-09-08 09:01:01 +02:00
Joas Schilling
57c273b2da
Fix closures and adding parsed Actions
2015-09-08 09:01:01 +02:00
Joas Schilling
d04021b1ac
Fix the request type and the validity
2015-09-08 09:01:01 +02:00
Joas Schilling
21b83dc730
Allow getting the request type
2015-09-08 09:01:01 +02:00
Joas Schilling
913e2e9ae6
Use an INotification to getCount() and markProcessed()
2015-09-08 09:01:01 +02:00
Joas Schilling
3bdfef9107
Add the request type to the action
2015-09-08 09:01:01 +02:00
Joas Schilling
f0ecfa6e6c
Add the app id to the markProcessed method
2015-09-08 09:01:01 +02:00
Joas Schilling
0bcae89d14
Handle InvalidArgumentException more gracefully
2015-09-08 09:01:01 +02:00
Joas Schilling
f16c5a38a8
Add language to the preparation method
2015-09-08 09:01:01 +02:00
Joas Schilling
4e347170ac
Notification API
2015-09-08 09:00:57 +02:00
Lukas Reschke
84797023ed
Remove XSendFile support
...
Required to ensure proper locking
2015-09-07 16:52:50 +02:00
Morris Jobke
c57595bcb4
Merge pull request #18839 from owncloud/autoloader-supersecure
...
Restrict autoloaded paths to loaded apps (and other enhancements)
2015-09-07 00:09:00 +02:00
Roeland Douma
24f5f50b20
Merge pull request #18742 from owncloud/mimetype-updatedb
...
Introduce mimetype DB update occ command
2015-09-06 16:56:35 +02:00
Robin McCorkell
b64e3f8db6
Fallback to complete Memcached flush if getAllKeys fails
...
Newer Memcached's do not support the underlying protocol commands that
getAllKeys() is implemented with. We should fallback to clearing
everything in that case, as causing (temporary) performance problems for
other applications on the server is better than having stale cached data.
2015-09-05 20:02:49 +01:00
Robin McCorkell
0fac2e3f3a
Unique exception for invalid autoload paths, better handling
...
Background jobs are tolerant of stale entries left by disabled apps,
which will cause an autoload exception.
2015-09-05 16:50:02 +01:00
Robin McCorkell
b06bc409e0
Rebuild app navigation in JS
...
Retrieve all app navigations to prevent reloading appinfo/app.php and
causing an error when the app isn't fully loaded. The addition/deletion
logic has been moved to JS, simplifying a lot of code.
2015-09-05 02:24:18 +01:00
Robin McCorkell
b3acf09c60
Only add valid root for enabled apps
2015-09-05 00:04:58 +01:00
Robin McCorkell
cdf01f0419
Split mimetype handling to new class
2015-09-04 17:28:20 +01:00
Morris Jobke
7f8bca64cb
Merge pull request #18833 from owncloud/share-prevent-twice
...
Prevent sharing twice with user when already a group
2015-09-04 18:26:50 +02:00
Vincent Petry
f100ef0fc6
Prevent sharing twice with user when already a group
2015-09-04 16:22:01 +02:00
Morris Jobke
e54513cddd
Merge pull request #18799 from owncloud/appconfig-with-one-request
...
Only query the appconfig once per request
2015-09-03 16:13:14 +02:00
Joas Schilling
38a164aa7a
Make sure the array exists
2015-09-03 15:41:30 +02:00
Robin Appelman
8123df9489
setup owner when getting users for share
2015-09-03 14:34:46 +02:00
Morris Jobke
a1e13d95ad
Merge pull request #18777 from owncloud/locking-default
...
enable transational locking by default
2015-09-03 11:33:10 +02:00
Joas Schilling
21ba3b8737
Only query the appconfig once
2015-09-03 11:30:57 +02:00
Lukas Reschke
f9e90e92d4
Encode HTML tags in JSON
...
While not encoding the HTML tags in the JSON response is perfectly fine since we set the proper mimetype as well as disable content sniffing a lot of automated code scanner do report this as security bug. Encoding them leads to less discussions and a lot of saved time.
2015-09-03 00:44:46 +02:00
Joas Schilling
8f2110e5da
Revert "Soft fail when deleting and no entry found"
2015-09-02 19:52:45 +02:00
Robin Appelman
4880d7729b
enable transational locking by default
2015-09-02 16:56:47 +02:00
Robin McCorkell
c9c246a3f5
Soft fail when deleting and no entry found
2015-09-02 14:50:07 +01:00
Robin Appelman
0f6df2e0b6
Allow creating previewss that cover the specified dimensions
2015-09-02 10:32:39 +02:00
Robin Appelman
1c10fb5c9f
also use httpclient for uploadFile
2015-09-01 18:01:27 +02:00
Robin McCorkell
5b2529b448
Delay adding OCS prefix to route collection until all is loaded
...
->addPrefix() iterates over all registered routes, so must be run after
all apps have had a chance to load their OCS routes.
2015-09-01 15:42:41 +01:00
Vincent Petry
87b3e28f06
Merge pull request #18730 from owncloud/appframework_proper_304
...
Properly return 304 in AppFramework
2015-09-01 15:39:59 +02:00
Robin McCorkell
9e9ffb1356
Allow access to full alias and mapping arrays
2015-09-01 14:07:14 +01:00
Roeland Jago Douma
f12caf930e
Properly return 304
...
The ETag set in the IF_NONE_MODIFIED header is wraped in quotes (").
However the ETag that is set in response is not (yet). Also we need to
cast the ETag to a string.
* Added unit test
2015-09-01 11:04:41 +02:00
Vincent Petry
6ccbf4bce6
Improved update version detection logic
2015-08-31 18:35:35 +02:00
Vincent Petry
85b62c7d82
Merge pull request #18635 from owncloud/stickify-files-and-sharing-notification-types
...
Sticky the notification types of files and sharing
2015-08-31 17:56:48 +02:00
Robin McCorkell
3142a20f25
Expose files_external services from Server
...
Not exposed to OCP yet
2015-08-31 15:18:26 +01:00
Vincent Petry
f8d8de5da6
Merge pull request #17899 from owncloud/enc_make_key_storage_root_configurable
...
Make root of key storage configurable
2015-08-31 15:58:30 +02:00
Morris Jobke
c34fbea197
Merge pull request #18691 from owncloud/request-no-read
...
Decode request content only on getContent
2015-08-31 14:58:48 +02:00
Vincent Petry
3b37c20319
Simplify comparison algo
2015-08-31 14:31:17 +02:00
Robin McCorkell
e60c4bada1
Decode request content only on getContent
2015-08-31 01:05:25 +01:00
Robin McCorkell
a0dfaf9be3
Clean up TempManager to follow code guidelines
...
tmpBaseDir can be overridden for unit testing purposes
2015-08-30 23:30:56 +01:00
Morris Jobke
b50ac6ff2f
Merge pull request #10149 from owncloud/storage-wrapper-check
...
Check result of storage wrappers
2015-08-30 19:48:37 +02:00
Bjoern Schiessle
37513f9411
don't read certificates if ownCloud is not installed
2015-08-30 19:00:03 +02:00
Bjoern Schiessle
289e9130f3
make system root of key storage configurable
2015-08-30 19:00:03 +02:00
Vincent Petry
d5b0b55eef
Throw exception on downgrade attempt
2015-08-30 18:07:22 +02:00
Vincent Petry
2b08659f7d
Restrict upgrades to explicit allowed version
...
version.php now contains the previous ownCloud version from which
upgrades are allowed. Any other upgrades will show a message that the
upgrade/downgrade is not supported.
2015-08-30 18:04:18 +02:00
Vincent Petry
045f8cc971
Merge pull request #18651 from owncloud/ocs_share_create_with_expire
...
Allow to directly set the expireDate on a new (link)share
2015-08-30 10:50:12 +02:00
Roeland Jago Douma
2aff11c80b
Actually validate the expire date on share
...
* Added more intergration tests
2015-08-30 10:31:43 +02:00
Robin Appelman
4cb8ca1860
Check result of storage wrappers
2015-08-30 10:02:42 +02:00
root
acae208f2f
moved code to /lib/private/tempmanager.php
...
fix for unit test
some fixes
2015-08-29 16:59:02 +01:00
Vincent Petry
723f8c8f1b
Merge pull request #18620 from owncloud/add-public-interface-for-factory
...
Add a public interface for the language factory so apps can use it
2015-08-29 16:44:08 +02:00
Robin Appelman
df8cb2cc63
stream webdav downloads using http client
2015-08-29 14:56:15 +02:00
Robin Appelman
b67d395089
allow streamed responses in http client
2015-08-29 14:56:08 +02:00
Joas Schilling
0ddcc7da44
Merge pull request #18511 from owncloud/downgrad-sharing-error-logs-to-debug
...
Change log level of debugging logs to debug
2015-08-28 21:05:02 +02:00
Björn Schießle
6e210d960c
Merge pull request #18423 from owncloud/occ_encrypt_all
...
occ command line tool to encrypt all files
2015-08-28 20:44:55 +02:00
Joas Schilling
42f0651b83
Sticky the notification types of files and sharing
2015-08-28 18:40:50 +02:00
Joas Schilling
a12d354762
Deprecate OC_L10N::get()
2015-08-28 12:04:52 +02:00
Joas Schilling
c3c7689b67
Add a public interface for the language factory so apps can use it
2015-08-27 13:14:50 +02:00
Bjoern Schiessle
e51fe617d8
copy always file by file to encrypt/decrypt it if needed
2015-08-26 14:58:22 +02:00
Lukas Reschke
3d2ee95f1e
Remove last occurence of `forcessl`
...
This shoudl have been adjusted as well, now it's consistent with `setMagicInCookie`. While it does not have a security impact directly some automated scanners reported this all the time.
2015-08-26 14:29:36 +02:00
Thomas Müller
749e3d5219
Merge pull request #18553 from owncloud/write-l10n-on-login
...
Save detected l10n of browser on login
2015-08-26 08:44:25 +02:00
Thomas Müller
534b2e407a
Merge pull request #17662 from owncloud/locking-db
...
Database backend for locking
2015-08-26 03:56:37 +02:00
Lukas Reschke
f3561e2349
Explicitly specify status code 200 as response code
...
Potentially fixes https://github.com/owncloud/core/issues/17586
2015-08-25 18:07:40 +02:00
Morris Jobke
4f13f96981
Save detected l10n of browser on login
...
* fixes owncloud/activity#373
2015-08-25 15:47:31 +02:00
Thomas Müller
6f6a5f6c29
Adding path to log message
2015-08-25 14:31:21 +02:00
Thomas Müller
2f86be9ced
Merge pull request #18523 from owncloud/crazy-scanner
...
Prevent bkg scanner going crazy with unavailable storages (ajax/scan.php)
2015-08-25 09:23:42 +02:00
Vincent Petry
fe575feca8
Prevent scanner going crazy with unavailable storages
2015-08-24 16:42:53 +02:00
Morris Jobke
e88b380973
Remove DEBUG constant and use config value
...
* introduces config.php option 'debug' that defaults to false
* migrate DEBUG constant to config value
2015-08-24 15:14:05 +02:00
Lukas Reschke
bd13126a80
Fix master again
...
Caused due to merge of two PRs
2015-08-24 12:19:03 +02:00
Joas Schilling
4e0e2eb222
Change log level of debugging logs to debug
2015-08-24 12:12:08 +02:00
Morris Jobke
b3495a1dc9
Merge pull request #18482 from owncloud/encrypt-session-data
...
Add a session wrapper to encrypt the data before storing it on disk
2015-08-24 12:10:15 +02:00
Vincent Petry
fe568ab64d
Merge pull request #18486 from owncloud/use-client-service-to-work-behind-proxy
...
Use client service to work behind proxy for checks for remote ownCloud instances
2015-08-24 11:05:14 +02:00
Vincent Petry
31d62c10bf
Merge pull request #17501 from tbartenstein/patch-1
...
Update fileinfo.php
2015-08-24 09:57:27 +02:00
Morris Jobke
40b1054530
Merge pull request #18254 from owncloud/mitigate-breach
...
Add mitigation against BREACH
2015-08-24 09:14:27 +02:00
Lukas Reschke
0a1d551090
Use IClientService to check for remote ownCloud instances
...
1. Allows to set a timeout (though still not perfect but way better than before)
2. Allows to have unit tests
3. I also added unit tests for the existing controller code
4. Corrected PHPDoc on IClient
2015-08-22 14:39:43 +02:00
Lukas Reschke
6a3fb0d3b3
Handle failures gracefully, remove switch
2015-08-21 19:16:28 +02:00
Joas Schilling
36eef2ddab
Add a session wrapper to encrypt the data before storing it on disk
2015-08-21 17:59:23 +02:00
Morris Jobke
ac086a11c1
Merge pull request #18426 from owncloud/joblist-next-non-existing
...
handle non existing job classes in $jobList->getNext
2015-08-21 10:34:33 +02:00
Joas Schilling
9573d7d60d
Merge pull request #18372 from owncloud/issue-18358-object-type-and-id-for-activities
...
Issue 18358 object type and id for activities
2015-08-20 15:53:36 +02:00
Joas Schilling
c58316b1ae
Expand the doc blocks on the new methods
2015-08-20 15:35:24 +02:00
Morris Jobke
d725de505e
Merge pull request #18439 from owncloud/fix-appmanagement-install
...
[app management] fix dependency check on install
2015-08-20 13:26:55 +02:00
Joas Schilling
6697844c01
Remove unnecessary code
2015-08-20 13:10:11 +02:00
Morris Jobke
06d8edd963
Merge pull request #17434 from owncloud/update-showappnameonappupdate
...
Display app names in update page for app updates
2015-08-20 11:50:01 +02:00
Vincent Petry
a2674b2b30
Additions to update page
...
Apps to update and to disable will always be shown.
Main title changes only when apps need updated, not core.
Added bullet style.
Exclude incompatible apps from updated apps list.
2015-08-20 11:14:30 +02:00
Joas Schilling
389a32e92a
Add test coverage for Activity Event and Manager
2015-08-20 10:25:49 +02:00
Morris Jobke
29decf698c
[app management] fix dependency check on install
2015-08-19 21:32:56 +02:00
Morris Jobke
b3356b1288
Merge pull request #18432 from owncloud/ext-backends.simple
...
Migrate simple external storage backends to new registration API [part 1]
2015-08-19 20:04:20 +02:00
Thomas Müller
313cb092f9
Merge pull request #18427 from owncloud/fix-format-ocs
...
Fix format of log/private/ocs.php
2015-08-19 19:09:32 +02:00
Vincent Petry
b919ae96f0
Display app names in update page for app updates
...
Whenever the update page is displayed for apps, show app names instead
of the core update text.
2015-08-19 18:03:35 +02:00
Joas Schilling
4314c8fc6f
Use an IEvent object instead of a huge parameter list
2015-08-19 17:44:57 +02:00
Joas Schilling
bc2aa14849
Extend the interfaces IManager and IConsumer to allow passing in the object
2015-08-19 17:44:57 +02:00
Robin McCorkell
3b27603762
Revert "Fix mounting wrapped storages resulting in many-layered wrapping"
...
This reverts commit 75a5e6e12b
.
2015-08-19 14:41:43 +01:00
Robin McCorkell
3bb793b6a7
Implement password authentication mechanisms
...
Introduces the basic password authentication mechanism, along with a
mechanism based on ownCloud credentials stored in the user session.
Change to lib/private is an extension of PermissionsMask, as
isSharable() override was missing.
Session credentials auth mechanism now disables sharing on applied
storages, as credentials will not be available.
2015-08-19 14:20:09 +01:00
Lukas Reschke
40b87b1394
Add warning for not existing CA bundle when updating
...
For newer releases we shall use an integrity check. But that's a good alternative for now.
2015-08-19 15:03:33 +02:00
Morris Jobke
8fbb0c7b49
Fix format of log/private/ocs.php
...
Fixes https://github.com/owncloud/core/pull/14314#discussion_r37305256
2015-08-19 14:21:10 +02:00
Robin Appelman
beaef820cf
handle non existing job classes in $jobList->getNext
2015-08-19 14:16:05 +02:00
Morris Jobke
127b6e2f3f
Merge pull request #18374 from owncloud/router-apps
...
Only load app routes if the app has already been loaded [re-merge]
2015-08-19 09:52:09 +02:00
Bernhard Posselt
66d8476e9e
Merge pull request #14314 from owncloud/clean-up-ocs-code
...
Cleanup OCS code
2015-08-18 16:47:53 +02:00
Robin McCorkell
1c26755686
Only load app routes if the app has already been loaded
2015-08-18 09:18:36 +01:00
Robin McCorkell
675d852c7d
Merge pull request #17182 from owncloud/user_ini_upload_size
...
Update .user.ini when setting upload size limit
2015-08-17 13:27:47 +01:00
Morris Jobke
24e20a51eb
Degrade log message about missing app in appstore to debug
...
* fixes #18154
2015-08-17 11:27:41 +02:00
Thomas Müller
0b64268910
Adding EventDispatcher to IServerContainer
2015-08-14 15:40:15 +02:00
Lukas Reschke
a7e4785be9
Cleanup OCS code
...
This removes unused code from `OC_OCS` which nobody understood what it really was for anyways.
2015-08-14 13:42:56 +02:00
Lukas Reschke
8313a3fcb3
Add mitigation against BREACH
...
While BREACH requires the following three factors to be effectively exploitable we should add another mitigation:
1. Application must support HTTP compression
2. Response most reflect user-controlled input
3. Response should contain sensitive data
Especially part 2 is with ownCloud not really given since user-input is usually only echoed if a CSRF token has been passed.
To reduce the risk even further it is however sensible to encrypt the CSRF token with a shared secret. Since this will change on every request an attack such as BREACH is not feasible anymore against the CSRF token at least.
2015-08-14 01:31:32 +02:00
Thomas Müller
1d219cf799
With V2 we should ensure that the status codes are kept in sync
2015-08-13 10:45:25 +02:00
Thomas Müller
abd3d5c6a5
Merge pull request #17982 from owncloud/appframework-sanitize-name
...
Sanitize class names before registerService/query
2015-08-12 12:19:24 +02:00
Thomas Müller
eb13cb8d75
Merge pull request #18127 from owncloud/dav-request-tests
...
add test framework for doing full request webdav tests
2015-08-12 10:07:20 +02:00
Robin McCorkell
cd5342d0ff
Merge pull request #18202 from owncloud/revert-route-breaking-changes
...
Revert route breaking changes
2015-08-11 15:28:06 +01:00
Robin Appelman
b7cbff23d9
handle single file dav endpoints
2015-08-11 14:46:46 +02:00
Robin Appelman
fd35365041
only add tags plugin when loggedin
2015-08-11 14:43:46 +02:00
Robin Appelman
b0c8654f9e
split out creating the sabre dav server to it's own factory
2015-08-11 14:43:46 +02:00
Robin Appelman
8c5302847b
add test framework for doing full request webdav tests
2015-08-11 14:43:46 +02:00
Robin McCorkell
cd0a2874de
Merge pull request #17852 from owncloud/register-alias-factory
...
Add test for factories
2015-08-11 13:30:56 +01:00
Joas Schilling
32ccd66214
Revert "make knowledge base url configurable"
...
This reverts commit 8fb89056bd
.
2015-08-11 14:20:25 +02:00
Joas Schilling
c16fd29f29
Revert "Only load app routes if the app has already been loaded"
...
This reverts commit 50ebea41f6
.
2015-08-11 14:19:59 +02:00
Thomas Müller
aed068b237
Merge pull request #17868 from owncloud/x-forwarded-for
...
Set default 'forwarded for' headers for reverse proxy
2015-08-11 14:02:46 +02:00
Thomas Müller
d5bba42030
Merge pull request #17932 from owncloud/fix_move_files
...
make sure that hooks are emitted properly on file move operation
2015-08-11 13:54:09 +02:00
Joas Schilling
669d705792
Merge pull request #17830 from owncloud/issue-17825-dont-silently-ignore-invalid-consumers-extensions
...
Throw a InvalidArgumentException when a consumer/extension is invalid
2015-08-11 10:16:20 +02:00
Robin McCorkell
8944af57cb
Set default `forwarded_for_headers` to 'HTTP_X_FORWARDED_FOR'
2015-08-10 23:04:52 +02:00
Thomas Müller
54aa57b47a
Merge pull request #18109 from owncloud/fix-router-app-loaded
...
Only load app routes if the app has already been loaded
2015-08-10 21:42:13 +02:00
Thomas Müller
bfb9a8e58e
Merge pull request #18175 from owncloud/automatic-db-prefix-query-builder
...
Automatic db prefix query builder
2015-08-10 21:41:32 +02:00
Roeland Douma
c2856c05aa
Merge pull request #15093 from rullzer/capabilities_manager
...
Capabilities manager
2015-08-10 20:33:50 +02:00
Joas Schilling
e6eb74958f
Remove unnecessary DB prefixes from existing query builder usages
2015-08-10 16:21:41 +02:00
Joas Schilling
5fea6f753e
Automatically prefix table names with *PREFIX* unless specified
2015-08-10 16:20:42 +02:00
Robin Appelman
d979e54030
log a warning while trying to acquire a db lock from within a transaction
2015-08-10 14:39:34 +02:00
Robin Appelman
58e96e53b0
add method to check if we're inside a transaction
2015-08-10 14:15:44 +02:00
Robin Appelman
06065189d7
cleanup empty locks
2015-08-10 14:15:29 +02:00
Roeland Jago Douma
f0b617b508
Use DI
...
* Register OCP\Capability\IManager at DIContainer
* Add register capabilities to appframework
* Register capabilities in DI way
* Make unit test pass again
* Remove CapabiltiesManager from OCP
2015-08-10 10:45:16 +02:00
Roeland Jago Douma
c80c9819dc
Move core capabilities to new class
2015-08-10 10:45:16 +02:00
Roeland Jago Douma
7e6a2b71fd
Added Capabilities Manager
...
* This should allow the capabilities to be intergrated into the
appframework
* Unit tests
* Throw exception if closure does not return ICapability instance
2015-08-10 10:45:08 +02:00
michag86
c7c021e1c9
Update installer.php
2015-08-10 10:34:44 +02:00
michag86
1a23690522
Check if archive contains a directory named like appid
2015-08-10 09:36:16 +02:00
Robin McCorkell
214729a552
Merge pull request #14779 from owncloud/use-iterator-directory
...
Use the new IteratorDirectory instead of the fakedir wrapper
2015-08-07 22:16:47 +01:00
Morris Jobke
ca8f7fd69c
Merge pull request #18124 from owncloud/share-permwrongvar
...
Fix removal of share permissions when share disabled for user
2015-08-07 18:42:35 +02:00
Lukas Reschke
77f71fbb08
Merge pull request #18120 from owncloud/appframework-isessio
...
Add \OCP\ISession to AppFramework
2015-08-07 18:03:51 +02:00
Vincent Petry
b3a1aef934
Merge pull request #13641 from owncloud/cache-storage-status
...
Store storage availability in database
2015-08-07 17:31:03 +02:00
Vincent Petry
143e4a81f0
Fix removal of share permissions when share disabled for user
2015-08-07 15:43:27 +02:00
Robin McCorkell
fcc03e588a
Add \OCP\ISession to AppFramework
2015-08-07 12:29:57 +01:00
Thomas Müller
0595c05200
Adding header support to class OC_OCS_Result
2015-08-07 13:12:43 +02:00
Robin McCorkell
50ebea41f6
Only load app routes if the app has already been loaded
2015-08-06 16:09:34 +01:00
Vincent Petry
6c139674a4
Merge pull request #18030 from owncloud/dav-upload-updater
...
go trough the updater when uploading over webdav
2015-08-06 15:28:10 +02:00
Thomas Müller
db1416346c
Following the spec:
...
"`statuscode`: The OCS status code of the response, everything except 100 MUST be handled as failure."
2015-08-05 17:49:44 +02:00
Bernhard Posselt
7cb0934fa2
Merge pull request #18035 from owncloud/ocs-2.0
...
Adding ocs/v2.php with status code mapper
2015-08-05 17:28:08 +02:00
Thomas Müller
a70f145d71
Merge pull request #17961 from owncloud/make_knowledgebase_configurable
...
make knowledge base url configurable
2015-08-05 11:54:58 +02:00
Thomas Müller
6c46430cdb
Return 200 not null - we should return consistent types
2015-08-05 11:23:29 +02:00
Lukas Reschke
90a11efecd
Remove "use" statement
...
Ref https://bugs.php.net/bug.php?id=66773
2015-08-05 09:31:21 +02:00
Lukas Reschke
4efa7c09b1
Use StringUtils::equals on CSRF token and add unit tests
2015-08-04 18:34:33 +02:00
Thomas Müller
728780aee8
Merge pull request #18024 from owncloud/phpseclib-2.0
...
Update phpseclib to 2.0 for increased PHP7 compatibility
2015-08-04 16:33:14 +02:00