Store the hub that was used for Websub subscription
authorChristian Weiske <cweiske@cweiske.de>
Fri, 6 Mar 2020 17:33:42 +0000 (18:33 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Fri, 6 Mar 2020 17:33:42 +0000 (18:33 +0100)
bin/subscribe.php
data/schema.sql
src/phinde/Subscriptions.php
www/push-subscription.php

index 7d05f79..9df5b08 100755 (executable)
@@ -45,7 +45,7 @@ if ($topic != $url) {
 
 $sub = $subDb->get($topic);
 if ($sub === false) {
-    $subDb->create($topic);
+    $subDb->create($topic, $hub);
 } else {
     Log::info(
         'Topic exists already in subscription table with status '
@@ -53,6 +53,7 @@ if ($sub === false) {
     );
     Log::info('Renewing subscription...');
     $subDb->renew($sub->sub_id);
+    $hub = $sub->sub_hub;
 }
 $sub = $subDb->get($topic);
 
index 7f9312a..fe7850e 100644 (file)
@@ -6,6 +6,7 @@ CREATE TABLE `subscriptions` (
   `sub_expires` datetime NOT NULL,
   `sub_secret` varchar(256) NOT NULL,
   `sub_capkey` varchar(128) NOT NULL,
+  `sub_hub` varchar(4096) NOT NULL,
   `sub_created` datetime NOT NULL,
   `sub_updated` datetime NOT NULL,
   `sub_pings` int NOT NULL,
index e49e817..454d191 100644 (file)
@@ -110,19 +110,20 @@ class Subscriptions
      * - send subscription requests to the hub
      *
      * @param string $topic URL to subscribe to
+     * @param string $hub   URL of the hub subscribing to
      *
      * @return void
      */
-    public function create($topic)
+    public function create($topic, $hub)
     {
         $stmt = $this->db->prepare(
             'INSERT INTO subscriptions'
             . ' (sub_topic, sub_status, sub_lease_seconds, sub_expires'
-            . ', sub_secret, sub_capkey, sub_created, sub_updated'
+            . ', sub_secret, sub_capkey, sub_hub, sub_created, sub_updated'
             . ', sub_pings, sub_lastping, sub_statusmessage)'
             . ' VALUES '
             . ' (:topic, "subscribing", :lease_seconds, "0000-00-00 00:00:00"'
-            . ', :secret, :capkey, NOW(), NOW()'
+            . ', :secret, :capkey, :hub, NOW(), NOW()'
             . ', 0, "0000-00-00 00:00:00", "")'
         );
         $stmt->execute(
@@ -131,6 +132,7 @@ class Subscriptions
                 ':lease_seconds' => 86400 * 30,
                 ':secret'        => bin2hex(openssl_random_pseudo_bytes(16)),
                 ':capkey'        => bin2hex(openssl_random_pseudo_bytes(16)),
+                ':hub'           => $hub,
             ]
         );
     }
index 6fc20f6..5216e6a 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 namespace phinde;
 /**
- * Handles PuSH subscription responses
+ * Handles WebSub subscription responses
  */
 header('HTTP/1.0 500 Internal Server Error');
 require_once 'www-header.php';
@@ -122,4 +122,4 @@ function err($msg, $statusline)
     echo $msg . "\n";
     exit(1);
 }
-?>
\ No newline at end of file
+?>