From b8931ee8bf38647a257f11234c71bb03105e3ae1 Mon Sep 17 00:00:00 2001 From: les Date: Thu, 30 Sep 2021 11:06:59 +0200 Subject: [PATCH] refactoring routes --- pages/setup/index.vue | 3 ++ server/api/controller/event.js | 2 +- server/federation/resources.js | 2 +- server/helpers.js | 26 +++++++++- server/routes.js | 91 ++++++++++++++++------------------ 5 files changed, 72 insertions(+), 52 deletions(-) diff --git a/pages/setup/index.vue b/pages/setup/index.vue index 9ddf0696..a5cd32cf 100644 --- a/pages/setup/index.vue +++ b/pages/setup/index.vue @@ -32,6 +32,9 @@ export default { components: { DbStep, Settings, Completed }, middleware: 'setup', layout: 'iframe', + head: { + title: 'Setup', + }, auth: false, data () { return { diff --git a/server/api/controller/event.js b/server/api/controller/event.js index c7c567ab..b7153c56 100644 --- a/server/api/controller/event.js +++ b/server/api/controller/event.js @@ -4,7 +4,7 @@ const config = require('../../config') const fs = require('fs') const { Op } = require('sequelize') const intersection = require('lodash/intersection') -const linkifyHtml = require('linkifyjs/html') +const linkifyHtml = require('linkify-html') const Sequelize = require('sequelize') const dayjs = require('dayjs') const helpers = require('../../helpers') diff --git a/server/federation/resources.js b/server/federation/resources.js index b69fee39..3b566399 100644 --- a/server/federation/resources.js +++ b/server/federation/resources.js @@ -4,7 +4,7 @@ const APUser = require('../api/models/ap_user') const log = require('../log') const helpers = require('../helpers') -const linkifyHtml = require('linkifyjs/html') +const linkifyHtml = require('linkify-html') module.exports = { diff --git a/server/helpers.js b/server/helpers.js index 1e518cd3..bbed4021 100644 --- a/server/helpers.js +++ b/server/helpers.js @@ -1,7 +1,7 @@ const ical = require('ical.js') const settingsController = require('./api/controller/settings') const acceptLanguage = require('accept-language') - +const express = require('express') const dayjs = require('dayjs') const timezone = require('dayjs/plugin/timezone') dayjs.extend(timezone) @@ -78,6 +78,30 @@ module.exports = { next() }, + serveStatic () { + const router = express.Router() + // serve logo, favicon, event's images/thumb + router.use('/media/', express.static(config.upload_path)) + router.use('/noimg.svg', express.static('./static/noimg.svg')) + + router.use('/logo.png', (req, res, next) => { + const logoPath = req.settings.logo || './static/gancio' + return express.static(logoPath + '.png')(req, res, next) + }) + + router.use('/favicon.ico', (req, res, next) => { + const faviconPath = req.settings.logo || './assets/favicon' + return express.static(faviconPath + '.ico')(req, res, next) + }) + + return router + }, + + logRequest (req, res, next) { + log.debug(`${req.method} ${req.path}`) + next() + }, + async getImageFromURL (url) { log.debug(`getImageFromURL ${url}`) const filename = crypto.randomBytes(16).toString('hex') + '.jpg' diff --git a/server/routes.js b/server/routes.js index ffb58898..e390382e 100644 --- a/server/routes.js +++ b/server/routes.js @@ -1,67 +1,55 @@ -const config = require('config') const express = require('express') -const cors = require('cors') -const api = require('./api') -const oauth = require('./api/oauth') -const auth = require('./api/auth') const cookieParser = require('cookie-parser') -const federation = require('./federation') -const webfinger = require('./federation/webfinger') -const { spamFilter } = require('./federation/helpers') -const log = require('./log') -const exportController = require('./api/controller/export') -const eventController = require('./api/controller/event') -const announceController = require('./api/controller/announce') + // const metricsController = require('./metrics') // const promBundle = require('express-prom-bundle') // const metricsMiddleware = promBundle({ includeMethod: true }) +const config = require('./config') const helpers = require('./helpers') +const log = require('./log') +const api = require('./api') + + const app = express() -// ignore unimplemented ping url from fediverse -app.use(spamFilter) +app.use(helpers.logRequest) -// app.use(metricsMiddleware) - -app.use((req, res, next) => { - log.debug(`${req.method} ${req.path}`) - next() -}) - -app.use('/media/', express.static(config.upload_path)) // initialize instance settings / authentication / locale app.use(helpers.initSettings) +app.use(helpers.serveStatic()) -app.use('/noimg.svg', (req, res, next) => { - return express.static('./static/noimg.svg') -}) - -// serve favicon and static content -app.use('/logo.png', (req, res, next) => { - const logoPath = req.settings.logo || './static/gancio' - return express.static(logoPath + '.png')(req, res, next) -}) - -app.use('/favicon.ico', (req, res, next) => { - const faviconPath = req.settings.logo || './assets/favicon' - return express.static(faviconPath + '.ico')(req, res, next) -}) - -// rss/ics/atom feed -app.get('/feed/:type', cors(), exportController.export) - -// federation api / activitypub / webfinger / nodeinfo -app.use('/.well-known', webfinger) -app.use('/federation', federation) - +// ignore unimplemented ping url from fediverse app.use(cookieParser()) -// fill req.user if request is authenticated -app.use(auth.fillUser) + +// do not handle all routes on setup +if (!config.firstrun) { + const cors = require('cors') + const { spamFilter } = require('./federation/helpers') + const oauth = require('./api/oauth') + const auth = require('./api/auth') + const federation = require('./federation') + const webfinger = require('./federation/webfinger') + const exportController = require('./api/controller/export') + + // rss/ics/atom feed + app.get('/feed/:type', cors(), exportController.export) + + // federation api / activitypub / webfinger / nodeinfo + app.use('/.well-known', webfinger) + app.use('/federation', federation) + app.use(spamFilter) + + // fill req.user if request is authenticated + app.use(auth.fillUser) + + app.use('/oauth', oauth) + // app.use(metricsMiddleware) +} + // api! app.use('/api', api) -app.use('/oauth', oauth) // // Handle 500 app.use((error, req, res, next) => { @@ -75,8 +63,13 @@ app.use((error, req, res, next) => { app.use(async (req, res, next) => { // const start_datetime = getUnixTime(startOfWeek(startOfMonth(new Date()))) // req.events = await eventController._select(start_datetime, 100) - req.meta = await eventController._getMeta() - req.announcements = await announceController._getVisible() + if (!config.firstrun) { + const eventController = require('./api/controller/event') + const announceController = require('./api/controller/announce') + req.meta = await eventController._getMeta() + req.announcements = await announceController._getVisible() + } + req.firstrun = config.firstrun next() })