]> git.mxchange.org Git - friendica.git/commitdiff
Adding the VAPID keys
authorMichael <heluecht@pirati.ca>
Sun, 15 Aug 2021 21:24:23 +0000 (21:24 +0000)
committerMichael <heluecht@pirati.ca>
Sun, 15 Aug 2021 21:24:23 +0000 (21:24 +0000)
src/Factory/Api/Mastodon/Subscription.php
src/Model/Subscription.php
src/Worker/PushSubscription.php

index 08dbcf0d17ad70cdc68827b4a8905b13177f0aa4..76034708a925caf37fbd352cc9e5695ec290f6fb 100644 (file)
@@ -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());
        }
 }
index dd81ee2d636fe03dbf77ff60dacaf338bfe20cee..43bf2ae551822b26330df17a8dc36f94df80520f 100644 (file)
@@ -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
         *
index 3f209af2cdb603f3ebf35bbc871ffb105b419b34..aef82103be6886765f58a076f7cc3a7ca5e7d9ec 100644 (file)
@@ -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'],