]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/controllers/well-known.ts
Translated using Weblate (Vietnamese)
[github/Chocobozzz/PeerTube.git] / server / controllers / well-known.ts
index f467bd629835e2299b922b8d7a6c6a14899b0f35..bb9acfb372bbb5b98d7c9f6b940bbc3e7faf3c86 100644 (file)
@@ -1,6 +1,7 @@
 import cors from 'cors'
 import express from 'express'
 import { join } from 'path'
+import { asyncMiddleware, handleStaticError, webfingerValidator } from '@server/middlewares'
 import { root } from '@shared/core-utils'
 import { CONFIG } from '../initializers/config'
 import { ROUTE_CACHE_LIFETIME, WEBSERVER } from '../initializers/constants'
@@ -10,6 +11,11 @@ const wellKnownRouter = express.Router()
 
 wellKnownRouter.use(cors())
 
+wellKnownRouter.get('/.well-known/webfinger',
+  asyncMiddleware(webfingerValidator),
+  webfingerController
+)
+
 wellKnownRouter.get('/.well-known/security.txt',
   cacheRoute(ROUTE_CACHE_LIFETIME.SECURITYTXT),
   (_, res: express.Response) => {
@@ -69,8 +75,38 @@ wellKnownRouter.use('/.well-known/host-meta',
   }
 )
 
+wellKnownRouter.use('/.well-known/',
+  cacheRoute(ROUTE_CACHE_LIFETIME.WELL_KNOWN),
+  express.static(CONFIG.STORAGE.WELL_KNOWN_DIR, { fallthrough: false }),
+  handleStaticError
+)
+
 // ---------------------------------------------------------------------------
 
 export {
   wellKnownRouter
 }
+
+// ---------------------------------------------------------------------------
+
+function webfingerController (req: express.Request, res: express.Response) {
+  const actor = res.locals.actorUrl
+
+  const json = {
+    subject: req.query.resource,
+    aliases: [ actor.url ],
+    links: [
+      {
+        rel: 'self',
+        type: 'application/activity+json',
+        href: actor.url
+      },
+      {
+        rel: 'http://ostatus.org/schema/1.0/subscribe',
+        template: WEBSERVER.URL + '/remote-interaction?uri={uri}'
+      }
+    ]
+  }
+
+  return res.json(json)
+}