$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();
}
}
+ // 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,'@'))
$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();
}
}
+ // Workaround for misconfigured Friendica servers
+ if (($network == "") AND (strstr($url, "/profile/"))) {
+ $noscrape = str_replace("/profile/", "/noscrape/", $url);
+ $noscrapejson = fetch_url($noscrape);
+ if ($noscrapejson) {
+
+ $network = NETWORK_DFRN;
+
+ $poco = str_replace("/profile/", "/poco/", $url);
+
+ $noscrapedata = json_decode($noscrapejson, true);
+
+ if (isset($noscrapedata["addr"]))
+ $addr = $noscrapedata["addr"];
+
+ if (isset($noscrapedata["fn"]))
+ $vcard["fn"] = $noscrapedata["fn"];
+
+ if (isset($noscrapedata["key"]))
+ $pubkey = $noscrapedata["key"];
+
+ if (isset($noscrapedata["photo"]))
+ $vcard["photo"] = $noscrapedata["photo"];
+
+ if (isset($noscrapedata["dfrn-request"]))
+ $request = $noscrapedata["dfrn-request"];
+
+ if (isset($noscrapedata["dfrn-confirm"]))
+ $confirm = $noscrapedata["dfrn-confirm"];
+
+ if (isset($noscrapedata["dfrn-notify"]))
+ $notify = $noscrapedata["dfrn-notify"];
+
+ if (isset($noscrapedata["dfrn-poll"]))
+ $poll = $noscrapedata["dfrn-poll"];
+
+ }
+ }
+
if((! $vcard['photo']) && strlen($email))
$vcard['photo'] = avatar_img($email);
if($poll === $profile)
}
// Only store into the cache if the value seems to be valid
- if ($result['network'] != NETWORK_FEED)
+ if ($result['network'] != NETWORK_PHANTOM)
Cache::set("probe_url:".$mode.":".$url,serialize($result), CACHE_DAY);
return $result;