66 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| require_once("mod/hostxrd.php");
 | |
| require_once("mod/nodeinfo.php");
 | |
| 
 | |
| function _well_known_init(&$a){
 | |
| 	if ($a->argc > 1) {
 | |
| 		switch($a->argv[1]) {
 | |
| 			case "host-meta":
 | |
| 				hostxrd_init($a);
 | |
| 				break;
 | |
| 			case "x-social-relay":
 | |
| 				wk_social_relay($a);
 | |
| 				break;
 | |
| 			case "nodeinfo":
 | |
| 				nodeinfo_wellknown($a);
 | |
| 				break;
 | |
| 		}
 | |
| 	}
 | |
| 	http_status_exit(404);
 | |
| 	killme();
 | |
| }
 | |
| 
 | |
| function wk_social_relay(&$a) {
 | |
| 
 | |
| 	define('SR_SCOPE_ALL', 'all');
 | |
| 	define('SR_SCOPE_TAGS', 'tags');
 | |
| 
 | |
| 	$subscribe = (bool)get_config('system', 'relay_subscribe');
 | |
| 
 | |
| 	if ($subscribe)
 | |
| 		$scope = get_config('system', 'relay_scope');
 | |
| 	else
 | |
| 		$scope = "";
 | |
| 
 | |
| 	$tags = array();
 | |
| 
 | |
| 	if ($scope == SR_SCOPE_TAGS) {
 | |
| 
 | |
| 		$server_tags = get_config('system', 'relay_server_tags');
 | |
| 		$tagitems = explode(",", $server_tags);
 | |
| 
 | |
| 		foreach($tagitems AS $tag)
 | |
| 			$tags[trim($tag, "# ")] = trim($tag, "# ");
 | |
| 
 | |
| 		if (get_config('system', 'relay_user_tags')) {
 | |
| 			$terms = q("SELECT DISTINCT(`term`) FROM `search`");
 | |
| 
 | |
| 			foreach($terms AS $term) {
 | |
| 				$tag = trim($term["term"], "#");
 | |
| 				$tags[$tag] = $tag;
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	$taglist = array();
 | |
| 	foreach($tags AS $tag)
 | |
| 		$taglist[] = $tag;
 | |
| 
 | |
| 	$relay = array("subscribe" => $subscribe,
 | |
| 			"scope" => $scope,
 | |
| 			"tags" => $taglist);
 | |
| 
 | |
| 	header('Content-type: application/json; charset=utf-8');
 | |
| 	echo json_encode($relay, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
 | |
| 	exit;
 | |
| }
 |