cleaning and use nuxt-express

This commit is contained in:
les
2019-08-09 01:58:11 +02:00
parent e96880fc92
commit def1be8803
11 changed files with 51 additions and 43 deletions

View File

@@ -1,3 +1,3 @@
// needed by sequelize
const config = require('config')
module.exports = config.db

View File

@@ -67,7 +67,7 @@ const Helpers = {
// TODO: cache
async getActor(url, force=false) {
// try with cache first if not forced
// try with cache first
if (!force && actorCache[url]) return actorCache[url]
const user = await fetch(url, { headers: {'Accept': 'application/jrd+json, application/json'} })
.then(res => {
@@ -84,7 +84,7 @@ const Helpers = {
// ref: https://blog.joinmastodon.org/2018/07/how-to-make-friends-and-verify-requests/
async verifySignature(req, res, next) {
let user = await Helpers.getActor(req.body.actor)
if (!user) return res.send('Actor not found', 401)
if (!user) return res.status(401).send('Actor not found')
// little hack -> https://github.com/joyent/node-http-signature/pull/83
req.headers.authorization = 'Signature ' + req.headers.signature
@@ -97,7 +97,7 @@ const Helpers = {
// signature not valid, try without cache
user = await Helpers.getActor(req.body.actor, true)
if (!user) return res.send('Actor not found', 401)
if (!user) return res.status(401).send('Actor not found')
if (httpSignature.verifySignature(parsed, user.publicKey.publicKeyPem)) return next()
// still not valid

View File

@@ -1,19 +1,18 @@
#!/bin/env node
const path = require('path')
const express = require('express')
const consola = require('consola')
const morgan = require('morgan')
//#!/bin/env node
//const path = require('path')
//const express = require('express')
//const consola = require('consola')
//const morgan = require('morgan')
const { Nuxt, Builder } = require('nuxt')
const api = require('./api')
const federation = require('./federation')
const webfinger = require('./federation/webfinger')
//const api = require('./api')
//const federation = require('./federation')
//const webfinger = require('./federation/webfinger')
// Import and Set Nuxt.js options
const nuxt_config = require('../nuxt.config.js')
const config = require('config')
const app = express()
async function start() {
nuxt_config.server = config.server
// Init Nuxt.js
@@ -26,30 +25,31 @@ async function start() {
} else {
await nuxt.ready()
}
nuxt.listen()
// configurable favicon && logo
app.use('/favicon.ico', express.static(path.resolve(config.favicon || 'assets/favicon.ico')))
//app.use('/favicon.ico', express.static(path.resolve(config.favicon || 'assets/favicon.ico')))
app.use(morgan('dev'))
app.use('/media/', express.static(config.upload_path))
//app.use(morgan('dev'))
//app.use('/media/', express.static(config.upload_path))
// gancio standard api
app.use('/api', api)
//app.use('/api', api)
// federation api / activitypub / webfinger / nodeinfo
app.use('/.well-known', webfinger)
app.use('/federation', federation)
//app.use('/.well-known', webfinger)
//app.use('/federation', federation)
// Give nuxt middleware to express
app.use(nuxt.render)
//app.use(nuxt.render)
// Listen
const server = app.listen(nuxt_config.server)
//const server = app.listen(nuxt_config.server)
// close connections/port/unix socket
function shutdown() {
consola.info(`Closing connections..`)
server.close(() => {
nuxt.close(() => {
// TODO, close db connection?
process.exit()
})
@@ -57,17 +57,6 @@ async function start() {
process.on('SIGTERM', shutdown)
process.on('SIGINT', shutdown)
server.on('error', e => {
consola.error(e)
})
server.on('listening', () => {
const address = server.address()
consola.ready({
message: `Server listening on ${(typeof address) === 'object' ? `${address.address}:${address.port}` : address}`,
badge: true
})
})
}
start()

17
server/routes.js Normal file
View File

@@ -0,0 +1,17 @@
const path = require('path')
const config = require('config')
const express = require('express')
const api = require('./api')
const federation = require('./federation')
const webfinger = require('./federation/webfinger')
const router = express.Router()
router.use('/favicon.ico', express.static(path.resolve(config.favicon || 'assets/favicon.ico')))
router.use('/media/', express.static(config.upload_path))
router.use('/api', api)
// federation api / activitypub / webfinger / nodeinfo
router.use('/.well-known', webfinger)
router.use('/federation', federation)
module.exports = router