webfinger / AP user
This commit is contained in:
30
server/federation/index.js
Normal file
30
server/federation/index.js
Normal file
@@ -0,0 +1,30 @@
|
||||
const express = require('express')
|
||||
const router = express.Router()
|
||||
const { user: User } = require('../api/models')
|
||||
const config = require('config')
|
||||
|
||||
router.get('/u/:name', async (req, res) => {
|
||||
const name = req.params.name
|
||||
if (!name) return res.status(400).send('Bad request.')
|
||||
const user = await User.findOne({where: { username: name }})
|
||||
if (!user) return res.status(404).send(`No record found for ${name}`)
|
||||
const domain = 'local'
|
||||
const ret = {
|
||||
'@context': [
|
||||
'https://www.w3.org/ns/activitystreams',
|
||||
'https://w3id.org/security/v1'
|
||||
],
|
||||
'id': `${config.baseurl}/federation/u/${name}`,
|
||||
'type': 'Person',
|
||||
'preferredUsername': name,
|
||||
'inbox': `${config.baseurl}/federation/inbox`,
|
||||
'followers': `${config.baseurl}/federation/u/${name}/followers`,
|
||||
'publicKey': {
|
||||
'id': `${config.baseurl}/federation/u/${name}#main-key`,
|
||||
'owner': `${config.baseurl}/federation/u/${name}`,
|
||||
'publicKeyPem': user.pubkey
|
||||
}
|
||||
}
|
||||
res.json(ret)
|
||||
})
|
||||
module.exports = router
|
||||
27
server/federation/webfinger.js
Normal file
27
server/federation/webfinger.js
Normal file
@@ -0,0 +1,27 @@
|
||||
const express = require('express')
|
||||
const router = express.Router()
|
||||
const { user: User } = require('../api/models')
|
||||
const config = require('config')
|
||||
|
||||
router.get('/', async (req, res) => {
|
||||
const resource = req.query.resource
|
||||
if (!resource || !resource.includes('acct:')) {
|
||||
return res.status(400).send('Bad request. Please make sure "acct:USER@DOMAIN" is what you are sending as the "resource" query parameter.')
|
||||
}
|
||||
const name = resource.replace('acct:', '')
|
||||
const domain = 'localhoasf'
|
||||
const user = await User.findOne({where: { username: name } })
|
||||
if (!user) return res.status(404).send(`No record found for ${name}`)
|
||||
const ret = {
|
||||
subject: `acct:${name}:${domain}`,
|
||||
links: [
|
||||
{
|
||||
rel: 'self',
|
||||
type: 'application/activity+json',
|
||||
href: `${config.baseurl}/federation/u/${name}`
|
||||
}
|
||||
]
|
||||
}
|
||||
res.json(ret)
|
||||
})
|
||||
module.exports = router
|
||||
Reference in New Issue
Block a user