Skip to content

Commit

Permalink
fix(push): Use fallback keys that look like a real one
Browse files Browse the repository at this point in the history
Signed-off-by: Joas Schilling <[email protected]>
  • Loading branch information
nickvergessen authored and backportbot[bot] committed Oct 22, 2024
1 parent 4c672db commit 0a35ef2
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 2 deletions.
13 changes: 12 additions & 1 deletion lib/Push.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
use OCP\L10N\IFactory;
use OCP\Notification\IManager as INotificationManager;
use OCP\Notification\INotification;
use OCP\Security\ISecureRandom;
use OCP\UserStatus\IManager as IUserStatusManager;
use OCP\UserStatus\IUserStatus;
use OCP\Util;
Expand Down Expand Up @@ -131,6 +132,7 @@ public function __construct(
IUserStatusManager $userStatusManager,
IFactory $l10nFactory,
protected ITimeFactory $timeFactory,
protected ISecureRandom $random,
LoggerInterface $log,
) {
$this->db = $connection;
Expand Down Expand Up @@ -486,7 +488,11 @@ protected function sendNotificationsToProxies(): void {
if ($subscriptionAwareServer === 'https://push-notifications.nextcloud.com') {
$subscriptionKey = $this->config->getAppValue('support', 'subscription_key');
} else {
$subscriptionKey = $this->config->getSystemValueString('instanceid');
$subscriptionKey = $this->config->getAppValue(Application::APP_ID, 'push_subscription_key');
if ($subscriptionKey === '') {
$subscriptionKey = $this->createPushSubscriptionKey();
$this->config->setAppValue(Application::APP_ID, 'push_subscription_key', $subscriptionKey);
}
}

$client = $this->clientService->newClient();
Expand Down Expand Up @@ -785,4 +791,9 @@ protected function deletePushTokenByDeviceIdentifier(string $deviceIdentifier):
protected function createFakeUserObject(string $userId): IUser {
return new FakeUser($userId);
}

protected function createPushSubscriptionKey(): string {
$key = $this->random->generate(25, ISecureRandom::CHAR_ALPHANUMERIC);
return implode('-', str_split($key, 5));
}
}
9 changes: 8 additions & 1 deletion tests/Unit/PushTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
use OCP\L10N\IFactory;
use OCP\Notification\IManager as INotificationManager;
use OCP\Notification\INotification;
use OCP\Security\ISecureRandom;
use OCP\UserStatus\IManager as IUserStatusManager;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Http\Message\ResponseInterface;
Expand Down Expand Up @@ -77,6 +78,8 @@ class PushTest extends TestCase {
protected $l10nFactory;
/** @var ITimeFactory|MockObject */
protected $timeFactory;
/** @var ISecureRandom|MockObject */
protected $random;
/** @var LoggerInterface|MockObject */
protected $logger;

Expand All @@ -94,6 +97,7 @@ protected function setUp(): void {
$this->userStatusManager = $this->createMock(IUserStatusManager::class);
$this->l10nFactory = $this->createMock(IFactory::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->random = $this->createMock(ISecureRandom::class);
$this->logger = $this->createMock(LoggerInterface::class);

$this->cacheFactory->method('createDistributed')
Expand All @@ -119,6 +123,7 @@ protected function getPush(array $methods = []) {
$this->userStatusManager,
$this->l10nFactory,
$this->timeFactory,
$this->random,
$this->logger,
])
->setMethods($methods)
Expand All @@ -135,7 +140,9 @@ protected function getPush(array $methods = []) {
$this->cacheFactory,
$this->userStatusManager,
$this->l10nFactory,
$this->logger
$this->timeFactory,
$this->random,
$this->logger,
);
}

Expand Down

0 comments on commit 0a35ef2

Please sign in to comment.