preparing multisite settings, fix #141

This commit is contained in:
lesion
2022-03-07 17:47:31 +01:00
parent bac0aa5b16
commit 4f3a34d356
9 changed files with 43 additions and 39 deletions

View File

@@ -8,10 +8,11 @@ module.exports = {
// follow request from fediverse
async follow (req, res) {
const body = req.body
const settings = res.locals.settings
if (typeof body.object !== 'string') { return }
const username = body.object.replace(`${config.baseurl}/federation/u/`, '')
if (username !== settingsController.settings.instance_name) {
log.warn(`Following the wrong user: ${username} instead of ${settingsController.settings.instance_name} (could be a wrong config.baseurl)`)
if (username !== settings.instance_name) {
log.warn(`Following the wrong user: ${username} instead of ${settings.instance_name} (could be a wrong config.baseurl)`)
return res.status(404).send('User not found')
}
@@ -35,10 +36,11 @@ module.exports = {
// unfollow request from fediverse
async unfollow (req, res) {
const settings = res.locals.settings
const body = req.body
const username = body.object.object.replace(`${config.baseurl}/federation/u/`, '')
if (username !== settingsController.settings.instance_name) {
log.warn(`Unfollowing wrong user: ${username} instead of ${settingsController.settings.instance_name}`)
if (username !== settings.instance_name) {
log.warn(`Unfollowing wrong user: ${username} instead of ${settings.instance_name}`)
return res.status(404).send('User not found')
}

View File

@@ -1,7 +1,6 @@
const Event = require('../api/models/event')
const Resource = require('../api/models/resource')
const APUser = require('../api/models/ap_user')
const settingsController = require('../api/controller/settings')
const log = require('../log')
const helpers = require('../helpers')
@@ -11,7 +10,8 @@ module.exports = {
// create a resource from AP Note
async create (req, res) {
if (!settingsController.settings.enable_resources) {
if (!res.locals.settings.enable_resources) {
log.info('Ignore resource as it is disabled in settings')
return
}
@@ -45,7 +45,7 @@ module.exports = {
log.debug(`resource from ${req.body.actor} to "${event.title}"`)
body.object.content = helpers.sanitizeHTML(linkifyHtml(body.object.content))
body.object.content = helpers.sanitizeHTML(linkifyHtml(body.object.content || ''))
await Resource.create({
activitypub_id: body.object.id,

View File

@@ -60,6 +60,7 @@ module.exports = {
},
async followers (req, res) {
const settings = settingsController.settings
const name = req.params.name
const page = req.query.page
log.debug(`Retrieve ${name} followers`)
@@ -76,20 +77,20 @@ module.exports = {
log.debug('No pagination')
return res.json({
'@context': 'https://www.w3.org/ns/activitystreams',
id: `${config.baseurl}/federation/u/${name}/followers`,
id: `${settings.baseurl}/federation/u/${name}/followers`,
type: 'OrderedCollection',
totalItems: followers.length,
first: `${config.baseurl}/federation/u/${name}/followers?page=true`
first: `${settings.baseurl}/federation/u/${name}/followers?page=true`
// last: `${config.baseurl}/federation/u/${name}/followers?page=true`,
// orderedItems: followers.map(f => f.ap_id)
})
}
return res.json({
'@context': 'https://www.w3.org/ns/activitystreams',
id: `${config.baseurl}/federation/u/${name}/followers?page=${page}`,
id: `${settings.baseurl}/federation/u/${name}/followers?page=${page}`,
type: 'OrderedCollectionPage',
totalItems: followers.length,
partOf: `${config.baseurl}/federation/u/${name}/followers`,
partOf: `${settings.baseurl}/federation/u/${name}/followers`,
orderedItems: followers.map(f => f.ap_id)
})
},
@@ -109,32 +110,32 @@ module.exports = {
}
const events = await Event.findAll({ include: [{ model: Tag, required: false }, Place], limit: 10 })
log.debug(`${config.baseurl} Inside ${name} outbox, should return all events from this instance: ${events.length}`)
log.debug(`${settings.baseurl} Inside ${name} outbox, should return all events from this instance: ${events.length}`)
// https://www.w3.org/TR/activitypub/#outbox
res.type('application/activity+json; charset=utf-8')
if (!page) {
return res.json({
'@context': 'https://www.w3.org/ns/activitystreams',
id: `${config.baseurl}/federation/u/${name}/outbox`,
id: `${settings.baseurl}/federation/u/${name}/outbox`,
type: 'OrderedCollection',
totalItems: events.length,
first: {
id: `${config.baseurl}/federation/u/${name}/outbox?page=true`,
id: `${settings.baseurl}/federation/u/${name}/outbox?page=true`,
type: 'OrderedCollectionPage',
// totalItems: events.length,
partOf: `${config.baseurl}/federation/u/${name}/outbox`,
// prev: `${config.baseurl}/federation/u/${name}/outbox`,
// next: page !== 'last' && `${config.baseurl}/federation/u/${name}/outbox?page=last`,
partOf: `${settings.baseurl}/federation/u/${name}/outbox`,
// prev: `${settings.baseurl}/federation/u/${name}/outbox`,
// next: page !== 'last' && `${settings.baseurl}/federation/u/${name}/outbox?page=last`,
orderedItems: page === 'last'
? []
: events.map(e => ({
id: `${config.baseurl}/federation/m/${e.id}#create`,
id: `${settings.baseurl}/federation/m/${e.id}#create`,
type: 'Create',
to: ['https://www.w3.org/ns/activitystreams#Public'],
cc: [`${config.baseurl}/federation/u/${name}/followers`],
cc: [`${settings.baseurl}/federation/u/${name}/followers`],
published: dayjs(e.createdAt).utc().format(),
actor: `${config.baseurl}/federation/u/${name}`,
actor: `${settings.baseurl}/federation/u/${name}`,
object: e.toAP(name, settings.instance_locale)
}))
}