convert all the _well_known service controllers which are a bit touchy when it comes to the router
This commit is contained in:
		
							
								
								
									
										24
									
								
								Zotlabs/Module/Hostxrd.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								Zotlabs/Module/Hostxrd.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | |||||||
|  | <?php | ||||||
|  | namespace Zotlabs\Module; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Hostxrd extends \Zotlabs\Web\Controller { | ||||||
|  |  | ||||||
|  | 	function init() { | ||||||
|  | 		header('Access-Control-Allow-Origin: *'); | ||||||
|  | 		header("Content-type: application/xrd+xml"); | ||||||
|  | 		logger('hostxrd',LOGGER_DEBUG); | ||||||
|  | 	 | ||||||
|  | 		$tpl = get_markup_template('xrd_host.tpl'); | ||||||
|  | 		$x = replace_macros(get_markup_template('xrd_host.tpl'), array( | ||||||
|  | 			'$zhost' => \App::get_hostname(), | ||||||
|  | 			'$zroot' => z_root() | ||||||
|  | 		)); | ||||||
|  | 		$arr = array('xrd' => $x); | ||||||
|  | 		call_hooks('hostxrd',$arr); | ||||||
|  | 	 | ||||||
|  | 		echo $arr['xrd']; | ||||||
|  | 		killme(); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | } | ||||||
							
								
								
									
										69
									
								
								Zotlabs/Module/Well_known.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								Zotlabs/Module/Well_known.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,69 @@ | |||||||
|  | <?php | ||||||
|  | namespace Zotlabs\Module; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Well_known extends \Zotlabs\Web\Controller { | ||||||
|  |  | ||||||
|  | 	function init(){ | ||||||
|  | 	 | ||||||
|  | 		if(argc() > 1) { | ||||||
|  | 	 | ||||||
|  | 			$arr = array('server' => $_SERVER, 'request' => $_REQUEST); | ||||||
|  | 			call_hooks('well_known', $arr); | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 			if(! check_siteallowed($_SERVER['REMOTE_ADDR'])) { | ||||||
|  | 				logger('well_known: site not allowed. ' . $_SERVER['REMOTE_ADDR']); | ||||||
|  | 				killme(); | ||||||
|  | 			} | ||||||
|  | 	 | ||||||
|  | 			// from php.net re: REMOTE_HOST: | ||||||
|  | 			//     Note: Your web server must be configured to create this variable. For example in Apache  | ||||||
|  | 			// you'll need HostnameLookups On inside httpd.conf for it to exist. See also gethostbyaddr().  | ||||||
|  | 	 | ||||||
|  | 			if(get_config('system','siteallowed_remote_host') && (! check_siteallowed($_SERVER['REMOTE_HOST']))) { | ||||||
|  | 				logger('well_known: site not allowed. ' . $_SERVER['REMOTE_HOST']); | ||||||
|  | 				killme(); | ||||||
|  | 			} | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 			switch(argv(1)) { | ||||||
|  | 				case 'zot-info': | ||||||
|  | 					\App::$argc -= 1; | ||||||
|  | 					array_shift(\App::$argv); | ||||||
|  | 					\App::$argv[0] = 'zfinger'; | ||||||
|  | 					$module = new \Zotlabs\Module\Zfinger(); | ||||||
|  | 					$module->init(); | ||||||
|  | 					break; | ||||||
|  | 	 | ||||||
|  | 				case 'webfinger': | ||||||
|  | 					\App::$argc -= 1; | ||||||
|  | 					array_shift(\App::$argv); | ||||||
|  | 					\App::$argv[0] = 'wfinger'; | ||||||
|  | 					$module = new \Zotlabs\Module\Wfinger(); | ||||||
|  | 					$module->init(); | ||||||
|  | 					break; | ||||||
|  | 	 | ||||||
|  | 				case 'host-meta': | ||||||
|  | 					\App::$argc -= 1; | ||||||
|  | 					array_shift(\App::$argv); | ||||||
|  | 					\App::$argv[0] = 'hostxrd'; | ||||||
|  | 					$module = new \Zotlabs\Module\Hostxrd(); | ||||||
|  | 					$module->init(); | ||||||
|  | 					break; | ||||||
|  | 	 | ||||||
|  | 				default: | ||||||
|  | 					if(file_exists(\App::$cmd)) { | ||||||
|  | 						echo file_get_contents(\App::$cmd);  | ||||||
|  | 						killme(); | ||||||
|  | 					} | ||||||
|  | 					elseif(file_exists(\App::$cmd . '.php')) | ||||||
|  | 						require_once(\App::$cmd . '.php'); | ||||||
|  | 					break; | ||||||
|  | 	 | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	 | ||||||
|  | 		http_status_exit(404); | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										140
									
								
								Zotlabs/Module/Wfinger.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								Zotlabs/Module/Wfinger.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,140 @@ | |||||||
|  | <?php | ||||||
|  | namespace Zotlabs\Module; | ||||||
|  |  | ||||||
|  | require_once('include/zot.php'); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Wfinger extends \Zotlabs\Web\Controller { | ||||||
|  |  | ||||||
|  | 	function init() { | ||||||
|  | 	 | ||||||
|  | 		$result = array(); | ||||||
|  | 	 | ||||||
|  | 		$scheme = ''; | ||||||
|  | 	 | ||||||
|  | 		if(x($_SERVER,'HTTPS') && $_SERVER['HTTPS']) | ||||||
|  | 			$scheme = 'https'; | ||||||
|  | 		elseif(x($_SERVER,'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443)) | ||||||
|  | 			$scheme = 'https'; | ||||||
|  | 	 | ||||||
|  | 		$zot = intval($_REQUEST['zot']); | ||||||
|  | 	 | ||||||
|  | 		if(($scheme !== 'https') && (! $zot)) { | ||||||
|  | 			header($_SERVER["SERVER_PROTOCOL"] . ' ' . 500 . ' ' . 'Webfinger requires HTTPS'); | ||||||
|  | 			killme(); | ||||||
|  | 		} | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 		$resource = $_REQUEST['resource']; | ||||||
|  | 		logger('webfinger: ' . $resource,LOGGER_DEBUG); | ||||||
|  | 	 | ||||||
|  | 		$r = null; | ||||||
|  | 	 | ||||||
|  | 		if($resource) { | ||||||
|  | 	 | ||||||
|  | 			if(strpos($resource,'acct:') === 0) { | ||||||
|  | 				$channel = str_replace('acct:','',$resource); | ||||||
|  | 				if(strpos($channel,'@') !== false) { | ||||||
|  | 					$host = substr($channel,strpos($channel,'@')+1); | ||||||
|  | 					if(strcasecmp($host,\App::get_hostname())) { | ||||||
|  | 						goaway('https://' . $host . '/.well-known/webfinger?f=&resource=' . $resource . (($zot) ? '&zot=' . $zot : '')); | ||||||
|  | 					} | ||||||
|  | 					$channel = substr($channel,0,strpos($channel,'@')); | ||||||
|  | 				}		 | ||||||
|  | 			} | ||||||
|  | 			if(strpos($resource,'http') === 0) { | ||||||
|  | 				$channel = str_replace('~','',basename($resource)); | ||||||
|  | 			} | ||||||
|  | 	 | ||||||
|  | 			$r = q("select * from channel left join xchan on channel_hash = xchan_hash  | ||||||
|  | 				where channel_address = '%s' limit 1", | ||||||
|  | 				dbesc($channel) | ||||||
|  | 			); | ||||||
|  | 	 | ||||||
|  | 		} | ||||||
|  | 	 | ||||||
|  | 		header('Access-Control-Allow-Origin: *'); | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 		if($resource && $r) { | ||||||
|  | 	 | ||||||
|  | 			$h = q("select hubloc_addr from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0", | ||||||
|  | 				dbesc($r[0]['channel_hash']) | ||||||
|  | 			); | ||||||
|  | 	 | ||||||
|  | 			$result['subject'] = $resource; | ||||||
|  | 	 | ||||||
|  | 			$aliases = array( | ||||||
|  | 				z_root() . '/channel/' . $r[0]['channel_address'], | ||||||
|  | 				z_root() . '/~' . $r[0]['channel_address'] | ||||||
|  | 			); | ||||||
|  | 	 | ||||||
|  | 			if($h) { | ||||||
|  | 				foreach($h as $hh) { | ||||||
|  | 					$aliases[] = 'acct:' . $hh['hubloc_addr']; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 	 | ||||||
|  | 			$result['aliases'] = array(); | ||||||
|  | 	 | ||||||
|  | 			$result['properties'] = array( | ||||||
|  | 					'http://webfinger.net/ns/name' => $r[0]['channel_name'], | ||||||
|  | 					'http://xmlns.com/foaf/0.1/name' => $r[0]['channel_name'] | ||||||
|  | 			); | ||||||
|  | 	 | ||||||
|  | 			foreach($aliases as $alias)  | ||||||
|  | 				if($alias != $resource) | ||||||
|  | 					$result['aliases'][] = $alias; | ||||||
|  | 	 | ||||||
|  | 			$result['links'] = array( | ||||||
|  | 	 | ||||||
|  | 				array( | ||||||
|  | 					'rel' => 'http://webfinger.net/rel/avatar', | ||||||
|  | 					'type' => $r[0]['xchan_photo_mimetype'], | ||||||
|  | 					'href' => $r[0]['xchan_photo_l']	 | ||||||
|  | 				), | ||||||
|  | 	 | ||||||
|  | 				array( | ||||||
|  | 					'rel' => 'http://webfinger.net/rel/profile-page', | ||||||
|  | 					'href' => z_root() . '/profile/' . $r[0]['channel_address'], | ||||||
|  | 				), | ||||||
|  | 	 | ||||||
|  | 				array( | ||||||
|  | 					'rel' => 'http://webfinger.net/rel/blog', | ||||||
|  | 					'href' => z_root() . '/channel/' . $r[0]['channel_address'], | ||||||
|  | 				), | ||||||
|  | 	 | ||||||
|  | 				array( | ||||||
|  | 					'rel' => 'http://ostatus.org/schema/1.0/subscribe', | ||||||
|  | 					'template' => z_root() . '/follow/url={uri}', | ||||||
|  | 				), | ||||||
|  | 	 | ||||||
|  | 				array( | ||||||
|  | 					'rel' => 'http://purl.org/zot/protocol', | ||||||
|  | 					'href' => z_root() . '/.well-known/zot-info' . '?address=' . $r[0]['xchan_addr'], | ||||||
|  | 				), | ||||||
|  | 	 | ||||||
|  | 				array( | ||||||
|  | 					'rel' => 'magic-public-key', | ||||||
|  | 					'href' => 'data:application/magic-public-key,' . salmon_key($r[0]['channel_pubkey']), | ||||||
|  | 				) | ||||||
|  | 			); | ||||||
|  | 	 | ||||||
|  | 			if($zot) { | ||||||
|  | 				// get a zotinfo packet and return it with webfinger | ||||||
|  | 				$result['zot'] = zotinfo(array('address' => $r[0]['xchan_addr'])); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		else { | ||||||
|  | 			header($_SERVER["SERVER_PROTOCOL"] . ' ' . 400 . ' ' . 'Bad Request'); | ||||||
|  | 			killme(); | ||||||
|  | 		} | ||||||
|  | 	 | ||||||
|  | 		$arr = array('channel' => $r[0], 'request' => $_REQUEST, 'result' => $result); | ||||||
|  | 		call_hooks('webfinger',$arr); | ||||||
|  | 	 | ||||||
|  | 		json_return_and_die($arr['result'],'application/jrd+json'); | ||||||
|  | 	 | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								Zotlabs/Module/Zfinger.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Zotlabs/Module/Zfinger.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | <?php | ||||||
|  | namespace Zotlabs\Module; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | class Zfinger extends \Zotlabs\Web\Controller { | ||||||
|  |  | ||||||
|  | 	function init() { | ||||||
|  | 	 | ||||||
|  | 		require_once('include/zot.php'); | ||||||
|  | 		require_once('include/crypto.php'); | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 		$x = zotinfo($_REQUEST); | ||||||
|  | 		json_return_and_die($x); | ||||||
|  | 	 | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | } | ||||||
							
								
								
									
										2
									
								
								boot.php
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								boot.php
									
									
									
									
									
								
							| @@ -860,6 +860,8 @@ class App { | |||||||
| 		if ((array_key_exists('0', self::$argv)) && strlen(self::$argv[0])) { | 		if ((array_key_exists('0', self::$argv)) && strlen(self::$argv[0])) { | ||||||
| 			self::$module = str_replace(".", "_", self::$argv[0]); | 			self::$module = str_replace(".", "_", self::$argv[0]); | ||||||
| 			self::$module = str_replace("-", "_", self::$module); | 			self::$module = str_replace("-", "_", self::$module); | ||||||
|  | 			if(strpos(self::$module,'_') === 0) | ||||||
|  | 				self::$module = substr(self::$module,1); | ||||||
| 		} else { | 		} else { | ||||||
| 			self::$argc = 1; | 			self::$argc = 1; | ||||||
| 			self::$argv = array('home'); | 			self::$argv = array('home'); | ||||||
|   | |||||||
| @@ -1,64 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| function _well_known_init(&$a){ |  | ||||||
|  |  | ||||||
| 	if(argc() > 1) { |  | ||||||
|  |  | ||||||
| 		$arr = array('server' => $_SERVER, 'request' => $_REQUEST); |  | ||||||
| 		call_hooks('well_known', $arr); |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 		if(! check_siteallowed($_SERVER['REMOTE_ADDR'])) { |  | ||||||
| 			logger('well_known: site not allowed. ' . $_SERVER['REMOTE_ADDR']); |  | ||||||
| 			killme(); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		// from php.net re: REMOTE_HOST: |  | ||||||
| 		//     Note: Your web server must be configured to create this variable. For example in Apache  |  | ||||||
| 		// you'll need HostnameLookups On inside httpd.conf for it to exist. See also gethostbyaddr().  |  | ||||||
|  |  | ||||||
| 		if(get_config('system','siteallowed_remote_host') && (! check_siteallowed($_SERVER['REMOTE_HOST']))) { |  | ||||||
| 			logger('well_known: site not allowed. ' . $_SERVER['REMOTE_HOST']); |  | ||||||
| 			killme(); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 		switch(argv(1)) { |  | ||||||
| 			case 'zot-info': |  | ||||||
| 				App::$argc -= 1; |  | ||||||
| 				array_shift(App::$argv); |  | ||||||
| 				App::$argv[0] = 'zfinger'; |  | ||||||
| 				require_once('mod/zfinger.php'); |  | ||||||
| 				zfinger_init($a); |  | ||||||
| 				break; |  | ||||||
|  |  | ||||||
| 			case 'webfinger': |  | ||||||
| 				App::$argc -= 1; |  | ||||||
| 				array_shift(App::$argv); |  | ||||||
| 				App::$argv[0] = 'wfinger'; |  | ||||||
| 				require_once('mod/wfinger.php'); |  | ||||||
| 				wfinger_init($a); |  | ||||||
| 				break; |  | ||||||
|  |  | ||||||
| 			case 'host-meta': |  | ||||||
| 				App::$argc -= 1; |  | ||||||
| 				array_shift(App::$argv); |  | ||||||
| 				App::$argv[0] = 'hostxrd'; |  | ||||||
| 				require_once('mod/hostxrd.php'); |  | ||||||
| 				hostxrd_init($a); |  | ||||||
| 				break; |  | ||||||
|  |  | ||||||
| 			default: |  | ||||||
| 				if(file_exists(App::$cmd)) { |  | ||||||
| 					echo file_get_contents(App::$cmd);  |  | ||||||
| 					killme(); |  | ||||||
| 				} |  | ||||||
| 				elseif(file_exists(App::$cmd . '.php')) |  | ||||||
| 					require_once(App::$cmd . '.php'); |  | ||||||
| 				break; |  | ||||||
|  |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	http_status_exit(404); |  | ||||||
| } |  | ||||||
| @@ -1,18 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| function hostxrd_init(&$a) { |  | ||||||
| 	header('Access-Control-Allow-Origin: *'); |  | ||||||
| 	header("Content-type: application/xrd+xml"); |  | ||||||
| 	logger('hostxrd',LOGGER_DEBUG); |  | ||||||
|  |  | ||||||
| 	$tpl = get_markup_template('xrd_host.tpl'); |  | ||||||
| 	$x = replace_macros(get_markup_template('xrd_host.tpl'), array( |  | ||||||
| 		'$zhost' => App::get_hostname(), |  | ||||||
| 		'$zroot' => z_root() |  | ||||||
| 	)); |  | ||||||
| 	$arr = array('xrd' => $x); |  | ||||||
| 	call_hooks('hostxrd',$arr); |  | ||||||
|  |  | ||||||
| 	echo $arr['xrd']; |  | ||||||
| 	killme(); |  | ||||||
| } |  | ||||||
							
								
								
									
										134
									
								
								mod/wfinger.php
									
									
									
									
									
								
							
							
						
						
									
										134
									
								
								mod/wfinger.php
									
									
									
									
									
								
							| @@ -1,134 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| require_once('include/zot.php'); |  | ||||||
|  |  | ||||||
| function wfinger_init(&$a) { |  | ||||||
|  |  | ||||||
| 	$result = array(); |  | ||||||
|  |  | ||||||
| 	$scheme = ''; |  | ||||||
|  |  | ||||||
| 	if(x($_SERVER,'HTTPS') && $_SERVER['HTTPS']) |  | ||||||
| 		$scheme = 'https'; |  | ||||||
| 	elseif(x($_SERVER,'SERVER_PORT') && (intval($_SERVER['SERVER_PORT']) == 443)) |  | ||||||
| 		$scheme = 'https'; |  | ||||||
|  |  | ||||||
| 	$zot = intval($_REQUEST['zot']); |  | ||||||
|  |  | ||||||
| 	if(($scheme !== 'https') && (! $zot)) { |  | ||||||
| 		header($_SERVER["SERVER_PROTOCOL"] . ' ' . 500 . ' ' . 'Webfinger requires HTTPS'); |  | ||||||
| 		killme(); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	$resource = $_REQUEST['resource']; |  | ||||||
| 	logger('webfinger: ' . $resource,LOGGER_DEBUG); |  | ||||||
|  |  | ||||||
| 	$r = null; |  | ||||||
|  |  | ||||||
| 	if($resource) { |  | ||||||
|  |  | ||||||
| 		if(strpos($resource,'acct:') === 0) { |  | ||||||
| 			$channel = str_replace('acct:','',$resource); |  | ||||||
| 			if(strpos($channel,'@') !== false) { |  | ||||||
| 				$host = substr($channel,strpos($channel,'@')+1); |  | ||||||
| 				if(strcasecmp($host,App::get_hostname())) { |  | ||||||
| 					goaway('https://' . $host . '/.well-known/webfinger?f=&resource=' . $resource . (($zot) ? '&zot=' . $zot : '')); |  | ||||||
| 				} |  | ||||||
| 				$channel = substr($channel,0,strpos($channel,'@')); |  | ||||||
| 			}		 |  | ||||||
| 		} |  | ||||||
| 		if(strpos($resource,'http') === 0) { |  | ||||||
| 			$channel = str_replace('~','',basename($resource)); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		$r = q("select * from channel left join xchan on channel_hash = xchan_hash  |  | ||||||
| 			where channel_address = '%s' limit 1", |  | ||||||
| 			dbesc($channel) |  | ||||||
| 		); |  | ||||||
|  |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	header('Access-Control-Allow-Origin: *'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	if($resource && $r) { |  | ||||||
|  |  | ||||||
| 		$h = q("select hubloc_addr from hubloc where hubloc_hash = '%s' and hubloc_deleted = 0", |  | ||||||
| 			dbesc($r[0]['channel_hash']) |  | ||||||
| 		); |  | ||||||
|  |  | ||||||
| 		$result['subject'] = $resource; |  | ||||||
|  |  | ||||||
| 		$aliases = array( |  | ||||||
| 			z_root() . '/channel/' . $r[0]['channel_address'], |  | ||||||
| 			z_root() . '/~' . $r[0]['channel_address'] |  | ||||||
| 		); |  | ||||||
|  |  | ||||||
| 		if($h) { |  | ||||||
| 			foreach($h as $hh) { |  | ||||||
| 				$aliases[] = 'acct:' . $hh['hubloc_addr']; |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		$result['aliases'] = array(); |  | ||||||
|  |  | ||||||
| 		$result['properties'] = array( |  | ||||||
| 				'http://webfinger.net/ns/name' => $r[0]['channel_name'], |  | ||||||
| 				'http://xmlns.com/foaf/0.1/name' => $r[0]['channel_name'] |  | ||||||
| 		); |  | ||||||
|  |  | ||||||
| 		foreach($aliases as $alias)  |  | ||||||
| 			if($alias != $resource) |  | ||||||
| 				$result['aliases'][] = $alias; |  | ||||||
|  |  | ||||||
| 		$result['links'] = array( |  | ||||||
|  |  | ||||||
| 			array( |  | ||||||
| 				'rel' => 'http://webfinger.net/rel/avatar', |  | ||||||
| 				'type' => $r[0]['xchan_photo_mimetype'], |  | ||||||
| 				'href' => $r[0]['xchan_photo_l']	 |  | ||||||
| 			), |  | ||||||
|  |  | ||||||
| 			array( |  | ||||||
| 				'rel' => 'http://webfinger.net/rel/profile-page', |  | ||||||
| 				'href' => z_root() . '/profile/' . $r[0]['channel_address'], |  | ||||||
| 			), |  | ||||||
|  |  | ||||||
| 			array( |  | ||||||
| 				'rel' => 'http://webfinger.net/rel/blog', |  | ||||||
| 				'href' => z_root() . '/channel/' . $r[0]['channel_address'], |  | ||||||
| 			), |  | ||||||
|  |  | ||||||
| 			array( |  | ||||||
| 				'rel' => 'http://ostatus.org/schema/1.0/subscribe', |  | ||||||
| 				'template' => z_root() . '/follow/url={uri}', |  | ||||||
| 			), |  | ||||||
|  |  | ||||||
| 			array( |  | ||||||
| 				'rel' => 'http://purl.org/zot/protocol', |  | ||||||
| 				'href' => z_root() . '/.well-known/zot-info' . '?address=' . $r[0]['xchan_addr'], |  | ||||||
| 			), |  | ||||||
|  |  | ||||||
| 			array( |  | ||||||
| 				'rel' => 'magic-public-key', |  | ||||||
| 				'href' => 'data:application/magic-public-key,' . salmon_key($r[0]['channel_pubkey']), |  | ||||||
| 			) |  | ||||||
| 		); |  | ||||||
|  |  | ||||||
| 		if($zot) { |  | ||||||
| 			// get a zotinfo packet and return it with webfinger |  | ||||||
| 			$result['zot'] = zotinfo(array('address' => $r[0]['xchan_addr'])); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	else { |  | ||||||
| 		header($_SERVER["SERVER_PROTOCOL"] . ' ' . 400 . ' ' . 'Bad Request'); |  | ||||||
| 		killme(); |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	$arr = array('channel' => $r[0], 'request' => $_REQUEST, 'result' => $result); |  | ||||||
| 	call_hooks('webfinger',$arr); |  | ||||||
|  |  | ||||||
| 	json_return_and_die($arr['result'],'application/jrd+json'); |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -1,12 +0,0 @@ | |||||||
| <?php |  | ||||||
|  |  | ||||||
| function zfinger_init(&$a) { |  | ||||||
|  |  | ||||||
| 	require_once('include/zot.php'); |  | ||||||
| 	require_once('include/crypto.php'); |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	$x = zotinfo($_REQUEST); |  | ||||||
| 	json_return_and_die($x); |  | ||||||
|  |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user