]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Moved Diaspora specific metadata to own plugin
authorMikael Nordfeldth <mmn@hethane.se>
Sat, 6 Jun 2015 11:49:27 +0000 (13:49 +0200)
committerMikael Nordfeldth <mmn@hethane.se>
Sat, 6 Jun 2015 11:49:27 +0000 (13:49 +0200)
plugins/Diaspora/DiasporaPlugin.php [new file with mode: 0644]
plugins/OStatus/EVENTS.txt [new file with mode: 0644]
plugins/OStatus/OStatusPlugin.php
plugins/OStatus/classes/Magicsig.php

diff --git a/plugins/Diaspora/DiasporaPlugin.php b/plugins/Diaspora/DiasporaPlugin.php
new file mode 100644 (file)
index 0000000..1490fce
--- /dev/null
@@ -0,0 +1,57 @@
+<?php
+/*
+ * GNU Social - a federating social network
+ * Copyright (C) 2015, Free Software Foundation, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+if (!defined('GNUSOCIAL')) { exit(1); }
+
+/**
+ * Diaspora federation protocol plugin for GNU Social
+ *
+ * Depends on:
+ *  - OStatus plugin
+ *  - WebFinger plugin
+ *
+ * @package ProtocolDiasporaPlugin
+ * @maintainer Mikael Nordfeldth <mmn@hethane.se>
+ */
+
+class DiasporaPlugin extends Plugin
+{
+    const REL_SEED_LOCATION = 'http://joindiaspora.com/seed_location';
+    const REL_GUID          = 'http://joindiaspora.com/guid';
+    const REL_PUBLIC_KEY    = 'diaspora-public-key';
+
+    public function onEndAttachPubkeyToUserXRD(Magicsig $magicsig, XML_XRD $xrd, Profile $target)
+    {
+        $xrd->links[] = new XML_XRD_Element_Link(self::REL_PUBLIC_KEY,
+                                    base64_encode($magicsig->exportPublicKey()));
+    }
+
+    public function onPluginVersion(array &$versions)
+    {
+        $versions[] = array('name' => 'Diaspora',
+                            'version' => '0.1',
+                            'author' => 'Mikael Nordfeldth',
+                            'homepage' => 'https://gnu.io/social',
+                            // TRANS: Plugin description.
+                            'rawdescription' => _m('Follow people across social networks that implement '.
+                               'the <a href="https://diasporafoundation.org/">Diaspora</a> federation protocol.'));
+
+        return true;
+    }
+}
diff --git a/plugins/OStatus/EVENTS.txt b/plugins/OStatus/EVENTS.txt
new file mode 100644 (file)
index 0000000..766b751
--- /dev/null
@@ -0,0 +1,7 @@
+StartAttachPubkeyToUserXRD: Runs only for XRD generation where a Magicsig exists for a Profile which is a "person".
+@param  Magicsig    $magicsig   crypto stuff related to the profile we're representing
+@param  XRD         $xrd        the XRD object which holds all data for the profile we're representing
+
+EndAttachPubkeyToUserXRD: Runs only for XRD generation where a Magicsig exists for a Profile which is a "person". And only if StartAttachPubkeyToUserXRD didn't abort.
+@param  Magicsig    $magicsig   crypto stuff related to the profile we're representing
+@param  XRD         $xrd        the XRD object which holds all data for the profile we're representing
index 774a13be826dae24337829810748387d96d04c43..ba50cb653dafcb6205a653a19872c635bd5e0c65 100644 (file)
@@ -1315,11 +1315,14 @@ class OStatusPlugin extends Plugin
             $magicsig = Magicsig::generate($target->getUser());
         }
 
-        if ($magicsig instanceof Magicsig) {
+        if (!$magicsig instanceof Magicsig) {
+            return false;   // value doesn't mean anything, just figured I'd indicate this function didn't do anything
+        }
+        if (Event::handle('StartAttachPubkeyToUserXRD', array($magicsig, $xrd, $target))) {
             $xrd->links[] = new XML_XRD_Element_Link(Magicsig::PUBLICKEYREL,
                                 'data:application/magic-public-key,'. $magicsig->toString());
-            $xrd->links[] = new XML_XRD_Element_Link(Magicsig::DIASPORA_PUBLICKEYREL,
-                                base64_encode($magicsig->exportPublicKey()));
+            // The following event handles plugins like Diaspora which add their own version of the Magicsig pubkey
+            Event::handle('EndAttachPubkeyToUserXRD', array($magicsig, $xrd, $target));
         }
     }
 
index 8d2bb4eac97b8d3a0e6ba2d8a91417de30fb54ef..42a11533b71ddead62093bac8bd9912f355b45bf 100644 (file)
@@ -36,7 +36,6 @@ require_once 'Crypt/RSA.php';
 class Magicsig extends Managed_DataObject
 {
     const PUBLICKEYREL = 'magic-public-key';
-    const DIASPORA_PUBLICKEYREL = 'diaspora-public-key';
 
     const DEFAULT_KEYLEN = 1024;
     const DEFAULT_SIGALG = 'RSA-SHA256';