X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=mod%2F_well_known.php;h=407fc756a931fef7cfe0a39adc79816def46b1b6;hb=66bf39216b890a0b89f9bef537204a5e637ac8b1;hp=155810df367ae04c8e516d2c9ccaa1794668dee7;hpb=1088257aad2cd920af17e9ba99900194f5aa355a;p=friendica.git diff --git a/mod/_well_known.php b/mod/_well_known.php index 155810df36..407fc756a9 100644 --- a/mod/_well_known.php +++ b/mod/_well_known.php @@ -1,14 +1,83 @@ -argc > 1) { - switch($a->argv[1]) { - case "host-meta": - hostxrd_init($a); - break; - } - } - http_status_exit(404); - killme(); -} \ No newline at end of file +argc > 1) { + switch ($a->argv[1]) { + case "host-meta": + hostxrd_init($a); + break; + case "x-social-relay": + wk_social_relay(); + break; + case "nodeinfo": + nodeinfo_wellknown($a); + break; + case "webfinger": + xrd_init($a); + break; + } + } + System::httpExit(404); + killme(); +} + +function wk_social_relay() +{ + $subscribe = (bool) Config::get('system', 'relay_subscribe', false); + + if ($subscribe) { + $scope = Config::get('system', 'relay_scope', SR_SCOPE_ALL); + } else { + $scope = SR_SCOPE_NONE; + } + + $tags = []; + + if ($scope == SR_SCOPE_TAGS) { + $server_tags = Config::get('system', 'relay_server_tags'); + $tagitems = explode(",", $server_tags); + + /// @todo Check if it was better to use "strtolower" on the tags + foreach ($tagitems AS $tag) { + $tag = trim($tag, "# "); + $tags[$tag] = $tag; + } + + if (Config::get('system', 'relay_user_tags')) { + $terms = q("SELECT DISTINCT(`term`) FROM `search`"); + + foreach ($terms AS $term) { + $tag = trim($term["term"], "#"); + $tags[$tag] = $tag; + } + } + } + + $taglist = []; + foreach ($tags AS $tag) { + if (!empty($tag)) { + $taglist[] = $tag; + } + } + + $relay = [ + 'subscribe' => $subscribe, + 'scope' => $scope, + 'tags' => $taglist, + 'protocols' => ['diaspora' => ['receive' => System::baseUrl() . '/receive/public'], + 'dfrn' => ['receive' => System::baseUrl() . '/dfrn_notify']] + ]; + + header('Content-type: application/json; charset=utf-8'); + echo json_encode($relay, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + exit; +}