mirror of
https://github.com/NodeBB/NodeBB.git
synced 2026-05-07 00:06:33 +02:00
feat: ap/errors acp page
This commit is contained in:
@@ -56,6 +56,7 @@
|
||||
"federation/pruning": "Storage",
|
||||
"federation/safety": "Trust & Safety",
|
||||
"federation/analytics": "Analytics",
|
||||
"federation/errors": "Errors",
|
||||
|
||||
"section-appearance": "Appearance",
|
||||
"appearance/themes": "Themes",
|
||||
|
||||
@@ -75,5 +75,7 @@
|
||||
"analytics.errors": "Errors",
|
||||
"analytics.term": "Time scale",
|
||||
"analytics.hourly": "Hourly",
|
||||
"analytics.daily": "Daily"
|
||||
"analytics.daily": "Daily",
|
||||
|
||||
"errors.intro": "The following errors were recorded by this instance within the last 24 hours."
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
'use strict';
|
||||
|
||||
const db = require('../../database');
|
||||
const activitypub = require('../../activitypub');
|
||||
const analytics = require('../../analytics');
|
||||
|
||||
@@ -81,5 +82,20 @@ federationController.analytics = async function (req, res) {
|
||||
received,
|
||||
receivedErr,
|
||||
sent,
|
||||
hideSave: 1,
|
||||
});
|
||||
};
|
||||
|
||||
federationController.errors = async function (req, res) {
|
||||
const ids = await db.getSortedSetRangeByScore('ap:errors', 0, -1, '-inf', Date.now());
|
||||
const payloads = await db.mget(ids.map(id => `ap:errors:${id}`));
|
||||
const errors = ids.map((id, idx) => {
|
||||
return { id, payload: payloads[idx] };
|
||||
});
|
||||
|
||||
res.render('admin/federation/errors', {
|
||||
title: '[[admin/menu:federation/errors]]',
|
||||
hideSave: 1,
|
||||
errors,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -58,6 +58,7 @@ module.exports = function (app, name, middleware, controllers) {
|
||||
helpers.setupAdminPageRoute(app, `/${name}/federation/pruning`, middlewares, controllers.admin.federation.pruning);
|
||||
helpers.setupAdminPageRoute(app, `/${name}/federation/safety`, middlewares, controllers.admin.federation.safety);
|
||||
helpers.setupAdminPageRoute(app, `/${name}/federation/analytics`, middlewares, controllers.admin.federation.analytics);
|
||||
helpers.setupAdminPageRoute(app, `/${name}/federation/errors`, middlewares, controllers.admin.federation.errors);
|
||||
|
||||
helpers.setupAdminPageRoute(app, `/${name}/appearance/themes`, middlewares, controllers.admin.appearance.themes);
|
||||
helpers.setupAdminPageRoute(app, `/${name}/appearance/skins`, middlewares, controllers.admin.appearance.skins);
|
||||
|
||||
19
src/views/admin/federation/errors.tpl
Normal file
19
src/views/admin/federation/errors.tpl
Normal file
@@ -0,0 +1,19 @@
|
||||
<div class="acp-page-container">
|
||||
<!-- IMPORT admin/partials/settings/header.tpl -->
|
||||
|
||||
<div class="row m-0">
|
||||
<div id="spy-container" class="col-12 col-md-8 px-0 mb-4" tabindex="0">
|
||||
<div class="mb-4">
|
||||
<p class="lead">[[admin/settings/activitypub:errors.intro]]</p>
|
||||
{{{ each errors }}}
|
||||
<details>
|
||||
<summary>{./id}</summary>
|
||||
<pre class="m-2 border p-2"><code>{./payload}</code></pre>
|
||||
</details>
|
||||
{{{ end }}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- IMPORT admin/partials/settings/toc.tpl -->
|
||||
</div>
|
||||
</div>
|
||||
@@ -110,6 +110,7 @@
|
||||
<a class="btn btn-ghost btn-sm text-start" id="federation-pruning" href="{relative_path}/admin/federation/pruning">[[admin/menu:federation/pruning]]</a>
|
||||
<a class="btn btn-ghost btn-sm text-start" id="federation-safety" href="{relative_path}/admin/federation/safety">[[admin/menu:federation/safety]]</a>
|
||||
<a class="btn btn-ghost btn-sm text-start" id="federation-analytics" href="{relative_path}/admin/federation/analytics">[[admin/menu:federation/analytics]]</a>
|
||||
<a class="btn btn-ghost btn-sm text-start" id="federation-errors" href="{relative_path}/admin/federation/errors">[[admin/menu:federation/errors]]</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user