Fix req accepts
authorChocobozzz <florian.bigard@gmail.com>
Thu, 30 Nov 2017 12:37:11 +0000 (13:37 +0100)
committerChocobozzz <florian.bigard@gmail.com>
Thu, 30 Nov 2017 12:37:11 +0000 (13:37 +0100)
server.ts
server/initializers/constants.ts
server/middlewares/activitypub.ts

index a723dd32b6443ee22188ff96faa15bc90f50c530..39caf89963b7b33c219a4d7eb9707a1765e32134 100644 (file)
--- a/server.ts
+++ b/server.ts
@@ -29,7 +29,7 @@ if (missed.length !== 0) {
   throw new Error('Your configuration files miss keys: ' + missed)
 }
 
-import { API_VERSION, CONFIG, STATIC_PATHS } from './server/initializers/constants'
+import { ACCEPT_HEADERS, API_VERSION, CONFIG, STATIC_PATHS } from './server/initializers/constants'
 checkFFmpeg(CONFIG)
 
 const errorMessage = checkConfig()
@@ -129,7 +129,7 @@ app.use('/', staticRouter)
 
 // Always serve index client page (the client is a single page application, let it handle routing)
 app.use('/*', function (req, res) {
-  if (req.accepts('html')) {
+  if (req.accepts(ACCEPT_HEADERS) === 'html') {
     return res.sendFile(path.join(__dirname, '../client/dist/index.html'))
   }
 
index 4f63cbb020998ad1d17bdab53fbe5a699d6a776e..e3d779456974dfc0f0fc3c8b2c2cf748e96fea3f 100644 (file)
@@ -316,6 +316,8 @@ const CACHE = {
   }
 }
 
+const ACCEPT_HEADERS = ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS.concat('html', 'application/json')
+
 // ---------------------------------------------------------------------------
 
 const OPENGRAPH_AND_OEMBED_COMMENT = '<!-- open graph and oembed tags -->'
@@ -336,6 +338,7 @@ if (isTestInstance() === true) {
 
 export {
   API_VERSION,
+  ACCEPT_HEADERS,
   BCRYPT_SALT_SIZE,
   CACHE,
   CONFIG,
index 48564572018844996f4347982181be23dad65c38..c2ad18195bc98fc19f210755f63bf00e0870dbb7 100644 (file)
@@ -3,7 +3,7 @@ import { NextFunction, Request, RequestHandler, Response } from 'express'
 import { ActivityPubSignature } from '../../shared'
 import { isSignatureVerified, logger } from '../helpers'
 import { database as db } from '../initializers'
-import { ACTIVITY_PUB } from '../initializers/constants'
+import { ACCEPT_HEADERS, ACTIVITY_PUB } from '../initializers/constants'
 import { fetchRemoteAccount, saveAccountAndServerIfNotExist } from '../lib/activitypub/account'
 
 async function checkSignature (req: Request, res: Response, next: NextFunction) {
@@ -37,7 +37,8 @@ async function checkSignature (req: Request, res: Response, next: NextFunction)
 
 function executeIfActivityPub (fun: RequestHandler | RequestHandler[]) {
   return (req: Request, res: Response, next: NextFunction) => {
-    if (!req.accepts(ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS)) {
+    const accepted = req.accepts(ACCEPT_HEADERS)
+    if (accepted === false || ACTIVITY_PUB.POTENTIAL_ACCEPT_HEADERS.indexOf(accepted) === -1) {
       return next()
     }