From 66ae7583d2f5eb9beface1bd320de22da6a9a0af Mon Sep 17 00:00:00 2001 From: Dave Jansen Date: Thu, 21 Dec 2023 13:54:23 +0900 Subject: [PATCH] Initial commit. - Only modifies the total*User values of /api/v1/server/stats. --- .gitignore | 3 +++ .npmignore | 1 + README.md | 5 +++++ main.js | 56 +++++++++++++++++++++++++++++++++++++++++++++++ package-lock.json | 12 ++++++++++ package.json | 26 ++++++++++++++++++++++ 6 files changed, 103 insertions(+) create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 README.md create mode 100644 main.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..55b151a --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +node_modules +.cache +dist diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..7a694c9 --- /dev/null +++ b/.npmignore @@ -0,0 +1 @@ +LICENSE \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..d5bd82a --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Hide Root User PeerTube Plugin + +Prevent the "root" user from showing up in your PeerTube server's public-facing stats. This is useful when you do not +use your "root" user for anything, and prevents your server stats from appearing incorrect (e.g. showing 2 users for a +single-user instance). This does not hide the actual user, it just subtracts one user from the instance stats. diff --git a/main.js b/main.js new file mode 100644 index 0000000..1662adf --- /dev/null +++ b/main.js @@ -0,0 +1,56 @@ +async function register ({ + registerHook, + registerSetting, + settingsManager, + storageManager, + videoCategoryManager, + videoLicenceManager, + videoLanguageManager, +}) { + registerHook({ + target: 'filter:api.server.stats.get.result', + handler: (data) => { + if (!data) return {}; + + let { + totalUsers, + totalDailyActiveUsers, + totalWeeklyActiveUsers, + totalMonthlyActiveUsers, + } = data; + + if (totalUsers > 1) { + totalUsers = totalUsers - 1; + } + + if (totalDailyActiveUsers > totalUsers) { + totalDailyActiveUsers = totalUsers; + } + + if (totalWeeklyActiveUsers > totalUsers) { + totalWeeklyActiveUsers = totalUsers; + } + + if (totalMonthlyActiveUsers > totalUsers) { + totalMonthlyActiveUsers = totalUsers; + } + + return { + ...data, + totalUsers, + totalDailyActiveUsers, + totalWeeklyActiveUsers, + totalMonthlyActiveUsers, + }; + }, + }); +} + +async function unregister () { + return; +} + +module.exports = { + register, + unregister, +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..5e6a4b2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,12 @@ +{ + "name": "peertube-plugin-hide-root-user", + "version": "0.5.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "peertube-plugin-hide-root-user", + "version": "0.5.0" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4b94e10 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "peertube-plugin-hide-root-user", + "description": "Prevents the \"root\" user from showing up in your PeerTube server's public-facing stats. Useful only when the root account isn't actually being used on your instance.", + "version": "0.5.0", + "license": "AGPL-3.0-or-later", + "author": { + "name": "Dave Jansen", + "email": "i.am@davejansen.com", + "url": "https://www.davejansen.com/" + }, + "bugs": "https://git.davejansen.com/davejansen/peertube-plugin-hide-root-user/issues", + "engine": { + "peertube": ">=6.0.0" + }, + "homepage": "https://git.davejansen.com/davejansen/peertube-plugin-hide-root-user", + "keywords": [ + "peertube", + "plugin" + ], + "library": "./main.js", + + "css": [], + "clientScripts": [], + "staticDirs": {}, + "translations": {} +}