]> 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 ce5883571cf66e1f7961f9f08f53c57b9e322fe5..bb9acfb372bbb5b98d7c9f6b940bbc3e7faf3c86 100644 (file)
@@ -1,16 +1,21 @@
 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'
 import { cacheRoute } from '../middlewares/cache/cache'
-import { handleStaticError } from '@server/middlewares'
 
 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) => {
@@ -81,3 +86,27 @@ wellKnownRouter.use('/.well-known/',
 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)
+}