]> git.mxchange.org Git - friendica.git/blob - mod/receive.php
Merge pull request #3423 from Hypolite/improvement/move-app-to-src-2
[friendica.git] / mod / receive.php
1 <?php
2
3 /**
4  * Diaspora endpoint
5  */
6
7 use Friendica\App;
8
9 require_once('include/salmon.php');
10 require_once('include/crypto.php');
11 require_once('include/diaspora.php');
12
13 function receive_post(App $a) {
14         $enabled = intval(get_config('system', 'diaspora_enabled'));
15         if (!$enabled) {
16                 logger('mod-diaspora: disabled');
17                 http_status_exit(500);
18         }
19
20         $public = false;
21
22         if (($a->argc == 2) && ($a->argv[1] === 'public')) {
23                 $public = true;
24         } else {
25
26                 if ($a->argc != 3 || $a->argv[1] !== 'users') {
27                         http_status_exit(500);
28                 }
29                 $guid = $a->argv[2];
30
31                 $r = q("SELECT * FROM `user` WHERE `guid` = '%s' AND `account_expired` = 0 AND `account_removed` = 0 LIMIT 1",
32                         dbesc($guid)
33                 );
34                 if (!dbm::is_result($r)) {
35                         http_status_exit(500);
36                 }
37
38                 $importer = $r[0];
39         }
40
41         // It is an application/x-www-form-urlencoded
42
43         logger('mod-diaspora: receiving post', LOGGER_DEBUG);
44
45         $xml = urldecode($_POST['xml']);
46
47         if (!$xml) {
48                 $postdata = file_get_contents("php://input");
49                 if ($postdata == '') {
50                         http_status_exit(500);
51                 }
52
53                 logger('mod-diaspora: message is in the new format', LOGGER_DEBUG);
54                 $msg = Diaspora::decode_raw($importer, $postdata);
55         } else {
56                 logger('mod-diaspora: message is in the old format', LOGGER_DEBUG);
57                 $msg = Diaspora::decode($importer, $xml);
58         }
59
60         logger('mod-diaspora: decoded', LOGGER_DEBUG);
61
62         logger('mod-diaspora: decoded msg: ' . print_r($msg, true), LOGGER_DATA);
63
64         if (!is_array($msg)) {
65                 http_status_exit(500);
66         }
67
68         logger('mod-diaspora: dispatching', LOGGER_DEBUG);
69
70         $ret = 0;
71         if ($public) {
72                 Diaspora::dispatch_public($msg);
73         } else {
74                 $ret = Diaspora::dispatch($importer, $msg);
75         }
76
77         http_status_exit(($ret) ? $ret : 200);
78         // NOTREACHED
79 }
80