]> git.mxchange.org Git - friendica.git/blobdiff - include/salmon.php
Move HTML to Markdown library to Composer
[friendica.git] / include / salmon.php
index ed4ed7ad6280f789588fea63a6ba5b53c65cdf47..2b583347042e24cc8d26dca3868eb8f7ac2054f5 100644 (file)
@@ -1,15 +1,14 @@
 <?php
 
 require_once('include/crypto.php');
-
-
+require_once('include/Probe.php');
 
 function get_salmon_key($uri,$keyhash) {
        $ret = array();
 
-       logger('Fetching salmon key');
+       logger('Fetching salmon key for '.$uri);
 
-       $arr = lrdd($uri);
+       $arr = Probe::lrdd($uri);
 
        if(is_array($arr)) {
                foreach($arr as $a) {
@@ -25,37 +24,39 @@ function get_salmon_key($uri,$keyhash) {
        // We have found at least one key URL
        // If it's inline, parse it - otherwise get the key
 
-       if(count($ret)) {
-               for($x = 0; $x < count($ret); $x ++) {
-                       if(substr($ret[$x],0,5) === 'data:') {
-                               if(strstr($ret[$x],','))
+       if (count($ret) > 0) {
+               for ($x = 0; $x < count($ret); $x ++) {
+                       if (substr($ret[$x],0,5) === 'data:') {
+                               if (strstr($ret[$x],',')) {
                                        $ret[$x] = substr($ret[$x],strpos($ret[$x],',')+1);
-                               else
+                               } else {
                                        $ret[$x] = substr($ret[$x],5);
-                       }
-                       else
+                               }
+                       } elseif (normalise_link($ret[$x]) == 'http://') {
                                $ret[$x] = fetch_url($ret[$x]);
+                       }
                }
        }
 
 
        logger('Key located: ' . print_r($ret,true));
 
-       if(count($ret) == 1) {
+       if (count($ret) == 1) {
 
                // We only found one one key so we don't care if the hash matches.
-               // If it's the wrong key we'll find out soon enough because 
-               // message verification will fail. This also covers some older 
+               // If it's the wrong key we'll find out soon enough because
+               // message verification will fail. This also covers some older
                // software which don't supply a keyhash. As long as they only
-               // have one key we'll be right. 
+               // have one key we'll be right.
 
                return $ret[0];
        }
        else {
-               foreach($ret as $a) {
+               foreach ($ret as $a) {
                        $hash = base64url_encode(hash('sha256',$a));
-                       if($hash == $keyhash)
+                       if ($hash == $keyhash) {
                                return $a;
+                       }
                }
        }
 
@@ -66,8 +67,6 @@ function get_salmon_key($uri,$keyhash) {
 
 function slapper($owner,$url,$slap) {
 
-       logger('slapper called for '.$owner['url'].' to '.$url.' . Data: ' . $slap);
-
        // does contact have a salmon endpoint?
 
        if(! strlen($url))
@@ -75,27 +74,12 @@ function slapper($owner,$url,$slap) {
 
 
        if(! $owner['sprvkey']) {
-               logger(sprintf("slapper: user '%s' (%d) does not have a salmon private key. Send failed.",
+               logger(sprintf("user '%s' (%d) does not have a salmon private key. Send failed.",
                $owner['username'],$owner['uid']));
                return;
        }
 
-       // add all namespaces to item
-
-$namespaces = <<< EOT
-<entry xmlns="http://www.w3.org/2005/Atom"
-      xmlns:thr="http://purl.org/syndication/thread/1.0"
-      xmlns:at="http://purl.org/atompub/tombstones/1.0"
-      xmlns:media="http://purl.org/syndication/atommedia"
-      xmlns:dfrn="http://purl.org/macgirvin/dfrn/1.0"
-      xmlns:as="http://activitystrea.ms/spec/1.0/"
-      xmlns:georss="http://www.georss.org/georss"
-      xmlns:poco="http://portablecontacts.net/spec/1.0"
-      xmlns:ostatus="http://ostatus.org/schema/1.0"
-         xmlns:statusnet="http://status.net/schema/api/1/" >                                                                                                   >
-EOT;
-
-       $slap = str_replace('<entry>',$namespaces,$slap);
+       logger('slapper called for '.$url.'. Data: ' . $slap);
 
        // create a magic envelope
 
@@ -138,7 +122,7 @@ EOT;
 
        if($return_code > 299) {
 
-               logger('slapper: compliant salmon failed. Falling back to status.net hack2');
+               logger('compliant salmon failed. Falling back to status.net hack2');
 
                // Entirely likely that their salmon implementation is
                // non-compliant. Let's try once more, this time only signing
@@ -162,7 +146,7 @@ EOT;
 
                if($return_code > 299) {
 
-                       logger('slapper: compliant salmon failed. Falling back to status.net hack3');
+                       logger('compliant salmon failed. Falling back to status.net hack3');
 
                        // Entirely likely that their salmon implementation is
                        // non-compliant. Let's try once more, this time only signing
@@ -184,7 +168,7 @@ EOT;
                        $return_code = $a->get_curl_code();
                }
        }
-       logger('slapper returned ' . $return_code);
+       logger('slapper for '.$url.' returned ' . $return_code);
        if(! $return_code)
                return(-1);
        if(($return_code == 503) && (stristr($a->get_curl_headers(),'retry-after')))