]> git.mxchange.org Git - friendica.git/blob - mod/_well_known.php
Merge pull request #7030 from nupplaphil/task/mod_nodeinfo
[friendica.git] / mod / _well_known.php
1 <?php
2
3 use Friendica\App;
4 use Friendica\Core\Config;
5 use Friendica\Core\System;
6 use Friendica\Module\Nodeinfo;
7
8 require_once 'mod/hostxrd.php';
9 require_once 'mod/nodeinfo.php';
10 require_once 'mod/xrd.php';
11
12 function _well_known_init(App $a)
13 {
14         if ($a->argc > 1) {
15                 switch ($a->argv[1]) {
16                         case "host-meta":
17                                 hostxrd_init($a);
18                                 break;
19                         case "x-social-relay":
20                                 wk_social_relay();
21                                 break;
22                         case "nodeinfo":
23                                 Nodeinfo::printWellKnown($a);
24                                 break;
25                         case "webfinger":
26                                 xrd_init($a);
27                                 break;
28                 }
29         }
30         System::httpExit(404);
31 }
32
33 function wk_social_relay()
34 {
35         $subscribe = (bool) Config::get('system', 'relay_subscribe', false);
36
37         if ($subscribe) {
38                 $scope = Config::get('system', 'relay_scope', SR_SCOPE_ALL);
39         } else {
40                 $scope = SR_SCOPE_NONE;
41         }
42
43         $tags = [];
44
45         if ($scope == SR_SCOPE_TAGS) {
46                 $server_tags = Config::get('system', 'relay_server_tags');
47                 $tagitems = explode(",", $server_tags);
48
49                 /// @todo Check if it was better to use "strtolower" on the tags
50                 foreach ($tagitems AS $tag) {
51                         $tag = trim($tag, "# ");
52                         $tags[$tag] = $tag;
53                 }
54
55                 if (Config::get('system', 'relay_user_tags')) {
56                         $terms = q("SELECT DISTINCT(`term`) FROM `search`");
57
58                         foreach ($terms AS $term) {
59                                 $tag = trim($term["term"], "#");
60                                 $tags[$tag] = $tag;
61                         }
62                 }
63         }
64
65         $taglist = [];
66         foreach ($tags AS $tag) {
67                 if (!empty($tag)) {
68                         $taglist[] = $tag;
69                 }
70         }
71
72         $relay = [
73                 'subscribe' => $subscribe,
74                 'scope' => $scope,
75                 'tags' => $taglist,
76                 'protocols' => ['diaspora' => ['receive' => System::baseUrl() . '/receive/public'],
77                         'dfrn' => ['receive' => System::baseUrl() . '/dfrn_notify']]
78         ];
79
80         header('Content-type: application/json; charset=utf-8');
81         echo json_encode($relay, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
82         exit;
83 }