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