Some Webfinger clean up
This commit is contained in:
		
					parent
					
						
							
								992b721de6
							
						
					
				
			
			
				commit
				
					
						e2224a2ddc
					
				
			
		
					 4 changed files with 28 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -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),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										25
									
								
								mod/xrd.php
									
										
									
									
									
								
							
							
						
						
									
										25
									
								
								mod/xrd.php
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -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),
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue