some re-working of webfinger and hcard parsing which will be necessary going forward.
This commit is contained in:
parent
2f5862713e
commit
ef7494359f
@ -1288,12 +1288,22 @@ LSIeXnd14lQYK/uxW/8cTFjcmddsKxeXysoQxbSa9VdDK+KkpZdgYXYrTTofXs6v+
|
|||||||
function webfinger_rfc7033($webbie,$zot = false) {
|
function webfinger_rfc7033($webbie,$zot = false) {
|
||||||
|
|
||||||
|
|
||||||
if(! strpos($webbie,'@'))
|
if(strpos($webbie,'@')) {
|
||||||
return false;
|
$lhs = substr($webbie,0,strpos($webbie,'@'));
|
||||||
$lhs = substr($webbie,0,strpos($webbie,'@'));
|
$rhs = substr($webbie,strpos($webbie,'@')+1);
|
||||||
$rhs = substr($webbie,strpos($webbie,'@')+1);
|
$resource = 'acct:' . $webbie;
|
||||||
|
}
|
||||||
$resource = 'acct:' . $webbie;
|
else {
|
||||||
|
$m = parse_url($webbie);
|
||||||
|
if($m) {
|
||||||
|
if($m['scheme'] !== 'https')
|
||||||
|
return false;
|
||||||
|
$rhs = $m['host'] . (($m['port']) ? ':' . $m['port'] : '');
|
||||||
|
$resource = urlencode($webbie);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
$s = z_fetch_url('https://' . $rhs . '/.well-known/webfinger?f=&resource=' . $resource . (($zot) ? '&zot=1' : ''));
|
$s = z_fetch_url('https://' . $rhs . '/.well-known/webfinger?f=&resource=' . $resource . (($zot) ? '&zot=1' : ''));
|
||||||
|
|
||||||
@ -1455,8 +1465,25 @@ function scrape_vcard($url) {
|
|||||||
if(attribute_contains($item->getAttribute('class'), 'vcard')) {
|
if(attribute_contains($item->getAttribute('class'), 'vcard')) {
|
||||||
$level2 = $item->getElementsByTagName('*');
|
$level2 = $item->getElementsByTagName('*');
|
||||||
foreach($level2 as $x) {
|
foreach($level2 as $x) {
|
||||||
|
if(attribute_contains($x->getAttribute('id'),'pod_location'))
|
||||||
|
$ret['pod_location'] = $x->textContent;
|
||||||
if(attribute_contains($x->getAttribute('class'),'fn'))
|
if(attribute_contains($x->getAttribute('class'),'fn'))
|
||||||
$ret['fn'] = $x->textContent;
|
$ret['fn'] = $x->textContent;
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'uid'))
|
||||||
|
$ret['uid'] = $x->textContent;
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'nickname'))
|
||||||
|
$ret['nick'] = $x->textContent;
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'searchable'))
|
||||||
|
$ret['searchable'] = $x->textContent;
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'key'))
|
||||||
|
$ret['public_key'] = $x->textContent;
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'given_name'))
|
||||||
|
$ret['given_name'] = $x->textContent;
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'family_name'))
|
||||||
|
$ret['family_name'] = $x->textContent;
|
||||||
|
if(attribute_contains($x->getAttribute('class'),'url'))
|
||||||
|
$ret['url'] = $x->textContent;
|
||||||
|
|
||||||
if((attribute_contains($x->getAttribute('class'),'photo'))
|
if((attribute_contains($x->getAttribute('class'),'photo'))
|
||||||
|| (attribute_contains($x->getAttribute('class'),'avatar'))) {
|
|| (attribute_contains($x->getAttribute('class'),'avatar'))) {
|
||||||
$size = intval($x->getAttribute('width'));
|
$size = intval($x->getAttribute('width'));
|
||||||
@ -1465,10 +1492,6 @@ function scrape_vcard($url) {
|
|||||||
$largest_photo = $size;
|
$largest_photo = $size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if((attribute_contains($x->getAttribute('class'),'nickname'))
|
|
||||||
|| (attribute_contains($x->getAttribute('class'),'uid'))) {
|
|
||||||
$ret['nick'] = $x->textContent;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
|
|
||||||
function webfinger_content(&$a) {
|
function webfinger_content(&$a) {
|
||||||
|
|
||||||
|
|
||||||
$o .= '<h3>Webfinger Diagnostic</h3>';
|
$o .= '<h3>Webfinger Diagnostic</h3>';
|
||||||
|
|
||||||
$o .= '<form action="webfinger" method="get">';
|
$o .= '<form action="webfinger" method="get">';
|
||||||
@ -11,18 +12,34 @@ function webfinger_content(&$a) {
|
|||||||
$o .= '<input type="submit" name="submit" value="Submit" /></form>';
|
$o .= '<input type="submit" name="submit" value="Submit" /></form>';
|
||||||
|
|
||||||
$o .= '<br /><br />';
|
$o .= '<br /><br />';
|
||||||
|
|
||||||
|
$old = false;
|
||||||
if(x($_GET,'addr')) {
|
if(x($_GET,'addr')) {
|
||||||
$addr = trim($_GET['addr']);
|
$addr = trim($_GET['addr']);
|
||||||
if(strpos($addr,'@') !== false) {
|
// if(strpos($addr,'@') !== false) {
|
||||||
$res = webfinger_rfc7033($addr,true);
|
$res = webfinger_rfc7033($addr,true);
|
||||||
if(! $res)
|
if(! $res) {
|
||||||
$res = old_webfinger($addr);
|
$res = old_webfinger($addr);
|
||||||
|
$old = true;
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
// else {
|
||||||
|
// if(function_exists('lrdd'))
|
||||||
|
// $res = lrdd($addr);
|
||||||
|
// }
|
||||||
|
|
||||||
|
if($res && $old) {
|
||||||
|
foreach($res as $r) {
|
||||||
|
if($r['@attributes']['rel'] === 'http://microformats.org/profile/hcard') {
|
||||||
|
$hcard = unamp($r['@attributes']['href']);
|
||||||
|
require_once('library/HTML5/Parser.php');
|
||||||
|
$res['vcard'] = scrape_vcard($hcard);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
if(function_exists('lrdd'))
|
|
||||||
$res = lrdd($addr);
|
|
||||||
}
|
|
||||||
$o .= '<pre>';
|
$o .= '<pre>';
|
||||||
$o .= str_replace("\n",'<br />',print_r($res,true));
|
$o .= str_replace("\n",'<br />',print_r($res,true));
|
||||||
$o .= '</pre>';
|
$o .= '</pre>';
|
||||||
|
@ -1 +1 @@
|
|||||||
2016-03-13.1334H
|
2016-03-14.1335H
|
||||||
|
Reference in New Issue
Block a user