Parcourir la source

Merge pull request #3895 from pixelfed/staging

Update FederationController, add instance actor profile to webfinger
daniel il y a 2 ans
Parent
commit
30ac2dbb53
2 fichiers modifiés avec 25 ajouts et 1 suppressions
  1. 1 0
      CHANGELOG.md
  2. 24 1
      app/Http/Controllers/FederationController.php

+ 1 - 0
CHANGELOG.md

@@ -36,6 +36,7 @@
 - Update AvatarStorage, improve overview calculations ([733b9fd0](https://github.com/pixelfed/pixelfed/commit/733b9fd0))
 - Update filesystem config, fix DO Spaces root default ([720b6eb3](https://github.com/pixelfed/pixelfed/commit/720b6eb3))
 - Update Avatar pipeline, fix cloud storage media_path ([02edd19d](https://github.com/pixelfed/pixelfed/commit/02edd19d))
+- Update FederationController, add instance actor profile to webfinger ([6e3c8097](https://github.com/pixelfed/pixelfed/commit/6e3c8097))
 -  ([](https://github.com/pixelfed/pixelfed/commit/))
 
 ## [v0.11.4 (2022-10-04)](https://github.com/pixelfed/pixelfed/compare/v0.11.3...v0.11.4)

+ 24 - 1
app/Http/Controllers/FederationController.php

@@ -56,12 +56,35 @@ class FederationController extends Controller
 		}
 
 		$resource = $request->input('resource');
+		$domain = config('pixelfed.domain.app');
+
+		if(config('federation.activitypub.sharedInbox') &&
+			$resource == 'acct:' . $domain . '@' . $domain) {
+			$res = [
+				'subject' => 'acct:' . $domain . '@' . $domain,
+				'aliases' => [
+					'https://' . $domain . '/i/actor'
+				],
+				'links' => [
+					[
+						'rel' => 'http://webfinger.net/rel/profile-page',
+						'type' => 'text/html',
+						'href' => 'https://' . $domain . '/site/kb/instance-actor'
+					],
+					[
+						'rel' => 'self',
+						'type' => 'application/activity+json',
+						'href' => 'https://' . $domain . '/i/actor'
+					]
+				]
+			];
+			return response()->json($res, 200, [], JSON_UNESCAPED_SLASHES);
+		}
 		$hash = hash('sha256', $resource);
 		$key = 'federation:webfinger:sha256:' . $hash;
 		if($cached = Cache::get($key)) {
 			return response()->json($cached, 200, [], JSON_UNESCAPED_SLASHES);
 		}
-		$domain = config('pixelfed.domain.app');
 		if(strpos($resource, $domain) == false) {
 			return response('', 400);
 		}