[fix] nodeinfo return real info

This commit is contained in:
les
2019-10-22 00:58:38 +02:00
parent aa57a79082
commit 19ca6e8f38

View File

@@ -1,9 +1,8 @@
const express = require('express') const express = require('express')
const router = express.Router() const router = express.Router()
const { user: User } = require('../api/models') const { event: Event, user: User } = require('../api/models')
const cors = require('cors') const cors = require('cors')
const settingsController = require('../api/controller/settings') const settingsController = require('../api/controller/settings')
const config = require('config')
const version = require('../../package.json').version const version = require('../../package.json').version
const url = require('url') const url = require('url')
const debug = require('debug')('webfinger') const debug = require('debug')('webfinger')
@@ -24,7 +23,7 @@ router.get('/webfinger', async (req, res) => {
} }
const resource = req.query.resource const resource = req.query.resource
const domain = url.parse(config.baseurl).host const domain = url.parse(req.settings.baseurl).host
const [, name, req_domain] = resource.match(/acct:(.*)@(.*)/) const [, name, req_domain] = resource.match(/acct:(.*)@(.*)/)
if (domain !== req_domain) { if (domain !== req_domain) {
@@ -44,7 +43,7 @@ router.get('/webfinger', async (req, res) => {
{ {
rel: 'self', rel: 'self',
type: 'application/activity+json', type: 'application/activity+json',
href: `${config.baseurl}/federation/u/${name}` href: `${req.settings.baseurl}/federation/u/${name}`
} }
] ]
} }
@@ -53,10 +52,12 @@ router.get('/webfinger', async (req, res) => {
}) })
router.get('/nodeinfo/:nodeinfo_version', async (req, res) => { router.get('/nodeinfo/:nodeinfo_version', async (req, res) => {
const usersCount = (await User.findAndCountAll()).count
const eventsCount = (await Event.findAndCountAll()).count
const ret = { const ret = {
metadata: { metadata: {
nodeDescription: 'Gancio instance', nodeDescription: req.settings.description,
nodeName: config.title nodeName: req.settings.title
}, },
openRegistrations: settingsController.settings.allow_registration, openRegistrations: settingsController.settings.allow_registration,
protocols: ['activitypub'], protocols: ['activitypub'],
@@ -67,9 +68,9 @@ router.get('/nodeinfo/:nodeinfo_version', async (req, res) => {
}, },
usage: { usage: {
localComments: 0, localComments: 0,
localPosts: 0, localPosts: eventsCount,
users: { users: {
total: 3 total: usersCount
} }
}, },
version: req.params.nodeinfo_version version: req.params.nodeinfo_version
@@ -82,11 +83,13 @@ router.get('/nodeinfo/:nodeinfo_version', async (req, res) => {
}) })
router.get('/x-nodeinfo2', async (req, res) => { router.get('/x-nodeinfo2', async (req, res) => {
const usersCount = (await User.findAndCountAll()).count
const eventsCount = (await Event.findAndCountAll()).count
const ret = { const ret = {
version: '1.0', version: '1.0',
server: { server: {
baseUrl: config.baseurl, baseUrl: req.settings.baseurl,
name: config.title, name: req.settings.title,
software: 'Gancio', software: 'Gancio',
version version
}, },
@@ -94,10 +97,10 @@ router.get('/x-nodeinfo2', async (req, res) => {
openRegistrations: settingsController.settings.allow_registration, openRegistrations: settingsController.settings.allow_registration,
usage: { usage: {
users: { users: {
total: 10 total: usersCount
} }
}, },
localPost: 3, localPost: eventsCount,
localComments: 0 localComments: 0
} }
res.json(ret) res.json(ret)
@@ -106,8 +109,8 @@ router.get('/x-nodeinfo2', async (req, res) => {
router.get('/nodeinfo', async (req, res) => { router.get('/nodeinfo', async (req, res) => {
const ret = { const ret = {
links: [ links: [
{ href: `${config.baseurl}/.well-known/nodeinfo/2.0`, rel: `http://nodeinfo.diaspora.software/ns/schema/2.0` }, { href: `${req.settings.baseurl}/.well-known/nodeinfo/2.0`, rel: `http://nodeinfo.diaspora.software/ns/schema/2.0` },
{ href: `${config.baseurl}/.well-known/nodeinfo/2.1`, rel: `http://nodeinfo.diaspora.software/ns/schema/2.1` } { href: `${req.settings.baseurl}/.well-known/nodeinfo/2.1`, rel: `http://nodeinfo.diaspora.software/ns/schema/2.1` }
] ]
} }
res.json(ret) res.json(ret)
@@ -117,7 +120,7 @@ router.use('/host-meta', (req, res) => {
res.type('application/xml') res.type('application/xml')
res.send(`<?xml version="1.0" encoding="UTF-8"?> res.send(`<?xml version="1.0" encoding="UTF-8"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0"> <XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Link rel="lrdd" type="application/xrd+xml" template="${config.baseurl}/.well-known/webfinger?resource={uri}"/> <Link rel="lrdd" type="application/xrd+xml" template="${req.settings.baseurl}/.well-known/webfinger?resource={uri}"/>
</XRD>`) </XRD>`)
}) })