X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2FScrape.php;h=bc6aebbdcfdee7b388c57f6905e2f008dc258647;hb=f496af08bb71080d11f9d76377605bbd16cb9090;hp=b7df8e04feebdac46e9493eb5cfc1b5e0f3a78c4;hpb=f880bdd33b44667959a04dd9e44eacbf31d42f3a;p=friendica.git diff --git a/include/Scrape.php b/include/Scrape.php index b7df8e04fe..bc6aebbdcf 100644 --- a/include/Scrape.php +++ b/include/Scrape.php @@ -12,6 +12,18 @@ function scrape_dfrn($url, $dont_probe = false) { logger('scrape_dfrn: url=' . $url); + // Try to fetch the data from noscrape. This is faster than parsing the HTML + $noscrape = str_replace("/hcard/", "/noscrape/", $url); + $noscrapejson = fetch_url($noscrape); + $noscrapedata = array(); + if ($noscrapejson) { + $noscrapedata = json_decode($noscrapejson, true); + + if (is_array($noscrapedata)) + if ($noscrapedata["nick"] != "") + return($noscrapedata); + } + $s = fetch_url($url); if(! $s) @@ -91,8 +103,7 @@ function scrape_dfrn($url, $dont_probe = false) { } } } - - return $ret; + return array_merge($ret, $noscrapedata); }} @@ -235,7 +246,9 @@ function scrape_feed($url) { $a = get_app(); $ret = array(); - $s = fetch_url($url); + $cookiejar = tempnam(get_temppath(), 'cookiejar-scrape-feed-'); + $s = fetch_url($url, false, $redirects, 0, Null, $cookiejar); + unlink($cookiejar); $headers = $a->get_curl_headers(); $code = $a->get_curl_code(); @@ -547,9 +560,23 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) { } } + // Scrape the public key from the hcard. + // Diaspora will remove it from the webfinger somewhere in the future. + if (($hcard != "") AND ($pubkey == "")) { + $ret = scrape_dfrn(($hcard) ? $hcard : $dfrn, true); + if (isset($ret["key"])) { + $hcard_key = $ret["key"]; + if(strstr($hcard_key,'RSA ')) + $pubkey = rsatopem($hcard_key); + else + $pubkey = $hcard_key; + } + } if($diaspora && $diaspora_base && $diaspora_guid) { - if($mode == PROBE_DIASPORA || ! $notify) { - $notify = $diaspora_base . 'receive/users/' . $diaspora_guid; + $diaspora_notify = $diaspora_base.'receive/users/'.$diaspora_guid; + + if($mode == PROBE_DIASPORA || ! $notify || ($notify == $diaspora_notify)) { + $notify = $diaspora_notify; $batch = $diaspora_base . 'receive/public' ; } if(strpos($url,'@')) @@ -632,7 +659,9 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) { if ($connectornetworks) $check_feed = false; + if($check_feed) { + $feedret = scrape_feed(($poll) ? $poll : $url); logger('probe_url: scrape_feed ' . (($poll)? $poll : $url) . ' returns: ' . print_r($feedret,true), LOGGER_DATA); @@ -646,7 +675,9 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) { $vcard['photo'] = $feedret['photo']; require_once('library/simplepie/simplepie.inc'); $feed = new SimplePie(); - $xml = fetch_url($poll); + $cookiejar = tempnam(get_temppath(), 'cookiejar-scrape-feed-'); + $xml = fetch_url($poll, false, $redirects, 0, Null, $cookiejar); + unlink($cookiejar); logger('probe_url: fetch feed: ' . $poll . ' returns: ' . $xml, LOGGER_DATA); $a = get_app(); @@ -760,7 +791,6 @@ function probe_url($url, $mode = PROBE_NORMAL, $level = 1) { if (isset($noscrapedata["dfrn-poll"])) $poll = $noscrapedata["dfrn-poll"]; -// print_r($noscrapedata); } }