Commit Graph

786 Commits

Author SHA1 Message Date
Joas Schilling 3930ab8e8a
Don't allow anchors and queries in remote urls
Signed-off-by: Joas Schilling <coding@schilljs.com>
2020-03-12 13:44:48 +01:00
Roeland Jago Douma 260892eb3b
Disable link shares of disabled users
Fixes #10869

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-02-07 07:47:38 +01:00
Roeland Jago Douma fc77f530d7
Don't show link shares hash in inherited share list
This adds no value at all. Just showing the text "(Shared link)" now.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-01-15 09:21:53 +01:00
Roeland Jago Douma 1672ff3bef
Do not use $_GET
The appframework is more than capable of handling this properly.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2020-01-05 20:13:11 +01:00
Christoph Wurst 5bf3d1bb38
Update license headers
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2019-12-05 15:38:45 +01:00
Maxence Lange f2c7ca4584
fixing tests + avoid duplicate in getFormattedShares()
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
2019-12-03 08:13:22 +01:00
John Molakvoæ (skjnldsv) 5cb11ca642
Fix tests
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
Signed-off-by: npmbuildbot[bot] <npmbuildbot[bot]@users.noreply.github.com>
2019-12-02 13:08:43 +01:00
Roeland Jago Douma 3a7cf40aaa
Mode to modern phpunit
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-11-27 15:27:18 +01:00
Roeland Jago Douma 8d4346d656
Fix more tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-11-27 13:34:42 +01:00
Roeland Jago Douma c007ca624f
Make phpunit8 compatible
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-11-27 13:34:41 +01:00
Roeland Jago Douma 77d136cbdf
Apply share permission mask to all files obtained via shareinfo
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-11-26 11:07:01 +01:00
Roeland Jago Douma 68748d4f85
Some php-cs fixes
* Order the imports
* No leading slash on imports
* Empty line before namespace
* One line per import
* Empty after imports
* Emmpty line at bottom of file

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-11-22 20:52:10 +01:00
Roeland Jago Douma e9c972f708
Fix share tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-11-20 08:08:02 +01:00
John Molakvoæ (skjnldsv) 5d2c89ca6c
Fix sharing breadcrumbs
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2019-11-06 00:53:59 +01:00
John Molakvoæ (skjnldsv) 2fd057513a Fix current user edit/delete permissions
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2019-10-29 13:20:08 +01:00
John Molakvoæ (skjnldsv) a48359ac02 Adjust unit tests to new OCA.Sidebar
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2019-10-29 13:20:08 +01:00
Roeland Jago Douma 7904ddd06a
Merge pull request #17693 from nextcloud/enh/unused-test-dependency
Remove unused import Punic\Data
2019-10-26 20:31:34 +02:00
Daniel Kesselberg a20546bb5c
Remove unused import Punic\Data
Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
2019-10-26 16:39:05 +02:00
Daniel Calviño Sánchez 8098abee60 Do not return shares with the current user
Getting the shares of a file no longer returns shares with the current
user for consistency with the results when getting the shares including
subfiles.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2019-10-25 21:40:50 +02:00
Daniel Calviño Sánchez 222e5a9a9f Add missing share types when getting shares of a file
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2019-10-25 21:39:49 +02:00
Daniel Calviño Sánchez 24febe1e41 Unify share type sorting when getting shares of a file or with subfiles
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2019-10-25 21:39:49 +02:00
Daniel Calviño Sánchez 0599536c82 Remove unneeded calls to "ShareManager::shareProviderExists()"
"ShareManager::getSharesBy()" already checks if the share provider
exists before returning the shares and, if the provider does not exist,
it returns an empty array. Therefore it is not needed to explicitly
check if the provider exists or not.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2019-10-25 21:39:49 +02:00
Daniel Calviño Sánchez 52870fd1d2 Add unit tests for getting shares of a file
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2019-10-25 21:39:45 +02:00
Daniel Calviño Sánchez 9039dd89ef Add unit tests for getting shares including subfiles
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2019-10-25 21:27:30 +02:00
Daniel Calviño Sánchez 5c7c308220 Include the share in the Files_Sharing::loadAdditionalScripts event
This provides a better context for apps using the event, for example to
load one script or another depending on whether the share is a file or a
folder.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2019-10-17 18:22:54 +02:00
Julius Härtl 5e4eda1ae0
Remove deprecated legacy file actions
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2019-10-14 19:19:16 +02:00
John Molakvoæ (skjnldsv) ff895abac0
Fix shares read permissions
A user with reshare permissions on a file is now able to get any share
of that file (just like the owner).

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2019-10-04 21:40:30 +02:00
John Molakvoæ (skjnldsv) b1069b29fa
Add checks for whether a user with access to a share can delete it
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2019-10-04 19:25:11 +02:00
Joas Schilling 858b18e34a
Bye Spreed namespace, hello Talk!
Signed-off-by: Joas Schilling <coding@schilljs.com>
2019-09-05 15:32:58 +02:00
Roeland Jago Douma 0487144b26
Remove deprecated searchByTag
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-07-26 12:29:19 +02:00
Joas Schilling 87836472d3
Remove duplicate tests
Signed-off-by: Joas Schilling <coding@schilljs.com>
2019-07-03 16:34:14 +02:00
Joas Schilling 85a80b05ac
Unify the permission checking in one place only
Signed-off-by: Joas Schilling <coding@schilljs.com>
2019-07-03 16:34:00 +02:00
Roeland Jago Douma f9f3e00d06
Fix sharing tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-06-27 15:27:31 +02:00
Christoph Wurst 249a5dbdba
Move oc_webroot, OC.webroot and OC.getRootPath() to the bundle
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2019-05-06 17:55:30 +02:00
Roeland Jago Douma 7c264cb7fa
Harden public preview tests
This way there are less timing issues.

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2019-04-16 16:50:44 +02:00
John Molakvoæ (skjnldsv) ff164db935
Add link icon for public link too
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2019-03-21 08:16:00 +01:00
Christoph Wurst e930a0ccbe
Search sharees on lookup server when explicitly requested by user
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2019-02-26 19:44:49 +01:00
Christoph Wurst f3023aaa85
Show sharing recommendations
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2019-02-25 07:25:21 +01:00
Julius Härtl e5445ccbba
Call proper function when fetching link shares in the breadcrumb view
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2019-01-22 15:56:42 +01:00
Julius Härtl 3828283c01
Add caching headers for public previews
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2019-01-02 22:27:46 +01:00
Joas Schilling ee545d6840
Fix typo in "incoming"
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-12-05 11:27:38 +01:00
John Molakvoæ (skjnldsv) 1deda8fd65
Rollback to default list view
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-11-15 20:29:10 +01:00
Morris Jobke 7940a79a41
Merge pull request #12324 from nextcloud/add-password-response-parameter-for-returning-the-password-of-link-shares
Add "password" parameter to the response data of link shares
2018-11-07 16:29:05 +01:00
Morris Jobke 463dfb50d9
Fix unit tests
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-11-07 10:25:36 +01:00
Michael Weimann c572c669e5
Adapts the code to the new master state
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-11-07 10:19:20 +01:00
Michael Weimann 16f379b974
Hides the header actions for file drops
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
2018-11-07 10:19:19 +01:00
Daniel Calviño Sánchez b2cc2d6023 Add "password" parameter to the response data of link shares
Due to legacy reasons the password of link shares was returned in the
"share_with" and "share_with_displayname" parameters of the response
data. Now a proper "password" parameter is returned too; the old
"share_with" and "share_with_displayname" parameters are kept, although
deprecated, and they will be removed in a future version of Nextcloud.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-11-06 23:48:28 +01:00
John Molakvoæ (skjnldsv) cac2f7f4d6
Fix tests
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-11-06 16:05:34 +01:00
Daniel Calviño Sánchez adf80aa8b3 Add sending the password by Talk for a link share to ShareAPIController
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-11-02 01:57:48 +01:00
Daniel Calviño Sánchez 52cada951b Check "note", "label" and "hide download" too in update share tests
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-11-02 01:56:07 +01:00
Bjoern Schiessle feb9f72e8b adjust unit tests
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2018-11-01 04:27:25 +01:00
Daniel Calviño Sánchez bfb2a914d2 Honour "hide download" in the public share page
When the "hide download" property of a share is set the public share
page will not show the download button nor the menu with the download,
direct link and "Add to your Nextcloud" actions; the "downloadURL"
hidden field will not be included either in the generated HTML.

