]> git.mxchange.org Git - friendica.git/commitdiff
Some Webfinger clean up
authorMichael <heluecht@pirati.ca>
Sat, 28 Oct 2017 11:48:29 +0000 (11:48 +0000)
committerMichael <heluecht@pirati.ca>
Sat, 28 Oct 2017 11:48:29 +0000 (11:48 +0000)
mod/noscrape.php
mod/xrd.php
src/Network/Probe.php
view/templates/xrd_person.tpl

index 4b2ce73a39e89849d562a8e6c89c143bd412a345..7a32e4d55fe90a35d69d05746cf4d676e82086ff 100644 (file)
@@ -36,6 +36,7 @@ function noscrape_init(App $a) {
                'fn'       => $a->profile['name'],
                'addr'     => $a->profile['addr'],
                'nick'     => $which,
+               'guid'     => $a->profile['guid'],
                'key'      => $a->profile['pubkey'],
                'homepage' => System::baseUrl()."/profile/{$which}",
                'comm'     => (x($a->profile,'page-flags')) && ($a->profile['page-flags'] == PAGE_COMMUNITY),
index ca6c02b6a2f01cfdd1d33d9871806f2b51250891..60f78ed27c7563b725f2934ea0e0ee7d521f3783 100644 (file)
@@ -22,16 +22,14 @@ function xrd_init(App $a) {
                }
        }
 
-       if(substr($uri,0,4) === 'http') {
-               $acct = false;
+       if (substr($uri, 0, 4) === 'http') {
                $name = ltrim(basename($uri), '~');
        } else {
-               $acct = true;
                $local = str_replace('acct:', '', $uri);
-               if(substr($local,0,2) == '//')
+               if (substr($local, 0, 2) == '//')
                        $local = substr($local, 2);
 
-               $name = substr($local, 0, strpos($local,'@'));
+               $name = substr($local, 0, strpos($local, '@'));
        }
 
        $r = dba::select('user', array(), array('nickname' => $name), array('limit' => 1));
@@ -41,20 +39,17 @@ function xrd_init(App $a) {
 
        $profile_url = System::baseUrl().'/profile/'.$r['nickname'];
 
-       if ($acct) {
-               $alias = $profile_url;
-       } else {
-               $alias = 'acct:'.$r['nickname'].'@'.$a->get_hostname();
+       $alias = str_replace('/profile/', '/~', $profile_url);
 
-               if ($a->get_path()) {
-                       $alias .= '/'.$a->get_path();
-               }
+       $addr = 'acct:'.$r['nickname'].'@'.$a->get_hostname();
+       if ($a->get_path()) {
+               $addr .= '/'.$a->get_path();
        }
 
        if ($mode == 'xml') {
-               xrd_xml($a, $uri, $alias, $profile_url, $r);
+               xrd_xml($a, $addr, $alias, $profile_url, $r);
        } else {
-               xrd_json($a, $uri, $alias, $profile_url, $r);
+               xrd_json($a, $addr, $alias, $profile_url, $r);
        }
 }
 
@@ -65,7 +60,7 @@ function xrd_json($a, $uri, $alias, $profile_url, $r) {
        header("Content-type: application/json; charset=utf-8");
 
        $json = array('subject' => $uri,
-                       'aliases' => array($alias),
+                       'aliases' => array($alias, $profile_url),
                        'links' => array(array('rel' => NAMESPACE_DFRN, 'href' => $profile_url),
                                        array('rel' => NAMESPACE_FEED, 'type' => 'application/atom+xml', 'href' => System::baseUrl().'/dfrn_poll/'.$r['nickname']),
                                        array('rel' => 'http://webfinger.net/rel/profile-page', 'type' => 'text/html', 'href' => $profile_url),
index 30b197f5b6fb2308f37b4d1a56ac47040aaa4269..8ea7d660aeb688dcfdc6b1268b10e8321e88126e 100644 (file)
@@ -778,6 +778,10 @@ class Probe {
                        $data["nick"] = $json["nick"];
                }
 
+               if (!empty($json["guid"])) {
+                       $data["guid"] = $json["guid"];
+               }
+
                if (!empty($json["comm"])) {
                        $data["community"] = $json["comm"];
                }
@@ -905,7 +909,6 @@ class Probe {
         * @return array DFRN data
         */
        private static function dfrn($webfinger) {
-
                $hcard_url = "";
                $data = array();
                foreach ($webfinger["links"] as $link) {
@@ -937,7 +940,9 @@ class Probe {
 
                if (is_array($webfinger["aliases"])) {
                        foreach ($webfinger["aliases"] as $alias) {
-                               if (substr($alias, 0, 5) == 'acct:') {
+                               if (normalise_link($alias) != normalise_link($data["url"]) && ! strstr($alias, "@")) {
+                                       $data["alias"] = $alias;
+                               } elseif (substr($alias, 0, 5) == 'acct:') {
                                        $data["addr"] = substr($alias, 5);
                                }
                        }
@@ -1134,6 +1139,10 @@ class Probe {
                        }
                }
 
+               if (!empty($webfinger["subject"]) && (substr($webfinger["subject"], 0, 5) == 'acct:')) {
+                       $data["addr"] = substr($webfinger["subject"], 5);
+               }
+
                // Fetch further information from the hcard
                $data = self::pollHcard($hcard_url, $data);
 
@@ -1172,17 +1181,20 @@ class Probe {
         */
        private static function ostatus($webfinger, $short = false) {
                $data = array();
+
                if (is_array($webfinger["aliases"])) {
                        foreach ($webfinger["aliases"] as $alias) {
-                               if (strstr($alias, "@")) {
+                               if (strstr($alias, "@") && !strstr(normalise_link($alias), "http://")) {
                                        $data["addr"] = str_replace('acct:', '', $alias);
                                }
                        }
                }
 
-               if (is_string($webfinger["subject"]) && strstr($webfinger["subject"], "@")) {
+               if (is_string($webfinger["subject"]) && strstr($webfinger["subject"], "@") &&
+                       !strstr(normalise_link($webfinger["subject"]), "http://")) {
                        $data["addr"] = str_replace('acct:', '', $webfinger["subject"]);
                }
+
                $pubkey = "";
                if (is_array($webfinger["links"])) {
                        foreach ($webfinger["links"] as $link) {
index 89cf6dba1e3b52675bae7f4112497d3e8ad338cd..360489b87da921c09e42767874a271836aefa796 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0"> 
        <Subject>{{$accturi}}</Subject>
-       <Alias>{{$profile_url}}</Alias>
+       <Alias>{{$profile_url}}</Alias>
        <Alias>{{$alias}}</Alias>
  
     <Link rel="http://purl.org/macgirvin/dfrn/1.0"