Add AP Inbox logging back with config
authorHypolite Petovan <hypolite@mrpetovan.com>
Tue, 22 Jan 2019 17:15:42 +0000 (12:15 -0500)
committerHypolite Petovan <hypolite@mrpetovan.com>
Wed, 23 Jan 2019 14:07:01 +0000 (09:07 -0500)
config/defaults.config.php
src/Module/Inbox.php

index 90596a8..f16bd66 100644 (file)
@@ -421,4 +421,9 @@ return [
                // Must be writable by the ejabberd process. if set then it will prevent the running of multiple processes.
                'lockpath' => '',
        ],
+    'debug' => [
+        // ap_inbox_log (Boolean)
+        // Logs every call to /inbox as a JSON file in Friendica's temporary directory
+        'ap_inbox_log' => false,
+    ]
 ];
index e955f11..5fc1b15 100644 (file)
@@ -8,6 +8,7 @@ use Friendica\BaseModule;
 use Friendica\Protocol\ActivityPub;
 use Friendica\Core\System;
 use Friendica\Database\DBA;
+use Friendica\Util\HTTPSignature;
 
 /**
  * ActivityPub Inbox
@@ -24,6 +25,17 @@ class Inbox extends BaseModule
                        System::httpExit(400);
                }
 
+               if (Config::get('debug', 'ap_inbox_log')) {
+            if (HTTPSignature::getSigner($postdata, $_SERVER)) {
+                $filename = 'signed-activitypub';
+            } else {
+                $filename = 'failed-activitypub';
+            }
+            $tempfile = tempnam(get_temppath(), $filename);
+            file_put_contents($tempfile, json_encode(['argv' => $a->argv, 'header' => $_SERVER, 'body' => $postdata], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
+            Logger::log('Incoming message stored under ' . $tempfile);
+        }
+
                if (!empty($a->argv[1])) {
                        $user = DBA::selectFirst('user', ['uid'], ['nickname' => $a->argv[1]]);
                        if (!DBA::isResult($user)) {