Despite that, note that the "downloadURL" parameter is still set and
passed to the template, as this could be needed anyway to generate
previews (for example, of audio files).

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-10-30 15:18:55 +01:00
Roeland Jago Douma c237a3f003 Expose hide download to public page
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-10-30 15:18:55 +01:00
Roeland Jago Douma abbb946bbb Propegate hide download state in share provider
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-10-30 15:18:55 +01:00
Jan-Christoph Borchardt 39ff82f707
Use grid view in other file views too
Signed-off-by: Jan-Christoph Borchardt <hey@jancborchardt.net>
2018-10-18 13:44:05 +02:00
Christoph Wurst 9af69ca2a5
Fix usage of deprecated OC.webroot
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
2018-10-09 13:53:59 +02:00
Roeland Jago Douma a2725c31e4
Update test now that we check permissions properly
Now that we actually check thepermissions properly we have to update the
tests.

* We checked an invalid path
* We checked from wrong permissions (files never have CREATE permissions
for example)

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-09-06 17:10:21 +02:00
Roeland Jago Douma 79a88ed458
Fix tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-08-24 18:20:04 +02:00
Daniel Calviño Sánchez 523fdb612c Add room shares to DAV and recent files "share-types" property
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-08-08 14:25:43 +02:00
Daniel Calviño Sánchez 8084ba516f Add room shares to the MountProvider for shares
The MountProvider for shares creates mount points for the files shared
with the user, which makes possible to use the received shared files and
folders as regular files and folders.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-08-08 14:25:43 +02:00
Daniel Calviño Sánchez 4ed7131e26 Add support for room shares to ShareAPIController
In some cases, the ShareAPIController requires explicit handling of each
type of share (for example, to format a share for a DataResponse). Room
shares are implemented in an external app (Nextcloud Talk), so in order
to keep the controller as isolated as possible from room share specifics
all that explicit handling is done in a helper class provided by the
Talk app.

