mirror of
https://github.com/friendica/friendica
synced 2024-12-23 04:00:15 +00:00
Adding the VAPID keys
This commit is contained in:
parent
d5e9253adb
commit
69f11c4a84
3 changed files with 37 additions and 5 deletions
|
@ -36,6 +36,6 @@ class Subscription extends BaseFactory
|
|||
public function createForApplicationIdAndUserId(int $applicationid, int $uid): \Friendica\Object\Api\Mastodon\Subscription
|
||||
{
|
||||
$subscription = DBA::selectFirst('subscription', [], ['application-id' => $applicationid, 'uid' => $uid]);
|
||||
return new \Friendica\Object\Api\Mastodon\Subscription($subscription, ModelSubscription::getVapidKey());
|
||||
return new \Friendica\Object\Api\Mastodon\Subscription($subscription, ModelSubscription::getPublicVapidKey());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -100,20 +100,42 @@ class Subscription
|
|||
}
|
||||
|
||||
/**
|
||||
* Fetch a VAPID key
|
||||
* Fetch a VAPID keypair
|
||||
*
|
||||
* @return string
|
||||
* @return array
|
||||
*/
|
||||
public static function getVapidKey(): string
|
||||
private static function getKeyPair(): array
|
||||
{
|
||||
$keypair = DI::config()->get('system', 'ec_keypair');
|
||||
if (empty($keypair)) {
|
||||
$keypair = Crypto::newECKeypair();
|
||||
DI::config()->set('system', 'ec_keypair', $keypair);
|
||||
}
|
||||
return $keypair;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch the public VAPID key
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getPublicVapidKey(): string
|
||||
{
|
||||
$keypair = self::getKeyPair();
|
||||
return $keypair['vapid-public'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Fetch the public VAPID key
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getPrivateVapidKey(): string
|
||||
{
|
||||
$keypair = self::getKeyPair();
|
||||
return $keypair['vapid-private'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare push notification
|
||||
*
|
||||
|
|
|
@ -23,6 +23,8 @@ namespace Friendica\Worker;
|
|||
|
||||
use Friendica\Core\Logger;
|
||||
use Friendica\Database\DBA;
|
||||
use Friendica\DI;
|
||||
use Friendica\Model\Subscription as ModelSubscription;
|
||||
use Minishlink\WebPush\WebPush;
|
||||
use Minishlink\WebPush\Subscription;
|
||||
|
||||
|
@ -41,7 +43,15 @@ class PushSubscription
|
|||
'payload' => null,
|
||||
];
|
||||
|
||||
$webPush = new WebPush();
|
||||
$auth = [
|
||||
'VAPID' => [
|
||||
'subject' => DI::baseUrl()->getHostname(),
|
||||
'publicKey' => ModelSubscription::getPublicVapidKey(),
|
||||
'privateKey' => ModelSubscription::getPrivateVapidKey(),
|
||||
],
|
||||
];
|
||||
|
||||
$webPush = new WebPush($auth);
|
||||
|
||||
$report = $webPush->sendOneNotification(
|
||||
$notification['subscription'],
|
||||
|
|
Loading…
Reference in a new issue