From 4bf4f369b870d9b07e1586ab9fefc1a8995b0812 Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Mon, 11 Mar 2024 01:32:17 +0100 Subject: [PATCH] [backend/federation] Improve WebFinger handling --- .../Federation/WellKnownController.cs | 22 +++++++++---------- 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/Iceshrimp.Backend/Controllers/Federation/WellKnownController.cs b/Iceshrimp.Backend/Controllers/Federation/WellKnownController.cs index 2fb47e4a..1b215247 100644 --- a/Iceshrimp.Backend/Controllers/Federation/WellKnownController.cs +++ b/Iceshrimp.Backend/Controllers/Federation/WellKnownController.cs @@ -28,9 +28,17 @@ public class WellKnownController(IOptions config, Databa public async Task WebFinger([FromQuery] string resource) { User? user; - if (resource.StartsWith("acct:")) + if (resource.StartsWith($"https://{config.Value.WebDomain}/users/")) { - var split = resource[5..].TrimStart('@').Split('@'); + var id = resource[$"https://{config.Value.WebDomain}/users/".Length..]; + user = await db.Users.FirstOrDefaultAsync(p => p.Id == id && p.Host == null); + } + else + { + if (resource.StartsWith("acct:")) + resource = resource[5..]; + + var split = resource.TrimStart('@').Split('@'); if (split.Length > 2) return NotFound(); if (split.Length == 2) { @@ -41,16 +49,6 @@ public class WellKnownController(IOptions config, Databa user = await db.Users.FirstOrDefaultAsync(p => p.UsernameLower == split[0].ToLowerInvariant() && p.Host == null); } - else if (resource.StartsWith($"https://{config.Value.WebDomain}/users/")) - { - var id = resource[$"https://{config.Value.WebDomain}/users/".Length..]; - user = await db.Users.FirstOrDefaultAsync(p => p.Id == id && p.Host == null); - } - else - { - user = await db.Users.FirstOrDefaultAsync(p => p.UsernameLower == resource.ToLowerInvariant() && - p.Host == null); - } if (user == null) return NotFound();