Scrape instance nodeinfo #251

Merged
floatingghost merged 15 commits from instance-info into develop 2022-11-06 22:49:39 +00:00
4 changed files with 9 additions and 4 deletions
Showing only changes of commit 053771900c - Show all commits

mix format
Some checks are pending
ci/woodpecker/pr/woodpecker Pipeline is pending
ci/woodpecker/push/woodpecker Pipeline was successful

FloatingGhost 2022-11-04 18:44:30 +00:00

View file

@ -3047,13 +3047,13 @@ config :pleroma, :config_description, [
}
]
},
%{
%{
group: :pleroma,
key: :instances_nodeinfo,
type: :group,
description: "Control favicons for instances",
children: [
%{
%{
key: :enabled,
type: :boolean,
description: "Allow/disallow getting instance nodeinfo"

View file

@ -301,6 +301,7 @@ defmodule Pleroma.Instances.Instance do
def get_cached_by_url(url_or_host) do
url = host(url_or_host)
@cachex.fetch!(:instances_cache, "instances:#{url}", fn _ ->
with %Instance{} = instance <- get_by_url(url) do
{:commit, {:ok, instance}}

View file

@ -237,13 +237,13 @@ defmodule Pleroma.Instances.InstanceTest do
%{url: "https://bad-nodeinfo.example.org/.well-known/nodeinfo"} ->
%Tesla.Env{
status: 200,
body:
"oepsie woepsie de nodeinfo is kapotie uwu"
body: "oepsie woepsie de nodeinfo is kapotie uwu"
}
end)
assert {:ok, true} ==
Instance.update_metadata(URI.parse("https://bad-nodeinfo.example.org/"))
{:ok, instance} = Instance.get_cached_by_url("https://bad-nodeinfo.example.org/")
assert instance.nodeinfo == nil
end
@ -279,12 +279,14 @@ defmodule Pleroma.Instances.InstanceTest do
assert {:ok, true} ==
Instance.update_metadata(URI.parse("https://bad-nodeinfo.example.org/"))
{:ok, instance} = Instance.get_cached_by_url("https://bad-nodeinfo.example.org/")
assert instance.nodeinfo == nil
end
test "doesn't store incredibly long json nodeinfo" do
too_long = String.duplicate("a", 50_000)
Tesla.Mock.mock(fn
%{url: "https://bad-nodeinfo.example.org/"} ->
%Tesla.Env{
@ -315,6 +317,7 @@ defmodule Pleroma.Instances.InstanceTest do
assert {:ok, true} ==
Instance.update_metadata(URI.parse("https://bad-nodeinfo.example.org/"))
{:ok, instance} = Instance.get_cached_by_url("https://bad-nodeinfo.example.org/")
assert instance.nodeinfo == nil
end

View file

@ -121,6 +121,7 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do
test "is parsed when :instance_favicons is enabled", %{user: user, instance: instance} do
clear_config([:instances_favicons, :enabled], true)
assert %{
pleroma: %{
favicon: "https://example.com/favicon.ico"