In other cases it is just enough to call the share manager specifying a
room share type; note that the share manager is guarded against share
types for which there is no provider, so it is not necessary to
explicitly check that before passing room shares to the share manager.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-08-08 14:25:43 +02:00
Daniel Calviño Sánchez 7849630cef Add support for sending the password by Talk to ShareAPIController
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-07-24 14:04:17 +02:00
Bjoern Schiessle e951ad5034
fix unit tests
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2018-07-21 15:02:20 +02:00
Bjoern Schiessle fa44300016
unit tests updated
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2018-07-21 15:02:20 +02:00
Bjoern Schiessle 660b5d1af6
fix unit tests
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2018-07-21 15:02:19 +02:00
Morris Jobke 6a06745e57
Disable failing test in legacy sharing tests
* seems to be a race condition

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-07-19 11:06:23 +02:00
Morris Jobke 82021b2b1b
Merge pull request #5280 from nextcloud/shared-with-display-name
sharedWithDisplayName & sharedWithAvatar
2018-07-13 17:29:57 +02:00
Daniel Calviño Sánchez 243df99fcf Fix formatting of email and circle shares
Due to a misplaced "||" instead of "===" the condition was always met,
so every share type in the conditional chain after the remote and remote
group shares was formatted as a remote/remote group share.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-07-12 21:24:55 +02:00
Bjoern Schiessle 412f6a6ecc
fix unit tests
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2018-07-11 10:21:00 +02:00
Bjoern Schiessle 3942d731d2
update unit tests
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2018-07-11 10:11:48 +02:00
Bjoern Schiessle 9365fd2534
fix external manager tests
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2018-07-02 11:29:30 +02:00
Morris Jobke a788f49114
Merge pull request #10046 from nextcloud/fix-getting-the-information-of-a-group-share-as-a-sharee
Fix getting the information of a group share as a sharee
2018-06-29 13:14:41 +02:00
Morris Jobke 326f07e756
Merge pull request #8854 from nextcloud/drop-old-sharing-code
Get rid of shareItem
2018-06-29 10:40:32 +02:00
Daniel Calviño Sánchez 6cb2cb33ac Fix getting the information of group share as a sharee
When the receiver of a group share modifies it (for example, by moving
it to a different folder) the original share is not modified, but a
"ghost" share that keeps track of the changes made by that specific user
is used instead.

By default, the method "getShareById" in the share provider returns the
share from the point of view of the sharer, but it can be used too to
get the share from the point of view of a sharee by providing the
"recipient" parameter (and if the sharee is not found then the share is
returned from the point of view of the sharer).

The "ShareAPIController" always formats the share from the point of view
of the current user, but when getting the information of a specific
share the "recipient" parameter was not given, so it was always returned
from the point of view of the sharer, even if the current user was a
sharee. Now the "recipient" parameter is set to the current user, and
thus the information of the share is returned from the point of view of
the current user, be it the sharer or a sharee.

