path:
/pleroma/0001-PATCH-Separate-webfinger-domain-from-host-domain.patch
2.30 KB | plain
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
From 2a57ef2f0aaaec3bc2d8061368d23f02bbd09452 Mon Sep 17 00:00:00 2001
From: "Leah (ctucx)" <leah@ctu.cx>
Date: Wed, 3 Mar 2021 19:19:59 +0100
Subject: [PATCH] Separate webfinger domain from host domain
---
lib/pleroma/web/web_finger.ex | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
diff --git a/lib/pleroma/web/web_finger.ex b/lib/pleroma/web/web_finger.ex
index 15002b2..124367d 100644
--- a/lib/pleroma/web/web_finger.ex
+++ b/lib/pleroma/web/web_finger.ex
@@ -31,8 +31,15 @@ def host_meta do
end
def webfinger(resource, fmt) when fmt in ["XML", "JSON"] do
+ domain = Application.get_env(:pleroma, Pleroma.Web.Endpoint)[:domain]
host = Pleroma.Web.Endpoint.host()
- regex = ~r/(acct:)?(?<username>[a-z0-9A-Z_\.-]+)@#{host}/
+
+ regex =
+ if domain do
+ ~r/(acct:)?(?<username>[a-z0-9A-Z_\.-]+)@(#{host}|#{domain})/
+ else
+ ~r/(acct:)?(?<username>[a-z0-9A-Z_\.-]+)@#{host}/
+ end
with %{"username" => username} <- Regex.named_captures(regex, resource),
%User{} = user <- User.get_cached_by_nickname(username) do
@@ -65,8 +72,15 @@ defp gather_aliases(%User{} = user) do
def represent_user(user, "JSON") do
{:ok, user} = User.ensure_keys_present(user)
+ host =
+ if Application.get_env(:pleroma, Pleroma.Web.Endpoint)[:domain] do
+ Application.get_env(:pleroma, Pleroma.Web.Endpoint)[:domain]
+ else
+ Pleroma.Web.Endpoint.host()
+ end
+
%{
- "subject" => "acct:#{user.nickname}@#{Pleroma.Web.Endpoint.host()}",
+ "subject" => "acct:#{user.nickname}@#{host}",
"aliases" => gather_aliases(user),
"links" => gather_links(user)
}
@@ -84,11 +98,18 @@ def represent_user(user, "XML") do
gather_links(user)
|> Enum.map(fn link -> {:Link, link} end)
+ host =
+ if Application.get_env(:pleroma, Pleroma.Web.Endpoint)[:domain] do
+ Application.get_env(:pleroma, Pleroma.Web.Endpoint)[:domain]
+ else
+ Pleroma.Web.Endpoint.host()
+ end
+
{
:XRD,
%{xmlns: "http://docs.oasis-open.org/ns/xri/xrd-1.0"},
[
- {:Subject, "acct:#{user.nickname}@#{Pleroma.Web.Endpoint.host()}"}
+ {:Subject, "acct:#{user.nickname}@#{host}"}
] ++ aliases ++ links
}
|> XmlBuilder.to_doc()
--
2.30.1