Skip to content

Commit 34bbc6e

Browse files
committed
Allow to report the remoteAddress
Signed-off-by: szaimen <szaimen@e.mail.de>
1 parent 9a9df23 commit 34bbc6e

8 files changed

Lines changed: 59 additions & 14 deletions

File tree

apps/files_sharing/lib/Activity/Providers/Base.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
namespace OCA\Files_Sharing\Activity\Providers;
2525

2626
use OCP\Activity\IEvent;
27+
use OCP\Activity\IEventMerger;
2728
use OCP\Activity\IManager;
2829
use OCP\Activity\IProvider;
2930
use OCP\Contacts\IManager as IContactsManager;
@@ -51,6 +52,9 @@ abstract class Base implements IProvider {
5152
/** @var IUserManager */
5253
protected $userManager;
5354

55+
/** @var IEventMerger */
56+
protected $eventMerger;
57+
5458
/** @var IContactsManager */
5559
protected $contactsManager;
5660

@@ -65,13 +69,15 @@ public function __construct(IFactory $languageFactory,
6569
IManager $activityManager,
6670
IUserManager $userManager,
6771
ICloudIdManager $cloudIdManager,
68-
IContactsManager $contactsManager) {
72+
IContactsManager $contactsManager,
73+
IEventMerger $eventMerger) {
6974
$this->languageFactory = $languageFactory;
7075
$this->url = $url;
7176
$this->activityManager = $activityManager;
7277
$this->userManager = $userManager;
7378
$this->cloudIdManager = $cloudIdManager;
7479
$this->contactsManager = $contactsManager;
80+
$this->eventMerger = $eventMerger;
7581
}
7682

7783
/**
@@ -97,7 +103,7 @@ public function parse($language, IEvent $event, IEvent $previousEvent = null) {
97103
}
98104
}
99105

100-
return $this->parseLongVersion($event);
106+
return $this->parseLongVersion($event, $previousEvent);
101107
}
102108

103109
/**
@@ -110,11 +116,12 @@ abstract protected function parseShortVersion(IEvent $event);
110116

111117
/**
112118
* @param IEvent $event
119+
* @param IEvent|null $previousEvent
113120
* @return IEvent
114121
* @throws \InvalidArgumentException
115122
* @since 11.0.0
116123
*/
117-
abstract protected function parseLongVersion(IEvent $event);
124+
abstract protected function parseLongVersion(IEvent $event, IEvent $previousEvent = null);
118125

119126
/**
120127
* @param IEvent $event

apps/files_sharing/lib/Activity/Providers/Downloads.php

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,19 +63,24 @@ public function parseShortVersion(IEvent $event) {
6363

6464
/**
6565
* @param IEvent $event
66+
* @param IEvent|null $previousEvent
6667
* @return IEvent
6768
* @throws \InvalidArgumentException
6869
* @since 11.0.0
6970
*/
70-
public function parseLongVersion(IEvent $event) {
71+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
7172
$parsedParameters = $this->getParsedParameters($event);
7273

7374
if ($event->getSubject() === self::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED ||
7475
$event->getSubject() === self::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED) {
75-
$subject = $this->l->t('{file} downloaded via public link');
76+
$subject = $this->l->t('{file} downloaded via public link from {remote-address}');
77+
$this->setSubjects($event, $subject, $parsedParameters);
78+
$event = $this->eventMerger->mergeEvents('file', $event, $previousEvent);
7679
} elseif ($event->getSubject() === self::SUBJECT_SHARED_FILE_BY_EMAIL_DOWNLOADED ||
7780
$event->getSubject() === self::SUBJECT_SHARED_FOLDER_BY_EMAIL_DOWNLOADED) {
7881
$subject = $this->l->t('{email} downloaded {file}');
82+
$this->setSubjects($event, $subject, $parsedParameters);
83+
$event = $this->eventMerger->mergeEvents('email', $event, $previousEvent);
7984
} else {
8085
throw new \InvalidArgumentException();
8186
}
@@ -85,7 +90,6 @@ public function parseLongVersion(IEvent $event) {
8590
} else {
8691
$event->setIcon($this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/download.svg')));
8792
}
88-
$this->setSubjects($event, $subject, $parsedParameters);
8993

9094
return $event;
9195
}
@@ -104,6 +108,11 @@ protected function getParsedParameters(IEvent $event) {
104108
case self::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED:
105109
return [
106110
'file' => $this->getFile($parameters[0], $event),
111+
'remote-address' => [
112+
'type' => 'remote-address',
113+
'id' => $parameters[1],
114+
'name' => $parameters[1],
115+
],
107116
];
108117
case self::SUBJECT_SHARED_FILE_BY_EMAIL_DOWNLOADED:
109118
case self::SUBJECT_SHARED_FOLDER_BY_EMAIL_DOWNLOADED:

apps/files_sharing/lib/Activity/Providers/Groups.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
namespace OCA\Files_Sharing\Activity\Providers;
2626

2727
use OCP\Activity\IEvent;
28+
use OCP\Activity\IEventMerger;
2829
use OCP\Activity\IManager;
2930
use OCP\Contacts\IManager as IContactsManager;
3031
use OCP\Federation\ICloudIdManager;
@@ -55,8 +56,9 @@ public function __construct(IFactory $languageFactory,
5556
IUserManager $userManager,
5657
ICloudIdManager $cloudIdManager,
5758
IContactsManager $contactsManager,
59+
IEventMerger $eventMerger,
5860
IGroupManager $groupManager) {
59-
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager);
61+
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager, $eventMerger);
6062
$this->groupManager = $groupManager;
6163
}
6264

@@ -95,11 +97,12 @@ public function parseShortVersion(IEvent $event) {
9597

9698
/**
9799
* @param IEvent $event
100+
* @param IEvent|null $previousEvent
98101
* @return IEvent
99102
* @throws \InvalidArgumentException
100103
* @since 11.0.0
101104
*/
102-
public function parseLongVersion(IEvent $event) {
105+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
103106
$parsedParameters = $this->getParsedParameters($event);
104107

105108
if ($event->getSubject() === self::SUBJECT_SHARED_GROUP_SELF) {

apps/files_sharing/lib/Activity/Providers/PublicLinks.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,12 @@ public function parseShortVersion(IEvent $event) {
7070

7171
/**
7272
* @param IEvent $event
73+
* @param IEvent|null $previousEvent
7374
* @return IEvent
7475
* @throws \InvalidArgumentException
7576
* @since 11.0.0
7677
*/
77-
public function parseLongVersion(IEvent $event) {
78+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
7879
$parsedParameters = $this->getParsedParameters($event);
7980

8081
if ($event->getSubject() === self::SUBJECT_SHARED_LINK_SELF) {

apps/files_sharing/lib/Activity/Providers/RemoteShares.php

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
namespace OCA\Files_Sharing\Activity\Providers;
2626

2727
use OCP\Activity\IEvent;
28+
use OCP\Activity\IEventMerger;
2829
use OCP\Activity\IManager;
2930
use OCP\Contacts\IManager as IContactsManager;
3031
use OCP\Federation\ICloudIdManager;
@@ -42,10 +43,10 @@ public function __construct(IFactory $languageFactory,
4243
IURLGenerator $url,
4344
IManager $activityManager,
4445
IUserManager $userManager,
46+
ICloudIdManager $cloudIdManager,
4547
IContactsManager $contactsManager,
46-
ICloudIdManager $cloudIdManager
47-
) {
48-
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager);
48+
IEventMerger $eventMerger) {
49+
parent::__construct($languageFactory, $url, $activityManager, $userManager, $cloudIdManager, $contactsManager, $eventMerger);
4950
}
5051

5152
/**
@@ -77,11 +78,12 @@ public function parseShortVersion(IEvent $event) {
7778

7879
/**
7980
* @param IEvent $event
81+
* @param IEvent|null $previousEvent
8082
* @return IEvent
8183
* @throws \InvalidArgumentException
8284
* @since 11.0.0
8385
*/
84-
public function parseLongVersion(IEvent $event) {
86+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
8587
$parsedParameters = $this->getParsedParameters($event);
8688

8789
if ($event->getSubject() === self::SUBJECT_REMOTE_SHARE_RECEIVED) {

apps/files_sharing/lib/Activity/Providers/Users.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,11 +86,12 @@ public function parseShortVersion(IEvent $event) {
8686

8787
/**
8888
* @param IEvent $event
89+
* @param IEvent|null $previousEvent
8990
* @return IEvent
9091
* @throws \InvalidArgumentException
9192
* @since 11.0.0
9293
*/
93-
public function parseLongVersion(IEvent $event) {
94+
public function parseLongVersion(IEvent $event, IEvent $previousEvent = null) {
9495
$parsedParameters = $this->getParsedParameters($event);
9596

9697
if ($event->getSubject() === self::SUBJECT_SHARED_USER_SELF) {

apps/files_sharing/lib/Controller/ShareController.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,7 @@ protected function singleFileDownloaded(Share\IShare $share, \OCP\Files\Node $no
699699
$ownerFolder = $this->rootFolder->getUserFolder($share->getShareOwner());
700700
$userPath = $userFolder->getRelativePath($userNode->getPath());
701701
$ownerPath = $ownerFolder->getRelativePath($node->getPath());
702+
$remoteAddress = $this->request->getRemoteAddress();
702703

703704
$parameters = [$userPath];
704705

@@ -712,8 +713,10 @@ protected function singleFileDownloaded(Share\IShare $share, \OCP\Files\Node $no
712713
} else {
713714
if ($node instanceof \OCP\Files\File) {
714715
$subject = Downloads::SUBJECT_PUBLIC_SHARED_FILE_DOWNLOADED;
716+
$parameters[] = $remoteAddress;
715717
} else {
716718
$subject = Downloads::SUBJECT_PUBLIC_SHARED_FOLDER_DOWNLOADED;
719+
$parameters[] = $remoteAddress;
717720
}
718721
}
719722

lib/public/RichObjectStrings/Definitions.php

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,25 @@ class Definitions {
511511
],
512512
],
513513
],
514+
'remote-address' => [
515+
'author' => 'Nextcloud',
516+
'app' => 'files_sharing',
517+
'since' => '23.0.0',
518+
'parameters' => [
519+
'id' => [
520+
'since' => '23.0.0',
521+
'required' => true,
522+
'description' => 'The IP-address that is used to access Nextcloud.',
523+
'example' => '192.168.178.10',
524+
],
525+
'name' => [
526+
'since' => '23.0.0',
527+
'required' => true,
528+
'description' => 'The IP-address that is used to access Nextcloud.',
529+
'example' => '192.168.178.10',
530+
],
531+
],
532+
],
514533
'systemtag' => [
515534
'author' => 'Nextcloud',
516535
'app' => 'core',

0 commit comments

Comments
 (0)