Note that this special behaviour of "getShareById" happens only with
group shares; with other types of shares the share is the same for the
sharer and the sharee, and thus the parameter is ignored; it was added
for them too just for consistency.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2018-06-29 08:20:19 +02:00
Roeland Jago Douma 58376db92e
Update SharingCheckMiddlewareTest
* They are handled now by the overal sharing public page middleware

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-06-20 08:53:37 +02:00
Roeland Jago Douma 9f658febca
Fix ShareControllerTest
* Removed tests that are now handled by the middleware
* Updated tests

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-06-20 08:53:37 +02:00
Roeland Jago Douma ff3f63fd47
Fix PublicPreviewControllerTests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-06-20 08:53:37 +02:00
Roeland Jago Douma 9fed7aa2da
Backends are legacy code as well and need to go
so no need to fix the tests

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-05-23 19:51:37 +02:00
Morris Jobke bc34a7f4e9
Get rid of shareItem
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-05-23 19:51:37 +02:00
Roeland Jago Douma 33b639d23c
Fix ExpiresSharesJobTest
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-05-23 19:12:02 +02:00
Roeland Jago Douma c5042f1545
Use node api
* delete old test that can't happen anymore since we check for a valid
node

Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-05-23 19:10:11 +02:00
Maxence Lange 0009adae80 SharedWithDisplayName + SharedWithAvatar
Signed-off-by: Maxence Lange <maxence@nextcloud.com>
Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-05-21 01:24:45 +02:00
Roeland Jago Douma ea5393e9f8
Fix tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-05-01 15:20:20 +02:00
Roeland Jago Douma d379770cf2
Fix sharedfilelistSpec.js tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-04-26 16:34:24 +02:00
Roeland Jago Douma 4d5a2cce8d
Fix tests
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-04-24 08:07:25 +02:00
Julius Härtl 1624762d2f
Fix tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-04-05 15:40:58 +02:00
Roeland Jago Douma f4fd0224db
Do not use \OCP\DB anymore
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-26 14:40:23 +02:00
Roeland Jago Douma b93d26a209
Replace ContactsManager
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-03-13 22:18:38 +01:00
Tobia De Koninck 55b9a5d886
Remove OC_App::disable method
Signed-off-by: Tobia De Koninck <tobia@ledfan.be>
2018-03-06 10:45:20 +01:00
John Molakvoæ (skjnldsv) 3824e6f631
fixup! fixup! Sharing: redirect to download after authentification if requested
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-03-01 13:17:08 +01:00
John Molakvoæ (skjnldsv) 7bcc821642
fixup! Fixed tests
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-02-28 19:03:00 +01:00
John Molakvoæ (skjnldsv) 8c69d783e0
Fixed tests
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
2018-02-28 17:35:42 +01:00
Morris Jobke 7bc3c2e057
Merge pull request #7363 from nextcloud/default-share-perms
Let the admin configure the default share permissions
2018-02-27 13:44:34 +01:00
Bjoern Schiessle 3285becdc1
fix unit tests
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
2018-02-27 12:29:25 +01:00
Julius Härtl 4a1cbefc90
Fix files_sharing tests
Signed-off-by: Julius Härtl <jus@bitgrid.net>
2018-02-27 12:25:53 +01:00
Joas Schilling bf2be08c9f
Fix risky tests without assertions
Signed-off-by: Joas Schilling <coding@schilljs.com>
2018-01-25 11:33:25 +01:00
Roeland Jago Douma 1e7b20f615
Remove IAppConfig::setValue
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
2018-01-17 21:41:57 +01:00
Morris Jobke 55532f19d9
Cleanup OC_User and OCP\User
* mainly removes deprecated methods and old static code

Signed-off-by: Morris Jobke <hey@morrisjobke.de>
2018-01-16 18:39:11 +01:00
Daniel Calviño Sánchez b70b38ce31 Fix constructor spy in unit test with Sinon 4.1.3
When a constructor is spied using Sinon it is wrapped by a proxy
function, which calls the original constructor when invoked. When "new
Foo()" is executed a "Foo" object is created, "Foo" is invoked with the
object as "this", and the object is returned as the result of the whole
"new" expression.

Before Sinon 4.1.3 the proxy called the original constructor directly
using the "thisValue" of the spied call; "thisValue" was the object
created by the "new" operator that called the proxy. The proxy assigned
"thisValue" to "returnValue", so it was also the value returned by the
proxy and, in turn, the value returned by the whole "new" expression.

Since Sinon 4.1.3 (see pull request 1626) the proxy calls the original
constructor using "new" instead of directly. The "thisValue" created by
the outermost "new" (the one that called the proxy) is no longer used by
the original constructor; the internal "new" creates a new object, which
is the one passed to the original constructor and returned by the
internal "new" expression. This object is also the value returned by the
proxy ("returnValue") and, in turn, the value returned by the whole
outermost "new" expression.

Thus, now "returnValue" should be used instead of "thisValue" to get the
object created by the spied constructor.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2017-12-08 21:26:45 +01:00
Arthur Schiwon 077381c7b3
rip out obsolete recipientsDisplayName
also needs tests adjustements, and this also brings in natural sorting

Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
2017-11-23 13:32:14 +01:00