From 8bd2b6eb138ace3408a03c78ecc339fc35b19f10 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 4 Sep 2020 14:24:15 +0300 Subject: [PATCH 001/141] temp hackney fix --- lib/pleroma/http/adapter_helper/hackney.ex | 4 ++++ mix.exs | 5 ++++- mix.lock | 14 +++++++------- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex index f47a671ad..42e3acfec 100644 --- a/lib/pleroma/http/adapter_helper/hackney.ex +++ b/lib/pleroma/http/adapter_helper/hackney.ex @@ -22,5 +22,9 @@ def options(connection_opts \\ [], %URI{} = uri) do |> Pleroma.HTTP.AdapterHelper.maybe_add_proxy(proxy) end + defp add_scheme_opts(opts, %URI{scheme: "https"}) do + Keyword.put(opts, :ssl_options, versions: [:"tlsv1.2", :"tlsv1.1", :tlsv1]) + end + defp add_scheme_opts(opts, _), do: opts end diff --git a/mix.exs b/mix.exs index 4de0c78db..f734e4f61 100644 --- a/mix.exs +++ b/mix.exs @@ -195,7 +195,10 @@ defp deps do {:ex_machina, "~> 2.4", only: :test}, {:credo, "~> 1.4", only: [:dev, :test], runtime: false}, {:mock, "~> 0.3.5", only: :test}, - {:excoveralls, "~> 0.13.1", only: :test}, + # temporary downgrade for excoveralls, hackney and httpoison - until hackney max_connections bug will be fixed + {:excoveralls, "0.12.3", only: :test}, + {:hackney, "1.15.2"}, + {:httpoison, "1.6.2"}, {:mox, "~> 0.5", only: :test}, {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test} ] ++ oauth_deps() diff --git a/mix.lock b/mix.lock index 874ea9215..b97dd6342 100644 --- a/mix.lock +++ b/mix.lock @@ -11,7 +11,7 @@ "calendar": {:hex, :calendar, "1.0.0", "f52073a708528482ec33d0a171954ca610fe2bd28f1e871f247dc7f1565fa807", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "990e9581920c82912a5ee50e62ff5ef96da6b15949a2ee4734f935fdef0f0a6f"}, "captcha": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", "e0f16822d578866e186a0974d65ad58cddc1e2ab", [ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"]}, "castore": {:hex, :castore, "0.1.7", "1ca19eee705cde48c9e809e37fdd0730510752cc397745e550f6065a56a701e9", [:mix], [], "hexpm", "a2ae2c13d40e9c308387f1aceb14786dca019ebc2a11484fb2a9f797ea0aa0d8"}, - "certifi": {:hex, :certifi, "2.5.2", "b7cfeae9d2ed395695dd8201c57a2d019c0c43ecaf8b8bcb9320b40d6662f340", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "3b3b5f36493004ac3455966991eaf6e768ce9884693d9968055aeeeb1e575040"}, + "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.3.1", "7fe612b739c78c9c1a75186ef2d322ce4d25032d119823269d0aa1e2f1e20025", [:mix], [], "hexpm", "d6222483060c17f0977fad1b7401ef0c5863c985a64352755f366aee3799c245"}, "concurrent_limiter": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", "55e92f84b4ed531bd487952a71040a9c69dc2807", [ref: "55e92f84b4ed531bd487952a71040a9c69dc2807"]}, @@ -41,7 +41,7 @@ "ex_doc": {:hex, :ex_doc, "0.22.2", "03a2a58bdd2ba0d83d004507c4ee113b9c521956938298eba16e55cc4aba4a6c", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "cf60e1b3e2efe317095b6bb79651f83a2c1b3edcb4d319c421d7fcda8b3aff26"}, "ex_machina": {:hex, :ex_machina, "2.4.0", "09a34c5d371bfb5f78399029194a8ff67aff340ebe8ba19040181af35315eabb", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "a20bc9ddc721b33ea913b93666c5d0bdca5cbad7a67540784ae277228832d72c"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, - "excoveralls": {:hex, :excoveralls, "0.13.1", "b9f1697f7c9e0cfe15d1a1d737fb169c398803ffcbc57e672aa007e9fd42864c", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b4bb550e045def1b4d531a37fb766cbbe1307f7628bf8f0414168b3f52021cce"}, + "excoveralls": {:hex, :excoveralls, "0.12.3", "2142be7cb978a3ae78385487edda6d1aff0e482ffc6123877bb7270a8ffbcfe0", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "568a3e616c264283f5dea5b020783ae40eef3f7ee2163f7a67cbd7b35bcadada"}, "fast_html": {:hex, :fast_html, "2.0.4", "4910ee49f2f6b19692e3bf30bf97f1b6b7dac489cd6b0f34cd0fe3042c56ba30", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "3bb49d541dfc02ad5e425904f53376d758c09f89e521afc7d2b174b3227761ea"}, "fast_sanitize": {:hex, :fast_sanitize, "0.2.2", "3cbbaebaea6043865dfb5b4ecb0f1af066ad410a51470e353714b10c42007b81", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "69f204db9250afa94a0d559d9110139850f57de2b081719fbafa1e9a89e94466"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, @@ -51,12 +51,12 @@ "gen_state_machine": {:hex, :gen_state_machine, "2.0.5", "9ac15ec6e66acac994cc442dcc2c6f9796cf380ec4b08267223014be1c728a95", [:mix], [], "hexpm"}, "gettext": {:hex, :gettext, "0.18.0", "406d6b9e0e3278162c2ae1de0a60270452c553536772167e2d701f028116f870", [:mix], [], "hexpm", "c3f850be6367ebe1a08616c2158affe4a23231c70391050bf359d5f92f66a571"}, "gun": {:git, "https://github.com/ninenines/gun.git", "921c47146b2d9567eac7e9a4d2ccc60fffd4f327", [ref: "921c47146b2d9567eac7e9a4d2ccc60fffd4f327"]}, - "hackney": {:hex, :hackney, "1.16.0", "5096ac8e823e3a441477b2d187e30dd3fff1a82991a806b2003845ce72ce2d84", [:rebar3], [{:certifi, "2.5.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.1", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.0", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.6", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "3bf0bebbd5d3092a3543b783bf065165fa5d3ad4b899b836810e513064134e18"}, + "hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "e0100f8ef7d1124222c11ad362c857d3df7cb5f4204054f9f0f4a728666591fc"}, "html_entities": {:hex, :html_entities, "0.5.1", "1c9715058b42c35a2ab65edc5b36d0ea66dd083767bef6e3edb57870ef556549", [:mix], [], "hexpm", "30efab070904eb897ff05cd52fa61c1025d7f8ef3a9ca250bc4e6513d16c32de"}, "html_sanitize_ex": {:hex, :html_sanitize_ex, "1.3.0", "f005ad692b717691203f940c686208aa3d8ffd9dd4bb3699240096a51fa9564e", [:mix], [{:mochiweb, "~> 2.15", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm"}, "http_signatures": {:hex, :http_signatures, "0.1.0", "4e4b501a936dbf4cb5222597038a89ea10781776770d2e185849fa829686b34c", [:mix], [], "hexpm", "f8a7b3731e3fd17d38fa6e343fcad7b03d6874a3b0a108c8568a71ed9c2cf824"}, - "httpoison": {:hex, :httpoison, "1.7.0", "abba7d086233c2d8574726227b6c2c4f6e53c4deae7fe5f6de531162ce9929a0", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "975cc87c845a103d3d1ea1ccfd68a2700c211a434d8428b10c323dc95dc5b980"}, - "idna": {:hex, :idna, "6.0.1", "1d038fb2e7668ce41fbf681d2c45902e52b3cb9e9c77b55334353b222c2ee50c", [:rebar3], [{:unicode_util_compat, "0.5.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a02c8a1c4fd601215bb0b0324c8a6986749f807ce35f25449ec9e69758708122"}, + "httpoison": {:hex, :httpoison, "1.6.2", "ace7c8d3a361cebccbed19c283c349b3d26991eff73a1eaaa8abae2e3c8089b6", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "aa2c74bd271af34239a3948779612f87df2422c2fdcfdbcec28d9c105f0773fe"}, + "idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"}, "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, "jason": {:hex, :jason, "1.2.1", "12b22825e22f468c02eb3e4b9985f3d0cb8dc40b9bd704730efa11abd2708c44", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b659b8571deedf60f79c5a608e15414085fa141344e2716fbd6988a084b5f993"}, "joken": {:hex, :joken, "2.2.0", "2daa1b12be05184aff7b5ace1d43ca1f81345962285fff3f88db74927c954d3a", [:mix], [{:jose, "~> 1.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "b4f92e30388206f869dd25d1af628a1d99d7586e5cf0672f64d4df84c4d2f5e9"}, @@ -105,7 +105,7 @@ "recon": {:hex, :recon, "2.5.1", "430ffa60685ac1efdfb1fe4c97b8767c92d0d92e6e7c3e8621559ba77598678a", [:mix, :rebar3], [], "hexpm", "5721c6b6d50122d8f68cccac712caa1231f97894bab779eff5ff0f886cb44648"}, "remote_ip": {:git, "https://git.pleroma.social/pleroma/remote_ip.git", "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8", [ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"]}, "sleeplocks": {:hex, :sleeplocks, "1.1.1", "3d462a0639a6ef36cc75d6038b7393ae537ab394641beb59830a1b8271faeed3", [:rebar3], [], "hexpm", "84ee37aeff4d0d92b290fff986d6a95ac5eedf9b383fadfd1d88e9b84a1c02e1"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"}, + "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"}, "sweet_xml": {:hex, :sweet_xml, "0.6.6", "fc3e91ec5dd7c787b6195757fbcf0abc670cee1e4172687b45183032221b66b8", [:mix], [], "hexpm", "2e1ec458f892ffa81f9f8386e3f35a1af6db7a7a37748a64478f13163a1f3573"}, "swoosh": {:hex, :swoosh, "1.0.0", "c547cfc83f30e12d5d1fdcb623d7de2c2e29a5becfc68bf8f42ba4d23d2c2756", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "b3b08e463f876cb6167f7168e9ad99a069a724e124bcee61847e0e1ed13f4a0d"}, "syslog": {:hex, :syslog, "1.1.0", "6419a232bea84f07b56dc575225007ffe34d9fdc91abe6f1b2f254fd71d8efc2", [:rebar3], [], "hexpm", "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1"}, @@ -115,7 +115,7 @@ "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"}, "tzdata": {:hex, :tzdata, "1.0.3", "73470ad29dde46e350c60a66e6b360d3b99d2d18b74c4c349dbebbc27a09a3eb", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a6e1ee7003c4d04ecbd21dd3ec690d4c6662db5d3bbdd7262d53cdf5e7c746c1"}, "ueberauth": {:hex, :ueberauth, "0.6.3", "d42ace28b870e8072cf30e32e385579c57b9cc96ec74fa1f30f30da9c14f3cc0", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "afc293d8a1140d6591b53e3eaf415ca92842cb1d32fad3c450c6f045f7f91b60"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.5.0", "8516502659002cec19e244ebd90d312183064be95025a319a6c7e89f4bccd65b", [:rebar3], [], "hexpm", "d48d002e15f5cc105a696cf2f1bbb3fc72b4b770a184d8420c8db20da2674b38"}, + "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, "web_push_encryption": {:hex, :web_push_encryption, "0.3.0", "598b5135e696fd1404dc8d0d7c0fa2c027244a4e5d5e5a98ba267f14fdeaabc8", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "f10bdd1afe527ede694749fb77a2f22f146a51b054c7fa541c9fd920fba7c875"}, "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []}, From 473458b0fbecb05121b235f525aefcef34f0409e Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 4 Sep 2020 14:45:30 +0300 Subject: [PATCH 002/141] fix for ReverseProxy --- lib/pleroma/reverse_proxy/client/hackney.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pleroma/reverse_proxy/client/hackney.ex b/lib/pleroma/reverse_proxy/client/hackney.ex index e84118a90..ad988fac3 100644 --- a/lib/pleroma/reverse_proxy/client/hackney.ex +++ b/lib/pleroma/reverse_proxy/client/hackney.ex @@ -7,6 +7,7 @@ defmodule Pleroma.ReverseProxy.Client.Hackney do @impl true def request(method, url, headers, body, opts \\ []) do + opts = Keyword.put(opts, :ssl_options, versions: [:"tlsv1.2", :"tlsv1.1", :tlsv1]) :hackney.request(method, url, headers, body, opts) end From 0d91f65284f99bded89c0400e976e0ffa5bc202f Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 4 Sep 2020 07:52:22 +0200 Subject: [PATCH 003/141] Prevent AccountView and instance.get_or_update_favicon fails --- lib/pleroma/instances/instance.ex | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 711c42158..ef5d17de4 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -145,6 +145,8 @@ def get_or_update_favicon(%URI{host: host} = instance_uri) do favicon end + rescue + _ -> nil end defp scrape_favicon(%URI{} = instance_uri) do @@ -159,7 +161,8 @@ defp scrape_favicon(%URI{} = instance_uri) do |> Floki.attribute("link[rel=icon]", "href") |> List.first(), favicon <- URI.merge(instance_uri, favicon_rel) |> to_string(), - true <- is_binary(favicon) do + true <- is_binary(favicon), + true <- String.length(favicon) <= 255 do favicon else _ -> nil From de7e2ae0b5c296d0896f5d3738cba0fcddfe54f1 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 5 Sep 2020 11:15:27 +0300 Subject: [PATCH 004/141] use override flag for hackney dependency --- mix.exs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mix.exs b/mix.exs index f734e4f61..fc1a83d91 100644 --- a/mix.exs +++ b/mix.exs @@ -195,10 +195,9 @@ defp deps do {:ex_machina, "~> 2.4", only: :test}, {:credo, "~> 1.4", only: [:dev, :test], runtime: false}, {:mock, "~> 0.3.5", only: :test}, - # temporary downgrade for excoveralls, hackney and httpoison - until hackney max_connections bug will be fixed + # temporary downgrade for excoveralls, hackney until hackney max_connections bug will be fixed {:excoveralls, "0.12.3", only: :test}, - {:hackney, "1.15.2"}, - {:httpoison, "1.6.2"}, + {:hackney, "1.15.2", override: true}, {:mox, "~> 0.5", only: :test}, {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test} ] ++ oauth_deps() From e198ba492e5cb1b6ff81775db08298bfcdf1454a Mon Sep 17 00:00:00 2001 From: rinpatch Date: Sat, 5 Sep 2020 12:37:27 +0300 Subject: [PATCH 005/141] Rich Media: Do not cache URLs for preview statuses Closes #1987 --- CHANGELOG.md | 1 + lib/pleroma/html.ex | 32 +++++++++------- lib/pleroma/web/rich_media/helpers.ex | 2 +- test/html_test.exs | 14 +++---- .../controllers/status_controller_test.exs | 38 ++++++++++++++++++- 5 files changed, 65 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdd5b94a8..4662045ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. +- Mastodon API: Cards being wrong for preview statuses due to cache key collision - Password resets no longer processed for deactivated accounts ## [2.1.0] - 2020-08-28 diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index 20b02f091..43e9145be 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -100,21 +100,27 @@ defp generate_scrubber_signature(scrubbers) do end) end - def extract_first_external_url(_, nil), do: {:error, "No content"} + def extract_first_external_url_from_object(%{data: %{"content" => content}} = object) + when is_binary(content) do + unless object.data["fake"] do + key = "URL|#{object.id}" - def extract_first_external_url(object, content) do - key = "URL|#{object.id}" + Cachex.fetch!(:scrubber_cache, key, fn _key -> + {:commit, {:ok, extract_first_external_url(content)}} + end) + else + {:ok, extract_first_external_url(content)} + end + end - Cachex.fetch!(:scrubber_cache, key, fn _key -> - result = - content - |> Floki.parse_fragment!() - |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])") - |> Enum.take(1) - |> Floki.attribute("href") - |> Enum.at(0) + def extract_first_external_url_from_object(_), do: {:error, :no_content} - {:commit, {:ok, result}} - end) + def extract_first_external_url(content) do + content + |> Floki.parse_fragment!() + |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])") + |> Enum.take(1) + |> Floki.attribute("href") + |> Enum.at(0) end end diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 2fb482b51..752ca9f81 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -58,7 +58,7 @@ def fetch_data_for_object(object) do with true <- Config.get([:rich_media, :enabled]), false <- object.data["sensitive"] || false, {:ok, page_url} <- - HTML.extract_first_external_url(object, object.data["content"]), + HTML.extract_first_external_url_from_object(object), :ok <- validate_page_url(page_url), {:ok, rich_media} <- Parser.parse(page_url) do %{page_url: page_url, rich_media: rich_media} diff --git a/test/html_test.exs b/test/html_test.exs index f8907c8b4..7d3756884 100644 --- a/test/html_test.exs +++ b/test/html_test.exs @@ -165,7 +165,7 @@ test "filters invalid microformats markup" do end end - describe "extract_first_external_url" do + describe "extract_first_external_url_from_object" do test "extracts the url" do user = insert(:user) @@ -176,7 +176,7 @@ test "extracts the url" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://github.com/komeiji-satori/Dress" end @@ -191,7 +191,7 @@ test "skips mentions" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://github.com/syuilo/misskey/blob/develop/docs/setup.en.md" @@ -207,7 +207,7 @@ test "skips hashtags" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140" end @@ -223,7 +223,7 @@ test "skips microformats hashtags" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140" end @@ -235,7 +235,7 @@ test "does not crash when there is an HTML entity in a link" do object = Object.normalize(activity) - assert {:ok, nil} = HTML.extract_first_external_url(object, object.data["content"]) + assert {:ok, nil} = HTML.extract_first_external_url_from_object(object) end test "skips attachment links" do @@ -249,7 +249,7 @@ test "skips attachment links" do object = Object.normalize(activity) - assert {:ok, nil} = HTML.extract_first_external_url(object, object.data["content"]) + assert {:ok, nil} = HTML.extract_first_external_url_from_object(object) end end end diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 5955d8334..f221884e7 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -296,9 +296,45 @@ test "posting a fake status", %{conn: conn} do assert real_status == fake_status end + test "fake statuses' preview card is not cached", %{conn: conn} do + clear_config([:rich_media, :enabled], true) + + Tesla.Mock.mock(fn + %{ + method: :get, + url: "https://example.com/twitter-card" + } -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/twitter_card.html")} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + + conn1 = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{ + "status" => "https://example.com/ogp", + "preview" => true + }) + + conn2 = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{ + "status" => "https://example.com/twitter-card", + "preview" => true + }) + + assert %{"card" => %{"title" => "The Rock"}} = json_response_and_validate_schema(conn1, 200) + + assert %{"card" => %{"title" => "Small Island Developing States Photo Submission"}} = + json_response_and_validate_schema(conn2, 200) + end + test "posting a status with OGP link preview", %{conn: conn} do Tesla.Mock.mock(fn env -> apply(HttpRequestMock, :request, [env]) end) - Config.put([:rich_media, :enabled], true) + clear_config([:rich_media, :enabled], true) conn = conn From 170599c390e7c82bdff0d4180d04b2f0f3906f35 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Sat, 5 Sep 2020 22:00:51 +0300 Subject: [PATCH 006/141] RichMedia: do not log webpages missing metadata as errors Also fixes the return value of Parser.parse on errors, previously was just `:ok` due to the logger call in the end --- lib/pleroma/web/rich_media/parser.ex | 11 ++++++++--- test/web/rich_media/parser_test.exs | 4 +--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index e98c743ca..5727fda18 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -21,8 +21,13 @@ def parse(url) do {:ok, _} <- set_ttl_based_on_image(data, url) do {:ok, data} else + {:error, {:invalid_metadata, data}} = e -> + Logger.debug(fn -> "Incomplete or invalid metadata for #{url}: #{inspect(data)}" end) + e + error -> - Logger.error(fn -> "Rich media error: #{inspect(error)}" end) + Logger.error(fn -> "Rich media error for #{url}: #{inspect(error)}" end) + error end end @@ -90,7 +95,7 @@ defp get_ttl_from_image(data, url) do end) end - defp parse_url(url) do + def parse_url(url) do with {:ok, %Tesla.Env{body: html}} <- Pleroma.Web.RichMedia.Helpers.rich_media_get(url), {:ok, html} <- Floki.parse_document(html) do html @@ -116,7 +121,7 @@ defp check_parsed_data(%{"title" => title} = data) end defp check_parsed_data(data) do - {:error, "Found metadata was invalid or incomplete: #{inspect(data)}"} + {:error, {:invalid_metadata, data}} end defp clean_parsed_data(data) do diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index 1e09cbf84..21ae35f8b 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -66,9 +66,7 @@ test "returns error when no metadata present" do end test "doesn't just add a title" do - assert Parser.parse("http://example.com/non-ogp") == - {:error, - "Found metadata was invalid or incomplete: %{\"url\" => \"http://example.com/non-ogp\"}"} + assert {:error, {:invalid_metadata, _}} = Parser.parse("http://example.com/non-ogp") end test "parses ogp" do From 0b4fa769f4332e50cdc5f643bada18f2e50430de Mon Sep 17 00:00:00 2001 From: rinpatch Date: Sun, 6 Sep 2020 11:38:38 +0300 Subject: [PATCH 007/141] Add a copy of CC-BY-4.0 to the repo We mentined it in COPYING, but didn't actually have a copy in the repo. --- CC-BY-4.0 | 395 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 395 insertions(+) create mode 100644 CC-BY-4.0 diff --git a/CC-BY-4.0 b/CC-BY-4.0 new file mode 100644 index 000000000..4ea99c213 --- /dev/null +++ b/CC-BY-4.0 @@ -0,0 +1,395 @@ +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. From 08aef7dd4e054c5ed02e359b61fe57daad97fbde Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 5 Sep 2020 06:38:07 +0200 Subject: [PATCH 008/141] instance: Log catch favicon errors as warnings --- lib/pleroma/instances/instance.ex | 16 ++++++++++---- test/web/instances/instance_test.exs | 33 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index ef5d17de4..8bf53c090 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -14,6 +14,8 @@ defmodule Pleroma.Instances.Instance do import Ecto.Query import Ecto.Changeset + require Logger + schema "instances" do field(:host, :string) field(:unreachable_since, :naive_datetime_usec) @@ -146,7 +148,9 @@ def get_or_update_favicon(%URI{host: host} = instance_uri) do favicon end rescue - _ -> nil + e -> + Logger.warn("Instance.get_or_update_favicon(\"#{host}\") error: #{inspect(e)}") + nil end defp scrape_favicon(%URI{} = instance_uri) do @@ -161,14 +165,18 @@ defp scrape_favicon(%URI{} = instance_uri) do |> Floki.attribute("link[rel=icon]", "href") |> List.first(), favicon <- URI.merge(instance_uri, favicon_rel) |> to_string(), - true <- is_binary(favicon), - true <- String.length(favicon) <= 255 do + true <- is_binary(favicon) do favicon else _ -> nil end rescue - _ -> nil + e -> + Logger.warn( + "Instance.scrape_favicon(\"#{to_string(instance_uri)}\") error: #{inspect(e)}" + ) + + nil end end end diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index e463200ca..dc6ace843 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.Instances.InstanceTest do use Pleroma.DataCase + import ExUnit.CaptureLog import Pleroma.Factory setup_all do: clear_config([:instance, :federation_reachability_timeout_days], 1) @@ -97,4 +98,36 @@ test "does NOT modify `unreachable_since` value of existing record in case it's assert initial_value == instance.unreachable_since end end + + test "Scrapes favicon URLs" do + Tesla.Mock.mock(fn %{url: "https://favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[] + } + end) + + assert "https://favicon.example.org/favicon.png" == + Instance.get_or_update_favicon(URI.parse("https://favicon.example.org/")) + end + + test "Returns nil on too long favicon URLs" do + long_favicon_url = + "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" + + Tesla.Mock.mock(fn %{url: "https://long-favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[] + } + end) + + assert capture_log(fn -> + assert nil == + Instance.get_or_update_favicon( + URI.parse("https://long-favicon.example.org/") + ) + end) =~ + "Instance.get_or_update_favicon(\"long-favicon.example.org\") error: %Postgrex.Error{" + end end From 1984ff310341766adfc224342c9d29272f80e9cb Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 7 Sep 2020 15:16:04 +0300 Subject: [PATCH 009/141] Add a changelog entry for hackney downgrade --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdd5b94a8..25645c185 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Rich media failure tracking (along with `:failure_backoff` option) ### Fixed +- Possible OOM errors with the default HTTP adapter - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. From 8628e1b216339eaf0c294aa8f01911a9399d912d Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 7 Sep 2020 15:21:20 +0300 Subject: [PATCH 010/141] switch back to upstream tesla The patch we required got merged upstream: https://github.com/teamon/tesla/commit/9f7261ca49f9f901ceb73b60219ad6f8a9f6aa30 --- mix.exs | 4 ++-- mix.lock | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mix.exs b/mix.exs index c324960c5..8f69a15f2 100644 --- a/mix.exs +++ b/mix.exs @@ -134,8 +134,8 @@ defp deps do {:cachex, "~> 3.2"}, {:poison, "~> 3.0", override: true}, {:tesla, - git: "https://git.pleroma.social/pleroma/elixir-libraries/tesla.git", - ref: "3a2789d8535f7b520ebbadc4494227e5ba0e5365", + git: "https://github.com/teamon/tesla/", + ref: "9f7261ca49f9f901ceb73b60219ad6f8a9f6aa30", override: true}, {:castore, "~> 0.1"}, {:cowlib, "~> 2.9", override: true}, diff --git a/mix.lock b/mix.lock index deb07eb68..058428e66 100644 --- a/mix.lock +++ b/mix.lock @@ -110,7 +110,7 @@ "swoosh": {:hex, :swoosh, "1.0.0", "c547cfc83f30e12d5d1fdcb623d7de2c2e29a5becfc68bf8f42ba4d23d2c2756", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "b3b08e463f876cb6167f7168e9ad99a069a724e124bcee61847e0e1ed13f4a0d"}, "syslog": {:hex, :syslog, "1.1.0", "6419a232bea84f07b56dc575225007ffe34d9fdc91abe6f1b2f254fd71d8efc2", [:rebar3], [], "hexpm", "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1"}, "telemetry": {:hex, :telemetry, "0.4.2", "2808c992455e08d6177322f14d3bdb6b625fbcfd233a73505870d8738a2f4599", [:rebar3], [], "hexpm", "2d1419bd9dda6a206d7b5852179511722e2b18812310d304620c7bd92a13fcef"}, - "tesla": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/tesla.git", "3a2789d8535f7b520ebbadc4494227e5ba0e5365", [ref: "3a2789d8535f7b520ebbadc4494227e5ba0e5365"]}, + "tesla": {:git, "https://github.com/teamon/tesla/", "9f7261ca49f9f901ceb73b60219ad6f8a9f6aa30", [ref: "9f7261ca49f9f901ceb73b60219ad6f8a9f6aa30"]}, "timex": {:hex, :timex, "3.6.2", "845cdeb6119e2fef10751c0b247b6c59d86d78554c83f78db612e3290f819bc2", [:mix], [{:combine, "~> 0.10", [hex: :combine, repo: "hexpm", optional: false]}, {:gettext, "~> 0.10", [hex: :gettext, repo: "hexpm", optional: false]}, {:tzdata, "~> 0.1.8 or ~> 0.5 or ~> 1.0.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "26030b46199d02a590be61c2394b37ea25a3664c02fafbeca0b24c972025d47a"}, "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"}, "tzdata": {:hex, :tzdata, "1.0.3", "73470ad29dde46e350c60a66e6b360d3b99d2d18b74c4c349dbebbc27a09a3eb", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a6e1ee7003c4d04ecbd21dd3ec690d4c6662db5d3bbdd7262d53cdf5e7c746c1"}, From ee67c98e550310813cfdb9242e5fab2e566e1e2a Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sun, 6 Sep 2020 12:13:26 +0300 Subject: [PATCH 011/141] removing Stats worker from Oban cron jobs --- CHANGELOG.md | 8 ++ config/config.exs | 3 +- config/description.exs | 1 - lib/mix/pleroma.ex | 1 + lib/pleroma/application.ex | 1 + lib/pleroma/config/oban.ex | 30 ++++++++ lib/pleroma/stats.ex | 76 ++++++++++++++----- lib/pleroma/workers/cron/stats_worker.ex | 17 ----- ...ove_cron_stats_worker_from_oban_config.exs | 19 +++++ test/stats_test.exs | 21 ++--- 10 files changed, 127 insertions(+), 50 deletions(-) create mode 100644 lib/pleroma/config/oban.ex delete mode 100644 lib/pleroma/workers/cron/stats_worker.ex create mode 100644 priv/repo/migrations/20200906072147_remove_cron_stats_worker_from_oban_config.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e6353a4e..78aae6f07 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## unreleased-patch - ??? ### Added + - Rich media failure tracking (along with `:failure_backoff` option) ### Fixed + - Possible OOM errors with the default HTTP adapter - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. @@ -16,6 +18,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Cards being wrong for preview statuses due to cache key collision - Password resets no longer processed for deactivated accounts +## Unreleased + +### Removed + +- **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. + ## [2.1.0] - 2020-08-28 ### Changed diff --git a/config/config.exs b/config/config.exs index ed37b93c0..d631c3962 100644 --- a/config/config.exs +++ b/config/config.exs @@ -546,7 +546,6 @@ plugins: [Oban.Plugins.Pruner], crontab: [ {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker}, - {"0 * * * *", Pleroma.Workers.Cron.StatsWorker}, {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} @@ -672,7 +671,7 @@ # With no frontend configuration, the bundled files from the `static` directory will # be used. # -# config :pleroma, :frontends, +# config :pleroma, :frontends, # primary: %{"name" => "pleroma-fe", "ref" => "develop"}, # admin: %{"name" => "admin-fe", "ref" => "stable"}, # available: %{...} diff --git a/config/description.exs b/config/description.exs index 5e08ba109..18c133f02 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2291,7 +2291,6 @@ description: "Settings for cron background jobs", suggestions: [ {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker}, - {"0 * * * *", Pleroma.Workers.Cron.StatsWorker}, {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} diff --git a/lib/mix/pleroma.ex b/lib/mix/pleroma.ex index fe9b0d16c..49ba2aae4 100644 --- a/lib/mix/pleroma.ex +++ b/lib/mix/pleroma.ex @@ -18,6 +18,7 @@ defmodule Mix.Pleroma do @doc "Common functions to be reused in mix tasks" def start_pleroma do Pleroma.Config.Holder.save_default() + Pleroma.Config.Oban.warn() Application.put_env(:phoenix, :serve_endpoints, false, persistent: true) if Pleroma.Config.get(:env) != :test do diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex index 33b1e3872..c39e24919 100644 --- a/lib/pleroma/application.ex +++ b/lib/pleroma/application.ex @@ -50,6 +50,7 @@ def start(_type, _args) do Pleroma.Telemetry.Logger.attach() Config.Holder.save_default() Pleroma.HTML.compile_scrubbers() + Pleroma.Config.Oban.warn() Config.DeprecationWarnings.warn() Pleroma.Plugs.HTTPSecurityPlug.warn_if_disabled() Pleroma.ApplicationRequirements.verify!() diff --git a/lib/pleroma/config/oban.ex b/lib/pleroma/config/oban.ex new file mode 100644 index 000000000..c2d56ebab --- /dev/null +++ b/lib/pleroma/config/oban.ex @@ -0,0 +1,30 @@ +defmodule Pleroma.Config.Oban do + require Logger + + def warn do + oban_config = Pleroma.Config.get(Oban) + + crontab = + [Pleroma.Workers.Cron.StatsWorker] + |> Enum.reduce(oban_config[:crontab], fn removed_worker, acc -> + with acc when is_list(acc) <- acc, + setting when is_tuple(setting) <- + Enum.find(acc, fn {_, worker} -> worker == removed_worker end) do + """ + !!!OBAN CONFIG WARNING!!! + You are using old workers in Oban crontab settings, which were removed. + Please, remove setting from crontab in your config file (prod.secret.exs): #{ + inspect(setting) + } + """ + |> Logger.warn() + + List.delete(acc, setting) + else + _ -> acc + end + end) + + Pleroma.Config.put(Oban, Keyword.put(oban_config, :crontab, crontab)) + end +end diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index 9a03f01db..e7f8d272c 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -3,12 +3,15 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Stats do + use GenServer + import Ecto.Query + alias Pleroma.CounterCache alias Pleroma.Repo alias Pleroma.User - use GenServer + @interval :timer.seconds(60) def start_link(_) do GenServer.start_link( @@ -18,6 +21,11 @@ def start_link(_) do ) end + @impl true + def init(_args) do + {:ok, nil, {:continue, :calculate_stats}} + end + @doc "Performs update stats" def force_update do GenServer.call(__MODULE__, :force_update) @@ -29,7 +37,11 @@ def do_collect do end @doc "Returns stats data" - @spec get_stats() :: %{domain_count: integer(), status_count: integer(), user_count: integer()} + @spec get_stats() :: %{ + domain_count: non_neg_integer(), + status_count: non_neg_integer(), + user_count: non_neg_integer() + } def get_stats do %{stats: stats} = GenServer.call(__MODULE__, :get_state) @@ -44,25 +56,14 @@ def get_peers do peers end - def init(_args) do - {:ok, calculate_stat_data()} - end - - def handle_call(:force_update, _from, _state) do - new_stats = calculate_stat_data() - {:reply, new_stats, new_stats} - end - - def handle_call(:get_state, _from, state) do - {:reply, state, state} - end - - def handle_cast(:run_update, _state) do - new_stats = calculate_stat_data() - - {:noreply, new_stats} - end - + @spec calculate_stat_data() :: %{ + peers: list(), + stats: %{ + domain_count: non_neg_integer(), + status_count: non_neg_integer(), + user_count: non_neg_integer() + } + } def calculate_stat_data do peers = from( @@ -97,6 +98,7 @@ def calculate_stat_data do } end + @spec get_status_visibility_count(String.t() | nil) :: map() def get_status_visibility_count(instance \\ nil) do if is_nil(instance) do CounterCache.get_sum() @@ -104,4 +106,36 @@ def get_status_visibility_count(instance \\ nil) do CounterCache.get_by_instance(instance) end end + + @impl true + def handle_continue(:calculate_stats, _) do + stats = calculate_stat_data() + Process.send_after(self(), :run_update, @interval) + {:noreply, stats} + end + + @impl true + def handle_call(:force_update, _from, _state) do + new_stats = calculate_stat_data() + {:reply, new_stats, new_stats} + end + + @impl true + def handle_call(:get_state, _from, state) do + {:reply, state, state} + end + + @impl true + def handle_cast(:run_update, _state) do + new_stats = calculate_stat_data() + + {:noreply, new_stats} + end + + @impl true + def handle_info(:run_update, _) do + new_stats = calculate_stat_data() + Process.send_after(self(), :run_update, @interval) + {:noreply, new_stats} + end end diff --git a/lib/pleroma/workers/cron/stats_worker.ex b/lib/pleroma/workers/cron/stats_worker.ex deleted file mode 100644 index 6a79540bc..000000000 --- a/lib/pleroma/workers/cron/stats_worker.ex +++ /dev/null @@ -1,17 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.StatsWorker do - @moduledoc """ - The worker to update peers statistics. - """ - - use Oban.Worker, queue: "background" - - @impl Oban.Worker - def perform(_job) do - Pleroma.Stats.do_collect() - :ok - end -end diff --git a/priv/repo/migrations/20200906072147_remove_cron_stats_worker_from_oban_config.exs b/priv/repo/migrations/20200906072147_remove_cron_stats_worker_from_oban_config.exs new file mode 100644 index 000000000..022f21dc7 --- /dev/null +++ b/priv/repo/migrations/20200906072147_remove_cron_stats_worker_from_oban_config.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.RemoveCronStatsWorkerFromObanConfig do + use Ecto.Migration + + def change do + with %Pleroma.ConfigDB{} = config <- + Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Oban}), + crontab when is_list(crontab) <- config.value[:crontab], + index when is_integer(index) <- + Enum.find_index(crontab, fn {_, worker} -> + worker == Pleroma.Workers.Cron.StatsWorker + end) do + updated_value = Keyword.put(config.value, :crontab, List.delete_at(crontab, index)) + + config + |> Ecto.Changeset.change(value: updated_value) + |> Pleroma.Repo.update() + end + end +end diff --git a/test/stats_test.exs b/test/stats_test.exs index f09d8d31a..74bf785b0 100644 --- a/test/stats_test.exs +++ b/test/stats_test.exs @@ -4,7 +4,10 @@ defmodule Pleroma.StatsTest do use Pleroma.DataCase + import Pleroma.Factory + + alias Pleroma.Stats alias Pleroma.Web.CommonAPI describe "user count" do @@ -13,7 +16,7 @@ test "it ignores internal users" do _internal = insert(:user, local: true, nickname: nil) _internal = Pleroma.Web.ActivityPub.Relay.get_actor() - assert match?(%{stats: %{user_count: 1}}, Pleroma.Stats.calculate_stat_data()) + assert match?(%{stats: %{user_count: 1}}, Stats.calculate_stat_data()) end end @@ -47,23 +50,23 @@ test "on new status" do end) assert %{"direct" => 3, "private" => 4, "public" => 1, "unlisted" => 2} = - Pleroma.Stats.get_status_visibility_count() + Stats.get_status_visibility_count() end test "on status delete" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{visibility: "public", status: "hey"}) - assert %{"public" => 1} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 1} = Stats.get_status_visibility_count() CommonAPI.delete(activity.id, user) - assert %{"public" => 0} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 0} = Stats.get_status_visibility_count() end test "on status visibility update" do user = insert(:user) {:ok, activity} = CommonAPI.post(user, %{visibility: "public", status: "hey"}) - assert %{"public" => 1, "private" => 0} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 1, "private" => 0} = Stats.get_status_visibility_count() {:ok, _} = CommonAPI.update_activity_scope(activity.id, %{visibility: "private"}) - assert %{"public" => 0, "private" => 1} = Pleroma.Stats.get_status_visibility_count() + assert %{"public" => 0, "private" => 1} = Stats.get_status_visibility_count() end test "doesn't count unrelated activities" do @@ -75,7 +78,7 @@ test "doesn't count unrelated activities" do CommonAPI.repeat(activity.id, other_user) assert %{"direct" => 0, "private" => 0, "public" => 1, "unlisted" => 0} = - Pleroma.Stats.get_status_visibility_count() + Stats.get_status_visibility_count() end end @@ -110,10 +113,10 @@ test "single instance" do end) assert %{"direct" => 10, "private" => 0, "public" => 1, "unlisted" => 5} = - Pleroma.Stats.get_status_visibility_count(local_instance) + Stats.get_status_visibility_count(local_instance) assert %{"direct" => 0, "private" => 20, "public" => 0, "unlisted" => 0} = - Pleroma.Stats.get_status_visibility_count(instance2) + Stats.get_status_visibility_count(instance2) end end end From 8c6485c470c1a7cd6ec4b63867d94e9724c4502b Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 7 Sep 2020 19:22:56 +0300 Subject: [PATCH 012/141] CHANGELOG.md: move Unreleased section ahead of unreleased-patch --- CHANGELOG.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78aae6f07..46f1e859b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## Unreleased + +### Removed + +- **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. + + ## unreleased-patch - ??? ### Added @@ -18,11 +25,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Cards being wrong for preview statuses due to cache key collision - Password resets no longer processed for deactivated accounts -## Unreleased - -### Removed - -- **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. ## [2.1.0] - 2020-08-28 From a83916fdacac7b11ca478ef9a61b32dd269c8fd2 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 4 Sep 2020 19:05:08 +0300 Subject: [PATCH 013/141] adapter options unification not needed options deletion --- config/config.exs | 10 +++++----- config/description.exs | 8 +++++++- docs/configuration/cheatsheet.md | 4 ++-- lib/mix/tasks/pleroma/frontend.ex | 4 +--- lib/pleroma/gun/conn.ex | 8 ++++---- lib/pleroma/http/adapter_helper.ex | 2 +- lib/pleroma/http/adapter_helper/gun.ex | 14 ++++++-------- lib/pleroma/http/adapter_helper/hackney.ex | 14 ++++++++++---- .../mrf/media_proxy_warming_policy.ex | 12 +++--------- lib/pleroma/web/rel_me.ex | 15 +++------------ lib/pleroma/web/rich_media/helpers.ex | 19 +++++-------------- 11 files changed, 47 insertions(+), 63 deletions(-) diff --git a/config/config.exs b/config/config.exs index d631c3962..2426fbd52 100644 --- a/config/config.exs +++ b/config/config.exs @@ -735,28 +735,28 @@ max_connections: 250, max_idle_time: 30_000, retry: 0, - await_up_timeout: 5_000 + connect_timeout: 5_000 config :pleroma, :pools, federation: [ size: 50, max_waiting: 10, - timeout: 10_000 + recv_timeout: 10_000 ], media: [ size: 50, max_waiting: 10, - timeout: 10_000 + recv_timeout: 10_000 ], upload: [ size: 25, max_waiting: 5, - timeout: 15_000 + recv_timeout: 15_000 ], default: [ size: 10, max_waiting: 2, - timeout: 5_000 + recv_timeout: 5_000 ] config :pleroma, :hackney_pools, diff --git a/config/description.exs b/config/description.exs index 18c133f02..eac97ad64 100644 --- a/config/description.exs +++ b/config/description.exs @@ -3377,7 +3377,7 @@ suggestions: [250] }, %{ - key: :await_up_timeout, + key: :connect_timeout, type: :integer, description: "Timeout while `gun` will wait until connection is up. Default: 5000ms.", suggestions: [5000] @@ -3415,6 +3415,12 @@ description: "Maximum number of requests waiting for other requests to finish. After this number is reached, the pool will start returning errrors when a new request is made", suggestions: [10] + }, + %{ + key: :recv_timeout, + type: :integer, + description: "Timeout for the pool while gun will wait for response", + suggestions: [10_000] } ] } diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index a9a650fab..7f0725b48 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -498,7 +498,7 @@ Settings for HTTP connection pool. * `:connection_acquisition_wait` - Timeout to acquire a connection from pool.The total max time is this value multiplied by the number of retries. * `connection_acquisition_retries` - Number of attempts to acquire the connection from the pool if it is overloaded. Each attempt is timed `:connection_acquisition_wait` apart. * `:max_connections` - Maximum number of connections in the pool. -* `:await_up_timeout` - Timeout to connect to the host. +* `:connect_timeout` - Timeout to connect to the host. * `:reclaim_multiplier` - Multiplied by `:max_connections` this will be the maximum number of idle connections that will be reclaimed in case the pool is overloaded. ### :pools @@ -517,7 +517,7 @@ There are four pools used: For each pool, the options are: * `:size` - limit to how much requests can be concurrently executed. -* `:timeout` - timeout while `gun` will wait for response +* `:recv_timeout` - timeout while `gun` will wait for response * `:max_waiting` - limit to how much requests can be waiting for others to finish, after this is reached, subsequent requests will be dropped. ## Captcha diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex index 1957b1d84..73df67439 100644 --- a/lib/mix/tasks/pleroma/frontend.ex +++ b/lib/mix/tasks/pleroma/frontend.ex @@ -124,9 +124,7 @@ defp download_build(frontend_info, dest) do url = String.replace(frontend_info["build_url"], "${ref}", frontend_info["ref"]) with {:ok, %{status: 200, body: zip_body}} <- - Pleroma.HTTP.get(url, [], - adapter: [pool: :media, timeout: 120_000, recv_timeout: 120_000] - ) do + Pleroma.HTTP.get(url, [], adapter: [pool: :media, recv_timeout: 120_000]) do unzip(zip_body, dest) else e -> {:error, e} diff --git a/lib/pleroma/gun/conn.ex b/lib/pleroma/gun/conn.ex index a3f75a4bb..75b1ffc0a 100644 --- a/lib/pleroma/gun/conn.ex +++ b/lib/pleroma/gun/conn.ex @@ -13,7 +13,7 @@ def open(%URI{} = uri, opts) do opts = opts |> Enum.into(%{}) - |> Map.put_new(:await_up_timeout, pool_opts[:await_up_timeout] || 5_000) + |> Map.put_new(:connect_timeout, pool_opts[:connect_timeout] || 5_000) |> Map.put_new(:supervise, false) |> maybe_add_tls_opts(uri) @@ -50,7 +50,7 @@ defp do_open(uri, %{proxy: {proxy_host, proxy_port}} = opts) do with open_opts <- Map.delete(opts, :tls_opts), {:ok, conn} <- Gun.open(proxy_host, proxy_port, open_opts), - {:ok, _} <- Gun.await_up(conn, opts[:await_up_timeout]), + {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]), stream <- Gun.connect(conn, connect_opts), {:response, :fin, 200, _} <- Gun.await(conn, stream) do {:ok, conn} @@ -88,7 +88,7 @@ defp do_open(uri, %{proxy: {proxy_type, proxy_host, proxy_port}} = opts) do |> Map.put(:socks_opts, socks_opts) with {:ok, conn} <- Gun.open(proxy_host, proxy_port, opts), - {:ok, _} <- Gun.await_up(conn, opts[:await_up_timeout]) do + {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]) do {:ok, conn} else error -> @@ -106,7 +106,7 @@ defp do_open(%URI{host: host, port: port} = uri, opts) do host = Pleroma.HTTP.AdapterHelper.parse_host(host) with {:ok, conn} <- Gun.open(host, port, opts), - {:ok, _} <- Gun.await_up(conn, opts[:await_up_timeout]) do + {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]) do {:ok, conn} else error -> diff --git a/lib/pleroma/http/adapter_helper.ex b/lib/pleroma/http/adapter_helper.ex index d72297323..08b51578a 100644 --- a/lib/pleroma/http/adapter_helper.ex +++ b/lib/pleroma/http/adapter_helper.ex @@ -6,7 +6,7 @@ defmodule Pleroma.HTTP.AdapterHelper do @moduledoc """ Configure Tesla.Client with default and customized adapter options. """ - @defaults [pool: :federation] + @defaults [pool: :federation, connect_timeout: 5_000, recv_timeout: 5_000] @type proxy_type() :: :socks4 | :socks5 @type host() :: charlist() | :inet.ip_address() diff --git a/lib/pleroma/http/adapter_helper/gun.ex b/lib/pleroma/http/adapter_helper/gun.ex index 4a967d8f2..1dbb71362 100644 --- a/lib/pleroma/http/adapter_helper/gun.ex +++ b/lib/pleroma/http/adapter_helper/gun.ex @@ -11,12 +11,8 @@ defmodule Pleroma.HTTP.AdapterHelper.Gun do require Logger @defaults [ - connect_timeout: 5_000, - domain_lookup_timeout: 5_000, - tls_handshake_timeout: 5_000, retry: 1, - retry_timeout: 1000, - await_up_timeout: 5_000 + retry_timeout: 1_000 ] @type pool() :: :federation | :upload | :media | :default @@ -45,15 +41,17 @@ defp add_scheme_opts(opts, %{scheme: "https"}) do end defp put_timeout(opts) do + {recv_timeout, opts} = Keyword.pop(opts, :recv_timeout, pool_timeout(opts[:pool])) # this is the timeout to receive a message from Gun - Keyword.put_new(opts, :timeout, pool_timeout(opts[:pool])) + # `:timeout` key is used in Tesla + Keyword.put(opts, :timeout, recv_timeout) end @spec pool_timeout(pool()) :: non_neg_integer() def pool_timeout(pool) do - default = Config.get([:pools, :default, :timeout], 5_000) + default = Config.get([:pools, :default, :recv_timeout], 5_000) - Config.get([:pools, pool, :timeout], default) + Config.get([:pools, pool, :recv_timeout], default) end @prefix Pleroma.Gun.ConnectionPool diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex index 42e3acfec..ef84553c1 100644 --- a/lib/pleroma/http/adapter_helper/hackney.ex +++ b/lib/pleroma/http/adapter_helper/hackney.ex @@ -2,11 +2,8 @@ defmodule Pleroma.HTTP.AdapterHelper.Hackney do @behaviour Pleroma.HTTP.AdapterHelper @defaults [ - connect_timeout: 10_000, - recv_timeout: 20_000, follow_redirect: true, - force_redirect: true, - pool: :federation + force_redirect: true ] @spec options(keyword(), URI.t()) :: keyword() @@ -19,6 +16,7 @@ def options(connection_opts \\ [], %URI{} = uri) do |> Keyword.merge(config_opts) |> Keyword.merge(connection_opts) |> add_scheme_opts(uri) + |> maybe_add_with_body() |> Pleroma.HTTP.AdapterHelper.maybe_add_proxy(proxy) end @@ -27,4 +25,12 @@ defp add_scheme_opts(opts, %URI{scheme: "https"}) do end defp add_scheme_opts(opts, _), do: opts + + defp maybe_add_with_body(opts) do + if opts[:max_body] do + Keyword.put(opts, :with_body, true) + else + opts + end + end end diff --git a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex index dfab105a3..a203405a0 100644 --- a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex @@ -13,22 +13,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do require Logger @options [ - pool: :media + pool: :media, + recv_timeout: 10_000 ] def perform(:prefetch, url) do Logger.debug("Prefetching #{inspect(url)}") - opts = - if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do - Keyword.put(@options, :recv_timeout, 10_000) - else - @options - end - url |> MediaProxy.url() - |> HTTP.get([], adapter: opts) + |> HTTP.get([], adapter: @options) end def perform(:preload, %{"object" => %{"attachment" => attachments}} = _message) do diff --git a/lib/pleroma/web/rel_me.ex b/lib/pleroma/web/rel_me.ex index 8e2b51508..32bce3c1b 100644 --- a/lib/pleroma/web/rel_me.ex +++ b/lib/pleroma/web/rel_me.ex @@ -5,7 +5,8 @@ defmodule Pleroma.Web.RelMe do @options [ pool: :media, - max_body: 2_000_000 + max_body: 2_000_000, + recv_timeout: 2_000 ] if Pleroma.Config.get(:env) == :test do @@ -23,18 +24,8 @@ def parse(url) when is_binary(url) do def parse(_), do: {:error, "No URL provided"} defp parse_url(url) do - opts = - if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do - Keyword.merge(@options, - recv_timeout: 2_000, - with_body: true - ) - else - @options - end - with {:ok, %Tesla.Env{body: html, status: status}} when status in 200..299 <- - Pleroma.HTTP.get(url, [], adapter: opts), + Pleroma.HTTP.get(url, [], adapter: @options), {:ok, html_tree} <- Floki.parse_document(html), data <- Floki.attribute(html_tree, "link[rel~=me]", "href") ++ diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 752ca9f81..084a66466 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -9,14 +9,15 @@ defmodule Pleroma.Web.RichMedia.Helpers do alias Pleroma.Object alias Pleroma.Web.RichMedia.Parser - @rich_media_options [ + @options [ pool: :media, - max_body: 2_000_000 + max_body: 2_000_000, + recv_timeout: 2_000 ] @spec validate_page_url(URI.t() | binary()) :: :ok | :error defp validate_page_url(page_url) when is_binary(page_url) do - validate_tld = Pleroma.Config.get([Pleroma.Formatter, :validate_tld]) + validate_tld = Config.get([Pleroma.Formatter, :validate_tld]) page_url |> Linkify.Parser.url?(validate_tld: validate_tld) @@ -86,16 +87,6 @@ def perform(:fetch, %Activity{} = activity) do def rich_media_get(url) do headers = [{"user-agent", Pleroma.Application.user_agent() <> "; Bot"}] - options = - if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Hackney do - Keyword.merge(@rich_media_options, - recv_timeout: 2_000, - with_body: true - ) - else - @rich_media_options - end - - Pleroma.HTTP.get(url, headers, adapter: options) + Pleroma.HTTP.get(url, headers, adapter: @options) end end From 8a3d43044a06488545490a89e29c8349d914f164 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 5 Sep 2020 12:41:01 +0300 Subject: [PATCH 014/141] migrations for renaming gun timeout options --- ...e_await_up_timeout_in_connections_pool.exs | 13 +++++++++++++ ...20200905091427_rename_timeout_in_pools.exs | 19 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 priv/repo/migrations/20200905082737_rename_await_up_timeout_in_connections_pool.exs create mode 100644 priv/repo/migrations/20200905091427_rename_timeout_in_pools.exs diff --git a/priv/repo/migrations/20200905082737_rename_await_up_timeout_in_connections_pool.exs b/priv/repo/migrations/20200905082737_rename_await_up_timeout_in_connections_pool.exs new file mode 100644 index 000000000..22c40663c --- /dev/null +++ b/priv/repo/migrations/20200905082737_rename_await_up_timeout_in_connections_pool.exs @@ -0,0 +1,13 @@ +defmodule Pleroma.Repo.Migrations.RenameAwaitUpTimeoutInConnectionsPool do + use Ecto.Migration + + def change do + with %Pleroma.ConfigDB{} = config <- + Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: :connections_pool}), + {timeout, value} when is_integer(timeout) <- Keyword.pop(config.value, :await_up_timeout) do + config + |> Ecto.Changeset.change(value: Keyword.put(value, :connect_timeout, timeout)) + |> Pleroma.Repo.update() + end + end +end diff --git a/priv/repo/migrations/20200905091427_rename_timeout_in_pools.exs b/priv/repo/migrations/20200905091427_rename_timeout_in_pools.exs new file mode 100644 index 000000000..bb2f50ecc --- /dev/null +++ b/priv/repo/migrations/20200905091427_rename_timeout_in_pools.exs @@ -0,0 +1,19 @@ +defmodule Pleroma.Repo.Migrations.RenameTimeoutInPools do + use Ecto.Migration + + def change do + with %Pleroma.ConfigDB{} = config <- + Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: :pools}) do + updated_value = + Enum.map(config.value, fn {pool, pool_value} -> + with {timeout, value} when is_integer(timeout) <- Keyword.pop(pool_value, :timeout) do + {pool, Keyword.put(value, :recv_timeout, timeout)} + end + end) + + config + |> Ecto.Changeset.change(value: updated_value) + |> Pleroma.Repo.update() + end + end +end From 696bf09433aa7f33cf580c71cb7f1f3367d4c124 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 16:57:42 +0300 Subject: [PATCH 015/141] passing adapter options directly without adapter key --- config/test.exs | 2 +- lib/mix/tasks/pleroma/benchmark.ex | 11 ++--- lib/mix/tasks/pleroma/frontend.ex | 2 +- lib/pleroma/http/ex_aws.ex | 2 +- lib/pleroma/http/http.ex | 2 +- lib/pleroma/http/tzdata.ex | 4 +- .../mrf/media_proxy_warming_policy.ex | 2 +- lib/pleroma/web/rel_me.ex | 2 +- lib/pleroma/web/rich_media/helpers.ex | 2 +- test/web/instances/instance_test.exs | 2 + .../mastodon_api/views/account_view_test.exs | 40 ++++++++++--------- 11 files changed, 36 insertions(+), 35 deletions(-) diff --git a/config/test.exs b/config/test.exs index f0358e384..e9c2273e8 100644 --- a/config/test.exs +++ b/config/test.exs @@ -114,7 +114,7 @@ config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true -config :pleroma, :instances_favicons, enabled: true +config :pleroma, :instances_favicons, enabled: false config :pleroma, Pleroma.Uploaders.S3, bucket: nil, diff --git a/lib/mix/tasks/pleroma/benchmark.ex b/lib/mix/tasks/pleroma/benchmark.ex index dd2b9c8f2..a607d5d4f 100644 --- a/lib/mix/tasks/pleroma/benchmark.ex +++ b/lib/mix/tasks/pleroma/benchmark.ex @@ -91,20 +91,17 @@ def run(["adapters"]) do "Without conn and without pool" => fn -> {:ok, %Tesla.Env{}} = Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], - adapter: [pool: :no_pool, receive_conn: false] + pool: :no_pool, + receive_conn: false ) end, "Without conn and with pool" => fn -> {:ok, %Tesla.Env{}} = - Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], - adapter: [receive_conn: false] - ) + Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], receive_conn: false) end, "With reused conn and without pool" => fn -> {:ok, %Tesla.Env{}} = - Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], - adapter: [pool: :no_pool] - ) + Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500", [], pool: :no_pool) end, "With reused conn and with pool" => fn -> {:ok, %Tesla.Env{}} = Pleroma.HTTP.get("https://httpbin.org/stream-bytes/1500") diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex index 73df67439..cbce81ab9 100644 --- a/lib/mix/tasks/pleroma/frontend.ex +++ b/lib/mix/tasks/pleroma/frontend.ex @@ -124,7 +124,7 @@ defp download_build(frontend_info, dest) do url = String.replace(frontend_info["build_url"], "${ref}", frontend_info["ref"]) with {:ok, %{status: 200, body: zip_body}} <- - Pleroma.HTTP.get(url, [], adapter: [pool: :media, recv_timeout: 120_000]) do + Pleroma.HTTP.get(url, [], pool: :media, recv_timeout: 120_000) do unzip(zip_body, dest) else e -> {:error, e} diff --git a/lib/pleroma/http/ex_aws.ex b/lib/pleroma/http/ex_aws.ex index c3f335c73..5cac3532f 100644 --- a/lib/pleroma/http/ex_aws.ex +++ b/lib/pleroma/http/ex_aws.ex @@ -11,7 +11,7 @@ defmodule Pleroma.HTTP.ExAws do @impl true def request(method, url, body \\ "", headers \\ [], http_opts \\ []) do - http_opts = Keyword.put_new(http_opts, :adapter, pool: :upload) + http_opts = Keyword.put_new(http_opts, :pool, :upload) case HTTP.request(method, url, body, headers, http_opts) do {:ok, env} -> diff --git a/lib/pleroma/http/http.ex b/lib/pleroma/http/http.ex index 7bc73f4a0..052597191 100644 --- a/lib/pleroma/http/http.ex +++ b/lib/pleroma/http/http.ex @@ -60,7 +60,7 @@ def post(url, body, headers \\ [], options \\ []), {:ok, Env.t()} | {:error, any()} def request(method, url, body, headers, options) when is_binary(url) do uri = URI.parse(url) - adapter_opts = AdapterHelper.options(uri, options[:adapter] || []) + adapter_opts = AdapterHelper.options(uri, options || []) options = put_in(options[:adapter], adapter_opts) params = options[:params] || [] diff --git a/lib/pleroma/http/tzdata.ex b/lib/pleroma/http/tzdata.ex index 4539ac359..09cfdadf7 100644 --- a/lib/pleroma/http/tzdata.ex +++ b/lib/pleroma/http/tzdata.ex @@ -11,7 +11,7 @@ defmodule Pleroma.HTTP.Tzdata do @impl true def get(url, headers, options) do - options = Keyword.put_new(options, :adapter, pool: :default) + options = Keyword.put_new(options, :pool, :default) with {:ok, %Tesla.Env{} = env} <- HTTP.get(url, headers, options) do {:ok, {env.status, env.headers, env.body}} @@ -20,7 +20,7 @@ def get(url, headers, options) do @impl true def head(url, headers, options) do - options = Keyword.put_new(options, :adapter, pool: :default) + options = Keyword.put_new(options, :pool, :default) with {:ok, %Tesla.Env{} = env} <- HTTP.head(url, headers, options) do {:ok, {env.status, env.headers}} diff --git a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex index a203405a0..98d595469 100644 --- a/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/media_proxy_warming_policy.ex @@ -22,7 +22,7 @@ def perform(:prefetch, url) do url |> MediaProxy.url() - |> HTTP.get([], adapter: @options) + |> HTTP.get([], @options) end def perform(:preload, %{"object" => %{"attachment" => attachments}} = _message) do diff --git a/lib/pleroma/web/rel_me.ex b/lib/pleroma/web/rel_me.ex index 32bce3c1b..28f75b18d 100644 --- a/lib/pleroma/web/rel_me.ex +++ b/lib/pleroma/web/rel_me.ex @@ -25,7 +25,7 @@ def parse(_), do: {:error, "No URL provided"} defp parse_url(url) do with {:ok, %Tesla.Env{body: html, status: status}} when status in 200..299 <- - Pleroma.HTTP.get(url, [], adapter: @options), + Pleroma.HTTP.get(url, [], @options), {:ok, html_tree} <- Floki.parse_document(html), data <- Floki.attribute(html_tree, "link[rel~=me]", "href") ++ diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 084a66466..bd7f03cbe 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -87,6 +87,6 @@ def perform(:fetch, %Activity{} = activity) do def rich_media_get(url) do headers = [{"user-agent", Pleroma.Application.user_agent() <> "; Bot"}] - Pleroma.HTTP.get(url, headers, adapter: @options) + Pleroma.HTTP.get(url, headers, @options) end end diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index dc6ace843..5d4efcebe 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -112,6 +112,8 @@ test "Scrapes favicon URLs" do end test "Returns nil on too long favicon URLs" do + clear_config([:instances_favicons, :enabled], true) + long_favicon_url = "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 8f37efa3c..68a5d0091 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -5,7 +5,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do use Pleroma.DataCase - alias Pleroma.Config alias Pleroma.User alias Pleroma.UserRelationship alias Pleroma.Web.CommonAPI @@ -19,8 +18,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do :ok end - setup do: clear_config([:instances_favicons, :enabled]) - test "Represent a user account" do background_image = %{ "url" => [%{"href" => "https://example.com/images/asuka_hospital.png"}] @@ -78,8 +75,7 @@ test "Represent a user account" do pleroma: %{ ap_id: user.ap_id, background_image: "https://example.com/images/asuka_hospital.png", - favicon: - "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png", + favicon: nil, confirmation_pending: false, tags: [], is_admin: false, @@ -98,22 +94,29 @@ test "Represent a user account" do assert expected == AccountView.render("show.json", %{user: user, skip_visibility_check: true}) end - test "Favicon is nil when :instances_favicons is disabled" do - user = insert(:user) + describe "favicon" do + setup do + [user: insert(:user)] + end - Config.put([:instances_favicons, :enabled], true) + test "is parsed when :instance_favicons is enabled", %{user: user} do + clear_config([:instances_favicons, :enabled], true) - assert %{ - pleroma: %{ - favicon: - "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png" - } - } = AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + assert %{ + pleroma: %{ + favicon: + "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png" + } + } = AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + end - Config.put([:instances_favicons, :enabled], false) + test "is nil when :instances_favicons is disabled", %{user: user} do + assert %{pleroma: %{favicon: nil}} = + AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + end + end - assert %{pleroma: %{favicon: nil}} = - AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + test "Favicon when :instance_favicons is enabled" do end test "Represent the user account for the account owner" do @@ -173,8 +176,7 @@ test "Represent a Service(bot) account" do pleroma: %{ ap_id: user.ap_id, background_image: nil, - favicon: - "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png", + favicon: nil, confirmation_pending: false, tags: [], is_admin: false, From 18d21aed00dcbdaabd7db25b8b7d0c88141ec98a Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 19:04:16 +0300 Subject: [PATCH 016/141] deprecation warnings --- lib/pleroma/config/deprecation_warnings.ex | 43 ++++++++++++++++ test/config/deprecation_warnings_test.exs | 59 +++++++++++++++++++--- 2 files changed, 96 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 0f52eb210..2bfe4ddba 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -56,6 +56,7 @@ def warn do check_old_mrf_config() check_media_proxy_whitelist_config() check_welcome_message_config() + check_gun_pool_options() end def check_welcome_message_config do @@ -115,4 +116,46 @@ def check_media_proxy_whitelist_config do """) end end + + def check_gun_pool_options do + pool_config = Config.get(:connections_pool) + + if timeout = pool_config[:await_up_timeout] do + Logger.warn(""" + !!!DEPRECATION WARNING!!! + Your config is using old setting name `await_up_timeout` instead of `connect_timeout`. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later. + """) + + Config.put(:connections_pool, Keyword.put_new(pool_config, :connect_timeout, timeout)) + end + + pools_configs = Config.get(:pools) + + warning_preface = """ + !!!DEPRECATION WARNING!!! + Your config is using old setting name `timeout` instead of `recv_timeout` in pool settings. Setting should work for now, but you are advised to change format to scheme with port to prevent possible issues later. + """ + + updated_config = + Enum.reduce(pools_configs, [], fn {pool_name, config}, acc -> + if timeout = config[:timeout] do + Keyword.put(acc, pool_name, Keyword.put_new(config, :recv_timeout, timeout)) + else + acc + end + end) + + if updated_config != [] do + pool_warnings = + updated_config + |> Keyword.keys() + |> Enum.map(fn pool_name -> + "\n* `:timeout` options in #{pool_name} pool is now `:recv_timeout`" + end) + + Logger.warn(Enum.join([warning_preface | pool_warnings])) + + Config.put(:pools, updated_config) + end + end end diff --git a/test/config/deprecation_warnings_test.exs b/test/config/deprecation_warnings_test.exs index 555661a71..e22052404 100644 --- a/test/config/deprecation_warnings_test.exs +++ b/test/config/deprecation_warnings_test.exs @@ -4,12 +4,15 @@ defmodule Pleroma.Config.DeprecationWarningsTest do import ExUnit.CaptureLog + alias Pleroma.Config + alias Pleroma.Config.DeprecationWarnings + test "check_old_mrf_config/0" do clear_config([:instance, :rewrite_policy], Pleroma.Web.ActivityPub.MRF.NoOpPolicy) clear_config([:instance, :mrf_transparency], true) clear_config([:instance, :mrf_transparency_exclusions], []) - assert capture_log(fn -> Pleroma.Config.DeprecationWarnings.check_old_mrf_config() end) =~ + assert capture_log(fn -> DeprecationWarnings.check_old_mrf_config() end) =~ """ !!!DEPRECATION WARNING!!! Your config is using old namespaces for MRF configuration. They should work for now, but you are advised to change to new namespaces to prevent possible issues later: @@ -44,22 +47,66 @@ test "move_namespace_and_warn/2" do ] assert capture_log(fn -> - Pleroma.Config.DeprecationWarnings.move_namespace_and_warn( + DeprecationWarnings.move_namespace_and_warn( config_map, "Warning preface" ) end) =~ "Warning preface\n error :key\n error :key2\n error :key3" - assert Pleroma.Config.get(new_group1) == 1 - assert Pleroma.Config.get(new_group2) == 2 - assert Pleroma.Config.get(new_group3) == 3 + assert Config.get(new_group1) == 1 + assert Config.get(new_group2) == 2 + assert Config.get(new_group3) == 3 end test "check_media_proxy_whitelist_config/0" do clear_config([:media_proxy, :whitelist], ["https://example.com", "example2.com"]) assert capture_log(fn -> - Pleroma.Config.DeprecationWarnings.check_media_proxy_whitelist_config() + DeprecationWarnings.check_media_proxy_whitelist_config() end) =~ "Your config is using old format (only domain) for MediaProxy whitelist option" end + + describe "check_gun_pool_options/0" do + test "await_up_timeout" do + config = Config.get(:connections_pool) + clear_config(:connections_pool, Keyword.put(config, :await_up_timeout, 5_000)) + + assert capture_log(fn -> + DeprecationWarnings.check_gun_pool_options() + end) =~ + "Your config is using old setting name `await_up_timeout` instead of `connect_timeout`" + end + + test "pool timeout" do + old_config = [ + federation: [ + size: 50, + max_waiting: 10, + timeout: 10_000 + ], + media: [ + size: 50, + max_waiting: 10, + timeout: 10_000 + ], + upload: [ + size: 25, + max_waiting: 5, + timeout: 15_000 + ], + default: [ + size: 10, + max_waiting: 2, + timeout: 5_000 + ] + ] + + clear_config(:pools, old_config) + + assert capture_log(fn -> + DeprecationWarnings.check_gun_pool_options() + end) =~ + "Your config is using old setting name `timeout` instead of `recv_timeout` in pool settings" + end + end end From 7ad1732ed2444d4d7bb1a89e66d46e5d52536e0f Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 19:55:14 +0300 Subject: [PATCH 017/141] changelog entry --- CHANGELOG.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f1e859b..f303e22a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,11 +5,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Unreleased +### Changed + +- Settings renaming: `:await_up_timeout` in `:connections_pool` namespace to `connect_timeout`, `timeout` in `pools` namespace to `recv_timeout`. + ### Removed - **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. - ## unreleased-patch - ??? ### Added @@ -25,7 +28,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Cards being wrong for preview statuses due to cache key collision - Password resets no longer processed for deactivated accounts - ## [2.1.0] - 2020-08-28 ### Changed From 699224a900d54b6d32e0bd3f2abd9eccc523df11 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 7 Sep 2020 22:14:40 +0200 Subject: [PATCH 018/141] ForceBotUnlistedPolicy: initial add, tiny clean up from my previous version --- .../mrf/force_bot_unlisted_policy.ex | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex diff --git a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex new file mode 100644 index 000000000..31fd90586 --- /dev/null +++ b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex @@ -0,0 +1,61 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy do + alias Pleroma.User + @behaviour Pleroma.Web.ActivityPub.MRF + @moduledoc "Remove bot posts from federated timeline" + + require Pleroma.Constants + + defp check_by_actor_type(user) do + if user.actor_type in ["Application", "Service"], do: 1.0, else: 0.0 + end + + defp check_by_nickname(user) do + if Regex.match?(~r/bot@|ebooks@/i, user.nickname), do: 1.0, else: 0.0 + end + + defp botness_score(user), do: check_by_actor_type(user) + check_by_nickname(user) + + @impl true + def filter( + %{ + "type" => "Create", + "to" => to, + "cc" => cc, + "actor" => actor, + "object" => object + } = message + ) do + user = User.get_cached_by_ap_id(actor) + isbot = 0.8 < botness_score(user) + + if isbot and Enum.member?(to, Pleroma.Constants.as_public()) do + to = List.delete(to, Pleroma.Constants.as_public()) ++ [user.follower_address] + cc = List.delete(cc, user.follower_address) ++ [Pleroma.Constants.as_public()] + + object = + object + |> Map.put("to", to) + |> Map.put("cc", cc) + + message = + message + |> Map.put("to", to) + |> Map.put("cc", cc) + |> Map.put("object", object) + + {:ok, message} + else + {:ok, message} + end + end + + @impl true + def filter(message), do: {:ok, message} + + @impl true + def describe, do: {:ok, %{}} +end From 57cf0cc3b3029cb0ff017c53e2602ad945b8d9b3 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 7 Sep 2020 22:50:37 +0200 Subject: [PATCH 019/141] ForceBotUnlistedPolicy: add test --- .../mrf/force_bot_unlisted_policy_test.ex | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex new file mode 100644 index 000000000..84e2a9024 --- /dev/null +++ b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex @@ -0,0 +1,58 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do + use Pleroma.DataCase + import Pleroma.Factory + + import Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy + + defp generate_messages(actor) do + {%{ + "actor" => actor.ap_id, + "type" => "Create", + "object" => %{}, + "to" => [@public, "f"], + "cc" => [actor.follower_address, "d"] + }, %{ + "actor" => actor.ap_id, + "type" => "Create", + "object" => %{"to" => ["f", actor.follower_address], "cc" => ["d", @public]}, + "to" => ["f", actor.follower_address], + "cc" => ["d", @public] + }} + end + + test "removes from the federated timeline by nickname heuristics 1" do + actor = insert(:user, %{nickname: "annoying_ebooks@example.com"}) + + {message, except_message} = generate_messages(actor) + + assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message} + end + + test "removes from the federated timeline by nickname heuristics 2" do + actor = insert(:user, %{nickname: "cirnonewsnetworkbot@meow.cat"}) + + {message, except_message} = generate_messages(actor) + + assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message} + end + + test "removes from the federated timeline by actor type Application" do + actor = insert(:user, %{actor_type: "Application"}) + + {message, except_message} = generate_messages(actor) + + assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message} + end + + test "removes from the federated timeline by actor type Service" do + actor = insert(:user, %{actor_type: "Service"}) + + {message, except_message} = generate_messages(actor) + + assert ForceBotUnlistedPolicy.filter(message) == {:ok, except_message} + end +end From 8b695c3eeb6ee7a91fc5a8a4293fb3cb53212818 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 7 Sep 2020 22:53:45 +0200 Subject: [PATCH 020/141] ForceBotUnlistedPolicy: format --- .../mrf/force_bot_unlisted_policy.ex | 16 ++++++------ .../mrf/force_bot_unlisted_policy_test.ex | 25 ++++++++++--------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex index 31fd90586..7290f444b 100644 --- a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex @@ -21,14 +21,14 @@ defp botness_score(user), do: check_by_actor_type(user) + check_by_nickname(user @impl true def filter( - %{ - "type" => "Create", - "to" => to, - "cc" => cc, - "actor" => actor, - "object" => object - } = message - ) do + %{ + "type" => "Create", + "to" => to, + "cc" => cc, + "actor" => actor, + "object" => object + } = message + ) do user = User.get_cached_by_ap_id(actor) isbot = 0.8 < botness_score(user) diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex index 84e2a9024..6f001c233 100644 --- a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex +++ b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex @@ -10,18 +10,19 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do defp generate_messages(actor) do {%{ - "actor" => actor.ap_id, - "type" => "Create", - "object" => %{}, - "to" => [@public, "f"], - "cc" => [actor.follower_address, "d"] - }, %{ - "actor" => actor.ap_id, - "type" => "Create", - "object" => %{"to" => ["f", actor.follower_address], "cc" => ["d", @public]}, - "to" => ["f", actor.follower_address], - "cc" => ["d", @public] - }} + "actor" => actor.ap_id, + "type" => "Create", + "object" => %{}, + "to" => [@public, "f"], + "cc" => [actor.follower_address, "d"] + }, + %{ + "actor" => actor.ap_id, + "type" => "Create", + "object" => %{"to" => ["f", actor.follower_address], "cc" => ["d", @public]}, + "to" => ["f", actor.follower_address], + "cc" => ["d", @public] + }} end test "removes from the federated timeline by nickname heuristics 1" do From d2fd1d348122d8b0c3f4b0262cfc980afed83448 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 7 Sep 2020 23:04:07 +0200 Subject: [PATCH 021/141] ForceBotUnlistedPolicy: fix test extension --- ...unlisted_policy_test.ex => force_bot_unlisted_policy_test.exs} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/web/activity_pub/mrf/{force_bot_unlisted_policy_test.ex => force_bot_unlisted_policy_test.exs} (100%) diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs similarity index 100% rename from test/web/activity_pub/mrf/force_bot_unlisted_policy_test.ex rename to test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs From 0a25c92cfafce6af9ff9a40ac278dafac69e0c08 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 7 Sep 2020 23:18:36 +0200 Subject: [PATCH 022/141] ForceBotUnlistedPolicy: try to fix test --- test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs index 6f001c233..85ca95b0a 100644 --- a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs +++ b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs @@ -6,7 +6,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do use Pleroma.DataCase import Pleroma.Factory - import Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy + alias Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy defp generate_messages(actor) do {%{ From d074e54013cb38d308693891e0353c0dccc54b85 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Mon, 7 Sep 2020 23:28:29 +0200 Subject: [PATCH 023/141] ForceBotUnlistedPolicy: try to fix test 2 --- test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs | 1 + 1 file changed, 1 insertion(+) diff --git a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs index 85ca95b0a..86dd9ddae 100644 --- a/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs +++ b/test/web/activity_pub/mrf/force_bot_unlisted_policy_test.exs @@ -7,6 +7,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicyTest do import Pleroma.Factory alias Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy + @public "https://www.w3.org/ns/activitystreams#Public" defp generate_messages(actor) do {%{ From 95688c90ad9cd6438a764b4ea6e0f2e3b594b5c8 Mon Sep 17 00:00:00 2001 From: Alibek Omarov Date: Tue, 8 Sep 2020 01:13:49 +0200 Subject: [PATCH 024/141] ForceBotUnlistedPolicy: simplify code --- .../activity_pub/mrf/force_bot_unlisted_policy.ex | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex index 7290f444b..ea9c3d3f5 100644 --- a/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/force_bot_unlisted_policy.ex @@ -9,15 +9,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy do require Pleroma.Constants - defp check_by_actor_type(user) do - if user.actor_type in ["Application", "Service"], do: 1.0, else: 0.0 - end + defp check_by_actor_type(user), do: user.actor_type in ["Application", "Service"] + defp check_by_nickname(user), do: Regex.match?(~r/bot@|ebooks@/i, user.nickname) - defp check_by_nickname(user) do - if Regex.match?(~r/bot@|ebooks@/i, user.nickname), do: 1.0, else: 0.0 - end - - defp botness_score(user), do: check_by_actor_type(user) + check_by_nickname(user) + defp check_if_bot(user), do: check_by_actor_type(user) or check_by_nickname(user) @impl true def filter( @@ -30,7 +25,7 @@ def filter( } = message ) do user = User.get_cached_by_ap_id(actor) - isbot = 0.8 < botness_score(user) + isbot = check_if_bot(user) if isbot and Enum.member?(to, Pleroma.Constants.as_public()) do to = List.delete(to, Pleroma.Constants.as_public()) ++ [user.follower_address] From d8a48f838697ce6f1d37f5504c1e51b316aed037 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 12:23:08 +0300 Subject: [PATCH 025/141] CHANGELOG.md: Split settings renaming to 2 separate entries --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f303e22a7..e6180a6da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Changed -- Settings renaming: `:await_up_timeout` in `:connections_pool` namespace to `connect_timeout`, `timeout` in `pools` namespace to `recv_timeout`. +- Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. +- Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. ### Removed From fa347b9c2f416cd2c402e3e6eebb561dfc0ee8a8 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 26 Aug 2020 13:32:03 -0500 Subject: [PATCH 026/141] Fix uploading webp image files when Exiftool Upload Filter is enabled --- CHANGELOG.md | 1 + lib/pleroma/upload/filter/exiftool.ex | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f1e859b..cfe0651c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -138,6 +138,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix whole_word always returning false on filter get requests - Migrations not working on OTP releases if the database was connected over ssl - Fix relay following +- Fixed uploading webp images when the Exiftool Upload Filter is enabled ## [2.0.7] - 2020-06-13 diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex index ea8798fe3..a91bd5e24 100644 --- a/lib/pleroma/upload/filter/exiftool.ex +++ b/lib/pleroma/upload/filter/exiftool.ex @@ -10,9 +10,20 @@ defmodule Pleroma.Upload.Filter.Exiftool do @behaviour Pleroma.Upload.Filter @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} - def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do + def filter(%Pleroma.Upload{name: file, tempfile: path, content_type: "image" <> _}) do + # webp is not compatible with exiftool at this time + if Regex.match?(~r/\.(webp)$/i, file) do + :ok + else + strip_exif(path) + end + end + + def filter(_), do: :ok + + defp strip_exif(path) do try do - case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", file], parallelism: true) do + case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", path], parallelism: true) do {_response, 0} -> :ok {error, 1} -> {:error, error} end @@ -21,6 +32,4 @@ def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do {:error, "exiftool command not found"} end end - - def filter(_), do: :ok end From 2165a249744a1ad4386a9d237871abe88e298942 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 Sep 2020 17:40:59 -0500 Subject: [PATCH 027/141] Improve upload filter return values so we can identify when filters make no changes to the input --- lib/pleroma/upload/filter.ex | 13 ++++++++++--- lib/pleroma/upload/filter/anonymize_filename.ex | 4 +++- lib/pleroma/upload/filter/dedupe.ex | 4 ++-- lib/pleroma/upload/filter/exiftool.ex | 8 ++++---- lib/pleroma/upload/filter/mogrifun.ex | 6 +++--- lib/pleroma/upload/filter/mogrify.ex | 6 +++--- test/upload/filter/anonymize_filename_test.exs | 6 +++--- test/upload/filter/dedupe_test.exs | 1 + test/upload/filter/exiftool_test.exs | 2 +- test/upload/filter/mogrifun_test.exs | 2 +- test/upload/filter/mogrify_test.exs | 2 +- 11 files changed, 32 insertions(+), 22 deletions(-) diff --git a/lib/pleroma/upload/filter.ex b/lib/pleroma/upload/filter.ex index dbdadc97f..661135634 100644 --- a/lib/pleroma/upload/filter.ex +++ b/lib/pleroma/upload/filter.ex @@ -15,7 +15,11 @@ defmodule Pleroma.Upload.Filter do require Logger - @callback filter(Pleroma.Upload.t()) :: :ok | {:ok, Pleroma.Upload.t()} | {:error, any()} + @callback filter(Pleroma.Upload.t()) :: + {:ok, :filtered} + | {:ok, :noop} + | {:ok, :filtered, Pleroma.Upload.t()} + | {:error, any()} @spec filter([module()], Pleroma.Upload.t()) :: {:ok, Pleroma.Upload.t()} | {:error, any()} @@ -25,10 +29,13 @@ def filter([], upload) do def filter([filter | rest], upload) do case filter.filter(upload) do - :ok -> + {:ok, :filtered} -> filter(rest, upload) - {:ok, upload} -> + {:ok, :filtered, upload} -> + filter(rest, upload) + + {:ok, :noop} -> filter(rest, upload) error -> diff --git a/lib/pleroma/upload/filter/anonymize_filename.ex b/lib/pleroma/upload/filter/anonymize_filename.ex index 07ead8203..fc456e4f4 100644 --- a/lib/pleroma/upload/filter/anonymize_filename.ex +++ b/lib/pleroma/upload/filter/anonymize_filename.ex @@ -16,9 +16,11 @@ defmodule Pleroma.Upload.Filter.AnonymizeFilename do def filter(%Upload{name: name} = upload) do extension = List.last(String.split(name, ".")) name = predefined_name(extension) || random(extension) - {:ok, %Upload{upload | name: name}} + {:ok, :filtered, %Upload{upload | name: name}} end + def filter(_), do: {:ok, :noop} + @spec predefined_name(String.t()) :: String.t() | nil defp predefined_name(extension) do with name when not is_nil(name) <- Config.get([__MODULE__, :text]), diff --git a/lib/pleroma/upload/filter/dedupe.ex b/lib/pleroma/upload/filter/dedupe.ex index 41218a918..86cbc8996 100644 --- a/lib/pleroma/upload/filter/dedupe.ex +++ b/lib/pleroma/upload/filter/dedupe.ex @@ -17,8 +17,8 @@ def filter(%Upload{name: name, tempfile: tempfile} = upload) do |> Base.encode16(case: :lower) filename = shasum <> "." <> extension - {:ok, %Upload{upload | id: shasum, path: filename}} + {:ok, :filtered, %Upload{upload | id: shasum, path: filename}} end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} end diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex index a91bd5e24..94d12c01b 100644 --- a/lib/pleroma/upload/filter/exiftool.ex +++ b/lib/pleroma/upload/filter/exiftool.ex @@ -9,22 +9,22 @@ defmodule Pleroma.Upload.Filter.Exiftool do """ @behaviour Pleroma.Upload.Filter - @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} + @spec filter(Pleroma.Upload.t()) :: {:ok, any()} | {:error, String.t()} def filter(%Pleroma.Upload{name: file, tempfile: path, content_type: "image" <> _}) do # webp is not compatible with exiftool at this time if Regex.match?(~r/\.(webp)$/i, file) do - :ok + {:ok, :noop} else strip_exif(path) end end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} defp strip_exif(path) do try do case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", path], parallelism: true) do - {_response, 0} -> :ok + {_response, 0} -> {:ok, :filtered} {error, 1} -> {:error, error} end rescue diff --git a/lib/pleroma/upload/filter/mogrifun.ex b/lib/pleroma/upload/filter/mogrifun.ex index c8fa7b190..363e5cf0f 100644 --- a/lib/pleroma/upload/filter/mogrifun.ex +++ b/lib/pleroma/upload/filter/mogrifun.ex @@ -38,16 +38,16 @@ defmodule Pleroma.Upload.Filter.Mogrifun do [{"fill", "yellow"}, {"tint", "40"}] ] - @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} + @spec filter(Pleroma.Upload.t()) :: {:ok, atom()} | {:error, String.t()} def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do try do Filter.Mogrify.do_filter(file, [Enum.random(@filters)]) - :ok + {:ok, :filtered} rescue _e in ErlangError -> {:error, "mogrify command not found"} end end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} end diff --git a/lib/pleroma/upload/filter/mogrify.ex b/lib/pleroma/upload/filter/mogrify.ex index 7a45add5a..71968fd9c 100644 --- a/lib/pleroma/upload/filter/mogrify.ex +++ b/lib/pleroma/upload/filter/mogrify.ex @@ -8,18 +8,18 @@ defmodule Pleroma.Upload.Filter.Mogrify do @type conversion :: action :: String.t() | {action :: String.t(), opts :: String.t()} @type conversions :: conversion() | [conversion()] - @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} + @spec filter(Pleroma.Upload.t()) :: {:ok, :atom} | {:error, String.t()} def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do try do do_filter(file, Pleroma.Config.get!([__MODULE__, :args])) - :ok + {:ok, :filtered} rescue _e in ErlangError -> {:error, "mogrify command not found"} end end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} def do_filter(file, filters) do file diff --git a/test/upload/filter/anonymize_filename_test.exs b/test/upload/filter/anonymize_filename_test.exs index adff70f57..19b915cc8 100644 --- a/test/upload/filter/anonymize_filename_test.exs +++ b/test/upload/filter/anonymize_filename_test.exs @@ -24,18 +24,18 @@ defmodule Pleroma.Upload.Filter.AnonymizeFilenameTest do test "it replaces filename on pre-defined text", %{upload_file: upload_file} do Config.put([Upload.Filter.AnonymizeFilename, :text], "custom-file.png") - {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert name == "custom-file.png" end test "it replaces filename on pre-defined text expression", %{upload_file: upload_file} do Config.put([Upload.Filter.AnonymizeFilename, :text], "custom-file.{extension}") - {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert name == "custom-file.jpg" end test "it replaces filename on random text", %{upload_file: upload_file} do - {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert <<_::bytes-size(14)>> <> ".jpg" = name refute name == "an… image.jpg" end diff --git a/test/upload/filter/dedupe_test.exs b/test/upload/filter/dedupe_test.exs index 966c353f7..75c7198e1 100644 --- a/test/upload/filter/dedupe_test.exs +++ b/test/upload/filter/dedupe_test.exs @@ -25,6 +25,7 @@ test "adds shasum" do assert { :ok, + :filtered, %Pleroma.Upload{id: @shasum, path: @shasum <> ".jpg"} } = Dedupe.filter(upload) end diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs index 8ed7d650b..094253a25 100644 --- a/test/upload/filter/exiftool_test.exs +++ b/test/upload/filter/exiftool_test.exs @@ -21,7 +21,7 @@ test "apply exiftool filter" do tempfile: Path.absname("test/fixtures/DSCN0010_tmp.jpg") } - assert Filter.Exiftool.filter(upload) == :ok + assert Filter.Exiftool.filter(upload) == {:ok, :filtered} {exif_original, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010.jpg"]) {exif_filtered, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010_tmp.jpg"]) diff --git a/test/upload/filter/mogrifun_test.exs b/test/upload/filter/mogrifun_test.exs index 2426a8496..dc1e9e78f 100644 --- a/test/upload/filter/mogrifun_test.exs +++ b/test/upload/filter/mogrifun_test.exs @@ -36,7 +36,7 @@ test "apply mogrify filter" do save: fn _f, _o -> :ok end ]} ]) do - assert Filter.Mogrifun.filter(upload) == :ok + assert Filter.Mogrifun.filter(upload) == {:ok, :filtered} end Task.await(task) diff --git a/test/upload/filter/mogrify_test.exs b/test/upload/filter/mogrify_test.exs index 62ca30487..bf64b96b3 100644 --- a/test/upload/filter/mogrify_test.exs +++ b/test/upload/filter/mogrify_test.exs @@ -33,7 +33,7 @@ test "apply mogrify filter" do custom: fn _m, _a -> :ok end, custom: fn m, a, o -> send(task.pid, {:apply_filter, {m, a, o}}) end, save: fn _f, _o -> :ok end do - assert Filter.Mogrify.filter(upload) == :ok + assert Filter.Mogrify.filter(upload) == {:ok, :filtered} end Task.await(task) From 3a98960c2684229435c5d04e4f3e0611098ceea2 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 Sep 2020 17:50:16 -0500 Subject: [PATCH 028/141] Verify webp files are not processed with exiftool --- test/upload/filter/exiftool_test.exs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs index 094253a25..fe24036d9 100644 --- a/test/upload/filter/exiftool_test.exs +++ b/test/upload/filter/exiftool_test.exs @@ -30,4 +30,15 @@ test "apply exiftool filter" do assert String.match?(exif_original, ~r/GPS/) refute String.match?(exif_filtered, ~r/GPS/) end + + test "verify webp files are skipped" do + upload = %Pleroma.Upload{ + name: "sample.webp", + content_type: "image/webp", + path: Path.absname("/dev/null"), + tempfile: Path.absname("/dev/null") + } + + assert Filter.Exiftool.filter(upload) == {:ok, :noop} + end end From 216c84a8f4d82649110ffaa2bc9d02b879805c5f Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 Sep 2020 17:56:05 -0500 Subject: [PATCH 029/141] Bypass the filter based on content-type as well in case a webp image is uploaded with the wrong file extension. --- lib/pleroma/upload/filter/exiftool.ex | 5 ++++- test/upload/filter/exiftool_test.exs | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex index 94d12c01b..b07a671ac 100644 --- a/lib/pleroma/upload/filter/exiftool.ex +++ b/lib/pleroma/upload/filter/exiftool.ex @@ -10,8 +10,11 @@ defmodule Pleroma.Upload.Filter.Exiftool do @behaviour Pleroma.Upload.Filter @spec filter(Pleroma.Upload.t()) :: {:ok, any()} | {:error, String.t()} + + # webp is not compatible with exiftool at this time + def filter(%Pleroma.Upload{content_type: "image/webp"}), do: {:ok, :noop} + def filter(%Pleroma.Upload{name: file, tempfile: path, content_type: "image" <> _}) do - # webp is not compatible with exiftool at this time if Regex.match?(~r/\.(webp)$/i, file) do {:ok, :noop} else diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs index fe24036d9..84a3f8b30 100644 --- a/test/upload/filter/exiftool_test.exs +++ b/test/upload/filter/exiftool_test.exs @@ -34,11 +34,15 @@ test "apply exiftool filter" do test "verify webp files are skipped" do upload = %Pleroma.Upload{ name: "sample.webp", - content_type: "image/webp", - path: Path.absname("/dev/null"), - tempfile: Path.absname("/dev/null") + content_type: "image/webp" + } + + bad_type = %Pleroma.Upload{ + name: "sample.webp", + content_type: "image/jpeg" } assert Filter.Exiftool.filter(upload) == {:ok, :noop} + assert Filter.Exiftool.filter(bad_type) == {:ok, :noop} end end From 4ea07f74e9416da8f97a12cfdc24da82e1c00d91 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 4 Sep 2020 22:18:01 -0500 Subject: [PATCH 030/141] Revert/simplify. We only need to check the content-type. There's no chance a webp file will get mismatched as another image type. --- lib/pleroma/upload/filter/exiftool.ex | 16 ++++------------ test/upload/filter/exiftool_test.exs | 6 ------ 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex index b07a671ac..1fd0cfdaa 100644 --- a/lib/pleroma/upload/filter/exiftool.ex +++ b/lib/pleroma/upload/filter/exiftool.ex @@ -14,19 +14,9 @@ defmodule Pleroma.Upload.Filter.Exiftool do # webp is not compatible with exiftool at this time def filter(%Pleroma.Upload{content_type: "image/webp"}), do: {:ok, :noop} - def filter(%Pleroma.Upload{name: file, tempfile: path, content_type: "image" <> _}) do - if Regex.match?(~r/\.(webp)$/i, file) do - {:ok, :noop} - else - strip_exif(path) - end - end - - def filter(_), do: {:ok, :noop} - - defp strip_exif(path) do + def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do try do - case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", path], parallelism: true) do + case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", file], parallelism: true) do {_response, 0} -> {:ok, :filtered} {error, 1} -> {:error, error} end @@ -35,4 +25,6 @@ defp strip_exif(path) do {:error, "exiftool command not found"} end end + + def filter(_), do: {:ok, :noop} end diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs index 84a3f8b30..d4cd4ba11 100644 --- a/test/upload/filter/exiftool_test.exs +++ b/test/upload/filter/exiftool_test.exs @@ -37,12 +37,6 @@ test "verify webp files are skipped" do content_type: "image/webp" } - bad_type = %Pleroma.Upload{ - name: "sample.webp", - content_type: "image/jpeg" - } - assert Filter.Exiftool.filter(upload) == {:ok, :noop} - assert Filter.Exiftool.filter(bad_type) == {:ok, :noop} end end From 0f27211dd0b9177abf0eb8b10665c6351f07756a Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 12:28:38 +0300 Subject: [PATCH 031/141] CHANGELOG.md: move the exiftool webp entry to a proper section Also clarify how it was fixed --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfe0651c8..527df8438 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Possible OOM errors with the default HTTP adapter +- Fixed uploading webp images when the Exiftool Upload Filter is enabled by skipping them - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. @@ -138,7 +139,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix whole_word always returning false on filter get requests - Migrations not working on OTP releases if the database was connected over ssl - Fix relay following -- Fixed uploading webp images when the Exiftool Upload Filter is enabled ## [2.0.7] - 2020-06-13 From 718c7cc8473282a9239cc125e10b54df7ed5e0fe Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 7 Sep 2020 16:38:16 +0000 Subject: [PATCH 032/141] Merge branch 'fix/apc2s-limits' into 'develop' AP C2S: Restrict character limit on Note Closes #2 See merge request pleroma/secteam/pleroma!9 --- .../activity_pub/activity_pub_controller.ex | 35 ++++++++++++------- .../activity_pub_controller_test.exs | 16 +++++++++ 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 220c4fe52..732c44271 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -399,21 +399,30 @@ def read_inbox(%{assigns: %{user: %User{nickname: as_nickname}}} = conn, %{ defp handle_user_activity( %User{} = user, - %{"type" => "Create", "object" => %{"type" => "Note"}} = params + %{"type" => "Create", "object" => %{"type" => "Note"} = object} = params ) do - object = - params["object"] - |> Map.merge(Map.take(params, ["to", "cc"])) - |> Map.put("attributedTo", user.ap_id()) - |> Transmogrifier.fix_object() + content = if is_binary(object["content"]), do: object["content"], else: "" + name = if is_binary(object["name"]), do: object["name"], else: "" + summary = if is_binary(object["summary"]), do: object["summary"], else: "" + length = String.length(content <> name <> summary) - ActivityPub.create(%{ - to: params["to"], - actor: user, - context: object["context"], - object: object, - additional: Map.take(params, ["cc"]) - }) + if length > Pleroma.Config.get([:instance, :limit]) do + {:error, dgettext("errors", "Note is over the character limit")} + else + object = + object + |> Map.merge(Map.take(params, ["to", "cc"])) + |> Map.put("attributedTo", user.ap_id()) + |> Transmogrifier.fix_object() + + ActivityPub.create(%{ + to: params["to"], + actor: user, + context: object["context"], + object: object, + additional: Map.take(params, ["cc"]) + }) + end end defp handle_user_activity(%User{} = user, %{"type" => "Delete"} = params) do diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 57988dc1e..0517571f2 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -905,6 +905,8 @@ test "it requires authentication if instance is NOT federating", %{ end describe "POST /users/:nickname/outbox (C2S)" do + setup do: clear_config([:instance, :limit]) + setup do [ activity: %{ @@ -1121,6 +1123,20 @@ test "it doesn't spreads faulty attributedTo or actor fields", %{ assert cirno_object.data["actor"] == cirno.ap_id assert cirno_object.data["attributedTo"] == cirno.ap_id end + + test "Character limitation", %{conn: conn, activity: activity} do + Pleroma.Config.put([:instance, :limit], 5) + user = insert(:user) + + result = + conn + |> assign(:user, user) + |> put_req_header("content-type", "application/activity+json") + |> post("/users/#{user.nickname}/outbox", activity) + |> json_response(400) + + assert result == "Note is over the character limit" + end end describe "/relay/followers" do From 84acfab15659a1e09bfd5ce75f1ba0d60d2ab7b2 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 2 Sep 2020 06:55:58 +0000 Subject: [PATCH 033/141] Merge branch 'fix-searching-following' into 'develop' search: fix 'following' query parameter See merge request pleroma/pleroma!2943 --- CHANGELOG.md | 5 +++++ lib/pleroma/user/search.ex | 2 +- test/user_search_test.exs | 24 ++++++++++++------------ 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0850deed7..07bc6d77c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## unreleased-patch - ??? + +### Fixed +- Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers + ## [2.1.0] - 2020-08-28 ### Changed diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index d4fd31069..adbef7fb8 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -116,7 +116,7 @@ defp trigram_rank(query, query_string) do end defp base_query(_user, false), do: User - defp base_query(user, true), do: User.get_followers_query(user) + defp base_query(user, true), do: User.get_friends_query(user) defp filter_invisible_users(query) do from(q in query, where: q.invisible == false) diff --git a/test/user_search_test.exs b/test/user_search_test.exs index 559ba5966..01976bf58 100644 --- a/test/user_search_test.exs +++ b/test/user_search_test.exs @@ -109,22 +109,22 @@ test "finds users, boosting ranks of friends and followers" do Enum.map(User.search("doe", resolve: false, for_user: u1), & &1.id) == [] end - test "finds followers of user by partial name" do - u1 = insert(:user) - u2 = insert(:user, %{name: "Jimi"}) - follower_jimi = insert(:user, %{name: "Jimi Hendrix"}) - follower_lizz = insert(:user, %{name: "Lizz Wright"}) - friend = insert(:user, %{name: "Jimi"}) + test "finds followings of user by partial name" do + lizz = insert(:user, %{name: "Lizz"}) + jimi = insert(:user, %{name: "Jimi"}) + following_lizz = insert(:user, %{name: "Jimi Hendrix"}) + following_jimi = insert(:user, %{name: "Lizz Wright"}) + follower_lizz = insert(:user, %{name: "Jimi"}) - {:ok, follower_jimi} = User.follow(follower_jimi, u1) - {:ok, _follower_lizz} = User.follow(follower_lizz, u2) - {:ok, u1} = User.follow(u1, friend) + {:ok, lizz} = User.follow(lizz, following_lizz) + {:ok, _jimi} = User.follow(jimi, following_jimi) + {:ok, _follower_lizz} = User.follow(follower_lizz, lizz) - assert Enum.map(User.search("jimi", following: true, for_user: u1), & &1.id) == [ - follower_jimi.id + assert Enum.map(User.search("jimi", following: true, for_user: lizz), & &1.id) == [ + following_lizz.id ] - assert User.search("lizz", following: true, for_user: u1) == [] + assert User.search("lizz", following: true, for_user: lizz) == [] end test "find local and remote users for authenticated users" do From 74d46a1b0945380c2254943043c5935787876288 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 09:47:16 +0000 Subject: [PATCH 034/141] Merge branch 'secfix/search-crash' into 'develop' Fix crash done via search See merge request pleroma/secteam/pleroma!12 --- lib/pleroma/user.ex | 20 ++++++++++---------- lib/pleroma/user/search.ex | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index d2ad9516f..ce5f4bc4a 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1125,31 +1125,31 @@ def get_followers_query(%User{} = user, nil) do User.Query.build(%{followers: user, deactivated: false}) end - def get_followers_query(user, page) do + def get_followers_query(%User{} = user, page) do user |> get_followers_query(nil) |> User.Query.paginate(page, 20) end @spec get_followers_query(User.t()) :: Ecto.Query.t() - def get_followers_query(user), do: get_followers_query(user, nil) + def get_followers_query(%User{} = user), do: get_followers_query(user, nil) @spec get_followers(User.t(), pos_integer() | nil) :: {:ok, list(User.t())} - def get_followers(user, page \\ nil) do + def get_followers(%User{} = user, page \\ nil) do user |> get_followers_query(page) |> Repo.all() end @spec get_external_followers(User.t(), pos_integer() | nil) :: {:ok, list(User.t())} - def get_external_followers(user, page \\ nil) do + def get_external_followers(%User{} = user, page \\ nil) do user |> get_followers_query(page) |> User.Query.build(%{external: true}) |> Repo.all() end - def get_followers_ids(user, page \\ nil) do + def get_followers_ids(%User{} = user, page \\ nil) do user |> get_followers_query(page) |> select([u], u.id) @@ -1161,29 +1161,29 @@ def get_friends_query(%User{} = user, nil) do User.Query.build(%{friends: user, deactivated: false}) end - def get_friends_query(user, page) do + def get_friends_query(%User{} = user, page) do user |> get_friends_query(nil) |> User.Query.paginate(page, 20) end @spec get_friends_query(User.t()) :: Ecto.Query.t() - def get_friends_query(user), do: get_friends_query(user, nil) + def get_friends_query(%User{} = user), do: get_friends_query(user, nil) - def get_friends(user, page \\ nil) do + def get_friends(%User{} = user, page \\ nil) do user |> get_friends_query(page) |> Repo.all() end - def get_friends_ap_ids(user) do + def get_friends_ap_ids(%User{} = user) do user |> get_friends_query(nil) |> select([u], u.ap_id) |> Repo.all() end - def get_friends_ids(user, page \\ nil) do + def get_friends_ids(%User{} = user, page \\ nil) do user |> get_friends_query(page) |> select([u], u.id) diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index adbef7fb8..7babd47ea 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -115,8 +115,8 @@ defp trigram_rank(query, query_string) do ) end - defp base_query(_user, false), do: User - defp base_query(user, true), do: User.get_friends_query(user) + defp base_query(%User{} = user, true), do: User.get_friends_query(user) + defp base_query(_user, _following), do: User defp filter_invisible_users(query) do from(q in query, where: q.invisible == false) From 13e606941c6ff5de64b0b104e2b0c1f2a66fda59 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 09:49:27 +0000 Subject: [PATCH 035/141] Merge branch 'fix/2087-metadata' into 'develop' Fix/2087 metadata See merge request pleroma/secteam/pleroma!11 --- CHANGELOG.md | 11 +++++++++++ config/config.exs | 4 +--- docs/configuration/cheatsheet.md | 2 -- lib/pleroma/web/feed/tag_controller.ex | 10 +++++++++- lib/pleroma/web/feed/user_controller.ex | 10 +++++++++- lib/pleroma/web/metadata.ex | 11 ++++++++++- test/web/feed/tag_controller_test.exs | 13 +++++++++++++ test/web/feed/user_controller_test.exs | 16 ++++++++++++++++ test/web/metadata/metadata_test.exs | 9 +++++++++ 9 files changed, 78 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07bc6d77c..8ff00c161 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,17 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## unreleased-patch - ??? +### Security +- Fix metadata leak for accounts and statuses on private instances + +### Changed + +- **Breaking:** The metadata providers RelMe and Feed are no longer configurable. RelMe should always be activated and Feed only provides a header tag for the actual RSS/Atom feed when the instance is public. + +### Added + +- Rich media failure tracking (along with `:failure_backoff` option) + ### Fixed - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers diff --git a/config/config.exs b/config/config.exs index 246712b9f..694909bfd 100644 --- a/config/config.exs +++ b/config/config.exs @@ -453,9 +453,7 @@ config :pleroma, Pleroma.Web.Metadata, providers: [ Pleroma.Web.Metadata.Providers.OpenGraph, - Pleroma.Web.Metadata.Providers.TwitterCard, - Pleroma.Web.Metadata.Providers.RelMe, - Pleroma.Web.Metadata.Providers.Feed + Pleroma.Web.Metadata.Providers.TwitterCard ], unfurl_nsfw: false diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 2f440adf4..b4504d1d7 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -352,8 +352,6 @@ config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Http, * `providers`: a list of metadata providers to enable. Providers available: * `Pleroma.Web.Metadata.Providers.OpenGraph` * `Pleroma.Web.Metadata.Providers.TwitterCard` - * `Pleroma.Web.Metadata.Providers.RelMe` - add links from user bio with rel=me into the `
` as ``. - * `Pleroma.Web.Metadata.Providers.Feed` - add a link to a user's Atom feed into the `
` as ``. * `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews. ### :rich_media (consumer) diff --git a/lib/pleroma/web/feed/tag_controller.ex b/lib/pleroma/web/feed/tag_controller.ex index 39b2a766a..93a8294b7 100644 --- a/lib/pleroma/web/feed/tag_controller.ex +++ b/lib/pleroma/web/feed/tag_controller.ex @@ -9,7 +9,15 @@ defmodule Pleroma.Web.Feed.TagController do alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.Feed.FeedView - def feed(conn, %{"tag" => raw_tag} = params) do + def feed(conn, params) do + unless Pleroma.Config.restrict_unauthenticated_access?(:activities, :local) do + render_feed(conn, params) + else + render_error(conn, :not_found, "Not found") + end + end + + def render_feed(conn, %{"tag" => raw_tag} = params) do {format, tag} = parse_tag(raw_tag) activities = diff --git a/lib/pleroma/web/feed/user_controller.ex b/lib/pleroma/web/feed/user_controller.ex index 9cd334a33..71eb1ea7e 100644 --- a/lib/pleroma/web/feed/user_controller.ex +++ b/lib/pleroma/web/feed/user_controller.ex @@ -37,7 +37,15 @@ def feed_redirect(conn, %{"nickname" => nickname}) do end end - def feed(conn, %{"nickname" => nickname} = params) do + def feed(conn, params) do + unless Pleroma.Config.restrict_unauthenticated_access?(:profiles, :local) do + render_feed(conn, params) + else + errors(conn, {:error, :not_found}) + end + end + + def render_feed(conn, %{"nickname" => nickname} = params) do format = get_format(conn) format = diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index a9f70c43e..0f2d8d1e7 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -7,8 +7,9 @@ defmodule Pleroma.Web.Metadata do def build_tags(params) do providers = [ + Pleroma.Web.Metadata.Providers.RelMe, Pleroma.Web.Metadata.Providers.RestrictIndexing - | Pleroma.Config.get([__MODULE__, :providers], []) + | activated_providers() ] Enum.reduce(providers, "", fn parser, acc -> @@ -42,4 +43,12 @@ def activity_nsfw?(%{data: %{"sensitive" => sensitive}}) do def activity_nsfw?(_) do false end + + defp activated_providers do + unless Pleroma.Config.restrict_unauthenticated_access?(:activities, :local) do + [Pleroma.Web.Metadata.Providers.Feed | Pleroma.Config.get([__MODULE__, :providers], [])] + else + [] + end + end end diff --git a/test/web/feed/tag_controller_test.exs b/test/web/feed/tag_controller_test.exs index 3c29cd94f..868e40965 100644 --- a/test/web/feed/tag_controller_test.exs +++ b/test/web/feed/tag_controller_test.exs @@ -181,4 +181,17 @@ test "gets a feed (RSS)", %{conn: conn} do 'yeah #PleromaArt' ] end + + describe "private instance" do + setup do: clear_config([:instance, :public]) + + test "returns 404 for tags feed", %{conn: conn} do + Config.put([:instance, :public], false) + + conn + |> put_req_header("accept", "application/rss+xml") + |> get(tag_feed_path(conn, :feed, "pleromaart")) + |> response(404) + end + end end diff --git a/test/web/feed/user_controller_test.exs b/test/web/feed/user_controller_test.exs index 0d2a61967..9a5610baa 100644 --- a/test/web/feed/user_controller_test.exs +++ b/test/web/feed/user_controller_test.exs @@ -246,4 +246,20 @@ test "with non-html / non-json format, it returns error when user is not found", assert response == ~S({"error":"Not found"}) end end + + describe "private instance" do + setup do: clear_config([:instance, :public]) + + test "returns 404 for user feed", %{conn: conn} do + Config.put([:instance, :public], false) + user = insert(:user) + + {:ok, _} = CommonAPI.post(user, %{status: "test"}) + + assert conn + |> put_req_header("accept", "application/atom+xml") + |> get(user_feed_path(conn, :feed, user.nickname)) + |> response(404) + end + end end diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index 3f8b29e58..9d3121b7b 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -22,4 +22,13 @@ test "for local user" do "" end end + + describe "no metadata for private instances" do + test "for local user" do + clear_config([:instance, :public], false) + user = insert(:user, bio: "This is my secret fedi account bio") + + assert "" = Pleroma.Web.Metadata.build_tags(%{user: user}) + end + end end From 8c3241df449857b408d653306f8c0713ebf3c880 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 2 Sep 2020 09:38:43 +0000 Subject: [PATCH 036/141] Merge branch 'fix/2047-rich-media-parser' into 'develop' RichMedia parser fix Closes #2047 See merge request pleroma/pleroma!2941 --- lib/pleroma/web/rich_media/parser.ex | 44 ++++++++++--------- .../rich_media/parsers/ttl/aws_signed_url.ex | 15 +++---- test/web/rich_media/aws_signed_url_test.exs | 2 +- test/web/rich_media/parser_test.exs | 26 ++++++++--- 4 files changed, 49 insertions(+), 38 deletions(-) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index ca592833f..e9aa2dd03 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -3,6 +3,8 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.RichMedia.Parser do + require Logger + defp parsers do Pleroma.Config.get([:rich_media, :parsers]) end @@ -10,18 +12,19 @@ defp parsers do def parse(nil), do: {:error, "No URL provided"} if Pleroma.Config.get(:env) == :test do + @spec parse(String.t()) :: {:ok, map()} | {:error, any()} def parse(url), do: parse_url(url) else + @spec parse(String.t()) :: {:ok, map()} | {:error, any()} def parse(url) do - try do - Cachex.fetch!(:rich_media_cache, url, fn _ -> - {:commit, parse_url(url)} - end) - |> set_ttl_based_on_image(url) - rescue - e -> - {:error, "Cachex error: #{inspect(e)}"} - end + Cachex.fetch!(:rich_media_cache, url, fn _ -> + with {:ok, data} <- parse_url(url) do + {:commit, {:ok, data}} + else + error -> {:ignore, error} + end + end) + |> set_ttl_based_on_image(url) end end @@ -47,9 +50,11 @@ def ttl(data, url) do config :pleroma, :rich_media, ttl_setters: [MyModule] """ + @spec set_ttl_based_on_image({:ok, map()} | {:error, any()}, String.t()) :: + {:ok, map()} | {:error, any()} def set_ttl_based_on_image({:ok, data}, url) do with {:ok, nil} <- Cachex.ttl(:rich_media_cache, url), - ttl when is_number(ttl) <- get_ttl_from_image(data, url) do + {:ok, ttl} when is_number(ttl) <- get_ttl_from_image(data, url) do Cachex.expire_at(:rich_media_cache, url, ttl * 1000) {:ok, data} else @@ -58,8 +63,14 @@ def set_ttl_based_on_image({:ok, data}, url) do end end + def set_ttl_based_on_image({:error, _} = error, _) do + Logger.error("parsing error: #{inspect(error)}") + error + end + defp get_ttl_from_image(data, url) do - Pleroma.Config.get([:rich_media, :ttl_setters]) + [:rich_media, :ttl_setters] + |> Pleroma.Config.get() |> Enum.reduce({:ok, nil}, fn module, {:ok, _ttl} -> module.ttl(data, url) @@ -70,23 +81,16 @@ defp get_ttl_from_image(data, url) do end defp parse_url(url) do - try do - {:ok, %Tesla.Env{body: html}} = Pleroma.Web.RichMedia.Helpers.rich_media_get(url) - + with {:ok, %Tesla.Env{body: html}} <- Pleroma.Web.RichMedia.Helpers.rich_media_get(url), + {:ok, html} <- Floki.parse_document(html) do html - |> parse_html() |> maybe_parse() |> Map.put("url", url) |> clean_parsed_data() |> check_parsed_data() - rescue - e -> - {:error, "Parsing error: #{inspect(e)} #{inspect(__STACKTRACE__)}"} end end - defp parse_html(html), do: Floki.parse_document!(html) - defp maybe_parse(html) do Enum.reduce_while(parsers(), %{}, fn parser, acc -> case parser.parse(html, acc) do diff --git a/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex b/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex index 0dc1efdaf..c5aaea2d4 100644 --- a/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex +++ b/lib/pleroma/web/rich_media/parsers/ttl/aws_signed_url.ex @@ -10,20 +10,15 @@ def ttl(data, _url) do |> parse_query_params() |> format_query_params() |> get_expiration_timestamp() + else + {:error, "Not aws signed url #{inspect(image)}"} end end - defp is_aws_signed_url(""), do: nil - defp is_aws_signed_url(nil), do: nil - - defp is_aws_signed_url(image) when is_binary(image) do + defp is_aws_signed_url(image) when is_binary(image) and image != "" do %URI{host: host, query: query} = URI.parse(image) - if String.contains?(host, "amazonaws.com") and String.contains?(query, "X-Amz-Expires") do - image - else - nil - end + String.contains?(host, "amazonaws.com") and String.contains?(query, "X-Amz-Expires") end defp is_aws_signed_url(_), do: nil @@ -46,6 +41,6 @@ defp get_expiration_timestamp(params) when is_map(params) do |> Map.get("X-Amz-Date") |> Timex.parse("{ISO:Basic:Z}") - Timex.to_unix(date) + String.to_integer(Map.get(params, "X-Amz-Expires")) + {:ok, Timex.to_unix(date) + String.to_integer(Map.get(params, "X-Amz-Expires"))} end end diff --git a/test/web/rich_media/aws_signed_url_test.exs b/test/web/rich_media/aws_signed_url_test.exs index b30f4400e..a21f3c935 100644 --- a/test/web/rich_media/aws_signed_url_test.exs +++ b/test/web/rich_media/aws_signed_url_test.exs @@ -21,7 +21,7 @@ test "s3 signed url is parsed correct for expiration time" do expire_time = Timex.parse!(timestamp, "{ISO:Basic:Z}") |> Timex.to_unix() |> Kernel.+(valid_till) - assert expire_time == Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl.ttl(metadata, url) + assert {:ok, expire_time} == Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl.ttl(metadata, url) end test "s3 signed url is parsed and correct ttl is set for rich media" do diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index 420a612c6..1e09cbf84 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -5,6 +5,8 @@ defmodule Pleroma.Web.RichMedia.ParserTest do use ExUnit.Case, async: true + alias Pleroma.Web.RichMedia.Parser + setup do Tesla.Mock.mock(fn %{ @@ -48,23 +50,29 @@ defmodule Pleroma.Web.RichMedia.ParserTest do %{method: :get, url: "http://example.com/empty"} -> %Tesla.Env{status: 200, body: "hello"} + + %{method: :get, url: "http://example.com/malformed"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/malformed-data.html")} + + %{method: :get, url: "http://example.com/error"} -> + {:error, :overload} end) :ok end test "returns error when no metadata present" do - assert {:error, _} = Pleroma.Web.RichMedia.Parser.parse("http://example.com/empty") + assert {:error, _} = Parser.parse("http://example.com/empty") end test "doesn't just add a title" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/non-ogp") == + assert Parser.parse("http://example.com/non-ogp") == {:error, "Found metadata was invalid or incomplete: %{\"url\" => \"http://example.com/non-ogp\"}"} end test "parses ogp" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp") == + assert Parser.parse("http://example.com/ogp") == {:ok, %{ "image" => "http://ia.media-imdb.com/images/rock.jpg", @@ -77,7 +85,7 @@ test "parses ogp" do end test "falls back to when ogp:title is missing" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/ogp-missing-title") == + assert Parser.parse("http://example.com/ogp-missing-title") == {:ok, %{ "image" => "http://ia.media-imdb.com/images/rock.jpg", @@ -90,7 +98,7 @@ test "falls back to <title> when ogp:title is missing" do end test "parses twitter card" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/twitter-card") == + assert Parser.parse("http://example.com/twitter-card") == {:ok, %{ "card" => "summary", @@ -103,7 +111,7 @@ test "parses twitter card" do end test "parses OEmbed" do - assert Pleroma.Web.RichMedia.Parser.parse("http://example.com/oembed") == + assert Parser.parse("http://example.com/oembed") == {:ok, %{ "author_name" => "‮‭‬bees‬", @@ -132,6 +140,10 @@ test "parses OEmbed" do end test "rejects invalid OGP data" do - assert {:error, _} = Pleroma.Web.RichMedia.Parser.parse("http://example.com/malformed") + assert {:error, _} = Parser.parse("http://example.com/malformed") + end + + test "returns error if getting page was not successful" do + assert {:error, :overload} = Parser.parse("http://example.com/error") end end From ea4b6c64d60d1dc3246f5a2f23a2e3a47e8fb476 Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Wed, 2 Sep 2020 13:46:11 +0000 Subject: [PATCH 037/141] Merge branch 'feat/rich-media-improvements' into 'develop' Rich media improvements See merge request pleroma/pleroma!2944 --- CHANGELOG.md | 3 +- config/config.exs | 1 + config/description.exs | 7 +++ docs/configuration/cheatsheet.md | 1 + lib/pleroma/html.ex | 5 +- .../web/mastodon_api/views/status_view.ex | 16 ++++++ lib/pleroma/web/rich_media/parser.ex | 56 +++++++++++-------- test/web/rich_media/aws_signed_url_test.exs | 2 +- 8 files changed, 64 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8ff00c161..c87aff851 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,11 +13,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** The metadata providers RelMe and Feed are no longer configurable. RelMe should always be activated and Feed only provides a <link> header tag for the actual RSS/Atom feed when the instance is public. ### Added - - Rich media failure tracking (along with `:failure_backoff` option) ### Fixed - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers +- Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. + Reduced to just rich media timeout. ## [2.1.0] - 2020-08-28 diff --git a/config/config.exs b/config/config.exs index 694909bfd..99bbb74e9 100644 --- a/config/config.exs +++ b/config/config.exs @@ -412,6 +412,7 @@ Pleroma.Web.RichMedia.Parsers.TwitterCard, Pleroma.Web.RichMedia.Parsers.OEmbed ], + failure_backoff: 60_000, ttl_setters: [Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl] config :pleroma, :media_proxy, diff --git a/config/description.exs b/config/description.exs index 29a657333..5e08ba109 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2385,6 +2385,13 @@ suggestions: [ Pleroma.Web.RichMedia.Parser.TTL.AwsSignedUrl ] + }, + %{ + key: :failure_backoff, + type: :integer, + description: + "Amount of milliseconds after request failure, during which the request will not be retried.", + suggestions: [60_000] } ] }, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index b4504d1d7..b2980793d 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -359,6 +359,7 @@ config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Http, * `ignore_hosts`: list of hosts which will be ignored by the metadata parser. For example `["accounts.google.com", "xss.website"]`, defaults to `[]`. * `ignore_tld`: list TLDs (top-level domains) which will ignore for parse metadata. default is ["local", "localdomain", "lan"]. * `parsers`: list of Rich Media parsers. +* `failure_backoff`: Amount of milliseconds after request failure, during which the request will not be retried. ## HTTP server diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index dc1b9b840..20b02f091 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -109,8 +109,9 @@ def extract_first_external_url(object, content) do result = content |> Floki.parse_fragment!() - |> Floki.filter_out("a.mention,a.hashtag,a.attachment,a[rel~=\"tag\"]") - |> Floki.attribute("a", "href") + |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])") + |> Enum.take(1) + |> Floki.attribute("href") |> Enum.at(0) {:commit, {:ok, result}} diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 01b8bb6bb..3fe1967be 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -23,6 +23,17 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do import Pleroma.Web.ActivityPub.Visibility, only: [get_visibility: 1, visible_for_user?: 2] + # This is a naive way to do this, just spawning a process per activity + # to fetch the preview. However it should be fine considering + # pagination is restricted to 40 activities at a time + defp fetch_rich_media_for_activities(activities) do + Enum.each(activities, fn activity -> + spawn(fn -> + Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) + end) + end) + end + # TODO: Add cached version. defp get_replied_to_activities([]), do: %{} @@ -80,6 +91,11 @@ def render("index.json", opts) do # To do: check AdminAPIControllerTest on the reasons behind nil activities in the list activities = Enum.filter(opts.activities, & &1) + + # Start fetching rich media before doing anything else, so that later calls to get the cards + # only block for timeout in the worst case, as opposed to + # length(activities_with_links) * timeout + fetch_rich_media_for_activities(activities) replied_to_activities = get_replied_to_activities(activities) parent_activities = diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index e9aa2dd03..e98c743ca 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -17,14 +17,25 @@ def parse(url), do: parse_url(url) else @spec parse(String.t()) :: {:ok, map()} | {:error, any()} def parse(url) do - Cachex.fetch!(:rich_media_cache, url, fn _ -> - with {:ok, data} <- parse_url(url) do - {:commit, {:ok, data}} - else - error -> {:ignore, error} - end - end) - |> set_ttl_based_on_image(url) + with {:ok, data} <- get_cached_or_parse(url), + {:ok, _} <- set_ttl_based_on_image(data, url) do + {:ok, data} + else + error -> + Logger.error(fn -> "Rich media error: #{inspect(error)}" end) + end + end + + defp get_cached_or_parse(url) do + case Cachex.fetch!(:rich_media_cache, url, fn _ -> {:commit, parse_url(url)} end) do + {:ok, _data} = res -> + res + + {:error, _} = e -> + ttl = Pleroma.Config.get([:rich_media, :failure_backoff], 60_000) + Cachex.expire(:rich_media_cache, url, ttl) + e + end end end @@ -50,22 +61,21 @@ def ttl(data, url) do config :pleroma, :rich_media, ttl_setters: [MyModule] """ - @spec set_ttl_based_on_image({:ok, map()} | {:error, any()}, String.t()) :: - {:ok, map()} | {:error, any()} - def set_ttl_based_on_image({:ok, data}, url) do - with {:ok, nil} <- Cachex.ttl(:rich_media_cache, url), - {:ok, ttl} when is_number(ttl) <- get_ttl_from_image(data, url) do - Cachex.expire_at(:rich_media_cache, url, ttl * 1000) - {:ok, data} - else - _ -> - {:ok, data} - end - end + @spec set_ttl_based_on_image(map(), String.t()) :: + {:ok, Integer.t() | :noop} | {:error, :no_key} + def set_ttl_based_on_image(data, url) do + case get_ttl_from_image(data, url) do + {:ok, ttl} when is_number(ttl) -> + ttl = ttl * 1000 - def set_ttl_based_on_image({:error, _} = error, _) do - Logger.error("parsing error: #{inspect(error)}") - error + case Cachex.expire_at(:rich_media_cache, url, ttl) do + {:ok, true} -> {:ok, ttl} + {:ok, false} -> {:error, :no_key} + end + + _ -> + {:ok, :noop} + end end defp get_ttl_from_image(data, url) do diff --git a/test/web/rich_media/aws_signed_url_test.exs b/test/web/rich_media/aws_signed_url_test.exs index a21f3c935..1ceae1a31 100644 --- a/test/web/rich_media/aws_signed_url_test.exs +++ b/test/web/rich_media/aws_signed_url_test.exs @@ -55,7 +55,7 @@ test "s3 signed url is parsed and correct ttl is set for rich media" do Cachex.put(:rich_media_cache, url, metadata) - Pleroma.Web.RichMedia.Parser.set_ttl_based_on_image({:ok, metadata}, url) + Pleroma.Web.RichMedia.Parser.set_ttl_based_on_image(metadata, url) {:ok, cache_ttl} = Cachex.ttl(:rich_media_cache, url) From dccbed856df131900bf7851fbd11c518f85bce7a Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Wed, 2 Sep 2020 09:36:56 +0000 Subject: [PATCH 038/141] Merge branch 'http-fixes' into 'develop' Improvements and fixes for http requests See merge request pleroma/pleroma!2904 --- config/config.exs | 12 +++++--- lib/mix/tasks/pleroma/frontend.ex | 4 ++- lib/pleroma/gun/connection_pool/worker.ex | 35 ++++++++++++++++------- lib/pleroma/http/adapter_helper.ex | 19 ++---------- lib/pleroma/http/adapter_helper/gun.ex | 33 +++++++++++++++------ lib/pleroma/http/ex_aws.ex | 2 ++ lib/pleroma/http/tzdata.ex | 4 +++ lib/pleroma/instances/instance.ex | 4 ++- lib/pleroma/object/fetcher.ex | 6 ++-- lib/pleroma/uploaders/s3.ex | 23 +++++++++++---- lib/pleroma/web/rich_media/helpers.ex | 2 +- lib/pleroma/web/web_finger/web_finger.ex | 4 +-- test/support/http_request_mock.ex | 4 +-- 13 files changed, 95 insertions(+), 57 deletions(-) diff --git a/config/config.exs b/config/config.exs index 99bbb74e9..88f6125e5 100644 --- a/config/config.exs +++ b/config/config.exs @@ -739,19 +739,23 @@ config :pleroma, :pools, federation: [ size: 50, - max_waiting: 10 + max_waiting: 10, + timeout: 10_000 ], media: [ size: 50, - max_waiting: 10 + max_waiting: 10, + timeout: 10_000 ], upload: [ size: 25, - max_waiting: 5 + max_waiting: 5, + timeout: 15_000 ], default: [ size: 10, - max_waiting: 2 + max_waiting: 2, + timeout: 5_000 ] config :pleroma, :hackney_pools, diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex index 2adbf8d72..484af6da7 100644 --- a/lib/mix/tasks/pleroma/frontend.ex +++ b/lib/mix/tasks/pleroma/frontend.ex @@ -124,7 +124,9 @@ defp download_build(frontend_info, dest) do url = String.replace(frontend_info["build_url"], "${ref}", frontend_info["ref"]) with {:ok, %{status: 200, body: zip_body}} <- - Pleroma.HTTP.get(url, [], timeout: 120_000, recv_timeout: 120_000) do + Pleroma.HTTP.get(url, [], + adapter: [pool: :media, timeout: 120_000, recv_timeout: 120_000] + ) do unzip(zip_body, dest) else e -> {:error, e} diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex index fec9d0efa..c36332817 100644 --- a/lib/pleroma/gun/connection_pool/worker.ex +++ b/lib/pleroma/gun/connection_pool/worker.ex @@ -83,17 +83,25 @@ def handle_call(:remove_client, {client_pid, _}, %{key: key} = state) do end) {ref, state} = pop_in(state.client_monitors[client_pid]) - Process.demonitor(ref) - - timer = - if used_by == [] do - max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) - Process.send_after(self(), :idle_close, max_idle) + # DOWN message can receive right after `remove_client` call and cause worker to terminate + state = + if is_nil(ref) do + state else - nil + Process.demonitor(ref) + + timer = + if used_by == [] do + max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) + Process.send_after(self(), :idle_close, max_idle) + else + nil + end + + %{state | timer: timer} end - {:reply, :ok, %{state | timer: timer}, :hibernate} + {:reply, :ok, state, :hibernate} end @impl true @@ -103,16 +111,21 @@ def handle_info(:idle_close, state) do {:stop, :normal, state} end + @impl true + def handle_info({:gun_up, _pid, _protocol}, state) do + {:noreply, state, :hibernate} + end + # Gracefully shutdown if the connection got closed without any streams left @impl true def handle_info({:gun_down, _pid, _protocol, _reason, []}, state) do {:stop, :normal, state} end - # Otherwise, shutdown with an error + # Otherwise, wait for retry @impl true - def handle_info({:gun_down, _pid, _protocol, _reason, _killed_streams} = down_message, state) do - {:stop, {:error, down_message}, state} + def handle_info({:gun_down, _pid, _protocol, _reason, _killed_streams}, state) do + {:noreply, state, :hibernate} end @impl true diff --git a/lib/pleroma/http/adapter_helper.ex b/lib/pleroma/http/adapter_helper.ex index 9ec3836b0..0728cbaa2 100644 --- a/lib/pleroma/http/adapter_helper.ex +++ b/lib/pleroma/http/adapter_helper.ex @@ -11,7 +11,6 @@ defmodule Pleroma.HTTP.AdapterHelper do @type proxy_type() :: :socks4 | :socks5 @type host() :: charlist() | :inet.ip_address() - alias Pleroma.Config alias Pleroma.HTTP.AdapterHelper require Logger @@ -44,27 +43,13 @@ def maybe_add_proxy(opts, proxy), do: Keyword.put_new(opts, :proxy, proxy) @spec options(URI.t(), keyword()) :: keyword() def options(%URI{} = uri, opts \\ []) do @defaults - |> put_timeout() |> Keyword.merge(opts) |> adapter_helper().options(uri) end - # For Hackney, this is the time a connection can stay idle in the pool. - # For Gun, this is the timeout to receive a message from Gun. - defp put_timeout(opts) do - {config_key, default} = - if adapter() == Tesla.Adapter.Gun do - {:pools, Config.get([:pools, :default, :timeout], 5_000)} - else - {:hackney_pools, 10_000} - end - - timeout = Config.get([config_key, opts[:pool], :timeout], default) - - Keyword.merge(opts, timeout: timeout) - end - + @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} | {:error, atom()} def get_conn(uri, opts), do: adapter_helper().get_conn(uri, opts) + defp adapter, do: Application.get_env(:tesla, :adapter) defp adapter_helper do diff --git a/lib/pleroma/http/adapter_helper/gun.ex b/lib/pleroma/http/adapter_helper/gun.ex index b4ff8306c..02e20f2d1 100644 --- a/lib/pleroma/http/adapter_helper/gun.ex +++ b/lib/pleroma/http/adapter_helper/gun.ex @@ -5,6 +5,7 @@ defmodule Pleroma.HTTP.AdapterHelper.Gun do @behaviour Pleroma.HTTP.AdapterHelper + alias Pleroma.Config alias Pleroma.Gun.ConnectionPool alias Pleroma.HTTP.AdapterHelper @@ -14,31 +15,46 @@ defmodule Pleroma.HTTP.AdapterHelper.Gun do connect_timeout: 5_000, domain_lookup_timeout: 5_000, tls_handshake_timeout: 5_000, - retry: 0, + retry: 1, retry_timeout: 1000, await_up_timeout: 5_000 ] + @type pool() :: :federation | :upload | :media | :default + @spec options(keyword(), URI.t()) :: keyword() def options(incoming_opts \\ [], %URI{} = uri) do proxy = - Pleroma.Config.get([:http, :proxy_url]) + [:http, :proxy_url] + |> Config.get() |> AdapterHelper.format_proxy() - config_opts = Pleroma.Config.get([:http, :adapter], []) + config_opts = Config.get([:http, :adapter], []) @defaults |> Keyword.merge(config_opts) |> add_scheme_opts(uri) |> AdapterHelper.maybe_add_proxy(proxy) |> Keyword.merge(incoming_opts) + |> put_timeout() end defp add_scheme_opts(opts, %{scheme: "http"}), do: opts defp add_scheme_opts(opts, %{scheme: "https"}) do - opts - |> Keyword.put(:certificates_verification, true) + Keyword.put(opts, :certificates_verification, true) + end + + defp put_timeout(opts) do + # this is the timeout to receive a message from Gun + Keyword.put_new(opts, :timeout, pool_timeout(opts[:pool])) + end + + @spec pool_timeout(pool()) :: non_neg_integer() + def pool_timeout(pool) do + default = Config.get([:pools, :default, :timeout], 5_000) + + Config.get([:pools, pool, :timeout], default) end @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} | {:error, atom()} @@ -51,11 +67,11 @@ def get_conn(uri, opts) do @prefix Pleroma.Gun.ConnectionPool def limiter_setup do - wait = Pleroma.Config.get([:connections_pool, :connection_acquisition_wait]) - retries = Pleroma.Config.get([:connections_pool, :connection_acquisition_retries]) + wait = Config.get([:connections_pool, :connection_acquisition_wait]) + retries = Config.get([:connections_pool, :connection_acquisition_retries]) :pools - |> Pleroma.Config.get([]) + |> Config.get([]) |> Enum.each(fn {name, opts} -> max_running = Keyword.get(opts, :size, 50) max_waiting = Keyword.get(opts, :max_waiting, 10) @@ -69,7 +85,6 @@ def limiter_setup do case result do :ok -> :ok {:error, :existing} -> :ok - e -> raise e end end) diff --git a/lib/pleroma/http/ex_aws.ex b/lib/pleroma/http/ex_aws.ex index e53e64077..c3f335c73 100644 --- a/lib/pleroma/http/ex_aws.ex +++ b/lib/pleroma/http/ex_aws.ex @@ -11,6 +11,8 @@ defmodule Pleroma.HTTP.ExAws do @impl true def request(method, url, body \\ "", headers \\ [], http_opts \\ []) do + http_opts = Keyword.put_new(http_opts, :adapter, pool: :upload) + case HTTP.request(method, url, body, headers, http_opts) do {:ok, env} -> {:ok, %{status_code: env.status, headers: env.headers, body: env.body}} diff --git a/lib/pleroma/http/tzdata.ex b/lib/pleroma/http/tzdata.ex index 34bb253a7..4539ac359 100644 --- a/lib/pleroma/http/tzdata.ex +++ b/lib/pleroma/http/tzdata.ex @@ -11,6 +11,8 @@ defmodule Pleroma.HTTP.Tzdata do @impl true def get(url, headers, options) do + options = Keyword.put_new(options, :adapter, pool: :default) + with {:ok, %Tesla.Env{} = env} <- HTTP.get(url, headers, options) do {:ok, {env.status, env.headers, env.body}} end @@ -18,6 +20,8 @@ def get(url, headers, options) do @impl true def head(url, headers, options) do + options = Keyword.put_new(options, :adapter, pool: :default) + with {:ok, %Tesla.Env{} = env} <- HTTP.head(url, headers, options) do {:ok, {env.status, env.headers}} end diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index a1f935232..711c42158 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -150,7 +150,9 @@ def get_or_update_favicon(%URI{host: host} = instance_uri) do defp scrape_favicon(%URI{} = instance_uri) do try do with {:ok, %Tesla.Env{body: html}} <- - Pleroma.HTTP.get(to_string(instance_uri), [{:Accept, "text/html"}]), + Pleroma.HTTP.get(to_string(instance_uri), [{"accept", "text/html"}], + adapter: [pool: :media] + ), favicon_rel <- html |> Floki.parse_document!() diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 6fdbc8efd..374d8704a 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -164,12 +164,12 @@ defp make_signature(id, date) do date: date }) - [{"signature", signature}] + {"signature", signature} end defp sign_fetch(headers, id, date) do if Pleroma.Config.get([:activitypub, :sign_object_fetches]) do - headers ++ make_signature(id, date) + [make_signature(id, date) | headers] else headers end @@ -177,7 +177,7 @@ defp sign_fetch(headers, id, date) do defp maybe_date_fetch(headers, date) do if Pleroma.Config.get([:activitypub, :sign_object_fetches]) do - headers ++ [{"date", date}] + [{"date", date} | headers] else headers end diff --git a/lib/pleroma/uploaders/s3.ex b/lib/pleroma/uploaders/s3.ex index a13ff23b6..6dbef9085 100644 --- a/lib/pleroma/uploaders/s3.ex +++ b/lib/pleroma/uploaders/s3.ex @@ -46,12 +46,23 @@ def put_file(%Pleroma.Upload{} = upload) do op = if streaming do - upload.tempfile - |> ExAws.S3.Upload.stream_file() - |> ExAws.S3.upload(bucket, s3_name, [ - {:acl, :public_read}, - {:content_type, upload.content_type} - ]) + op = + upload.tempfile + |> ExAws.S3.Upload.stream_file() + |> ExAws.S3.upload(bucket, s3_name, [ + {:acl, :public_read}, + {:content_type, upload.content_type} + ]) + + if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Gun do + # set s3 upload timeout to respect :upload pool timeout + # timeout should be slightly larger, so s3 can retry upload on fail + timeout = Pleroma.HTTP.AdapterHelper.Gun.pool_timeout(:upload) + 1_000 + opts = Keyword.put(op.opts, :timeout, timeout) + Map.put(op, :opts, opts) + else + op + end else {:ok, file_data} = File.read(upload.tempfile) diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 6210f2c5a..2fb482b51 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -96,6 +96,6 @@ def rich_media_get(url) do @rich_media_options end - Pleroma.HTTP.get(url, headers, options) + Pleroma.HTTP.get(url, headers, adapter: options) end end diff --git a/lib/pleroma/web/web_finger/web_finger.ex b/lib/pleroma/web/web_finger/web_finger.ex index c4051e63e..6629f5356 100644 --- a/lib/pleroma/web/web_finger/web_finger.ex +++ b/lib/pleroma/web/web_finger/web_finger.ex @@ -136,12 +136,12 @@ def get_template_from_xml(body) do def find_lrdd_template(domain) do with {:ok, %{status: status, body: body}} when status in 200..299 <- - HTTP.get("http://#{domain}/.well-known/host-meta", []) do + HTTP.get("http://#{domain}/.well-known/host-meta") do get_template_from_xml(body) else _ -> with {:ok, %{body: body, status: status}} when status in 200..299 <- - HTTP.get("https://#{domain}/.well-known/host-meta", []) do + HTTP.get("https://#{domain}/.well-known/host-meta") do get_template_from_xml(body) else e -> {:error, "Can't find LRDD template: #{inspect(e)}"} diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index eeeba7880..a0ebf65d9 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -1350,11 +1350,11 @@ def get("https://relay.mastodon.host/actor", _, _, _) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/relay/relay.json")}} end - def get("http://localhost:4001/", _, "", Accept: "text/html") do + def get("http://localhost:4001/", _, "", [{"accept", "text/html"}]) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/7369654.html")}} end - def get("https://osada.macgirvin.com/", _, "", Accept: "text/html") do + def get("https://osada.macgirvin.com/", _, "", [{"accept", "text/html"}]) do {:ok, %Tesla.Env{ status: 200, From 515116e2f02c38763f551308a33f93ccd54f8186 Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Mon, 31 Aug 2020 07:22:35 +0000 Subject: [PATCH 039/141] Merge branch 'chore/fast-sanitize-bump' into 'develop' mix.lock: bump fast_sanitize See merge request pleroma/pleroma!2932 --- mix.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.lock b/mix.lock index 86d0a75d7..afb4b06db 100644 --- a/mix.lock +++ b/mix.lock @@ -42,8 +42,8 @@ "ex_machina": {:hex, :ex_machina, "2.4.0", "09a34c5d371bfb5f78399029194a8ff67aff340ebe8ba19040181af35315eabb", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "a20bc9ddc721b33ea913b93666c5d0bdca5cbad7a67540784ae277228832d72c"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, "excoveralls": {:hex, :excoveralls, "0.13.1", "b9f1697f7c9e0cfe15d1a1d737fb169c398803ffcbc57e672aa007e9fd42864c", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b4bb550e045def1b4d531a37fb766cbbe1307f7628bf8f0414168b3f52021cce"}, - "fast_html": {:hex, :fast_html, "2.0.2", "1fabc408b2baa965cf6399a48796326f2721b21b397a3c667bb3bb88fb9559a4", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "f077e2c1597a6e2678e6cacc64f456a6c6024eb4240092c46d4212496dc59aba"}, - "fast_sanitize": {:hex, :fast_sanitize, "0.2.1", "3302421a988992b6cae08e68f77069e167ff116444183f3302e3c36017a50558", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bcd2c54e328128515edd1a8fb032fdea7e5581672ba161fc5962d21ecee92502"}, + "fast_html": {:hex, :fast_html, "2.0.3", "27289dea6c3a22952191a2d4e07f546c0de8a351484782c2e797dbae06a5dc8a", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "17d41fa8afe4e912ffe74e13b87ddb085382cd2b7393636d338495c9a8a7b518"}, + "fast_sanitize": {:hex, :fast_sanitize, "0.2.2", "3cbbaebaea6043865dfb5b4ecb0f1af066ad410a51470e353714b10c42007b81", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "69f204db9250afa94a0d559d9110139850f57de2b081719fbafa1e9a89e94466"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, "floki": {:hex, :floki, "0.27.0", "6b29a14283f1e2e8fad824bc930eaa9477c462022075df6bea8f0ad811c13599", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "583b8c13697c37179f1f82443bcc7ad2f76fbc0bf4c186606eebd658f7f2631b"}, "gen_smtp": {:hex, :gen_smtp, "0.15.0", "9f51960c17769b26833b50df0b96123605a8024738b62db747fece14eb2fbfcc", [:rebar3], [], "hexpm", "29bd14a88030980849c7ed2447b8db6d6c9278a28b11a44cafe41b791205440f"}, From 43b07c31cb88fbb87ff41a8e24303f930a657f44 Mon Sep 17 00:00:00 2001 From: feld <feld@feld.me> Date: Wed, 2 Sep 2020 17:11:24 +0000 Subject: [PATCH 040/141] Merge branch 'fix/2095-deactivated-account-reset' into 'develop' Disallow password resets for deactivated accounts Closes #2095 See merge request pleroma/pleroma!2935 --- CHANGELOG.md | 1 + .../controllers/auth_controller.ex | 14 ++++-------- lib/pleroma/web/twitter_api/twitter_api.ex | 13 ++--------- .../controllers/auth_controller_test.exs | 22 ++++++++++++++----- 4 files changed, 23 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c87aff851..56e9671e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. +- Password resets no longer processed for deactivated accounts ## [2.1.0] - 2020-08-28 diff --git a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex index 753b3db3e..9f09550e1 100644 --- a/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex +++ b/lib/pleroma/web/mastodon_api/controllers/auth_controller.ex @@ -59,17 +59,11 @@ def logout(conn, _) do def password_reset(conn, params) do nickname_or_email = params["email"] || params["nickname"] - with {:ok, _} <- TwitterAPI.password_reset(nickname_or_email) do - conn - |> put_status(:no_content) - |> json("") - else - {:error, "unknown user"} -> - send_resp(conn, :not_found, "") + TwitterAPI.password_reset(nickname_or_email) - {:error, _} -> - send_resp(conn, :bad_request, "") - end + conn + |> put_status(:no_content) + |> json("") end defp local_mastodon_root_path(conn) do diff --git a/lib/pleroma/web/twitter_api/twitter_api.ex b/lib/pleroma/web/twitter_api/twitter_api.ex index 2294d9d0d..5d7948507 100644 --- a/lib/pleroma/web/twitter_api/twitter_api.ex +++ b/lib/pleroma/web/twitter_api/twitter_api.ex @@ -72,7 +72,7 @@ defp maybe_notify_admins(%User{} = account) do def password_reset(nickname_or_email) do with true <- is_binary(nickname_or_email), - %User{local: true, email: email} = user when is_binary(email) <- + %User{local: true, email: email, deactivated: false} = user when is_binary(email) <- User.get_by_nickname_or_email(nickname_or_email), {:ok, token_record} <- Pleroma.PasswordResetToken.create_token(user) do user @@ -81,17 +81,8 @@ def password_reset(nickname_or_email) do {:ok, :enqueued} else - false -> - {:error, "bad user identifier"} - - %User{local: true, email: nil} -> + _ -> {:ok, :noop} - - %User{local: false} -> - {:error, "remote user"} - - nil -> - {:error, "unknown user"} end end diff --git a/test/web/mastodon_api/controllers/auth_controller_test.exs b/test/web/mastodon_api/controllers/auth_controller_test.exs index a485f8e41..4fa95fce1 100644 --- a/test/web/mastodon_api/controllers/auth_controller_test.exs +++ b/test/web/mastodon_api/controllers/auth_controller_test.exs @@ -122,17 +122,27 @@ test "it doesn't fail when a user has no email", %{conn: conn} do {:ok, user: user} end - test "it returns 404 when user is not found", %{conn: conn, user: user} do + test "it returns 204 when user is not found", %{conn: conn, user: user} do conn = post(conn, "/auth/password?email=nonexisting_#{user.email}") - assert conn.status == 404 - assert conn.resp_body == "" + + assert conn + |> json_response(:no_content) end - test "it returns 400 when user is not local", %{conn: conn, user: user} do + test "it returns 204 when user is not local", %{conn: conn, user: user} do {:ok, user} = Repo.update(Ecto.Changeset.change(user, local: false)) conn = post(conn, "/auth/password?email=#{user.email}") - assert conn.status == 400 - assert conn.resp_body == "" + + assert conn + |> json_response(:no_content) + end + + test "it returns 204 when user is deactivated", %{conn: conn, user: user} do + {:ok, user} = Repo.update(Ecto.Changeset.change(user, deactivated: true, local: true)) + conn = post(conn, "/auth/password?email=#{user.email}") + + assert conn + |> json_response(:no_content) end end From 964bc8e2e8c9759985abaf9b8a5e26a2c5666fea Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Mon, 7 Sep 2020 11:12:30 +0000 Subject: [PATCH 041/141] Merge branch 'bugfix/favicon-too-long' into 'develop' instance: Drop favicon URLs longer than 255 characters Closes #2116 See merge request pleroma/pleroma!2949 --- lib/pleroma/instances/instance.ex | 13 ++++++++++- test/web/instances/instance_test.exs | 33 ++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 711c42158..8bf53c090 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -14,6 +14,8 @@ defmodule Pleroma.Instances.Instance do import Ecto.Query import Ecto.Changeset + require Logger + schema "instances" do field(:host, :string) field(:unreachable_since, :naive_datetime_usec) @@ -145,6 +147,10 @@ def get_or_update_favicon(%URI{host: host} = instance_uri) do favicon end + rescue + e -> + Logger.warn("Instance.get_or_update_favicon(\"#{host}\") error: #{inspect(e)}") + nil end defp scrape_favicon(%URI{} = instance_uri) do @@ -165,7 +171,12 @@ defp scrape_favicon(%URI{} = instance_uri) do _ -> nil end rescue - _ -> nil + e -> + Logger.warn( + "Instance.scrape_favicon(\"#{to_string(instance_uri)}\") error: #{inspect(e)}" + ) + + nil end end end diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index e463200ca..dc6ace843 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -8,6 +8,7 @@ defmodule Pleroma.Instances.InstanceTest do use Pleroma.DataCase + import ExUnit.CaptureLog import Pleroma.Factory setup_all do: clear_config([:instance, :federation_reachability_timeout_days], 1) @@ -97,4 +98,36 @@ test "does NOT modify `unreachable_since` value of existing record in case it's assert initial_value == instance.unreachable_since end end + + test "Scrapes favicon URLs" do + Tesla.Mock.mock(fn %{url: "https://favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[<html><head><link rel="icon" href="/favicon.png"></head></html>] + } + end) + + assert "https://favicon.example.org/favicon.png" == + Instance.get_or_update_favicon(URI.parse("https://favicon.example.org/")) + end + + test "Returns nil on too long favicon URLs" do + long_favicon_url = + "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" + + Tesla.Mock.mock(fn %{url: "https://long-favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[<html><head><link rel="icon" href="] <> long_favicon_url <> ~s["></head></html>] + } + end) + + assert capture_log(fn -> + assert nil == + Instance.get_or_update_favicon( + URI.parse("https://long-favicon.example.org/") + ) + end) =~ + "Instance.get_or_update_favicon(\"long-favicon.example.org\") error: %Postgrex.Error{" + end end From 59f5e39f9b5715bc2e05f3a87e16a2e55593b0ae Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Fri, 4 Sep 2020 07:17:10 +0000 Subject: [PATCH 042/141] Merge branch 'chore/fast_html-bump' into 'develop' mix.lock: Bump fast_html See merge request pleroma/pleroma!2950 --- mix.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mix.lock b/mix.lock index afb4b06db..874ea9215 100644 --- a/mix.lock +++ b/mix.lock @@ -42,7 +42,7 @@ "ex_machina": {:hex, :ex_machina, "2.4.0", "09a34c5d371bfb5f78399029194a8ff67aff340ebe8ba19040181af35315eabb", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "a20bc9ddc721b33ea913b93666c5d0bdca5cbad7a67540784ae277228832d72c"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, "excoveralls": {:hex, :excoveralls, "0.13.1", "b9f1697f7c9e0cfe15d1a1d737fb169c398803ffcbc57e672aa007e9fd42864c", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b4bb550e045def1b4d531a37fb766cbbe1307f7628bf8f0414168b3f52021cce"}, - "fast_html": {:hex, :fast_html, "2.0.3", "27289dea6c3a22952191a2d4e07f546c0de8a351484782c2e797dbae06a5dc8a", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "17d41fa8afe4e912ffe74e13b87ddb085382cd2b7393636d338495c9a8a7b518"}, + "fast_html": {:hex, :fast_html, "2.0.4", "4910ee49f2f6b19692e3bf30bf97f1b6b7dac489cd6b0f34cd0fe3042c56ba30", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "3bb49d541dfc02ad5e425904f53376d758c09f89e521afc7d2b174b3227761ea"}, "fast_sanitize": {:hex, :fast_sanitize, "0.2.2", "3cbbaebaea6043865dfb5b4ecb0f1af066ad410a51470e353714b10c42007b81", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "69f204db9250afa94a0d559d9110139850f57de2b081719fbafa1e9a89e94466"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, "floki": {:hex, :floki, "0.27.0", "6b29a14283f1e2e8fad824bc930eaa9477c462022075df6bea8f0ad811c13599", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "583b8c13697c37179f1f82443bcc7ad2f76fbc0bf4c186606eebd658f7f2631b"}, From 4306050da977f34fde43694b376f4334a2ced2e8 Mon Sep 17 00:00:00 2001 From: lain <lain@soykaf.club> Date: Fri, 4 Sep 2020 18:19:23 +0000 Subject: [PATCH 043/141] Merge branch 'develop' into 'develop' Added cmake See merge request pleroma/pleroma!2953 --- docs/installation/freebsd_en.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/installation/freebsd_en.md b/docs/installation/freebsd_en.md index 130d68766..ca2575d9b 100644 --- a/docs/installation/freebsd_en.md +++ b/docs/installation/freebsd_en.md @@ -7,7 +7,7 @@ This document was written for FreeBSD 12.1, but should be work on future release This assumes the target system has `pkg(8)`. ``` -# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh +# pkg install elixir postgresql12-server postgresql12-client postgresql12-contrib git-lite sudo nginx gmake acme.sh cmake ``` Copy the rc.d scripts to the right directory: From 9b85592b8bb5b61de6a67d087beecbb651ffb397 Mon Sep 17 00:00:00 2001 From: lain <lain@soykaf.club> Date: Mon, 7 Sep 2020 10:19:19 +0000 Subject: [PATCH 044/141] Merge branch 'fix/rich-media-fake-statuses' into 'develop' Rich Media: Do not cache URLs for preview statuses Closes #1987 See merge request pleroma/pleroma!2956 --- CHANGELOG.md | 1 + lib/pleroma/html.ex | 32 +++++++++------- lib/pleroma/web/rich_media/helpers.ex | 2 +- test/html_test.exs | 14 +++---- .../controllers/status_controller_test.exs | 38 ++++++++++++++++++- 5 files changed, 65 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 56e9671e4..01d7a7bc6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. +- Mastodon API: Cards being wrong for preview statuses due to cache key collision - Password resets no longer processed for deactivated accounts ## [2.1.0] - 2020-08-28 diff --git a/lib/pleroma/html.ex b/lib/pleroma/html.ex index 20b02f091..43e9145be 100644 --- a/lib/pleroma/html.ex +++ b/lib/pleroma/html.ex @@ -100,21 +100,27 @@ defp generate_scrubber_signature(scrubbers) do end) end - def extract_first_external_url(_, nil), do: {:error, "No content"} + def extract_first_external_url_from_object(%{data: %{"content" => content}} = object) + when is_binary(content) do + unless object.data["fake"] do + key = "URL|#{object.id}" - def extract_first_external_url(object, content) do - key = "URL|#{object.id}" + Cachex.fetch!(:scrubber_cache, key, fn _key -> + {:commit, {:ok, extract_first_external_url(content)}} + end) + else + {:ok, extract_first_external_url(content)} + end + end - Cachex.fetch!(:scrubber_cache, key, fn _key -> - result = - content - |> Floki.parse_fragment!() - |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])") - |> Enum.take(1) - |> Floki.attribute("href") - |> Enum.at(0) + def extract_first_external_url_from_object(_), do: {:error, :no_content} - {:commit, {:ok, result}} - end) + def extract_first_external_url(content) do + content + |> Floki.parse_fragment!() + |> Floki.find("a:not(.mention,.hashtag,.attachment,[rel~=\"tag\"])") + |> Enum.take(1) + |> Floki.attribute("href") + |> Enum.at(0) end end diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index 2fb482b51..752ca9f81 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -58,7 +58,7 @@ def fetch_data_for_object(object) do with true <- Config.get([:rich_media, :enabled]), false <- object.data["sensitive"] || false, {:ok, page_url} <- - HTML.extract_first_external_url(object, object.data["content"]), + HTML.extract_first_external_url_from_object(object), :ok <- validate_page_url(page_url), {:ok, rich_media} <- Parser.parse(page_url) do %{page_url: page_url, rich_media: rich_media} diff --git a/test/html_test.exs b/test/html_test.exs index f8907c8b4..7d3756884 100644 --- a/test/html_test.exs +++ b/test/html_test.exs @@ -165,7 +165,7 @@ test "filters invalid microformats markup" do end end - describe "extract_first_external_url" do + describe "extract_first_external_url_from_object" do test "extracts the url" do user = insert(:user) @@ -176,7 +176,7 @@ test "extracts the url" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://github.com/komeiji-satori/Dress" end @@ -191,7 +191,7 @@ test "skips mentions" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://github.com/syuilo/misskey/blob/develop/docs/setup.en.md" @@ -207,7 +207,7 @@ test "skips hashtags" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140" end @@ -223,7 +223,7 @@ test "skips microformats hashtags" do }) object = Object.normalize(activity) - {:ok, url} = HTML.extract_first_external_url(object, object.data["content"]) + {:ok, url} = HTML.extract_first_external_url_from_object(object) assert url == "https://www.pixiv.net/member_illust.php?mode=medium&illust_id=72255140" end @@ -235,7 +235,7 @@ test "does not crash when there is an HTML entity in a link" do object = Object.normalize(activity) - assert {:ok, nil} = HTML.extract_first_external_url(object, object.data["content"]) + assert {:ok, nil} = HTML.extract_first_external_url_from_object(object) end test "skips attachment links" do @@ -249,7 +249,7 @@ test "skips attachment links" do object = Object.normalize(activity) - assert {:ok, nil} = HTML.extract_first_external_url(object, object.data["content"]) + assert {:ok, nil} = HTML.extract_first_external_url_from_object(object) end end end diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 5955d8334..f221884e7 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -296,9 +296,45 @@ test "posting a fake status", %{conn: conn} do assert real_status == fake_status end + test "fake statuses' preview card is not cached", %{conn: conn} do + clear_config([:rich_media, :enabled], true) + + Tesla.Mock.mock(fn + %{ + method: :get, + url: "https://example.com/twitter-card" + } -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/rich_media/twitter_card.html")} + + env -> + apply(HttpRequestMock, :request, [env]) + end) + + conn1 = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{ + "status" => "https://example.com/ogp", + "preview" => true + }) + + conn2 = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses", %{ + "status" => "https://example.com/twitter-card", + "preview" => true + }) + + assert %{"card" => %{"title" => "The Rock"}} = json_response_and_validate_schema(conn1, 200) + + assert %{"card" => %{"title" => "Small Island Developing States Photo Submission"}} = + json_response_and_validate_schema(conn2, 200) + end + test "posting a status with OGP link preview", %{conn: conn} do Tesla.Mock.mock(fn env -> apply(HttpRequestMock, :request, [env]) end) - Config.put([:rich_media, :enabled], true) + clear_config([:rich_media, :enabled], true) conn = conn From 4b76d7ce67333fd9e09ce39102c3d5818309009c Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Mon, 7 Sep 2020 11:38:15 +0000 Subject: [PATCH 045/141] Merge branch 'fix/admin-controller-atom-leak' into 'develop' Fix atom leak in AdminAPIController See merge request pleroma/secteam/pleroma!6 --- lib/pleroma/web/admin_api/controllers/admin_api_controller.ex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex index aa2af1ab5..f5e4d49f9 100644 --- a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex @@ -379,8 +379,7 @@ defp maybe_parse_filters(filters) do filters |> String.split(",") |> Enum.filter(&Enum.member?(@filters, &1)) - |> Enum.map(&String.to_atom/1) - |> Map.new(&{&1, true}) + |> Map.new(&{String.to_existing_atom(&1), true}) end def right_add_multiple(%{assigns: %{user: admin}} = conn, %{ From 7215563641e2a5096293128519d6a454aabc46f2 Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Tue, 8 Sep 2020 11:32:46 +0000 Subject: [PATCH 046/141] description.exs: add ForceBotUnlistedPolicy --- config/description.exs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/config/description.exs b/config/description.exs index 18c133f02..2191e8d6d 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1669,6 +1669,15 @@ } ] }, + %{ + group: :pleroma, + key: :mrf_force_bot_unlisted, + tab: :mrf, + related_policy: "Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy", + label: "MRF Force Bot Unlisted Policy", + type: :boolean, + description: "Makes bot posts to disappear from public timelines" + }, %{ group: :pleroma, key: :mrf_subchain, From efff2caccccae76dd749df67322c61a70957268b Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Tue, 8 Sep 2020 11:34:04 +0000 Subject: [PATCH 047/141] docs: cheatsheet: add ForceBotUnlistedPolicy --- docs/configuration/cheatsheet.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index a9a650fab..2ca4d7351 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -115,6 +115,7 @@ To add configuration to your config file, you can copy it from the base config. * `Pleroma.Web.ActivityPub.MRF.VocabularyPolicy`: Restricts activities to a configured set of vocabulary. (See [`:mrf_vocabulary`](#mrf_vocabulary)). * `Pleroma.Web.ActivityPub.MRF.ObjectAgePolicy`: Rejects or delists posts based on their age when received. (See [`:mrf_object_age`](#mrf_object_age)). * `Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy`: Sets a default expiration on all posts made by users of the local instance. Requires `Pleroma.ActivityExpiration` to be enabled for processing the scheduled delections. + * `Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy`: Makes all bot posts to disappear from public timelines. * `transparency`: Make the content of your Message Rewrite Facility settings public (via nodeinfo). * `transparency_exclusions`: Exclude specific instance names from MRF transparency. The use of the exclusions feature will be disclosed in nodeinfo as a boolean value. From 5d814f739cd2bb55822e0cfdb9ad2526d10482bb Mon Sep 17 00:00:00 2001 From: Alibek Omarov <a1ba.omarov@gmail.com> Date: Tue, 8 Sep 2020 11:35:34 +0000 Subject: [PATCH 048/141] changelog: add ForceBotUnlistedPolicy --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 46f1e859b..1b1ea02ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## Unreleased +### Added + +- MRF policy to rewrite bot posts scope from public to unlisted + ### Removed - **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. From ce3474f4d3552f6dca7f08e87a6d3d7f46bdc72d Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Tue, 8 Sep 2020 15:06:53 +0300 Subject: [PATCH 049/141] Disable favicon scraping in tests --- config/test.exs | 2 +- test/web/instances/instance_test.exs | 2 + .../mastodon_api/views/account_view_test.exs | 40 ++++++++++--------- 3 files changed, 24 insertions(+), 20 deletions(-) diff --git a/config/test.exs b/config/test.exs index f0358e384..e9c2273e8 100644 --- a/config/test.exs +++ b/config/test.exs @@ -114,7 +114,7 @@ config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true -config :pleroma, :instances_favicons, enabled: true +config :pleroma, :instances_favicons, enabled: false config :pleroma, Pleroma.Uploaders.S3, bucket: nil, diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index dc6ace843..5d4efcebe 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -112,6 +112,8 @@ test "Scrapes favicon URLs" do end test "Returns nil on too long favicon URLs" do + clear_config([:instances_favicons, :enabled], true) + long_favicon_url = "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 8f37efa3c..68a5d0091 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -5,7 +5,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do use Pleroma.DataCase - alias Pleroma.Config alias Pleroma.User alias Pleroma.UserRelationship alias Pleroma.Web.CommonAPI @@ -19,8 +18,6 @@ defmodule Pleroma.Web.MastodonAPI.AccountViewTest do :ok end - setup do: clear_config([:instances_favicons, :enabled]) - test "Represent a user account" do background_image = %{ "url" => [%{"href" => "https://example.com/images/asuka_hospital.png"}] @@ -78,8 +75,7 @@ test "Represent a user account" do pleroma: %{ ap_id: user.ap_id, background_image: "https://example.com/images/asuka_hospital.png", - favicon: - "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png", + favicon: nil, confirmation_pending: false, tags: [], is_admin: false, @@ -98,22 +94,29 @@ test "Represent a user account" do assert expected == AccountView.render("show.json", %{user: user, skip_visibility_check: true}) end - test "Favicon is nil when :instances_favicons is disabled" do - user = insert(:user) + describe "favicon" do + setup do + [user: insert(:user)] + end - Config.put([:instances_favicons, :enabled], true) + test "is parsed when :instance_favicons is enabled", %{user: user} do + clear_config([:instances_favicons, :enabled], true) - assert %{ - pleroma: %{ - favicon: - "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png" - } - } = AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + assert %{ + pleroma: %{ + favicon: + "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png" + } + } = AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + end - Config.put([:instances_favicons, :enabled], false) + test "is nil when :instances_favicons is disabled", %{user: user} do + assert %{pleroma: %{favicon: nil}} = + AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + end + end - assert %{pleroma: %{favicon: nil}} = - AccountView.render("show.json", %{user: user, skip_visibility_check: true}) + test "Favicon when :instance_favicons is enabled" do end test "Represent the user account for the account owner" do @@ -173,8 +176,7 @@ test "Represent a Service(bot) account" do pleroma: %{ ap_id: user.ap_id, background_image: nil, - favicon: - "https://shitposter.club/plugins/Qvitter/img/gnusocial-favicons/favicon-16x16.png", + favicon: nil, confirmation_pending: false, tags: [], is_admin: false, From 9c76769878784282d2a9bf42282dbc63420f882e Mon Sep 17 00:00:00 2001 From: rinpatch <rinpatch@sdf.org> Date: Tue, 8 Sep 2020 15:08:51 +0300 Subject: [PATCH 050/141] mix.exs: bump version to 2.1.1 --- mix.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mix.exs b/mix.exs index d7c408972..f018a4465 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Pleroma.Mixfile do def project do [ app: :pleroma, - version: version("2.1.0"), + version: version("2.1.1"), elixir: "~> 1.9", elixirc_paths: elixirc_paths(Mix.env()), compilers: [:phoenix, :gettext] ++ Mix.compilers(), From bb0d7b7aaad4f441a14c94c56081ec30c96ea799 Mon Sep 17 00:00:00 2001 From: Mark Felder <feld@FreeBSD.org> Date: Tue, 8 Sep 2020 09:31:47 -0500 Subject: [PATCH 051/141] Revert "description.exs: add ForceBotUnlistedPolicy" This reverts commit 7215563641e2a5096293128519d6a454aabc46f2. --- config/description.exs | 9 --------- 1 file changed, 9 deletions(-) diff --git a/config/description.exs b/config/description.exs index d9f9b6b84..eac97ad64 100644 --- a/config/description.exs +++ b/config/description.exs @@ -1669,15 +1669,6 @@ } ] }, - %{ - group: :pleroma, - key: :mrf_force_bot_unlisted, - tab: :mrf, - related_policy: "Pleroma.Web.ActivityPub.MRF.ForceBotUnlistedPolicy", - label: "MRF Force Bot Unlisted Policy", - type: :boolean, - description: "Makes bot posts to disappear from public timelines" - }, %{ group: :pleroma, key: :mrf_subchain, From 788dececff5d1cea48cf37e59d9a46b48e0db6ed Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Tue, 8 Sep 2020 16:08:01 +0200 Subject: [PATCH 052/141] test: remove extraneous :instances_favicons config bits --- config/test.exs | 2 -- test/web/instances/instance_test.exs | 2 -- 2 files changed, 4 deletions(-) diff --git a/config/test.exs b/config/test.exs index e9c2273e8..0ee6f1b7f 100644 --- a/config/test.exs +++ b/config/test.exs @@ -114,8 +114,6 @@ config :pleroma, Pleroma.Web.ApiSpec.CastAndValidate, strict: true -config :pleroma, :instances_favicons, enabled: false - config :pleroma, Pleroma.Uploaders.S3, bucket: nil, streaming_enabled: true, diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index 5d4efcebe..dc6ace843 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -112,8 +112,6 @@ test "Scrapes favicon URLs" do end test "Returns nil on too long favicon URLs" do - clear_config([:instances_favicons, :enabled], true) - long_favicon_url = "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" From f6723dc9bd4f05319835158be9937dda4400feb9 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Tue, 8 Sep 2020 15:47:20 +0200 Subject: [PATCH 053/141] account_view_test: Remove empty test --- test/web/mastodon_api/views/account_view_test.exs | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 68a5d0091..9f22f9dcf 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -116,9 +116,6 @@ test "is nil when :instances_favicons is disabled", %{user: user} do end end - test "Favicon when :instance_favicons is enabled" do - end - test "Represent the user account for the account owner" do user = insert(:user) From fd7e9bdd25ad05eb6fca109be3b0fe5fa01a71bb Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Tue, 8 Sep 2020 17:12:38 +0300 Subject: [PATCH 054/141] don't run async tests, which use Mock --- test/plugs/admin_secret_authentication_plug_test.exs | 2 +- test/plugs/oauth_scopes_plug_test.exs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/plugs/admin_secret_authentication_plug_test.exs b/test/plugs/admin_secret_authentication_plug_test.exs index 89df03c4b..14094eda8 100644 --- a/test/plugs/admin_secret_authentication_plug_test.exs +++ b/test/plugs/admin_secret_authentication_plug_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.AdminSecretAuthenticationPlugTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase import Mock import Pleroma.Factory diff --git a/test/plugs/oauth_scopes_plug_test.exs b/test/plugs/oauth_scopes_plug_test.exs index 884de7b4d..334316043 100644 --- a/test/plugs/oauth_scopes_plug_test.exs +++ b/test/plugs/oauth_scopes_plug_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.OAuthScopesPlugTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Repo From 87d2805791e1dd6746009e8c1445719e8cbfd31d Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov <alex.strizhakov@gmail.com> Date: Tue, 8 Sep 2020 17:29:28 +0300 Subject: [PATCH 055/141] combo fixes --- lib/pleroma/stats.ex | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/pleroma/stats.ex b/lib/pleroma/stats.ex index e7f8d272c..e5c9c668b 100644 --- a/lib/pleroma/stats.ex +++ b/lib/pleroma/stats.ex @@ -23,6 +23,7 @@ def start_link(_) do @impl true def init(_args) do + if Pleroma.Config.get(:env) == :test, do: :ok = Ecto.Adapters.SQL.Sandbox.checkout(Repo) {:ok, nil, {:continue, :calculate_stats}} end From ee0e05f9301e149c769f36bfd0fc8527ec7b6326 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Tue, 8 Sep 2020 10:43:57 +0200 Subject: [PATCH 056/141] Drop unused "inReplyToAtomUri" in objects --- lib/pleroma/web/activity_pub/transmogrifier.ex | 4 +--- test/web/activity_pub/transmogrifier_test.exs | 14 ++++---------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index 0831efadc..af4384213 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -168,7 +168,6 @@ def fix_in_reply_to(object, options \\ []) def fix_in_reply_to(%{"inReplyTo" => in_reply_to} = object, options) when not is_nil(in_reply_to) do in_reply_to_id = prepare_in_reply_to(in_reply_to) - object = Map.put(object, "inReplyToAtomUri", in_reply_to_id) depth = (options[:depth] || 0) + 1 if Federator.allowed_thread_distance?(depth) do @@ -176,9 +175,8 @@ def fix_in_reply_to(%{"inReplyTo" => in_reply_to} = object, options) %Activity{} <- Activity.get_create_by_object_ap_id(replied_object.data["id"]) do object |> Map.put("inReplyTo", replied_object.data["id"]) - |> Map.put("inReplyToAtomUri", object["inReplyToAtomUri"] || in_reply_to_id) |> Map.put("context", replied_object.data["context"] || object["conversation"]) - |> Map.drop(["conversation"]) + |> Map.drop(["conversation", "inReplyToAtomUri"]) else e -> Logger.warn("Couldn't fetch #{inspect(in_reply_to_id)}, error: #{inspect(e)}") diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 3fa41b0c7..6e096e9ec 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -116,7 +116,8 @@ test "it fetches reply-to activities if we don't have them" do "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" ) - assert returned_object.data["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" + assert returned_object.data["inReplyTo"] == + "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" end test "it does not fetch reply-to activities beyond max replies depth limit" do @@ -140,8 +141,7 @@ test "it does not fetch reply-to activities beyond max replies depth limit" do "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" ) - assert returned_object.data["inReplyToAtomUri"] == - "https://shitposter.club/notice/2827873" + assert returned_object.data["inReplyTo"] == "https://shitposter.club/notice/2827873" end end @@ -1072,7 +1072,7 @@ test "returns not modified object when hasn't containts inReplyTo field", %{data assert Transmogrifier.fix_in_reply_to(data) == data end - test "returns object with inReplyToAtomUri when denied incoming reply", %{data: data} do + test "returns object with inReplyTo when denied incoming reply", %{data: data} do Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 0) object_with_reply = @@ -1080,26 +1080,22 @@ test "returns object with inReplyToAtomUri when denied incoming reply", %{data: modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == "https://shitposter.club/notice/2827873" - assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" object_with_reply = Map.put(data["object"], "inReplyTo", %{"id" => "https://shitposter.club/notice/2827873"}) modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == %{"id" => "https://shitposter.club/notice/2827873"} - assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" object_with_reply = Map.put(data["object"], "inReplyTo", ["https://shitposter.club/notice/2827873"]) modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == ["https://shitposter.club/notice/2827873"] - assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" object_with_reply = Map.put(data["object"], "inReplyTo", []) modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == [] - assert modified_object["inReplyToAtomUri"] == "" end @tag capture_log: true @@ -1117,8 +1113,6 @@ test "returns modified object when allowed incoming reply", %{data: data} do assert modified_object["inReplyTo"] == "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" - assert modified_object["inReplyToAtomUri"] == "https://shitposter.club/notice/2827873" - assert modified_object["context"] == "tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26" end From 921f926e96fd07131d4b79f5a29caed17ae2cc56 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" <contact@hacktivis.me> Date: Tue, 8 Sep 2020 09:13:11 +0200 Subject: [PATCH 057/141] Remove OStatus in testsuite --- lib/pleroma/object/containment.ex | 7 - test/fixtures/23211.atom | 508 ------------- test/fixtures/cw_retweet.xml | 68 -- test/fixtures/delete.xml | 39 - test/fixtures/dm.xml | 27 - test/fixtures/favorite.xml | 65 -- test/fixtures/favorite_with_local_note.xml | 64 -- test/fixtures/follow.xml | 68 -- test/fixtures/incoming_note_activity.xml | 42 - .../incoming_note_activity_answer.xml | 42 - test/fixtures/incoming_reply_mastodon.xml | 29 - .../incoming_websub_gnusocial_attachments.xml | 59 -- test/fixtures/lambadalambda.atom | 479 ------------ test/fixtures/mastodon-note-cw.xml | 39 - test/fixtures/mastodon-note-unlisted.xml | 38 - test/fixtures/mastodon-problematic.xml | 72 -- test/fixtures/mastodon_conversation.xml | 30 - test/fixtures/nil_mention_entry.xml | 52 -- test/fixtures/ostatus_incoming_post.xml | 57 -- test/fixtures/ostatus_incoming_post_tag.xml | 59 -- test/fixtures/ostatus_incoming_reply.xml | 60 -- test/fixtures/share-gs-local.xml | 99 --- test/fixtures/share-gs.xml | 99 --- test/fixtures/share.xml | 54 -- test/fixtures/tesla_mock/7369654.atom | 44 -- test/fixtures/tesla_mock/atarifrosch_feed.xml | 473 ------------ test/fixtures/tesla_mock/emelie.atom | 306 -------- ....php_api_statuses_user_timeline_1.atom.xml | 460 ----------- .../https___mamot.fr_users_Skruyb.atom | 342 --------- ...__mastodon.social_users_lambadalambda.atom | 464 ----------- .../https___pawoo.net_users_pekorino.atom | 231 ------ ...leroma.soykaf.com_users_lain_feed.atom.xml | 1 - ...er.club_api_statuses_show_2827873.atom.xml | 54 -- ...club_api_statuses_user_timeline_1.atom.xml | 454 ----------- ...ttps___shitposter.club_notice_2827873.json | 1 - ..._api_statuses_user_timeline_23211.atom.xml | 591 -------------- ..._api_statuses_user_timeline_29191.atom.xml | 719 ------------------ test/fixtures/tesla_mock/sakamoto.atom | 1 - .../tesla_mock/sakamoto_eal_feed.atom | 1 - .../tesla_mock/shp@pleroma.soykaf.com.feed | 1 - test/fixtures/tesla_mock/spc_5381.atom | 438 ----------- test/fixtures/unfollow.xml | 68 -- test/support/http_request_mock.ex | 174 ----- test/web/activity_pub/transmogrifier_test.exs | 16 +- .../controllers/search_controller_test.exs | 12 +- 45 files changed, 15 insertions(+), 6992 deletions(-) delete mode 100644 test/fixtures/23211.atom delete mode 100644 test/fixtures/cw_retweet.xml delete mode 100644 test/fixtures/delete.xml delete mode 100644 test/fixtures/dm.xml delete mode 100644 test/fixtures/favorite.xml delete mode 100644 test/fixtures/favorite_with_local_note.xml delete mode 100644 test/fixtures/follow.xml delete mode 100644 test/fixtures/incoming_note_activity.xml delete mode 100644 test/fixtures/incoming_note_activity_answer.xml delete mode 100644 test/fixtures/incoming_reply_mastodon.xml delete mode 100644 test/fixtures/incoming_websub_gnusocial_attachments.xml delete mode 100644 test/fixtures/lambadalambda.atom delete mode 100644 test/fixtures/mastodon-note-cw.xml delete mode 100644 test/fixtures/mastodon-note-unlisted.xml delete mode 100644 test/fixtures/mastodon-problematic.xml delete mode 100644 test/fixtures/mastodon_conversation.xml delete mode 100644 test/fixtures/nil_mention_entry.xml delete mode 100644 test/fixtures/ostatus_incoming_post.xml delete mode 100644 test/fixtures/ostatus_incoming_post_tag.xml delete mode 100644 test/fixtures/ostatus_incoming_reply.xml delete mode 100644 test/fixtures/share-gs-local.xml delete mode 100644 test/fixtures/share-gs.xml delete mode 100644 test/fixtures/share.xml delete mode 100644 test/fixtures/tesla_mock/7369654.atom delete mode 100644 test/fixtures/tesla_mock/atarifrosch_feed.xml delete mode 100644 test/fixtures/tesla_mock/emelie.atom delete mode 100644 test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom delete mode 100644 test/fixtures/tesla_mock/https___mastodon.social_users_lambadalambda.atom delete mode 100644 test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom delete mode 100644 test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json delete mode 100644 test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml delete mode 100644 test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml delete mode 100644 test/fixtures/tesla_mock/sakamoto.atom delete mode 100644 test/fixtures/tesla_mock/sakamoto_eal_feed.atom delete mode 100644 test/fixtures/tesla_mock/shp@pleroma.soykaf.com.feed delete mode 100644 test/fixtures/tesla_mock/spc_5381.atom delete mode 100644 test/fixtures/unfollow.xml diff --git a/lib/pleroma/object/containment.ex b/lib/pleroma/object/containment.ex index bc88e8a0c..29cb3d672 100644 --- a/lib/pleroma/object/containment.ex +++ b/lib/pleroma/object/containment.ex @@ -44,13 +44,6 @@ def get_object(_) do nil end - # TODO: We explicitly allow 'tag' URIs through, due to references to legacy OStatus - # objects being present in the test suite environment. Once these objects are - # removed, please also remove this. - if Mix.env() == :test do - defp compare_uris(_, %URI{scheme: "tag"}), do: :ok - end - defp compare_uris(%URI{host: host} = _id_uri, %URI{host: host} = _other_uri), do: :ok defp compare_uris(_id_uri, _other_uri), do: :error diff --git a/test/fixtures/23211.atom b/test/fixtures/23211.atom deleted file mode 100644 index d5d111baa..000000000 --- a/test/fixtures/23211.atom +++ /dev/null @@ -1,508 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:georss="http://www.georss.org/georss" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:media="http://purl.org/syndication/atommedia" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:statusnet="http://status.net/schema/api/1/"> - <generator uri="https://gnu.io/social" version="1.0.2-dev">GNU social</generator> - <id>https://social.heldscal.la/api/statuses/user_timeline/23211.atom</id> - <title>lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-02T14:59:30+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2015260:2017-05-02T14:45:47+00:00 - Favorite - lambadalambda favorited something by godemperorofdune: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> It's because your instance decided to be trap! lol.</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T14:45:47+00:00 - 2017-05-02T14:45:47+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:pawoo.net,2017-05-02:objectId=7397439:objectType=Status - New comment by godemperorofdune - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> It's because your instance decided to be trap! lol.</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=136e244b26cdf1e9 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-02:noticeId=2015221:objectType=note - New note by lambadalambda - Some script thinks I'm a mastodon server.<br /> <br /> [info] GET /api/v1/timelines/public<br /> [debug] Processing with Fallback.RedirectController.redirector/2<br /> Parameters: %{&quot;limit&quot; =&gt; &quot;40&quot;, &quot;path&quot; =&gt; [&quot;api&quot;, &quot;v1&quot;, &quot;timelines&quot;, &quot;public&quot;]}<br /> Pipelines: [] - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T14:40:50+00:00 - 2017-05-02T14:40:50+00:00 - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=136e244b26cdf1e9 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2014759:objectType=comment - New comment by lambadalambda - @<a href="https://mstdn.io/users/mattskala" class="h-card u-url p-nickname mention" title="Matthew Skala">mattskala</a> You and @<a href="https://mastodon.social/users/kevinmarks" class="h-card u-url p-nickname mention" title="Kevin Marks">kevinmarks</a> are not wrong, but my comment was a suggestion to users and admins: Don't use big instances, don't run big instances. Also, it's a secondary advice to devs: Don't add features that encourage big instances. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T14:11:54+00:00 - 2017-05-02T14:11:54+00:00 - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2014684:objectType=comment - New comment by lambadalambda - @<a href="https://mastodon.social/users/Ronkjeffries" class="h-card u-url p-nickname mention" title="Ron K Jeffries social">ronkjeffries</a> @<a href="https://xoxo.zone/users/KevinMarks" class="h-card u-url p-nickname mention" title="Kevin Marks ">kevinmarks</a> Usually people who run their own private instance just look at the timelines of other servers, follow a seed population and then go from there. This is of course hard on Mastodon, because it doesn't have a publicly visible timeline. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T14:07:00+00:00 - 2017-05-02T14:07:00+00:00 - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2014584:2017-05-02T14:05:32+00:00 - Favorite - lambadalambda favorited something by mattskala: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> It's reasonable to expect that instance sizes will obey a power-law distribution because that's what such things in nature nearly always do. If so, there'll necessarily be a few instances much larger than the others; even if most are small, the network both socially and technically has to be able to deal with the existence of the few large ones.</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T14:05:32+00:00 - 2017-05-02T14:05:32+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:mstdn.io,2017-05-02:objectId=1316931:objectType=Status - New comment by mattskala - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> It's reasonable to expect that instance sizes will obey a power-law distribution because that's what such things in nature nearly always do. If so, there'll necessarily be a few instances much larger than the others; even if most are small, the network both socially and technically has to be able to deal with the existence of the few large ones.</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013568:2017-05-02T14:05:29+00:00 - Favorite - lambadalambda favorited something by kevinmarks: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> except instance populations will be power law distributed, and the problems for the tummlers are worse at scale</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T14:05:29+00:00 - 2017-05-02T14:05:29+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:xoxo.zone,2017-05-02:objectId=89478:objectType=Status - New comment by kevinmarks - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> except instance populations will be power law distributed, and the problems for the tummlers are worse at scale</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2014060:2017-05-02T13:34:32+00:00 - Favorite - lambadalambda favorited something by gcarregues: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> Oh purée ! Ma vie en images !</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T13:34:32+00:00 - 2017-05-02T13:34:32+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:mastodon.etalab.gouv.fr,2017-05-02:objectId=55287:objectType=Status - New comment by gcarregues - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> Oh purée ! Ma vie en images !</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:note:2013573:2017-05-02T13:03:33+00:00 - Favorite - lambadalambda favorited something by phildobangnz: also @<a href="https://sealion.club/user/579" class="h-card mention" title="Sim Bot">sim</a> reminder you are awesome; don't even trip- u kewler than Tutankhamen's cucumber, fam. Okay, good night. - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T13:03:33+00:00 - 2017-05-02T13:03:33+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:sealion.club,2017-05-02:noticeId=3060818:objectType=note - New note by phildobangnz - also @<a href="https://sealion.club/user/579" class="h-card mention" title="Sim Bot">sim</a> reminder you are awesome; don't even trip- u kewler than Tutankhamen's cucumber, fam. Okay, good night. - - - - - - - https://sealion.club/conversation/1633267 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2013586:objectType=comment - New comment by lambadalambda - @<a href="https://xoxo.zone/users/KevinMarks" class="h-card u-url p-nickname mention" title="Kevin Marks ">kevinmarks</a> People can stay in their giant unmoderatable instances with meaningless public and federated timelines and experience constant federation drama if they want. I'll stay here with my 5 friends. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T12:54:59+00:00 - 2017-05-02T12:54:59+00:00 - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=58e32e013ab6487d - - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:note:2013486:2017-05-02T12:46:48+00:00 - Favorite - lambadalambda favorited something by fortune: There once was a dentist named Stone<br /> Who saw all his patients alone.<br /> In a fit of depravity<br /> He filled the wrong cavity,<br /> And my, how his practice has grown! - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:46:48+00:00 - 2017-05-02T12:46:48+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.kawa-kun.com,2017-05-02:noticeId=1655658:objectType=note - New note by fortune - There once was a dentist named Stone<br /> Who saw all his patients alone.<br /> In a fit of depravity<br /> He filled the wrong cavity,<br /> And my, how his practice has grown! - - - - - - - https://gs.kawa-kun.com/conversation/714072 - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:note:2013365:2017-05-02T12:37:55+00:00 - Favorite - lambadalambda favorited something by xj9: <p>&gt; rollerblading to work</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:37:55+00:00 - 2017-05-02T12:37:55+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:sunshinegardens.org,2017-05-02:objectId=61020:objectType=Status - New note by xj9 - <p>&gt; rollerblading to work</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=5a0e98612f634218 - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013259:2017-05-02T12:29:03+00:00 - Favorite - lambadalambda favorited something by cereal: @<a href="https://gs.smuglo.li/user/28250" class="h-card mention" title="Bricky">thatbrickster</a> @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> But why? - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:29:03+00:00 - 2017-05-02T12:29:03+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:sealion.club,2017-05-02:noticeId=3059985:objectType=comment - New comment by cereal - @<a href="https://gs.smuglo.li/user/28250" class="h-card mention" title="Bricky">thatbrickster</a> @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> But why? - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013227:2017-05-02T12:24:27+00:00 - Favorite - lambadalambda favorited something by thatbrickster: @<a href="https://social.heldscal.la/user/23211" class="h-card u-url p-nickname mention" title="Constance Variable">lambadalambda</a> install gentoo - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:24:27+00:00 - 2017-05-02T12:24:27+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:gs.smuglo.li,2017-05-02:noticeId=2144296:objectType=comment - New comment by thatbrickster - @<a href="https://social.heldscal.la/user/23211" class="h-card u-url p-nickname mention" title="Constance Variable">lambadalambda</a> install gentoo - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013213:2017-05-02T12:22:53+00:00 - Favorite - lambadalambda favorited something by dwmatiz: @<a href="https://social.heldscal.la/user/23211" class="h-card mention">lambadalambda</a> *unzips dick* - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:22:53+00:00 - 2017-05-02T12:22:53+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:sealion.club,2017-05-02:noticeId=3059800:objectType=comment - New comment by dwmatiz - @<a href="https://social.heldscal.la/user/23211" class="h-card mention">lambadalambda</a> *unzips dick* - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2013199:2017-05-02T12:22:03+00:00 - Favorite - lambadalambda favorited something by shpuld: @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> get #<span class="tag"><a href="https://shitposter.club/tag/cofe" rel="tag">cofe</a></span> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:22:03+00:00 - 2017-05-02T12:22:03+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-02:noticeId=2783524:objectType=comment - New comment by shpuld - @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> get #<span class="tag"><a href="https://shitposter.club/tag/cofe" rel="tag">cofe</a></span> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-02:noticeId=2013185:objectType=note - New note by lambadalambda - What now? <a href="https://social.heldscal.la/file/e4822d95de677757ff50d49672a4046c83218b76c04a0ad5e5f1f0a9a9eb1a74.gif" title="https://social.heldscal.la/file/e4822d95de677757ff50d49672a4046c83218b76c04a0ad5e5f1f0a9a9eb1a74.gif" rel="nofollow external noreferrer" class="attachment" id="attachment-422572">https://social.heldscal.la/attachment/422572</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T12:21:04+00:00 - 2017-05-02T12:21:04+00:00 - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2c27c27df8ec4dcc - - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:note:2012929:2017-05-02T12:01:25+00:00 - Favorite - lambadalambda favorited something by drkmttr: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> I checked out No Agenda because I saw you mention it several time. Sadly, I wasn't impressed. I'm all about varying perspectives but Adam and John basically just sound like resentful curmudgeons. It seems like their shtick is basically playing devil's advocate to everything to arouse some discontent. Just my two cents. 😉</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T12:01:25+00:00 - 2017-05-02T12:01:25+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:mstdn.io,2017-05-02:objectId=1310093:objectType=Status - New note by drkmttr - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> I checked out No Agenda because I saw you mention it several time. Sadly, I wasn't impressed. I'm all about varying perspectives but Adam and John basically just sound like resentful curmudgeons. It seems like their shtick is basically playing devil's advocate to everything to arouse some discontent. Just my two cents. 😉</p> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=2f329b4eb20e83e2 - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2012336:2017-05-02T11:06:42+00:00 - Favorite - lambadalambda favorited something by clacke: @<a href="https://mastodon.org.uk/users/dick_turpin" class="h-card u-url p-nickname mention" title="dick_turpin">dickturpin</a> @<a href="http://quitter.se/user/113503" class="h-card u-url p-nickname mention" title="Luke">luke</a> Oh no, I miss being irritated by you, it helps me understand myself and others. Also it builds character. :-)<br /> <br /> So if this is not federation because you can't follow all of online mankind, what should we call it? Proto-federated? Pre-federated?<br /> <br /> The term has been used decades ago for just one Microsoft Active Directory domain cross-certifying the root of another, by mutual agreement. I don't see how it's any less relevant to opportunistic federation between open servers on an open internet.<br /> <br /> I'm not saying we should be satisfied, I'm just saying that "federate" is a useful word and to build a big system we need to start with a small one. And focus on the things we *can* change, like helping the OStatus network grow and making the tools more useful.<br /> <br /> Saying that the network's ideals have failed because other networks aren't joining is doing neither of that. - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T11:06:42+00:00 - 2017-05-02T11:06:42+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2012336:objectType=comment - New comment by clacke - @<a href="https://mastodon.org.uk/users/dick_turpin" class="h-card u-url p-nickname mention" title="dick_turpin">dickturpin</a> @<a href="http://quitter.se/user/113503" class="h-card u-url p-nickname mention" title="Luke">luke</a> Oh no, I miss being irritated by you, it helps me understand myself and others. Also it builds character. :-)<br /> <br /> So if this is not federation because you can't follow all of online mankind, what should we call it? Proto-federated? Pre-federated?<br /> <br /> The term has been used decades ago for just one Microsoft Active Directory domain cross-certifying the root of another, by mutual agreement. I don't see how it's any less relevant to opportunistic federation between open servers on an open internet.<br /> <br /> I'm not saying we should be satisfied, I'm just saying that &quot;federate&quot; is a useful word and to build a big system we need to start with a small one. And focus on the things we *can* change, like helping the OStatus network grow and making the tools more useful.<br /> <br /> Saying that the network's ideals have failed because other networks aren't joining is doing neither of that. - - - - - - - https://s.wefamlee.be/conversation/16478 - - - - - - - tag:social.heldscal.la,2017-05-02:fave:23211:comment:2011332:2017-05-02T10:37:40+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> <a href="https://www.youtube.com/watch?v=mKLizztikRk" title="https://www.youtube.com/watch?v=mKLizztikRk" class="attachment" rel="nofollow">https://www.youtube.com/watch?v=mKLizztikRk</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-02T10:37:40+00:00 - 2017-05-02T10:37:40+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-02:noticeId=2781833:objectType=comment - New comment by moonman - @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> <a href="https://www.youtube.com/watch?v=mKLizztikRk" title="https://www.youtube.com/watch?v=mKLizztikRk" class="attachment" rel="nofollow">https://www.youtube.com/watch?v=mKLizztikRk</a> - - - - - - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=11d8b8c27d9513ec - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-02:noticeId=2012145:objectType=comment - New comment by lambadalambda - @<a href="https://sealion.club/user/186" class="h-card u-url p-nickname mention" title="I'M CEREAL U GUISE">cereal</a> ? No, you don't even need the identity servers for federation. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T10:37:33+00:00 - 2017-05-02T10:37:33+00:00 - - - - https://sealion.club/conversation/1629037 - - - - - - - diff --git a/test/fixtures/cw_retweet.xml b/test/fixtures/cw_retweet.xml deleted file mode 100644 index c99a569d7..000000000 --- a/test/fixtures/cw_retweet.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - - - - - - tag:mastodon.social,2017-05-11:objectId=5647963:objectType=Status - 2017-05-11T10:23:15Z - 2017-05-11T10:23:15Z - lambadalambda shared a status by Skruyb@mamot.fr - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:mamot.fr,2017-05-10:objectId=1294943:objectType=Status - 2017-05-10T17:31:44Z - 2017-05-10T17:31:45Z - New status by Skruyb@mamot.fr - - https://mamot.fr/users/Skruyb - http://activitystrea.ms/schema/1.0/person - https://mamot.fr/users/Skruyb - Skruyb - Skruyb@mamot.fr - <p>Fr and En.<br>Posts will disappear on a regular basis.</p> - - - - Skruyb - The 7th Son - Fr and En.Posts will disappear on a regular basis. - public - - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - Hey. - <p><span class="h-card"><a href="https://mastodon.social/@lambadalambda">@<span>lambadalambda</span></a></span></p><p>Hey!!!</p> - - - public - - - - <p><span class="h-card"><a href="https://mastodon.social/@lambadalambda">@<span>lambadalambda</span></a></span></p><p>Hey!!!</p> - - public - - - - diff --git a/test/fixtures/delete.xml b/test/fixtures/delete.xml deleted file mode 100644 index 731e1c204..000000000 --- a/test/fixtures/delete.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - https://mastodon.sdf.org/users/snowdusk.atom - snowdusk - Amateur live performance DJ/radio DJ on SDF's underground Internet radio http://aNONradio.net (LIVE Sat Sun Mon Tue 23:00-24:00 UTC) - http://snowdusk.sdf.org - 2017-06-17T04:14:34Z - https://mastodon.sdf.org/system/accounts/avatars/000/000/002/original/405a7652d5f60449.jpg?1497672873 - - https://mastodon.sdf.org/users/snowdusk - http://activitystrea.ms/schema/1.0/person - https://mastodon.sdf.org/users/snowdusk - snowdusk - snowdusk@mastodon.sdf.org - <p>Amateur live performance DJ/radio DJ on SDF&apos;s underground Internet radio <a href="http://anonradio.net/" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">anonradio.net/</span><span class="invisible"></span></a> (LIVE Sat Sun Mon Tue 23:00-24:00 UTC) - <a href="http://snowdusk.sdf.org/" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">snowdusk.sdf.org/</span><span class="invisible"></span></a></p> - - - - snowdusk - snowdusk - Amateur live performance DJ/radio DJ on SDF's underground Internet radio http://aNONradio.net (LIVE Sat Sun Mon Tue 23:00-24:00 UTC) - http://snowdusk.sdf.org - public - - - - - - - - tag:mastodon.sdf.org,2017-06-10:objectId=310513:objectType=Status - 2017-06-10T22:02:31Z - 2017-06-10T22:02:31Z - snowdusk deleted status - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/delete - Deleted status - - - - diff --git a/test/fixtures/dm.xml b/test/fixtures/dm.xml deleted file mode 100644 index d0b8aa811..000000000 --- a/test/fixtures/dm.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - tag:mastodon.social,2017-06-30:objectId=11260427:objectType=Status - 2017-06-30T13:27:47Z - 2017-06-30T13:27:47Z - New status by lambadalambda - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - lambadalambda - Critical Value - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey.</p> - - direct - - - - diff --git a/test/fixtures/favorite.xml b/test/fixtures/favorite.xml deleted file mode 100644 index c32b4a403..000000000 --- a/test/fixtures/favorite.xml +++ /dev/null @@ -1,65 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-05T09:12:53+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:12:50+00:00 - 2017-05-05T09:12:50+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - diff --git a/test/fixtures/favorite_with_local_note.xml b/test/fixtures/favorite_with_local_note.xml deleted file mode 100644 index 3c955607d..000000000 --- a/test/fixtures/favorite_with_local_note.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-05T09:12:53+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:12:50+00:00 - 2017-05-05T09:12:50+00:00 - - http://activitystrea.ms/schema/1.0/comment - localid - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - diff --git a/test/fixtures/follow.xml b/test/fixtures/follow.xml deleted file mode 100644 index d4e89954b..000000000 --- a/test/fixtures/follow.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-07T09:54:49+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-07:subscription:23211:person:44803:2017-05-07T09:54:48+00:00 - Constance Variable (lambadalambda@social.heldscal.la)'s status on Sunday, 07-May-2017 09:54:49 UTC - <a href="https://social.heldscal.la/lambadalambda">Constance Variable</a> started following <a href="https://pawoo.net/@pekorino">mono</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-05-07T09:54:49+00:00 - 2017-05-07T09:54:49+00:00 - - http://activitystrea.ms/schema/1.0/person - https://pawoo.net/users/pekorino - mono - http://shitposter.club/mono 孤独のグルメ - - - - - pekorino - mono - http://shitposter.club/mono 孤独のグルメ - - - tag:social.heldscal.la,2017-05-07:objectType=thread:nonce=6e80caf94e03029f - - - - - - diff --git a/test/fixtures/incoming_note_activity.xml b/test/fixtures/incoming_note_activity.xml deleted file mode 100644 index 21eda2d30..000000000 --- a/test/fixtures/incoming_note_activity.xml +++ /dev/null @@ -1,42 +0,0 @@ - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-23:noticeId=29:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain3" class="h-card mention">lain3</a> - - - - - http://activitystrea.ms/schema/1.0/post - 2017-04-23T14:51:03+00:00 - 2017-04-23T14:51:03+00:00 - - http://activitystrea.ms/schema/1.0/person - http://gs.example.org:4040/index.php/user/1 - lambda - - - - - lambda - lambda - - - - - tag:gs.example.org:4040,2017-04-23:objectType=thread:nonce=f09e22f58abd5c7b - - - - http://gs.example.org:4040/index.php/api/statuses/user_timeline/1.atom - lambda - - - - http://gs.example.org:4040/theme/neo-gnu/default-avatar-profile.png - 2017-04-23T14:51:03+00:00 - - - - - diff --git a/test/fixtures/incoming_note_activity_answer.xml b/test/fixtures/incoming_note_activity_answer.xml deleted file mode 100644 index b1244faa6..000000000 --- a/test/fixtures/incoming_note_activity_answer.xml +++ /dev/null @@ -1,42 +0,0 @@ - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=55:objectType=note - New note by lambda - hey. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:16:13+00:00 - 2017-04-25T18:16:13+00:00 - - http://activitystrea.ms/schema/1.0/person - http://gs.example.org:4040/index.php/user/1 - lambda - - - - - lambda - lambda - - - - - - - http://pleroma.example.org:4000/contexts/8f6f45d4-8e4d-4e1a-a2de-09f27367d2d0 - - - - http://gs.example.org:4040/index.php/api/statuses/user_timeline/1.atom - lambda - - - - http://gs.example.org:4040/theme/neo-gnu/default-avatar-profile.png - 2017-04-25T18:16:13+00:00 - - - - - diff --git a/test/fixtures/incoming_reply_mastodon.xml b/test/fixtures/incoming_reply_mastodon.xml deleted file mode 100644 index 8ee1186cc..000000000 --- a/test/fixtures/incoming_reply_mastodon.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - tag:mastodon.social,2017-05-02:objectId=4901603:objectType=Status - 2017-05-02T18:33:06Z - 2017-05-02T18:33:06Z - New status by lambadalambda - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> hey</p> - - - public - - - - diff --git a/test/fixtures/incoming_websub_gnusocial_attachments.xml b/test/fixtures/incoming_websub_gnusocial_attachments.xml deleted file mode 100644 index 9d331ef32..000000000 --- a/test/fixtures/incoming_websub_gnusocial_attachments.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-02T20:29:35+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-02:noticeId=2020923:objectType=note - New note by lambadalambda - Okay gonna stream some cool games!! <a href="https://social.heldscal.la/file/7ed5ee508e6376a6e3dd581e17e7ed0b7b638147c7e86784bf83abc2641ee3d4.gif" title="https://social.heldscal.la/file/7ed5ee508e6376a6e3dd581e17e7ed0b7b638147c7e86784bf83abc2641ee3d4.gif" rel="nofollow external noreferrer" class="attachment" id="attachment-423842">https://social.heldscal.la/attachment/423842</a> <a href="https://social.heldscal.la/file/4c209099cadfc5afd3e27a334aa0db96b3a7510dde1603305d68a2707e59a11f.png" title="https://social.heldscal.la/file/4c209099cadfc5afd3e27a334aa0db96b3a7510dde1603305d68a2707e59a11f.png" rel="nofollow external noreferrer" class="attachment" id="attachment-423843">https://social.heldscal.la/attachment/423843</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-02T20:29:35+00:00 - 2017-05-02T20:29:35+00:00 - - tag:social.heldscal.la,2017-05-02:objectType=thread:nonce=26c7afdcbcf4ebd4 - - - - - - - - diff --git a/test/fixtures/lambadalambda.atom b/test/fixtures/lambadalambda.atom deleted file mode 100644 index 964a416f7..000000000 --- a/test/fixtures/lambadalambda.atom +++ /dev/null @@ -1,479 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif?1492379244 - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - a cool dude. - - - - lambadalambda - Critical Value - public - - - - - - - - tag:mastodon.social,2017-04-07:objectId=1874242:objectType=Status - 2017-04-07T11:02:56Z - 2017-04-07T11:02:56Z - lambadalambda shared a status by 0xroy@social.wxcafe.net - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.wxcafe.net,2017-04-07:objectId=72554:objectType=Status - 2017-04-07T11:01:59Z - 2017-04-07T11:02:00Z - New status by 0xroy@social.wxcafe.net - - https://social.wxcafe.net/users/0xroy - http://activitystrea.ms/schema/1.0/person - https://social.wxcafe.net/users/0xroy - 0xroy - 0xroy@social.wxcafe.net - ta caution weeb | discussions privées : <a href="https://💌.0xroy.me" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">💌.0xroy.me</span><span class="invisible"></span></a> - - - - 0xroy - 「R O Y 🍵 B O S」 - ta caution weeb | discussions privées : <a href="https://%F0%9F%92%8C.0xroy.me" rel="nofollow noopener"><span class="invisible">https://</span><span class="">💌.0xroy.me</span><span class="invisible"></span></a> - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>someone pls eli5 matrix (protocol) and riot</p> - - public - - - <p>someone pls eli5 matrix (protocol) and riot</p> - - public - - - - - tag:mastodon.social,2017-04-06:objectId=1768247:objectType=Status - 2017-04-06T11:10:19Z - 2017-04-06T11:10:19Z - lambadalambda shared a status by areyoutoo@mastodon.xyz - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:mastodon.xyz,2017-04-05:objectId=133327:objectType=Status - 2017-04-05T17:36:41Z - 2017-04-05T18:12:14Z - New status by areyoutoo@mastodon.xyz - - https://mastodon.xyz/users/areyoutoo - http://activitystrea.ms/schema/1.0/person - https://mastodon.xyz/users/areyoutoo - areyoutoo - areyoutoo@mastodon.xyz - devops | retired gamedev | always boost puppy pics - - - - areyoutoo - Raw Butter - devops | retired gamedev | always boost puppy pics - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Some UX thoughts for <a href="https://mastodon.xyz/tags/mastodev" class="mention hashtag">#<span>mastodev</span></a>:</p><p>- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.</p><p>- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.</p><p>I probably don't know enough web frontend to help, but it might be fun to try.</p> - - - public - - - <p>Some UX thoughts for <a href="https://mastodon.xyz/tags/mastodev" class="mention hashtag">#<span>mastodev</span></a>:</p><p>- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.</p><p>- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.</p><p>I probably don't know enough web frontend to help, but it might be fun to try.</p> - - public - - - - - tag:mastodon.social,2017-04-06:objectId=1764509:objectType=Status - 2017-04-06T10:15:38Z - 2017-04-06T10:15:38Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - This is a test for cw federation - <p>This is a test for cw federation body text.</p> - - public - - - - - tag:mastodon.social,2017-04-05:objectId=1645208:objectType=Status - 2017-04-05T07:14:53Z - 2017-04-05T07:14:53Z - lambadalambda shared a status by lambadalambda@social.heldscal.la - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.heldscal.la,2017-04-05:noticeId=1502088:objectType=note - 2017-04-05T06:12:09Z - 2017-04-05T07:12:47Z - New status by lambadalambda@social.heldscal.la - - https://social.heldscal.la/user/23211 - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - lambadalambda@social.heldscal.la - Call me Deacon Blues. - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Federation 101: <a href="https://www.youtube.com/watch?v=t1lYU5CA40o" rel="nofollow external noreferrer" class="attachment thumbnail">https://www.youtube.com/watch?v=t1lYU5CA40o</a> - - public - - - Federation 101: <a href="https://www.youtube.com/watch?v=t1lYU5CA40o" rel="nofollow external noreferrer" class="attachment thumbnail">https://www.youtube.com/watch?v=t1lYU5CA40o</a> - - public - - - - - tag:mastodon.social,2017-04-05:objectId=1641750:objectType=Status - 2017-04-05T05:44:48Z - 2017-04-05T05:44:48Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> just a test.</p> - - - public - - - - - tag:mastodon.social,2017-04-04:objectId=1540149:objectType=Status - 2017-04-04T06:31:09Z - 2017-04-04T06:31:09Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Looks like you still can&apos;t delete your account here (PRIVACY!), but I won&apos;t be posting here anymore, my main account is <span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span></p> - - - public - - - - - tag:mastodon.social,2017-04-04:objectId=1539608:objectType=Status - 2017-04-04T06:18:16Z - 2017-04-04T06:18:16Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@ghostbar" class="u-url mention">@<span>ghostbar</span></a></span> Remember to rewrite it in Rust once you&apos;re done.</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1504813:objectType=Status - 2017-04-03T18:01:20Z - 2017-04-03T18:01:20Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.xyz/@Azurolu" class="u-url mention">@<span>Azurolu</span></a></span> You mean gs.smuglo.li?</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1504805:objectType=Status - 2017-04-03T18:01:05Z - 2017-04-03T18:01:05Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>There&apos;s nothing wrong with having several alt accounts all across the fediverse. Try out another mastodon instance (<a href="https://icosahedron.website" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">icosahedron.website</span><span class="invisible"></span></a>) or a GNU Social instance (like <a href="https://shitposter.club" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">shitposter.club</span><span class="invisible"></span></a> or <a href="https://freezepeach.xyz" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">freezepeach.xyz</span><span class="invisible"></span></a>), or friendica. They are all on the same network, so you can still follow all your friends!</p> - - public - - - - - tag:mastodon.social,2017-04-03:objectId=1503965:objectType=Status - 2017-04-03T17:31:30Z - 2017-04-03T17:31:30Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@20Hz" class="u-url mention">@<span>20Hz</span></a></span> you could also try out a GS instance, which are on the same network :)</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1503955:objectType=Status - 2017-04-03T17:31:08Z - 2017-04-03T17:31:08Z - lambadalambda shared a status by shpuld@shitposter.club - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:shitposter.club,2017-04-03:noticeId=2251717:objectType=note - 2017-04-03T17:06:43Z - 2017-04-03T17:12:06Z - New status by shpuld@shitposter.club - - https://shitposter.club/user/5381 - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/5381 - shpuld - shpuld@shitposter.club - - - - - shpuld - shp - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - reposting the classic <a href="https://shitposter.club/file/89c5fe483526caf3a46cfc5cdd4ae68061054350e767397731af658d54786e31.jpg" class="attachment" rel="nofollow external">https://shitposter.club/attachment/219846</a> - - - public - - - reposting the classic <a href="https://shitposter.club/file/89c5fe483526caf3a46cfc5cdd4ae68061054350e767397731af658d54786e31.jpg" class="attachment" rel="nofollow external">https://shitposter.club/attachment/219846</a> - - public - - - - - tag:mastodon.social,2017-04-03:objectId=1503929:objectType=Status - 2017-04-03T17:30:43Z - 2017-04-03T17:30:43Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@ghostbar" class="u-url mention">@<span>ghostbar</span></a></span> Normally you shouldn&apos;t be running tens of thousands of users on one instance... That&apos;s one of the reasons for federation.</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1477255:objectType=Status - 2017-04-03T08:24:39Z - 2017-04-03T08:24:39Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@dot_tiff" class="u-url mention">@<span>dot_tiff</span></a></span> it&apos;s the vaporwave mode.</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1476210:objectType=Status - 2017-04-03T07:45:42Z - 2017-04-03T07:45:42Z - lambadalambda shared a status by lambadalambda@social.heldscal.la - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.heldscal.la,2017-04-03:noticeId=1475727:objectType=note - 2017-04-03T07:44:43Z - 2017-04-03T07:44:48Z - New status by lambadalambda@social.heldscal.la - - https://social.heldscal.la/user/23211 - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - lambadalambda@social.heldscal.la - Call me Deacon Blues. - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Here's a song by the original anti-idol, Togawa Jun: <a href="https://www.youtube.com/watch?v=kNI_NK2YY-s" rel="nofollow external noreferrer" class="attachment">https://www.youtube.com/watch?v=kNI_NK2YY-s</a> - - public - - - Here's a song by the original anti-idol, Togawa Jun: <a href="https://www.youtube.com/watch?v=kNI_NK2YY-s" rel="nofollow external noreferrer" class="attachment">https://www.youtube.com/watch?v=kNI_NK2YY-s</a> - - public - - - - - tag:mastodon.social,2017-04-03:objectId=1476047:objectType=Status - 2017-04-03T07:39:14Z - 2017-04-03T07:39:14Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@amrrr" class="u-url mention">@<span>amrrr</span></a></span> tumblr/10, but pretty good!</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1475949:objectType=Status - 2017-04-03T07:35:45Z - 2017-04-03T07:35:45Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@Shookaite" class="u-url mention">@<span>Shookaite</span></a></span> Oh, you mean like userstyles?</p> - - - public - - - - - - tag:mastodon.social,2017-04-03:objectId=1475581:objectType=Status - 2017-04-03T07:20:03Z - 2017-04-03T07:20:03Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@Shookaite" class="u-url mention">@<span>Shookaite</span></a></span> Would be nice if someone helped port Pleroma to Mastodon, that has a theme switcher (click on the cog in the upper right): <a href="https://pleroma.heldscal.la/main/all" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">pleroma.heldscal.la/main/all</span><span class="invisible"></span></a></p> - - - public - - - - - - tag:mastodon.social,2017-04-02:objectId=1457325:objectType=Status - 2017-04-02T21:57:43Z - 2017-04-02T21:57:43Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@rhosyn" class="u-url mention">@<span>rhosyn</span></a></span> <span class="h-card"><a href="https://mastodon.social/@Meaningness" class="u-url mention">@<span>Meaningness</span></a></span> you could take a look at those listed at social.guhnoo.org</p> - - - - public - - - - - - tag:mastodon.social,2017-04-02:objectId=1447926:objectType=Status - 2017-04-02T18:31:52Z - 2017-04-02T18:31:52Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>My main account is <span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> , btw.</p> - - - public - - - - - tag:mastodon.social,2017-04-02:objectId=1447878:objectType=Status - 2017-04-02T18:30:37Z - 2017-04-02T18:30:37Z - lambadalambda shared a status by Firstaide@awoo.space - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:awoo.space,2017-04-02:objectId=135324:objectType=Status - 2017-04-02T18:29:32Z - 2017-04-02T18:29:32Z - New status by Firstaide@awoo.space - - https://awoo.space/users/Firstaide - http://activitystrea.ms/schema/1.0/person - https://awoo.space/users/Firstaide - Firstaide - Firstaide@awoo.space - A smol awoo account, for a smol autistic 💙 -They/them please! -NB/white/ace - - - - Firstaide - Miff🚑✨ - A smol awoo account, for a smol autistic 💙 -They/them please! -NB/white/ace - public - - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><a href="https://mastodon.social/users/lambadalambda" class="h-card u-url p-nickname mention">@<span>lambadalambda</span></a> yeah, I think that's p much the big issue here? <br>When I first heard of Masto, I thought it was just like twitter at first, I had no idea federation was even a thing?, and I actually joined p early on? :-o </p><p>idk I think more stuff needs to be done about federation promotion, but honestly its gotta come from the get go when people get here to make an account I feel :-o</p> - - - public - - - - <p><a href="https://mastodon.social/users/lambadalambda" class="h-card u-url p-nickname mention">@<span>lambadalambda</span></a> yeah, I think that's p much the big issue here? <br>When I first heard of Masto, I thought it was just like twitter at first, I had no idea federation was even a thing?, and I actually joined p early on? :-o </p><p>idk I think more stuff needs to be done about federation promotion, but honestly its gotta come from the get go when people get here to make an account I feel :-o</p> - - public - - - - diff --git a/test/fixtures/mastodon-note-cw.xml b/test/fixtures/mastodon-note-cw.xml deleted file mode 100644 index 02f49dd61..000000000 --- a/test/fixtures/mastodon-note-cw.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - - - - - - tag:mastodon.social,2017-05-10:objectId=5551985:objectType=Status - 2017-05-10T12:21:36Z - 2017-05-10T12:21:36Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - technologic - <p>test</p> - - public - - - - diff --git a/test/fixtures/mastodon-note-unlisted.xml b/test/fixtures/mastodon-note-unlisted.xml deleted file mode 100644 index d21017b80..000000000 --- a/test/fixtures/mastodon-note-unlisted.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - - - - - - tag:mastodon.social,2017-05-10:objectId=5551985:objectType=Status - 2017-05-10T12:21:36Z - 2017-05-10T12:21:36Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - technologic - <p>test</p> - unlisted - - - - diff --git a/test/fixtures/mastodon-problematic.xml b/test/fixtures/mastodon-problematic.xml deleted file mode 100644 index a39e72759..000000000 --- a/test/fixtures/mastodon-problematic.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - https://icosahedron.website/users/shel.atom - shel🍖‼️ - Gay jackal dog, poet, future librarian. - -http://datapup.info -avatar: @puppytube@twitter.com - 2017-05-02T23:26:01Z - https://icosahedron.website/system/accounts/avatars/000/001/207/original/b1e07b09ae1cc787.png?1493767561 - - https://icosahedron.website/users/shel - http://activitystrea.ms/schema/1.0/person - https://icosahedron.website/users/shel - shel - shel@icosahedron.website - <p>Gay jackal dog, poet, future librarian. </p><p><a href="http://datapup.info/" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">datapup.info/</span><span class="invisible"></span></a><br />avatar: @puppytube@twitter.com</p> - - - - shel - shel🍖‼️ - Gay jackal dog, poet, future librarian. - -http://datapup.info -avatar: @puppytube@twitter.com - public - - - - - - - tag:icosahedron.website,2017-05-10:objectId=1414013:objectType=Status - 2017-05-10T17:16:24Z - 2017-05-10T17:16:24Z - shel shared a status by instance_names@cybre.space - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:cybre.space,2017-05-10:objectId=946671:objectType=Status - 2017-05-10T17:15:51Z - 2017-05-10T17:15:52Z - New status by instance_names@cybre.space - - https://cybre.space/users/instance_names - http://activitystrea.ms/schema/1.0/person - https://cybre.space/users/instance_names - instance_names - instance_names@cybre.space - <p>name ideas for your new mastodon instance. made by <span class="h-card"><a href="https://witches.town/@lycaon">@<span>lycaon</span></a></span> source available at <a href="https://github.com/LycaonIsAWolf/instance_names"><span class="invisible">https://</span><span class="ellipsis">github.com/LycaonIsAWolf/insta</span><span class="invisible">nce_names</span></a></p> - - - - instance_names - instance names - name ideas for your new mastodon instance. made by @lycaon source available at https://github.com/LycaonIsAWolf/instance_names - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>dildo.codes</p> - unlisted - - - <p>dildo.codes</p> - - public - - - - diff --git a/test/fixtures/mastodon_conversation.xml b/test/fixtures/mastodon_conversation.xml deleted file mode 100644 index 8faab2304..000000000 --- a/test/fixtures/mastodon_conversation.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - tag:mastodon.social,2017-08-28:objectId=16402826:objectType=Status - 2017-08-28T17:58:55Z - 2017-08-28T17:58:55Z - New status by lambadalambda - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>test. <a href="https://mastodon.social/media/XCp0OHGPON9kWZwhjaI" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">mastodon.social/media/XCp0OHGP</span><span class="invisible">ON9kWZwhjaI</span></a></p> - - - public - - - - diff --git a/test/fixtures/nil_mention_entry.xml b/test/fixtures/nil_mention_entry.xml deleted file mode 100644 index e13024cb3..000000000 --- a/test/fixtures/nil_mention_entry.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - GNU social - https://social.stopwatchingus-heidelberg.de/api/statuses/user_timeline/18330.atom - atarifrosch timeline - Updates from atarifrosch on social.stopwatchingus-heidelberg.de! - https://social.stopwatchingus-heidelberg.de/avatar/18330-96-20150628163706.png - 2017-08-24T11:36:49+02:00 - - http://activitystrea.ms/schema/1.0/person - https://social.stopwatchingus-heidelberg.de/user/18330 - atarifrosch - Nerd, Pirat, Debian user, CAcert assurer, Geocacher, Freifunker. Autismus/Depression, agender. GnuPG Key-ID: 0xBCF81ADE - - - - - - atarifrosch - Atari-Frosch - Nerd, Pirat, Debian user, CAcert assurer, Geocacher, Freifunker. Autismus/Depression, agender. GnuPG Key-ID: 0xBCF81ADE - - Düsseldorf, NRW, Germany - - - homepage - https://www.atari-frosch.de/ - true - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978072:objectType=note - New note by atarifrosch - 2017-08-22 Bundesverfassungsgericht: Erfolgreiche Verfassungsbeschwerde gegen die Versagung vorläufiger Leistungen für Kosten der Unterkunft und Heizung – <a href="https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html" title="https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html" class="attachment" id="attachment-450768" rel="nofollow external">https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html</a> !<a href="http://quitter.se/group/2184/id" class="h-card group" title="HartzIV (hartziv)">hartziv</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-08-22T12:00:21+00:00 - 2017-08-22T12:00:21+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978072:objectType=thread:crc32=28a35f44 - - - - - - - - diff --git a/test/fixtures/ostatus_incoming_post.xml b/test/fixtures/ostatus_incoming_post.xml deleted file mode 100644 index 7967e1b32..000000000 --- a/test/fixtures/ostatus_incoming_post.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-04-29T18:25:38+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-29:noticeId=1967725:objectType=note - New note by lambadalambda - Will it blend? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T18:25:38+00:00 - 2017-04-29T18:25:38+00:00 - - tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=3f3a9dd83acc4e35 - - - - - - diff --git a/test/fixtures/ostatus_incoming_post_tag.xml b/test/fixtures/ostatus_incoming_post_tag.xml deleted file mode 100644 index 0f99c4126..000000000 --- a/test/fixtures/ostatus_incoming_post_tag.xml +++ /dev/null @@ -1,59 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-04-29T18:25:38+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-29:noticeId=1967725:objectType=note - New note by lambadalambda - Will it blend? - - - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T18:25:38+00:00 - 2017-04-29T18:25:38+00:00 - - tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=3f3a9dd83acc4e35 - - - - - - diff --git a/test/fixtures/ostatus_incoming_reply.xml b/test/fixtures/ostatus_incoming_reply.xml deleted file mode 100644 index 83a427a68..000000000 --- a/test/fixtures/ostatus_incoming_reply.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-04-30T09:30:32+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-04-30:noticeId=1978790:objectType=comment - New comment by lambadalambda - @<a href="https://gs.archae.me/user/4687" class="h-card u-url p-nickname mention" title="shpbot">shpbot</a> why not indeed. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-30T09:30:32+00:00 - 2017-04-30T09:30:32+00:00 - - - - https://gs.archae.me/conversation/327120 - - - - - - - diff --git a/test/fixtures/share-gs-local.xml b/test/fixtures/share-gs-local.xml deleted file mode 100644 index 9d52eab7b..000000000 --- a/test/fixtures/share-gs-local.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-03T08:05:41+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-03:noticeId=2028428:objectType=note - lambadalambda repeated a notice by lain - RT @<a href="https://pleroma.soykaf.com/users/lain" class="h-card u-url p-nickname mention" title="Lain Iwakura">lain</a> Added returning the entries as xml... let's see if the mastodon hammering stops now. - - http://activitystrea.ms/schema/1.0/share - 2017-05-03T08:05:41+00:00 - 2017-05-03T08:05:41+00:00 - - http://activitystrea.ms/schema/1.0/activity - LOCAL_ID - - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - http://activitystrea.ms/schema/1.0/post - 2017-05-03T08:04:44+00:00 - 2017-05-03T08:04:44+00:00 - - http://activitystrea.ms/schema/1.0/person - LOCAL_USER - lain - Test account - - - - - - lain - Lain Iwakura - Test account - - - - http://activitystrea.ms/schema/1.0/note - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - New note by lain - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - - - - https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22 - - - https://pleroma.soykaf.com/users/lain/feed.atom - Lain Iwakura - - - https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg - 2017-05-03T08:04:44+00:00 - - - - https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22 - - - - - - diff --git a/test/fixtures/share-gs.xml b/test/fixtures/share-gs.xml deleted file mode 100644 index ab5e488bd..000000000 --- a/test/fixtures/share-gs.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-03T08:05:41+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-03:noticeId=2028428:objectType=note - lambadalambda repeated a notice by lain - RT @<a href="https://pleroma.soykaf.com/users/lain" class="h-card u-url p-nickname mention" title="Lain Iwakura">lain</a> Added returning the entries as xml... let's see if the mastodon hammering stops now. - - http://activitystrea.ms/schema/1.0/share - 2017-05-03T08:05:41+00:00 - 2017-05-03T08:05:41+00:00 - - http://activitystrea.ms/schema/1.0/activity - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - http://activitystrea.ms/schema/1.0/post - 2017-05-03T08:04:44+00:00 - 2017-05-03T08:04:44+00:00 - - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - Test account - - - - - - lain - Lain Iwakura - Test account - - - - http://activitystrea.ms/schema/1.0/note - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - New note by lain - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - - - - https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22 - - - https://pleroma.soykaf.com/users/lain/feed.atom - Lain Iwakura - - - https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg - 2017-05-03T08:04:44+00:00 - - - - https://pleroma.soykaf.com/contexts/ede39a2b-7cf3-4fa4-8ccd-cb97431bcc22 - - - - - - diff --git a/test/fixtures/share.xml b/test/fixtures/share.xml deleted file mode 100644 index e07b88680..000000000 --- a/test/fixtures/share.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - tag:mastodon.social,2017-05-03:objectId=4934452:objectType=Status - 2017-05-03T08:21:09Z - 2017-05-03T08:21:09Z - lambadalambda shared a status by lain@pleroma.soykaf.com - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - 2017-05-03T08:04:44Z - 2017-05-03T08:05:52Z - New status by lain@pleroma.soykaf.com - - https://pleroma.soykaf.com/users/lain - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - lain@pleroma.soykaf.com - Test account - - - - lain - Lain Iwakura - Test account - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - public - - - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - public - - - diff --git a/test/fixtures/tesla_mock/7369654.atom b/test/fixtures/tesla_mock/7369654.atom deleted file mode 100644 index 74fd9ce6b..000000000 --- a/test/fixtures/tesla_mock/7369654.atom +++ /dev/null @@ -1,44 +0,0 @@ - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-22:noticeId=7369654:objectType=comment - New comment by shpuld - @<a href="https://testing.pleroma.lol/users/lain" class="h-card mention" title="Rael Electric Razor">lain</a> me far right - - - http://activitystrea.ms/schema/1.0/post - 2018-02-22T09:20:12+00:00 - 2018-02-22T09:20:12+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/5381 - shpuld - - - - - - shpuld - shp - - - - - - - tag:shitposter.club,2018-02-22:objectType=thread:nonce=e5a7c72d60a9c0e4 - - - - https://shitposter.club/api/statuses/user_timeline/5381.atom - shp - - - - https://shitposter.club/avatar/5381-96-20171230093854.png - 2018-02-23T13:30:15+00:00 - - - - - diff --git a/test/fixtures/tesla_mock/atarifrosch_feed.xml b/test/fixtures/tesla_mock/atarifrosch_feed.xml deleted file mode 100644 index e00df782e..000000000 --- a/test/fixtures/tesla_mock/atarifrosch_feed.xml +++ /dev/null @@ -1,473 +0,0 @@ - - - GNU social - https://social.stopwatchingus-heidelberg.de/api/statuses/user_timeline/18330.atom - atarifrosch-Zeitleiste - Aktualisierungen von atarifrosch auf social.stopwatchingus-heidelberg.de! - https://social.stopwatchingus-heidelberg.de/avatar/18330-96-20150628163706.png - 2017-08-24T12:06:55+02:00 - - http://activitystrea.ms/schema/1.0/person - https://social.stopwatchingus-heidelberg.de/user/18330 - atarifrosch - Nerd, Pirat, Debian user, CAcert assurer, Geocacher, Freifunker. Autismus/Depression, agender. GnuPG Key-ID: 0xBCF81ADE - - - - - - atarifrosch - Atari-Frosch - Nerd, Pirat, Debian user, CAcert assurer, Geocacher, Freifunker. Autismus/Depression, agender. GnuPG Key-ID: 0xBCF81ADE - - Düsseldorf, NRW, Germany - - - homepage - https://www.atari-frosch.de/ - true - - - - - - - - - - - - - - tag:social.stopwatchingus-heidelberg.de,2017-08-24:noticeId=978735:objectType=note - atarifrosch repeated a notice by hoergen - RT @<a href="https://social.hoergen.org/hoergen" class="h-card mention" title="hoergen">hoergen</a> Das falsche Bild der Tagesschau &quot;Auffallend &quot;erfolgreich&quot; - Andrea Nahles und Manuela Schwesig&quot; #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/geringverdiener" rel="tag">Geringverdiener</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/mindestlohn" rel="tag">Mindestlohn</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/mannxismus" rel="tag">mannxismus</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/erwerbsminderungsrente" rel="tag">Erwerbsminderungsrente</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/arbeitnehmerflexibilisierung" rel="tag">ArbeitnehmerFlexibilisierung</a></span> #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/altersarmut" rel="tag">AltersArmut</a></span> ..... <a href="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" title="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" class="attachment" id="attachment-450858" rel="nofollow external">http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html</a> - https://social.stopwatchingus-heidelberg.de/notice/978735 - http://activitystrea.ms/schema/1.0/share - 2017-08-24T09:18:25+00:00 - 2017-08-24T09:18:25+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:social.hoergen.org,2017-08-24:noticeId=222320:objectType=note - - Das falsche Bild der Tagesschau <br /> &quot;Auffallend &quot;erfolgreich&quot; - Andrea Nahles und Manuela Schwesig&quot; #<span class="tag"><a href="https://social.hoergen.org/tag/geringverdiener" rel="tag">Geringverdiener</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/mindestlohn" rel="tag">Mindestlohn</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/mannxismus" rel="tag">mannxismus</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/erwerbsminderungsrente" rel="tag">Erwerbsminderungsrente</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/arbeitnehmerflexibilisierung" rel="tag">ArbeitnehmerFlexibilisierung</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/altersarmut" rel="tag">AltersArmut</a></span> ..... <br /> <br /> <a href="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" title="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" rel="nofollow external noreferrer" class="attachment">http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html</a> - https://social.hoergen.org/notice/222320 - http://activitystrea.ms/schema/1.0/post - 2017-08-24T07:36:31+00:00 - 2017-08-24T07:36:31+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.hoergen.org/user/2 - hoergen - aka Andi Memyself #humanist #nerd Menschen liebhabender Misanthrop und auch sonst sehr vielseitig interessiert. - - - - - - hoergen - hoergen - aka Andi Memyself #humanist #nerd Menschen liebhabender Misanthrop und auch sonst sehr vielseitig interessiert. - - Berlin - - - homepage - https://hyperblog.de/hoergen/ - true - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.hoergen.org,2017-08-24:noticeId=222320:objectType=note - New note by hoergen - Das falsche Bild der Tagesschau <br /> &quot;Auffallend &quot;erfolgreich&quot; - Andrea Nahles und Manuela Schwesig&quot; #<span class="tag"><a href="https://social.hoergen.org/tag/geringverdiener" rel="tag">Geringverdiener</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/mindestlohn" rel="tag">Mindestlohn</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/mannxismus" rel="tag">mannxismus</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/erwerbsminderungsrente" rel="tag">Erwerbsminderungsrente</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/arbeitnehmerflexibilisierung" rel="tag">ArbeitnehmerFlexibilisierung</a></span> #<span class="tag"><a href="https://social.hoergen.org/tag/altersarmut" rel="tag">AltersArmut</a></span> ..... <br /> <br /> <a href="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" title="http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html" rel="nofollow external noreferrer" class="attachment">http://www.tagesschau.de/inland/btw17/bilanz-schwesig-nahles-101.html</a> - - - - - https://social.hoergen.org/conversation/98616 - - - - - - - - - https://social.hoergen.org/api/statuses/user_timeline/2.atom - hoergen - - - https://social.stopwatchingus-heidelberg.de/avatar/54316-original-20170824072526.jpeg - 2017-08-24T09:48:30+00:00 - - - - https://social.hoergen.org/conversation/98616 - - - - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.stopwatchingus-heidelberg.de,2017-08-24:noticeId=978734:objectType=comment - New comment by atarifrosch - Jo, die Anzahl der Hartz-IV-Sanktionen nennt sie genausowenig wie die Anzahl der Menschen, die von den Repressionsbehörden in Obdachlosigkeit und Suizid getrieben wurden. Das würde die Erfolgszahlen dann doch ein wenig trüben, nech? - - - http://activitystrea.ms/schema/1.0/post - 2017-08-24T09:18:13+00:00 - 2017-08-24T09:18:13+00:00 - - - - https://social.hoergen.org/conversation/98616 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-24:noticeId=978732:objectType=note - New note by atarifrosch - Moin-quak. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-24T09:09:39+00:00 - 2017-08-24T09:09:39+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-24:noticeId=978732:objectType=thread:crc32=2f92b7b6 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978594:objectType=note - New note by atarifrosch - n8-quak! - - - http://activitystrea.ms/schema/1.0/post - 2017-08-23T21:39:54+00:00 - 2017-08-23T21:39:54+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978594:objectType=thread:crc32=9bdb0ac9 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978503:objectType=note - New note by atarifrosch - 2017-08-16 Michal Špaček: Post a boarding pass on Facebook, get your account stolen – Post a boarding pass on Facebook, get your account stolen (gilt übrinx nicht nur für Facebook) - - - http://activitystrea.ms/schema/1.0/post - 2017-08-23T15:14:29+00:00 - 2017-08-23T15:14:29+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978503:objectType=thread:crc32=3de05c3a - - - - - - - tag:social.stopwatchingus-heidelberg.de,2017-08-23:fave:18330:activity:978458:2017-08-23T15:18:19+02:00 - Favorite - atarifrosch favorited something by einebiene: Haha, große Überraschung. <a href="http://www.sueddeutsche.de/wirtschaft/abgasaffaere-software-updates-fuer-dieselautos-helfen-kaum-1.3637636" title="http://www.sueddeutsche.de/wirtschaft/abgasaffaere-software-updates-fuer-dieselautos-helfen-kaum-1.3637636" rel="nofollow noreferrer" class="attachment">https://quitter.is/url/1122672</a><br /> Was ich an all diesen Artikeln schade finde, ist, daß immer nur auf den Umstieg von Auto zu anderem Auto gesprochen wird. Öffis werden nicht erwähnt, Carsharing nicht, radeln nicht, und in der Stadt wäre ne Vespa auch deutlich besser als ein SUV. - http://activitystrea.ms/schema/1.0/favorite - 2017-08-23T13:18:19+00:00 - 2017-08-23T13:18:19+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:quitter.is,2017-08-23:noticeId=4032910:objectType=note - New note by einebiene - Haha, große Überraschung. <a href="http://www.sueddeutsche.de/wirtschaft/abgasaffaere-software-updates-fuer-dieselautos-helfen-kaum-1.3637636" title="http://www.sueddeutsche.de/wirtschaft/abgasaffaere-software-updates-fuer-dieselautos-helfen-kaum-1.3637636" rel="nofollow noreferrer" class="attachment">https://quitter.is/url/1122672</a><br /> Was ich an all diesen Artikeln schade finde, ist, daß immer nur auf den Umstieg von Auto zu anderem Auto gesprochen wird. Öffis werden nicht erwähnt, Carsharing nicht, radeln nicht, und in der Stadt wäre ne Vespa auch deutlich besser als ein SUV. - - - - - - - https://quitter.is/conversation/2535246 - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978402:objectType=note - New note by atarifrosch - moin-quak - - - http://activitystrea.ms/schema/1.0/post - 2017-08-23T10:57:26+00:00 - 2017-08-23T10:57:26+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-23:noticeId=978402:objectType=thread:crc32=7050c397 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978164:objectType=note - New note by atarifrosch - n8-quak - - - http://activitystrea.ms/schema/1.0/post - 2017-08-22T19:54:30+00:00 - 2017-08-22T19:54:30+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978164:objectType=thread:crc32=b0a209c7 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978072:objectType=note - New note by atarifrosch - 2017-08-22 Bundesverfassungsgericht: Erfolgreiche Verfassungsbeschwerde gegen die Versagung vorläufiger Leistungen für Kosten der Unterkunft und Heizung – <a href="https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html" title="https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html" class="attachment" id="attachment-450768" rel="nofollow external">https://www.bundesverfassungsgericht.de/SharedDocs/Pressemitteilungen/DE/2017/bvg17-072.html</a> !<a href="http://quitter.se/group/2184/id" class="h-card group" title="HartzIV (hartziv)">hartziv</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-08-22T12:00:21+00:00 - 2017-08-22T12:00:21+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978072:objectType=thread:crc32=28a35f44 - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978042:objectType=note - New note by atarifrosch - moin-quak! - - - http://activitystrea.ms/schema/1.0/post - 2017-08-22T07:55:27+00:00 - 2017-08-22T07:55:27+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-22:noticeId=978042:objectType=thread:crc32=f070a9f7 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-21:noticeId=977914:objectType=note - New note by atarifrosch - So, morgen geht's weiter. n8-quak! - - - http://activitystrea.ms/schema/1.0/post - 2017-08-21T22:09:53+00:00 - 2017-08-21T22:09:53+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-21:noticeId=977914:objectType=thread:crc32=c0a9f7fa - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-21:noticeId=977710:objectType=note - New note by atarifrosch - moin-quak. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-21T08:58:26+00:00 - 2017-08-21T08:58:26+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-21:noticeId=977710:objectType=thread:crc32=60cfb466 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-20:noticeId=977526:objectType=note - New note by atarifrosch - Meine Augen meinen, für heute sei es genug. Nun denn. n8-quak. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-20T19:58:16+00:00 - 2017-08-20T19:58:16+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-20:noticeId=977526:objectType=thread:crc32=ce79634 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-20:noticeId=977369:objectType=note - New note by atarifrosch - [Blog] Im Netz aufgefischt #<span class="tag"><a href="https://social.stopwatchingus-heidelberg.de/tag/330" rel="tag">330</a></span> – <a href="https://blog.atari-frosch.de/2017/08/20/im-netz-aufgefischt-330/" title="https://blog.atari-frosch.de/2017/08/20/im-netz-aufgefischt-330/" class="attachment" id="attachment-450668" rel="nofollow external">https://blog.atari-frosch.de/2017/08/20/im-netz-aufgefischt-330/</a> (was ich diese Woche so gelesen habe) - - - http://activitystrea.ms/schema/1.0/post - 2017-08-20T09:14:07+00:00 - 2017-08-20T09:14:07+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-20:noticeId=977369:objectType=thread:crc32=2f800b86 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=977268:objectType=note - New note by atarifrosch - Fast ständig husten müssen ist echt anstrengend … naja, n8-quak. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-19T21:59:20+00:00 - 2017-08-19T21:59:20+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=977268:objectType=thread:crc32=deda767a - - - - - - - tag:social.stopwatchingus-heidelberg.de,2017-08-19:fave:18330:activity:977146:2017-08-19T21:39:26+02:00 - Favorite - atarifrosch favorited something by einebienezwo: Ich mach gerade Kompetenztraining.<br /> Ich trainiere die Kompetenz, eine halb aufgegessene Gummibärchentüte nicht ganz aufzuessen. - http://activitystrea.ms/schema/1.0/favorite - 2017-08-19T19:39:26+00:00 - 2017-08-19T19:39:26+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gnusocial.de,2017-08-19:noticeId=11011264:objectType=note - New note by einebienezwo - Ich mach gerade Kompetenztraining.<br /> Ich trainiere die Kompetenz, eine halb aufgegessene Gummibärchentüte nicht ganz aufzuessen. - - - - - - - https://gnusocial.de/conversation/9363945 - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=977242:objectType=comment - New comment by atarifrosch - Wir hatten hier schon Ordnungsdienst auf'm Radweg. Fotografisch dokumentiert (nicht von mir, Bekannter hatte es gesehen). Da hatte grad 'ne Pizzeria neu eröffnet … - - - http://activitystrea.ms/schema/1.0/post - 2017-08-19T19:38:53+00:00 - 2017-08-19T19:38:53+00:00 - - - - https://gnusocial.de/conversation/9363813 - - - - - - - - tag:social.stopwatchingus-heidelberg.de,2017-08-19:fave:18330:activity:977180:2017-08-19T21:37:36+02:00 - Favorite - atarifrosch favorited something by jcaktiv: BTW Hallo zusammen &lt;3, wo ich schon mal wieder hier bin - http://activitystrea.ms/schema/1.0/favorite - 2017-08-19T19:37:36+00:00 - 2017-08-19T19:37:36+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:quitter.se,2017-08-19:noticeId=17372467:objectType=note - New note by jcaktiv - BTW Hallo zusammen &lt;3, wo ich schon mal wieder hier bin - - - - - - - tag:quitter.se,2017-08-19:objectType=thread:nonce=46c1c433d88aaa9f - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=976985:objectType=comment - New comment by atarifrosch - Jo, oder einfach mal nachfragen, so als Realitätsabgleich. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-19T10:34:50+00:00 - 2017-08-19T10:34:50+00:00 - - - - https://gnusocial.de/conversation/9362516 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=976983:objectType=note - New note by atarifrosch - Schöne Alternative zu mit Werbung überladenen kommerziellen Anbietern: <a href="http://ifconfig.at/" title="http://ifconfig.at/" class="attachment" id="attachment-450636" rel="nofollow external">http://ifconfig.at/</a> – eigene IP, Hostname etc. abfragen, mit curl dann auch in Textform zur lokalen Weiterverarbeitung in Scripten etc. Leider (noch?) kein https. - - - http://activitystrea.ms/schema/1.0/post - 2017-08-19T10:33:04+00:00 - 2017-08-19T10:33:04+00:00 - - tag:social.stopwatchingus-heidelberg.de,2017-08-19:noticeId=976983:objectType=thread:crc32=4a3593c0 - - - - - - diff --git a/test/fixtures/tesla_mock/emelie.atom b/test/fixtures/tesla_mock/emelie.atom deleted file mode 100644 index ddaa1c6ca..000000000 --- a/test/fixtures/tesla_mock/emelie.atom +++ /dev/null @@ -1,306 +0,0 @@ - - - https://mastodon.social/users/emelie.atom - emelie 🎨 - 23 / #Sweden / #Artist / #Equestrian / #GameDev - -If I ain't spending time with my pets, I'm probably drawing. 🐴 🐱 🐰 - 2019-02-04T20:22:19Z - https://files.mastodon.social/accounts/avatars/000/015/657/original/e7163f98280da1a4.png - - https://mastodon.social/users/emelie - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/emelie - emelie - emelie@mastodon.social - <p>23 / <a href="https://mastodon.social/tags/sweden" class="mention hashtag" rel="tag">#<span>Sweden</span></a> / <a href="https://mastodon.social/tags/artist" class="mention hashtag" rel="tag">#<span>Artist</span></a> / <a href="https://mastodon.social/tags/equestrian" class="mention hashtag" rel="tag">#<span>Equestrian</span></a> / <a href="https://mastodon.social/tags/gamedev" class="mention hashtag" rel="tag">#<span>GameDev</span></a></p><p>If I ain&apos;t spending time with my pets, I&apos;m probably drawing. 🐴 🐱 🐰</p> - - - - emelie - emelie 🎨 - 23 / #Sweden / #Artist / #Equestrian / #GameDev - -If I ain't spending time with my pets, I'm probably drawing. 🐴 🐱 🐰 - public - - - - - - - https://mastodon.social/users/emelie/statuses/101850331907006641 - 2019-04-01T09:58:50Z - 2019-04-01T09:58:50Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Me: I&apos;m going to make this vital change to my world building in the morning, no way I&apos;ll forget this, it&apos;s too big of a deal<br />Also me: forgets</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101849626603073336 - 2019-04-01T06:59:28Z - 2019-04-01T06:59:28Z - New status by emelie - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - - <p><span class="h-card"><a href="https://mastodon.social/@Fergant" class="u-url mention">@<span>Fergant</span></a></span> Dom är i stort sett religiös skrift vid det här laget 👏👏</p><p>har dock bara läst svenska översättningen, kanske är dags att jag läser dom på engelska</p> - - - public - - - - - - - https://mastodon.social/users/emelie/statuses/101849580030237068 - 2019-04-01T06:47:37Z - 2019-04-01T06:47:37Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>What&apos;s you people&apos;s favourite fantasy books? Give me some hot tips 🌞</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101849550599949363 - 2019-04-01T06:40:08Z - 2019-04-01T06:40:08Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Stick them legs out 💃 <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101849191533152720 - 2019-04-01T05:08:49Z - 2019-04-01T05:08:49Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>long 🐱 <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101849165031453009 - 2019-04-01T05:02:05Z - 2019-04-01T05:02:05Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>You gotta take whatever bellyrubbing opportunity you can get before she changes her mind 🦁 <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101846512530748693 - 2019-03-31T17:47:31Z - 2019-03-31T17:47:31Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Hello look at this boy having a decent haircut for once <a href="https://mastodon.social/tags/mastohorses" class="mention hashtag" rel="tag">#<span>mastohorses</span></a> <a href="https://mastodon.social/tags/equestrian" class="mention hashtag" rel="tag">#<span>equestrian</span></a></p> - - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101846181093805500 - 2019-03-31T16:23:14Z - 2019-03-31T16:23:14Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Sorry did I disturb the who-is-the-longest-cat competition ? <a href="https://mastodon.social/tags/mastocats" class="mention hashtag" rel="tag">#<span>mastocats</span></a></p> - - - - public - - - - - - https://mastodon.social/users/emelie/statuses/101845897513133849 - 2019-03-31T15:11:07Z - 2019-03-31T15:11:07Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - more earthsea ramblings - <p>I&apos;m re-watching Tales from Earthsea for the first time since I read the books, and that Therru doesn&apos;t squash Cob like a spider, as Orm Embar did is a wasted opportunity tbh</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101841219051533307 - 2019-03-30T19:21:19Z - 2019-03-30T19:21:19Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>I gave my cats some mackerel and they ate it all in 0.3 seconds, and now they won&apos;t stop meowing for more, and I&apos;m tired plz shut up</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101839949762341381 - 2019-03-30T13:58:31Z - 2019-03-30T13:58:31Z - New status by emelie - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - - <p>yet I&apos;m confused about this american dude with a gun, like the heck r ya doin in mah ghibli</p> - - public - - - - - - - https://mastodon.social/users/emelie/statuses/101839928677863590 - 2019-03-30T13:53:09Z - 2019-03-30T13:53:09Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>2 hours into Ni no Kuni 2 and I&apos;ve already sold my soul to this game</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101836329521599438 - 2019-03-29T22:37:51Z - 2019-03-29T22:37:51Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>Pippi Longstocking the original one-punch /man</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101835905282948341 - 2019-03-29T20:49:57Z - 2019-03-29T20:49:57Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>I&apos;ve had so much wine I thought I had a 3rd brother</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101835878059204660 - 2019-03-29T20:43:02Z - 2019-03-29T20:43:02Z - New status by emelie - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - - <p>ååååhhh booi</p> - - public - - - - - - https://mastodon.social/users/emelie/statuses/101835848050598939 - 2019-03-29T20:35:24Z - 2019-03-29T20:35:24Z - New status by emelie - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - - <p><span class="h-card"><a href="https://thraeryn.net/@thraeryn" class="u-url mention">@<span>thraeryn</span></a></span> if I spent 1 hour and a half watching this monstrosity, I need to</p> - - - public - - - - - - - https://mastodon.social/users/emelie/statuses/101835823138262290 - 2019-03-29T20:29:04Z - 2019-03-29T20:29:04Z - New status by emelie - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - - medical, fluids mention - <p><span class="h-card"><a href="https://icosahedron.website/@Trev" class="u-url mention">@<span>Trev</span></a></span> *hugs* ✨</p> - - - public - - - - - - diff --git a/test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml b/test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml deleted file mode 100644 index 490467708..000000000 --- a/test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml +++ /dev/null @@ -1,460 +0,0 @@ - - - GNU social - http://gs.example.org/index.php/api/statuses/user_timeline/1.atom - lambda timeline - Updates from lambda on gs.example.org! - http://gs.example.org/theme/neo-gnu/default-avatar-profile.png - 2017-05-05T12:09:57+00:00 - - http://activitystrea.ms/schema/1.0/person - http://gs.example.org:4040/index.php/user/1 - lambda - - - - - lambda - lambda - - - - - - - - - - - - - tag:gs.example.org,2017-05-04:noticeId=84:objectType=note - lambda repeated a notice by lambda2 - RT @<a href="http://gs.example.org/index.php/user/7" class="h-card mention">lambda2</a> Hello! - - http://activitystrea.ms/schema/1.0/share - 2017-05-04T16:38:50+00:00 - 2017-05-04T16:38:50+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.example.org,2017-05-01:noticeId=67:objectType=note - - Hello! - - http://activitystrea.ms/schema/1.0/post - 2017-05-01T08:41:04+00:00 - 2017-05-01T08:41:04+00:00 - - http://activitystrea.ms/schema/1.0/person - http://gs.example.org/index.php/user/7 - lambda2 - - - - - - lambda2 - lambda2 - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-05-01:noticeId=67:objectType=note - New note by lambda2 - Hello! - - - - - tag:gs.example.org,2017-05-01:objectType=thread:nonce=cffa792cb95fe417 - - - http://gs.example.org/index.php/api/statuses/user_timeline/7.atom - lambda2 - - - - http://gs.example.org/avatar/7-96-20170501084054.png - 2017-05-01T16:33:10+00:00 - - - - - - tag:gs.example.org,2017-05-01:objectType=thread:nonce=cffa792cb95fe417 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-30:noticeId=63:objectType=note - New note by lambda - what now? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-30T10:09:57+00:00 - 2017-04-30T10:09:57+00:00 - - - - tag:gs.example.org,2017-04-30:objectType=thread:nonce=1bbb60991ae9874b - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-30:noticeId=61:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain5" class="h-card mention">lain5</a> Hello! - - - http://activitystrea.ms/schema/1.0/post - 2017-04-30T10:07:26+00:00 - 2017-04-30T10:07:26+00:00 - - tag:gs.example.org,2017-04-30:objectType=thread:nonce=1bbb60991ae9874b - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-29:noticeId=59:objectType=note - New note by lambda - ey - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T17:04:59+00:00 - 2017-04-29T17:04:59+00:00 - - tag:gs.example.org,2017-04-29:objectType=thread:nonce=4cc42c2c61a0f4bd - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-29:noticeId=58:objectType=note - New note by lambda - Another one. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T17:02:47+00:00 - 2017-04-29T17:02:47+00:00 - - tag:gs.example.org,2017-04-29:objectType=thread:nonce=53e9b8f1d6d38d13 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-29:noticeId=57:objectType=note - New note by lambda - Let's see if this comes over. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T17:01:39+00:00 - 2017-04-29T17:01:39+00:00 - - tag:gs.example.org,2017-04-29:objectType=thread:nonce=238a7bd3ffc7c9cc - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org,2017-04-29:noticeId=56:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain5" class="h-card mention">lain5</a> Hey! - - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T16:38:13+00:00 - 2017-04-29T16:38:13+00:00 - - tag:gs.example.org,2017-04-29:objectType=thread:nonce=2629d3a398171b0f - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=55:objectType=note - New note by lambda - hey. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:16:13+00:00 - 2017-04-25T18:16:13+00:00 - - - - http://pleroma.example.org:4000/contexts/8f6f45d4-8e4d-4e1a-a2de-09f27367d2d0 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=53:objectType=note - New note by lambda - and this? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:14:34+00:00 - 2017-04-25T18:14:34+00:00 - - - - http://pleroma.example.org:4000/contexts/24779b0e-91ad-487e-81bd-6cf5bb437b09 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=52:objectType=note - New note by lambda - yeah it does :) - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:13:31+00:00 - 2017-04-25T18:13:31+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=e0dc24b1a93ab6b3 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=50:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain5" class="h-card mention">lain5</a> Let's try with one that originates here! - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:10:28+00:00 - 2017-04-25T18:10:28+00:00 - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=e0dc24b1a93ab6b3 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=48:objectType=note - New note by lambda - works? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:08:44+00:00 - 2017-04-25T18:08:44+00:00 - - - - http://pleroma.example.org:4000/contexts/24779b0e-91ad-487e-81bd-6cf5bb437b09 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=46:objectType=note - New note by lambda - Let's send you an answer. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:05:31+00:00 - 2017-04-25T18:05:31+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=73c7bcf6658f7ce3 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=44:objectType=note - New note by lambda - Hey. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T18:01:09+00:00 - 2017-04-25T18:01:09+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=43:objectType=note - New note by lambda - What's coming to you? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:58:41+00:00 - 2017-04-25T17:58:41+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=42:objectType=note - New note by lambda - Now this is podracing. - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:57:40+00:00 - 2017-04-25T17:57:40+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=6e7c8fc2823380b4 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=39:objectType=note - New note by lambda - Sure looks like it! - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:48:27+00:00 - 2017-04-25T17:48:27+00:00 - - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=4c6114a75bb4cea5 - - - - - - - - tag:gs.example.org:4040,2017-04-25:subscription:1:person:6:2017-04-25T17:47:47+00:00 - lambda (lambda)'s status on Tuesday, 25-Apr-2017 17:47:47 UTC - <a href="http://gs.example.org:4040/index.php/lambda">lambda</a> started following <a href="http://pleroma.example.org:4000/users/lain5">l</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-25T17:47:47+00:00 - 2017-04-25T17:47:47+00:00 - - http://activitystrea.ms/schema/1.0/person - http://pleroma.example.org:4000/users/lain5 - l - lambadalambda - - - - - - lain5 - l - lambadalambda - - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=119acad17515314c - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=36:objectType=note - New note by lambda - @<a href="http://pleroma.example.org:4000/users/lain5" class="h-card mention">lain5</a> Hey, how are you? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:46:22+00:00 - 2017-04-25T17:46:22+00:00 - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=9c5ec19a18191372 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.example.org:4040,2017-04-25:noticeId=35:objectType=note - New note by lambda - @lain5@pleroma.example.org does this not work? - - - http://activitystrea.ms/schema/1.0/post - 2017-04-25T17:42:31+00:00 - 2017-04-25T17:42:31+00:00 - - tag:gs.example.org:4040,2017-04-25:objectType=thread:nonce=fc841d7f52caa363 - - - - - - diff --git a/test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom b/test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom deleted file mode 100644 index b5f3d923b..000000000 --- a/test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom +++ /dev/null @@ -1,342 +0,0 @@ - - - https://mamot.fr/users/Skruyb.atom - The 7th Son - Fr and En. -Posts will disappear on a regular basis. - 2017-04-28T13:54:23Z - https://mamot.fr/system/accounts/avatars/000/026/213/original/d95dbcfc76f77f4c.jpg?1493230984 - - https://mamot.fr/users/Skruyb - http://activitystrea.ms/schema/1.0/person - https://mamot.fr/users/Skruyb - Skruyb - Skruyb@mamot.fr - <p>Fr and En.<br />Posts will disappear on a regular basis.</p> - - - - Skruyb - The 7th Son - Fr and En. -Posts will disappear on a regular basis. - public - - - - - - - - tag:mamot.fr,2017-05-10:objectId=1299665:objectType=Status - 2017-05-10T20:06:59Z - 2017-05-10T20:06:59Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pouets.ovh/@noName" class="u-url mention">@<span>noName</span></a></span></p><p>Pour comparer faut avoir tester... Ô wait!!! 😁</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1299185:objectType=Status - 2017-05-10T19:52:14Z - 2017-05-10T19:52:14Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://witches.town/@Dhveszak" class="u-url mention">@<span>Dhveszak</span></a></span></p><p>Toi!! Tu vises le ministère de la propagande avoue!!!!!!!</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1299019:objectType=Status - 2017-05-10T19:47:19Z - 2017-05-10T19:47:19Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Facebook s&apos;attaque aux sites internet &quot;trompeurs&quot;</p><p><a href="http://u.afp.com/4W4z" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">u.afp.com/4W4z</span><span class="invisible"></span></a></p><p>J&apos;attends de voir que Facebook s&apos;attaque à lui même... rien qu&apos;à lire leurs conditions générales d&apos;utilisation, le respect de la vie privée...</p><p>Charité bien ordonnée... Parfois l&apos;égoïsme aurait du bon.</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1298889:objectType=Status - 2017-05-10T19:43:18Z - 2017-05-10T19:43:18Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://octodon.social/@Balise" class="u-url mention">@<span>Balise</span></a></span></p><p>Fait comme moi, annonce que tu fais dans le flou artistique et que seuls des esprits éclairés pourront en percevoir la beauté et apprécier. Globalement après ça, tout le monde trouve les photos cool :-p</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1298728:objectType=Status - 2017-05-10T19:38:39Z - 2017-05-10T19:38:39Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@applecandy" class="u-url mention">@<span>applecandy</span></a></span></p><p>Lucky you!!!</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1298431:objectType=Status - 2017-05-10T19:26:32Z - 2017-05-10T19:26:32Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Est-ce que je suis le seul qui lorsqu&apos;il commence à compter les arbres sur le bord de la route n&apos;arrive pas à s&apos;arrêter de compter?</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1298224:objectType=Status - 2017-05-10T19:18:17Z - 2017-05-10T19:18:17Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Ca y est j&apos;ai une nouvelle passion. Mettre les bouchons qui trainent par terre dans le bons sens avec mon pied 🙌</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1297450:objectType=Status - 2017-05-10T18:53:37Z - 2017-05-10T18:53:37Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Ok. On est capable d&apos;envoyer des mecs dans l&apos;espace, avoir des voitures autonomes, des trucs intelligents de partout mais pas tous les bâtiments accessibles aux personnes à mobilité réduite, les émissions sur le services publics avec une personne faisant la traduction pour les sourds et malentendants de manière systématique...</p><p>J&apos;ai du louper un truc dans l&apos;ordre des priorités Oo</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1297292:objectType=Status - 2017-05-10T18:48:17Z - 2017-05-10T18:48:17Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>J&apos;ai comme envie de faire un truc mais je ne sais pas quoi mais pourtant c&apos;est comme si je ressentais l&apos;idée dans ma tête mais c&apos;est pas clair...</p><p>Fuck!!! J&apos;vais aller draguer Josiane à la compta ça va me changer les idées!!!</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1296598:objectType=Status - 2017-05-10T18:25:11Z - 2017-05-10T18:25:11Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Smeablog" class="u-url mention">@<span>Smeablog</span></a></span></p><p>Pas faux MDR!!!!</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1296571:objectType=Status - 2017-05-10T18:24:13Z - 2017-05-10T18:24:13Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Smeablog" class="u-url mention">@<span>Smeablog</span></a></span></p><p>Ca ne change pas la finalité malheureusement, ça ne m&apos;ouvre pas ce à quoi je veux accéder 😭</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1296475:objectType=Status - 2017-05-10T18:20:50Z - 2017-05-10T18:20:50Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Arrrgghhhhhhh!!!!</p><p>Quand t&apos;es sur le point de cliquer sur un lien dans le fil public global et que BOOM ça se met à jour... J&apos;ose même pas imaginer combien j&apos;ai ouvert de pages web sans le vouloir!!!</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1296426:objectType=Status - 2017-05-10T18:19:17Z - 2017-05-10T18:19:17Z - Skruyb shared a status by Isaluini@mastodon.social - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:mastodon.social,2017-05-10:objectId=5587049:objectType=Status - 2017-05-10T18:18:59Z - 2017-05-10T18:19:00Z - New status by Isaluini@mastodon.social - - https://mastodon.social/users/Isaluini - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/Isaluini - Isaluini - Isaluini@mastodon.social - <p>Adicciones: Escribir, diseñar, cine, café, humor negro, música y dibujar. | Jedi. Bueno, no. Algún día (?) | Gratitude.</p> - - - - Isaluini - Isa - Adicciones: Escribir, diseñar, cine, café, humor negro, música y dibujar. | Jedi. Bueno, no. Algún día (?) | Gratitude. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>♫ <br><a href="https://www.youtube.com/watch?v=pT68FS3YbQ4"><span class="invisible">https://www.</span><span class="ellipsis">youtube.com/watch?v=pT68FS3YbQ</span><span class="invisible">4</span></a></p> - - public - - - <p>♫ <br><a href="https://www.youtube.com/watch?v=pT68FS3YbQ4"><span class="invisible">https://www.</span><span class="ellipsis">youtube.com/watch?v=pT68FS3YbQ</span><span class="invisible">4</span></a></p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1295893:objectType=Status - 2017-05-10T18:01:51Z - 2017-05-10T18:01:51Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Chat2Gouttieres" class="u-url mention">@<span>Chat2Gouttieres</span></a></span></p><p>Ah bah après faut savoir mettre à profit ce savoir ^^</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1295815:objectType=Status - 2017-05-10T18:00:02Z - 2017-05-10T18:00:02Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Chat2Gouttieres" class="u-url mention">@<span>Chat2Gouttieres</span></a></span></p><p>Exactement. On a les jeux mais pas le pain encore.</p><p>Finalement on a rien inventé :-p</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1295778:objectType=Status - 2017-05-10T17:58:52Z - 2017-05-10T17:58:52Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@Chat2Gouttieres" class="u-url mention">@<span>Chat2Gouttieres</span></a></span></p><p>C&apos;est ça visiblement dans notre société dite moderne... &quot;Créer l&apos;illusion que&quot; Oo.</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1294943:objectType=Status - 2017-05-10T17:31:44Z - 2017-05-10T17:31:44Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - Hey. - <p><span class="h-card"><a href="https://mastodon.social/@lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span></p><p>Hey!!!</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1294914:objectType=Status - 2017-05-10T17:30:40Z - 2017-05-10T17:30:40Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mamot.fr/@EloClemTiti" class="u-url mention">@<span>EloClemTiti</span></a></span></p><p>J&apos;ai souvent cette impression en effet 😂</p> - - - public - - - - - - tag:mamot.fr,2017-05-10:objectId=1294148:objectType=Status - 2017-05-10T17:02:01Z - 2017-05-10T17:02:01Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Les gars, les boss veulent voir de l&apos;avancement!! Une idée?</p><p>On fait comme d&apos;habitude. On divise nos tâches en 25.000 tâches unitaires, on fout du vert au maximum et on crée l&apos;illusion que ça a bien avancé!</p><p>Deal!!</p><p>Bob, tu choisis quel vert on utilise<br />Alice, t&apos;es en charge de la typo<br />Moi, je m&apos;occupe qu&apos;on prend bien le dernier template ppt fournit par la comm interne.</p><p>Des winners qu&apos;on est!!!! Des WI-NNERS!!!</p> - - public - - - - - tag:mamot.fr,2017-05-10:objectId=1293995:objectType=Status - 2017-05-10T16:57:53Z - 2017-05-10T16:57:53Z - New status by Skruyb - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://mastodon.social/@SauceHair" class="u-url mention">@<span>SauceHair</span></a></span></p><p>Cool!!</p><p>Bon courage.</p> - - - public - - - - - diff --git a/test/fixtures/tesla_mock/https___mastodon.social_users_lambadalambda.atom b/test/fixtures/tesla_mock/https___mastodon.social_users_lambadalambda.atom deleted file mode 100644 index 4d732b109..000000000 --- a/test/fixtures/tesla_mock/https___mastodon.social_users_lambadalambda.atom +++ /dev/null @@ -1,464 +0,0 @@ - - - https://mastodon.social/users/lambadalambda.atom - Critical Value - - 2017-04-16T21:47:25Z - https://files.mastodon.social/accounts/avatars/000/000/264/original/1429214160519.gif - - https://mastodon.social/users/lambadalambda - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/lambadalambda - lambadalambda - lambadalambda@mastodon.social - - - - lambadalambda - Critical Value - public - - - - - - - - tag:mastodon.social,2017-05-04:objectId=4991300:objectType=Status - 2017-05-04T14:10:30Z - 2017-05-04T14:10:30Z - Delete - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/delete - - - - - tag:mastodon.social,2017-05-04:objectId=4980289:objectType=Status - 2017-05-04T07:43:23Z - 2017-05-04T07:43:23Z - Delete - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/delete - - - - - tag:mastodon.social,2017-05-03:objectId=4952899:objectType=Status - 2017-05-03T17:26:43Z - 2017-05-03T17:26:43Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> OK!!</p> - - - public - - - - - - tag:mastodon.social,2017-05-03:objectId=4952810:objectType=Status - 2017-05-03T17:24:34Z - 2017-05-03T17:24:34Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> yeah :)</p> - - - public - - - - - - tag:mastodon.social,2017-05-03:objectId=4950388:objectType=Status - 2017-05-03T16:22:00Z - 2017-05-03T16:22:00Z - lambadalambda shared a status by lambadalambda@social.heldscal.la - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.heldscal.la,2017-05-03:noticeId=2030733:objectType=note - 2017-05-03T12:29:20Z - 2017-05-03T12:29:31Z - New status by lambadalambda@social.heldscal.la - - https://social.heldscal.la/user/23211 - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - lambadalambda@social.heldscal.la - Call me Deacon Blues. - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Time for work. <a href="https://social.heldscal.la/file/953c117a1e7e4c763755d2ac29cf1aae08e025599f4a4cc11ddff4082c07f969.jpg">https://social.heldscal.la/attachment/120552</a> - - - public - - - Time for work. <a href="https://social.heldscal.la/file/953c117a1e7e4c763755d2ac29cf1aae08e025599f4a4cc11ddff4082c07f969.jpg">https://social.heldscal.la/attachment/120552</a> - - public - - - - - tag:mastodon.social,2017-05-03:objectId=4934452:objectType=Status - 2017-05-03T08:21:09Z - 2017-05-03T08:21:09Z - lambadalambda shared a status by lain@pleroma.soykaf.com - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - https://pleroma.soykaf.com/objects/4c1bda26-902e-4525-9fcd-b9fd44925193 - 2017-05-03T08:04:44Z - 2017-05-03T08:05:52Z - New status by lain@pleroma.soykaf.com - - https://pleroma.soykaf.com/users/lain - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - lain@pleroma.soykaf.com - Test account - - - - lain - Lain Iwakura - Test account - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - public - - - Added returning the entries as xml... let's see if the mastodon hammering stops now. - - public - - - - - tag:mastodon.social,2017-05-02:objectId=4905499:objectType=Status - 2017-05-02T19:34:21Z - 2017-05-02T19:34:21Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> yay!</p> - - - public - - - - - - tag:mastodon.social,2017-05-02:objectId=4905442:objectType=Status - 2017-05-02T19:33:33Z - 2017-05-02T19:33:33Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> so?</p> - - - public - - - - - - tag:mastodon.social,2017-05-02:objectId=4901603:objectType=Status - 2017-05-02T18:33:06Z - 2017-05-02T18:33:06Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> hey</p> - - - public - - - - - - tag:mastodon.social,2017-05-01:objectId=4836720:objectType=Status - 2017-05-01T18:52:16Z - 2017-05-01T18:52:16Z - lambadalambda shared a status by lain@pleroma.soykaf.com - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - https://pleroma.soykaf.com/objects/7b41bb51-9aba-436a-82d9-dd3f5aca98c9 - 2017-05-01T18:50:54Z - 2017-05-01T18:50:57Z - New status by lain@pleroma.soykaf.com - - https://pleroma.soykaf.com/users/lain - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - lain@pleroma.soykaf.com - Test account - - - - lain - Lain Iwakura - Test account - public - - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <a href="https://mastodon.social/users/lambadalambda">@lambadalambda@mastodon.social</a> you're an all-star. - - - public - - - - <a href="https://mastodon.social/users/lambadalambda">@lambadalambda@mastodon.social</a> you're an all-star. - - public - - - - - tag:mastodon.social,2017-05-01:objectId=4836142:objectType=Status - 2017-05-01T18:38:47Z - 2017-05-01T18:38:47Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey now!</p> - - - public - - - - - - tag:mastodon.social,2017-05-01:objectId=4836055:objectType=Status - 2017-05-01T18:37:04Z - 2017-05-01T18:37:04Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> hello</p> - - - public - - - - - - tag:mastodon.social,2017-05-01:objectId=4834850:objectType=Status - 2017-05-01T18:10:43Z - 2017-05-01T18:10:43Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey!</p> - - - public - - - - - tag:mastodon.social,2017-04-29:objectId=4694455:objectType=Status - 2017-04-29T18:39:12Z - 2017-04-29T18:39:12Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>@lain@pleroma.soykaf.com What&apos;s up?</p> - - public - - - - - tag:mastodon.social,2017-04-29:objectId=4694384:objectType=Status - 2017-04-29T18:37:32Z - 2017-04-29T18:37:32Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://social.heldscal.la/lain" class="u-url mention">@<span>lain</span></a></span> Hey.</p> - - - public - - - - - tag:mastodon.social,2017-04-07:objectId=1874242:objectType=Status - 2017-04-07T11:02:56Z - 2017-04-07T11:02:56Z - lambadalambda shared a status by 0xroy@social.wxcafe.net - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.wxcafe.net,2017-04-07:objectId=72554:objectType=Status - 2017-04-07T11:01:59Z - 2017-04-07T11:02:00Z - New status by 0xroy@social.wxcafe.net - - https://social.wxcafe.net/users/0xroy - http://activitystrea.ms/schema/1.0/person - https://social.wxcafe.net/users/0xroy - 0xroy - 0xroy@social.wxcafe.net - ta caution weeb | discussions privées : <a href="https://%F0%9F%92%8C.0xroy.me"><span class="invisible">https://</span><span class="">💌.0xroy.me</span><span class="invisible"></span></a> - - - - 0xroy - 「R O Y 🍵 B O S」 - ta caution weeb | discussions privées : https://💌.0xroy.me - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>someone pls eli5 matrix (protocol) and riot</p> - - public - - - <p>someone pls eli5 matrix (protocol) and riot</p> - - public - - - - - tag:mastodon.social,2017-04-06:objectId=1768247:objectType=Status - 2017-04-06T11:10:19Z - 2017-04-06T11:10:19Z - lambadalambda shared a status by areyoutoo@mastodon.xyz - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:mastodon.xyz,2017-04-05:objectId=133327:objectType=Status - 2017-04-05T17:36:41Z - 2017-04-05T18:12:14Z - New status by areyoutoo@mastodon.xyz - - https://mastodon.xyz/users/areyoutoo - http://activitystrea.ms/schema/1.0/person - https://mastodon.xyz/users/areyoutoo - areyoutoo - areyoutoo@mastodon.xyz - devops | retired gamedev | always boost puppy pics - - - - areyoutoo - Raw Butter - devops | retired gamedev | always boost puppy pics - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>Some UX thoughts for <a href="https://mastodon.xyz/tags/mastodev">#<span>mastodev</span></a>:</p><p>- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.</p><p>- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.</p><p>I probably don't know enough web frontend to help, but it might be fun to try.</p> - - - public - - - <p>Some UX thoughts for <a href="https://mastodon.xyz/tags/mastodev">#<span>mastodev</span></a>:</p><p>- Would be nice if I could work on multiple draft toots? Clicking to reply to someone seems to erase any draft I had been working on.</p><p>- Kinda risky to click on the Federated Timeline if it loads new toots and scrolls 10ms before I click on something.</p><p>I probably don't know enough web frontend to help, but it might be fun to try.</p> - - public - - - - - tag:mastodon.social,2017-04-06:objectId=1764509:objectType=Status - 2017-04-06T10:15:38Z - 2017-04-06T10:15:38Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - This is a test for cw federation - <p>This is a test for cw federation body text.</p> - - public - - - - - tag:mastodon.social,2017-04-05:objectId=1645208:objectType=Status - 2017-04-05T07:14:53Z - 2017-04-05T07:14:53Z - lambadalambda shared a status by lambadalambda@social.heldscal.la - http://activitystrea.ms/schema/1.0/activity - http://activitystrea.ms/schema/1.0/share - - tag:social.heldscal.la,2017-04-05:noticeId=1502088:objectType=note - 2017-04-05T06:12:09Z - 2017-04-05T07:12:47Z - New status by lambadalambda@social.heldscal.la - - https://social.heldscal.la/user/23211 - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - lambadalambda@social.heldscal.la - Call me Deacon Blues. - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - public - - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - Federation 101: <a href="https://www.youtube.com/watch?v=t1lYU5CA40o">https://www.youtube.com/watch?v=t1lYU5CA40o</a> - - public - - - Federation 101: <a href="https://www.youtube.com/watch?v=t1lYU5CA40o">https://www.youtube.com/watch?v=t1lYU5CA40o</a> - - public - - - - - tag:mastodon.social,2017-04-05:objectId=1641750:objectType=Status - 2017-04-05T05:44:48Z - 2017-04-05T05:44:48Z - New status by lambadalambda - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> just a test.</p> - - - public - - - - diff --git a/test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom b/test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom deleted file mode 100644 index 17d1956e8..000000000 --- a/test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom +++ /dev/null @@ -1,231 +0,0 @@ - - - https://pawoo.net/users/pekorino.atom - モノエ - シアトル・米国 - -GNUsocial 英語版 -http://shitposter.club/mono - - - 2017-05-07T09:28:20Z - https://img.pawoo.net/accounts/avatars/000/128/378/original/e1fce04a36a1ad90.jpg - - https://pawoo.net/users/pekorino - http://activitystrea.ms/schema/1.0/person - https://pawoo.net/users/pekorino - pekorino - pekorino@pawoo.net - <p>シアトル・米国</p><p>GNUsocial 英語版<br /><a href="http://shitposter.club/mono" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">shitposter.club/mono</span><span class="invisible"></span></a> </p> - - - - pekorino - モノエ - シアトル・米国 - -GNUsocial 英語版 -http://shitposter.club/mono - - - public - - - - - - - tag:pawoo.net,2017-05-07:objectId=9319211:objectType=Status - 2017-05-07T09:56:35Z - 2017-05-07T09:56:35Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> <span class="h-card"><a href="https://shitposter.club/rw" class="u-url mention">@<span>rw</span></a></span> <span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> <span class="h-card"><a href="https://shitposter.club/mono" class="u-url mention">@<span>mono</span></a></span> </p><p>i have to wait for someone to respond to this before i can follow because i dont think this software has a direct follow by url option</p> - - - - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9318595:objectType=Status - 2017-05-07T09:54:39Z - 2017-05-07T09:54:39Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/mono" class="u-url mention">@<span>mono</span></a></span> <span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> <span class="h-card"><a href="https://shitposter.club/rw" class="u-url mention">@<span>rw</span></a></span> <span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> <br />please respond</p> - - - - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9313978:objectType=Status - 2017-05-07T09:39:17Z - 2017-05-07T09:39:17Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> <br />mastodon is so slow. browser crashed twice trying to set avatar</p> - - - public - - - - - tag:pawoo.net,2017-05-07:objectId=9312691:objectType=Status - 2017-05-07T09:34:38Z - 2017-05-07T09:34:38Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/hardbass2k8" class="u-url mention">@<span>hardbass2k8</span></a></span> <a href="https://pawoo.net/media/mZJjLpbPU72GFEz2Svk" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/mZJjLpbPU72GFE</span><span class="invisible">z2Svk</span></a></p> - - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9312379:objectType=Status - 2017-05-07T09:33:29Z - 2017-05-07T09:33:29Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/hardbass2k8" class="u-url mention">@<span>hardbass2k8</span></a></span> <a href="https://pawoo.net/media/nt5JHBEHyTN2bqzdcGU" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/nt5JHBEHyTN2bq</span><span class="invisible">zdcGU</span></a></p> - - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9311765:objectType=Status - 2017-05-07T09:31:26Z - 2017-05-07T09:31:26Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><a href="https://pawoo.net/media/C4RV6ubsEtvS04DX6qs" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/C4RV6ubsEtvS04</span><span class="invisible">DX6qs</span></a></p> - - - public - - - - - tag:pawoo.net,2017-05-07:objectId=9311610:objectType=Status - 2017-05-07T09:30:59Z - 2017-05-07T09:30:59Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><a href="https://pawoo.net/media/MBmkeEdrjs8pAtCHN6s" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/MBmkeEdrjs8pAt</span><span class="invisible">CHN6s</span></a></p> - - - public - - - - - tag:pawoo.net,2017-05-07:objectId=9307782:objectType=Status - 2017-05-07T09:16:47Z - 2017-05-07T09:16:47Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/mono" class="u-url mention">@<span>mono</span></a></span></p><p>test</p> - - - public - - - - - tag:pawoo.net,2017-05-07:objectId=9307444:objectType=Status - 2017-05-07T09:15:42Z - 2017-05-07T09:15:42Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/hardbass2k8" class="u-url mention">@<span>hardbass2k8</span></a></span> テスト</p> - - - public - - - - - - tag:pawoo.net,2017-05-07:objectId=9307239:objectType=Status - 2017-05-07T09:14:58Z - 2017-05-07T09:14:58Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>ててててててテスト</p> - - public - - - - - tag:pawoo.net,2017-04-20:objectId=2212164:objectType=Status - 2017-04-20T06:19:18Z - 2017-04-20T06:19:18Z - New status by pekorino - http://activitystrea.ms/schema/1.0/comment - http://activitystrea.ms/schema/1.0/post - <p><span class="h-card"><a href="https://shitposter.club/mono" class="u-url mention">@<span>mono</span></a></span> <a href="https://pawoo.net/media/iMbjMBVPfZJX3lUC2Sc" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">pawoo.net/media/iMbjMBVPfZJX3l</span><span class="invisible">UC2Sc</span></a></p> - - - - public - - - - - - tag:pawoo.net,2017-04-20:objectId=2206216:objectType=Status - 2017-04-20T05:57:59Z - 2017-04-20T05:57:59Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>テスト</p> - - public - - - - - tag:pawoo.net,2017-04-20:objectId=2204702:objectType=Status - 2017-04-20T05:52:09Z - 2017-04-20T05:52:09Z - New status by pekorino - http://activitystrea.ms/schema/1.0/note - http://activitystrea.ms/schema/1.0/post - <p>HELLOWORLD</p> - - public - - - - diff --git a/test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml b/test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml deleted file mode 100644 index a2a2629a6..000000000 --- a/test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml +++ /dev/null @@ -1 +0,0 @@ -https://pleroma.soykaf.com/users/lain/feed.atomlain's timeline2017-05-05T08:38:03.385598https://pleroma.soykaf.com/users/lainhttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/lainlainLain IwakuraTest accountlainhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/579e4224-b2ab-4ffa-8bbe-f7197a0a38d1lain repeated a noticeRT In just seven days, I can make you a man!<br> -- The Rocky Horror Picture Show2017-05-05T08:38:03.3855902017-05-05T08:38:03.385598https://pleroma.soykaf.com/contexts/e8673466-9642-4c9e-8781-f0f69d6b15aehttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/53dd40f4-3069-45a1-863b-94a9b317093dNew note by fortuneIn just seven days, I can make you a man!<br> -- The Rocky Horror Picture Show2017-05-05T02:10:02.9308022017-05-05T08:38:03.423539https://pleroma.soykaf.com/contexts/e8673466-9642-4c9e-8781-f0f69d6b15aehttps://pleroma.soykaf.com/users/fortunehttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/fortunefortunefortuneThe trusty unix fortune filefortunehttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/2bc86888-a256-4771-bb53-903f375804f9New note by lainRTs federating into pleroma now.2017-05-04T18:18:50.2764702017-05-04T18:18:50.276476https://pleroma.soykaf.com/contexts/b7ae9350-f317-48aa-8058-2668091bb280http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/902b1f50-f295-4189-8c15-9c880919e121New favorite by lainlain favorited something2017-05-04T08:03:01.3088902017-05-04T08:03:01.308927http://activitystrea.ms/schema/1.0/notetag:gs.smuglo.li,2017-05-03:noticeId=2164642:objectType=commenthttps://pleroma.soykaf.com/contexts/9419f742-aaba-4eb5-89a2-8b599e8bf43chttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/4e396e66-b063-454c-92c6-583506a9a2deNew note by lainClassic.<br><a href='https://pleroma.soykaf.com/media/adc36781-9765-4d9a-b57c-99b7a99108b2/mikodaemonstop.jpg'>https://pleroma.soykaf.com/media/adc36781-9765-4d9a-b57c-99b7a99108b2/mikodaemonstop.jpg</a>2017-05-04T07:59:45.1806192017-05-04T07:59:45.180628https://pleroma.soykaf.com/contexts/6afd9659-41e6-406d-ae97-43b880722861http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/85d183e9-c935-4655-a1e6-8d69a4108235New note by lainん?<br><a href='https://pleroma.soykaf.com/media/ab144c6d-a38c-4d35-a60b-9a998becc094/n.gif'>https://pleroma.soykaf.com/media/ab144c6d-a38c-4d35-a60b-9a998becc094/n.gif</a>2017-05-04T07:58:08.8107162017-05-04T07:58:08.810726https://pleroma.soykaf.com/contexts/2e1aa616-86ce-4b50-9c81-63045a972156http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/7c5c45bb-e4d9-4f72-b4c6-0314afbd3553New note by lainyeah.2017-05-04T07:55:17.3352902017-05-04T07:55:17.335299https://pleroma.soykaf.com/contexts/702c06cf-56ff-4a2f-bf5a-150bc00bb168http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/f33f5f54-1c1d-4462-b9ed-229bb635dfd8New note by lainyeah.2017-05-04T07:49:24.9314842017-05-04T07:49:24.931492https://pleroma.soykaf.com/contexts/c4932e7a-00cb-431a-b4ec-7404cb9daf65http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/0709bc79-7ac5-4983-b6d0-2205bf5ceba3New favorite by lainlain favorited something2017-05-03T20:08:11.2945792017-05-03T20:08:11.294587http://activitystrea.ms/schema/1.0/notetag:pawoo.net,2017-05-03:objectId=7967690:objectType=Statushttps://pleroma.soykaf.com/contexts/07a4b34d-6255-4bb2-8c73-c295a09ac952http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/72c0288e-62d8-43d9-b3d8-1a9d78be8375New note by lain<a href='https://pawoo.net/users/God_Emperor_of_Dune'>@God_Emperor_of_Dune@pawoo.net</a> no man, just some fun domination play among buddies, nothing homo about it.2017-05-03T20:01:00.9983142017-05-03T20:01:00.998322https://pleroma.soykaf.com/contexts/07a4b34d-6255-4bb2-8c73-c295a09ac952http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/d846409e-cf2a-4b68-a149-d5de34a91b0dNew note by lain<a href='https://social.heldscal.la/user/24974'>@dtluna@social.heldscal.la</a> btfo.<br><a href='https://pleroma.soykaf.com/media/fbe42e87-5574-4544-89ba-29ddf46227fa/pnc__picked_media_1889ce61-4961-4fea-8a14-04fe6783ebf6.jpg'>https://pleroma.soykaf.com/media/fbe42e87-5574-4544-89ba-29ddf46227fa/pnc__picked_media_1889ce61-4961-4fea-8a14-04fe6783ebf6.jpg</a>2017-05-03T20:00:15.8609952017-05-03T20:00:15.861002https://pleroma.soykaf.com/contexts/0e88f35e-1a38-4181-bef9-5cbb0d943c63http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/9075265f-f3b2-40e8-809f-10714f05a1fdNew note by lain#nohomo <br><a href='https://pleroma.soykaf.com/media/5cc5ad91-d637-4c45-a691-5ea778dc1bb3/pnc__picked_media_f62dc9ae-ea23-4fe6-bf85-cb75a129ab34.jpg'>https://pleroma.soykaf.com/media/5cc5ad91-d637-4c45-a691-5ea778dc1bb3/pnc__picked_media_f62dc9ae-ea23-4fe6-bf85-cb75a129ab34.jpg</a>2017-05-03T19:50:38.5891062017-05-03T19:50:38.589113https://pleroma.soykaf.com/contexts/07a4b34d-6255-4bb2-8c73-c295a09ac952http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/7924e992-0a95-40d9-8d17-7278c6c634c9New favorite by lainlain favorited something2017-05-03T18:32:59.2733752017-05-03T18:32:59.273382http://activitystrea.ms/schema/1.0/notetag:gs.smuglo.li,2017-05-03:noticeId=2164774:objectType=commenthttps://pleroma.soykaf.com/contexts/9419f742-aaba-4eb5-89a2-8b599e8bf43chttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/569571ba-f54c-41b0-bde4-0fede54599f0New note by lain<a href='https://gs.smuglo.li/user/2'>@nepfag@gs.smuglo.li</a>@gs.smuglo.li I'll do proper subfolders soon, for now it's one per attachment + thumbs etc.2017-05-03T18:27:01.4499492017-05-03T18:27:01.449956https://pleroma.soykaf.com/contexts/9419f742-aaba-4eb5-89a2-8b599e8bf43chttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/b6cc5d7c-0785-4785-a689-f1b05dc9b24dlain repeated a noticeRT <p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey now!</p>2017-05-03T18:13:48.8910612017-05-03T18:13:48.891069https://pleroma.soykaf.com/contexts/ec6fdd27-0ec1-4672-8408-5a8e5a9c094bhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posttag:mastodon.social,2017-05-01:objectId=4836142:objectType=StatusNew note by lambadalambda@mastodon.social<p><span class="h-card"><a href="https://pleroma.soykaf.com/users/lain" class="u-url mention">@<span>lain</span></a></span> Hey now!</p>2017-05-01T18:38:49.3653912017-05-03T18:13:48.934745https://pleroma.soykaf.com/contexts/ec6fdd27-0ec1-4672-8408-5a8e5a9c094bhttps://mastodon.social/users/lambadalambdahttp://activitystrea.ms/schema/1.0/personhttps://mastodon.social/users/lambadalambdalambadalambda@mastodon.socialCritical Valuenillambadalambda@mastodon.socialhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/3c09eb31-4ba8-4ff5-b4fa-8f6f74d58bf0lain repeated a noticeRT Haha, salmons from mastodon didn't work because it's not implementing conversation id...2017-05-03T18:13:15.1480412017-05-03T18:13:15.148049tag:social.heldscal.la,2017-05-01:objectType=thread:nonce=86cda6c734401d80http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posttag:social.heldscal.la,2017-05-01:noticeId=2000425:objectType=noteNew note by lambadalambda@social.heldscal.laHaha, salmons from mastodon didn't work because it's not implementing conversation id...2017-05-01T18:39:36.2163772017-05-03T18:13:15.171143tag:social.heldscal.la,2017-05-01:objectType=thread:nonce=86cda6c734401d80https://social.heldscal.la/user/23211http://activitystrea.ms/schema/1.0/personhttps://social.heldscal.la/user/23211lambadalambda@social.heldscal.laConstance Variablenillambadalambda@social.heldscal.lahttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/b8fc83d5-d7c0-4b5f-8976-0317b51935eaNew note by lain.<br><a href='https://pleroma.soykaf.com/media/563008a7-9a60-47ac-a263-22835729adf6/1492530528735.png'>https://pleroma.soykaf.com/media/563008a7-9a60-47ac-a263-22835729adf6/1492530528735.png</a>2017-05-03T18:12:50.7452412017-05-03T18:12:50.745249https://pleroma.soykaf.com/contexts/9419f742-aaba-4eb5-89a2-8b599e8bf43chttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/ac93ecef-cde0-48e8-ae4b-19e3b94dbe30lain repeated a noticeRT Awright, which one of you hid my PENIS ENVY?2017-05-03T18:08:49.2310012017-05-03T18:08:49.235354https://pleroma.soykaf.com/contexts/a9132cf8-6afa-4dd8-8b29-7b6fcab623b8http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/04e15c66-4936-4930-a134-32841f088bcfNew note by fortuneAwright, which one of you hid my PENIS ENVY?2017-05-01T19:40:03.1699962017-05-03T18:08:49.285347https://pleroma.soykaf.com/contexts/a9132cf8-6afa-4dd8-8b29-7b6fcab623b8https://pleroma.soykaf.com/users/fortunehttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/fortunefortunefortuneThe trusty unix fortune filefortunehttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/54b10fa9-d602-4a0f-b659-e6d3f7bc8c4clain repeated a noticeRT He is a man capable of turning any colour into grey.<br> -- John LeCarre2017-05-03T17:44:47.5789842017-05-03T17:44:47.578996https://pleroma.soykaf.com/contexts/8aebc8e5-5352-4047-8b74-4098a5830ccahttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/70ded299-184d-49cd-af17-23c0950536aaNew note by fortuneHe is a man capable of turning any colour into grey.<br> -- John LeCarre2017-05-02T08:40:03.4194652017-05-03T17:44:47.646192https://pleroma.soykaf.com/contexts/8aebc8e5-5352-4047-8b74-4098a5830ccahttps://pleroma.soykaf.com/users/fortunehttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/fortunefortunefortuneThe trusty unix fortune filefortunehttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/sharehttps://pleroma.soykaf.com/activities/eff9fe49-8fc9-48e6-a1a0-921aa25c8118lain repeated a noticeRT The real trouble with women is that they have *all* the pussy.2017-05-03T17:30:22.5960372017-05-03T17:30:22.596048https://pleroma.soykaf.com/contexts/8c88c9df-4e40-4f54-b15f-c21848d1a8e2http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/0b9b008d-49eb-48a9-a18d-172ce7d01ea2New note by fortuneThe real trouble with women is that they have *all* the pussy.2017-05-02T12:10:03.6030862017-05-03T17:30:22.683141https://pleroma.soykaf.com/contexts/8c88c9df-4e40-4f54-b15f-c21848d1a8e2https://pleroma.soykaf.com/users/fortunehttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/fortunefortunefortuneThe trusty unix fortune filefortunehttp://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/5d90bb26-ce23-4a5b-8dbd-651011780007New favorite by lainlain favorited something2017-05-03T17:28:20.9679262017-05-03T17:28:20.967935http://activitystrea.ms/schema/1.0/notetag:mastodon.social,2017-05-03:objectId=4952899:objectType=Statushttps://pleroma.soykaf.com/contexts/42701ab4-964a-441a-a372-f51bd183e441 \ No newline at end of file diff --git a/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml b/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml deleted file mode 100644 index 26fdebb49..000000000 --- a/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml +++ /dev/null @@ -1,54 +0,0 @@ - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T08:51:48+00:00 - 2017-05-05T08:51:48+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/1 - moonman - EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o - - - - - - moonman - Generic Enemy - EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o - - The Moon - - - homepage - https://shitposter.club/moonman - true - - - - - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26 - - - - - https://shitposter.club/api/statuses/user_timeline/1.atom - Generic Enemy - - - - https://shitposter.club/avatar/1-96-20170503024316.jpeg - 2017-05-05T11:43:58+00:00 - - - - - diff --git a/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml b/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml deleted file mode 100644 index 31df7c2a6..000000000 --- a/test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml +++ /dev/null @@ -1,454 +0,0 @@ - - - GNU social - https://shitposter.club/api/statuses/user_timeline/1.atom - moonman timeline - Updates from moonman on Shitposter Club! - https://shitposter.club/avatar/1-96-20170503024316.jpeg - 2017-05-05T13:24:09+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/1 - moonman - EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o - - - - - - moonman - Generic Enemy - EMAIL:shitposterclub@gmail.com XMPP: moon@talk.shitposter.club Matrix Ed25519 fingerprint: 2HuDUTEz3iFN5N3xl6PYp9xZW/EWhgbbt78SrFy4w8o - - The Moon - - - homepage - https://shitposter.club/moonman - true - - - - - - - - - - - - - - tag:shitposter.club,2017-05-05:subscription:1:person:23190:2017-05-05T11:43:58+00:00 - Generic Enemy (moonman)'s status on Friday, 05-May-2017 11:43:58 UTC - <a href="https://shitposter.club/moonman">Generic Enemy</a> started following <a href="https://noagendasocial.com/@Ma5on">Mason</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-05-05T11:43:58+00:00 - 2017-05-05T11:43:58+00:00 - - http://activitystrea.ms/schema/1.0/person - https://noagendasocial.com/users/Ma5on - Mason - - - - - - ma5on - Mason - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=abffa9c14a054d3b - - - - - - - tag:shitposter.club,2017-05-05:subscription:1:person:14357:2017-05-05T10:29:03+00:00 - Generic Enemy (moonman)'s status on Friday, 05-May-2017 10:29:03 UTC - <a href="https://shitposter.club/moonman">Generic Enemy</a> started following <a href="https://mastodon.cloud/@ohyran">Jens Reuterberg</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-05-05T10:29:03+00:00 - 2017-05-05T10:29:03+00:00 - - http://activitystrea.ms/schema/1.0/person - https://mastodon.cloud/users/ohyran - Jens Reuterberg - RPG-nerd, illustrator, Open Source enthusiast, KDE dude, designer and gay lefty. Might be a cliché - but we will soon find out! - - - - - - ohyran - Jens Reuterberg - RPG-nerd, illustrator, Open Source enthusiast, KDE dude, designer and gay lefty. Might be a cliché - but we will soon find out! - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=937151d4825a85bf - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828637:objectType=note - New note by moonman - basicall i would just rather have ppl say &quot;i like x and y&quot; than &quot;i'm a nerd&quot; the term can be retired. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:24:54+00:00 - 2017-05-05T10:24:54+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=65992b0b9b5e6931 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828579:objectType=comment - New comment by moonman - @<a href="https://gs.smuglo.li/user/35497" class="h-card mention" title="Bokuro Bokusawa">boco</a> to be honest i've turned right around and been cruel to other people, i said i'd never do it but it happens again eventually. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:20:33+00:00 - 2017-05-05T10:20:33+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=c997fc73d7f8a8f0 - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828554:objectType=comment - New comment by moonman - @<a href="https://mastodon.cloud/users/ohyran" class="h-card mention" title="Jens Reuterberg">ohyran</a> i won't ever get over bullying but i agree otherwise. i don't go to comic shops too often these days but i got dragged to one last year and the sheer diversity of people enjoying comics now compared to years ago was striking and it pleased me. and i noticed a couple years ago because of youtube i find things i truly enjoy watching, like in-depth videos about electronic parts, didn't exist 20 years ago. it's pretty great. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:18:10+00:00 - 2017-05-05T10:18:10+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - - tag:shitposter.club,2017-05-05:fave:1:comment:2828502:2017-05-05T10:12:52+00:00 - Favorite - moonman favorited something by ohyran: <p><span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> fair enough - that distinction makes it clearer...</p><p>On the other hand - those of us who did "pay the price" of being nerdy little kids in the 80's and 90's should strive to get past it anyway (mental health wise not "just get over it") and see the "nerd culture" thing as a blessing of sorts. We are in the optimal spot to do it. (not saying that that is something easy btw just that NOW is the best of time to start talking about it)</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T10:12:52+00:00 - 2017-05-05T10:12:52+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:mastodon.cloud,2017-05-05:objectId=6334570:objectType=Status - New comment by ohyran - <p><span class="h-card"><a href="https://shitposter.club/moonman" class="u-url mention">@<span>moonman</span></a></span> fair enough - that distinction makes it clearer...</p><p>On the other hand - those of us who did "pay the price" of being nerdy little kids in the 80's and 90's should strive to get past it anyway (mental health wise not "just get over it") and see the "nerd culture" thing as a blessing of sorts. We are in the optimal spot to do it. (not saying that that is something easy btw just that NOW is the best of time to start talking about it)</p> - - - - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828496:objectType=note - New note by moonman - things are better now, a lot less kids in america get beaten up and called a fag. still too many. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:11:31+00:00 - 2017-05-05T10:11:31+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=c997fc73d7f8a8f0 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828457:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/21787" class="h-card mention" title="Yukari">cutscenes</a> @<a href="https://gs.smuglo.li/user/28250" class="h-card mention" title="Bricky">thatbrickster</a> @<a href="https://gs.smuglo.li/user/35497" class="h-card mention" title="Bokuro Bokusawa">boco</a> i never understood this because nerds had pocket protectors, which was a draftsman engineer thing and therefore smart, while geeks were people in carnivals who bit heads off small animals. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:07:57+00:00 - 2017-05-05T10:07:57+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828435:objectType=comment - New comment by moonman - @<a href="https://mastodon.cloud/users/ohyran" class="h-card mention" title="Jens Reuterberg">ohyran</a> since i didn't specify i'm talking about people subjected to physical and psychological abuse and not people that are just mad that more people like comic books now. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:05:07+00:00 - 2017-05-05T10:05:07+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828326:objectType=note - New note by moonman - if you were a &quot;nerd&quot; before, like, 2001 you have permanent excuse to hate this kind of shit.   <a href="https://shitposter.club/file/b79fa5644be0d6f22679136e67b7bf45c9c4a74a55c32dd2d0cf15de4ddd5be5.gif" title="https://shitposter.club/file/b79fa5644be0d6f22679136e67b7bf45c9c4a74a55c32dd2d0cf15de4ddd5be5.gif" class="attachment" id="attachment-662105" rel="nofollow external">https://shitposter.club/attachment/662105</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:47:42+00:00 - 2017-05-05T09:47:42+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=efae3a23b6e05767 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828250:objectType=note - New note by moonman - <a href="https://shitposter.club/file/1283e2d4dd8f96b8eeb5d9a16b318e210868aa11386cf0d593891e4c75c9126e.gif" title="https://shitposter.club/file/1283e2d4dd8f96b8eeb5d9a16b318e210868aa11386cf0d593891e4c75c9126e.gif" class="attachment" id="attachment-662098" rel="nofollow external">https://shitposter.club/attachment/662098</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:39:06+00:00 - 2017-05-05T09:39:06+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=ea8ffae90546f0ab - - - - - - - - tag:shitposter.club,2017-05-05:fave:1:comment:2828161:2017-05-05T09:28:19+00:00 - Favorite - moonman favorited something by kro: @<a href="https://shitposter.club/user/1" class="h-card u-url p-nickname mention" title="Generic Enemy">moonman</a> Till Brooklyn? - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:28:19+00:00 - 2017-05-05T09:28:19+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:gs.smuglo.li,2017-05-05:noticeId=2188587:objectType=comment - New comment by kro - @<a href="https://shitposter.club/user/1" class="h-card u-url p-nickname mention" title="Generic Enemy">moonman</a> Till Brooklyn? - - - - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=d7aa6b5b057ca555 - - - - - - - tag:shitposter.club,2017-05-05:fave:1:comment:2828125:2017-05-05T09:24:56+00:00 - Favorite - moonman favorited something by hardbass2k8: this has obviously interesting implications in various places, for example:<br /> the nationalism of the nazis might not have been real, who would have thought?<br /> socialism is usually promoted to implementation by real douchebags!<br /> your local social justice people might want diversity but they don't want you, m/19, white, why?<br /> amateur soccer club, they want to be the best in the amateur league but actually they just get drunk after training and are 50% overweight.<br /> This is because humans are not capable of telepathy, so if you join a group it doesn't magically align every little bit of your being with the declared group goals.<br /> <br /> Even though you see unmanned group beliefs flying around from time to time, generally groups are created from a bunch of people. they are not a container for people, they are the people inside them.<br /> <br /> so if you see a group that appears to be cool don't think of it as cool because its goals are cool but because its members are cool. if they aren't, tough cookies. don't be the retard and end up on the camp watchtower. - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:24:56+00:00 - 2017-05-05T09:24:56+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828125:objectType=comment - New comment by hardbass2k8 - this has obviously interesting implications in various places, for example:<br /> the nationalism of the nazis might not have been real, who would have thought?<br /> socialism is usually promoted to implementation by real douchebags!<br /> your local social justice people might want diversity but they don't want you, m/19, white, why?<br /> amateur soccer club, they want to be the best in the amateur league but actually they just get drunk after training and are 50% overweight.<br /> This is because humans are not capable of telepathy, so if you join a group it doesn't magically align every little bit of your being with the declared group goals.<br /> <br /> Even though you see unmanned group beliefs flying around from time to time, generally groups are created from a bunch of people. they are not a container for people, they are the people inside them.<br /> <br /> so if you see a group that appears to be cool don't think of it as cool because its goals are cool but because its members are cool. if they aren't, tough cookies. don't be the retard and end up on the camp watchtower. - - - - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=51b227fe92f6babf - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828128:objectType=note - New note by moonman - In a valid remake of They live, signs would say REBEL, and DON'T GET MARRIED AND HAVE KIDS - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:24:23+00:00 - 2017-05-05T09:24:23+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=b74397fa766b82c9 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828104:objectType=note - New note by moonman - <a href="https://shitposter.club/file/4d34178bde99599f31a28928e1666fbd58448d8a22e94ed82222496e4a45cb07.gif" title="https://shitposter.club/file/4d34178bde99599f31a28928e1666fbd58448d8a22e94ed82222496e4a45cb07.gif" class="attachment" id="attachment-662049" rel="nofollow external">https://shitposter.club/attachment/662049</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:21:01+00:00 - 2017-05-05T09:21:01+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=d7aa6b5b057ca555 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828102:objectType=note - New note by moonman - when ppl find out i haven't always been serious  <a href="https://shitposter.club/file/5859fa95875342cc65dba0d852f726db158ce28198c326d5f13d9de7c0d2c449.gif" title="https://shitposter.club/file/5859fa95875342cc65dba0d852f726db158ce28198c326d5f13d9de7c0d2c449.gif" class="attachment" id="attachment-662053" rel="nofollow external">https://shitposter.club/attachment/662053</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:20:45+00:00 - 2017-05-05T09:20:45+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=0a025ac5a570b4ec - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828086:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> @<a href="https://gs.smuglo.li/user/35497" class="h-card mention" title="Bokuro Bokusawa">boco</a> you are being too serious lol - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:17:19+00:00 - 2017-05-05T09:17:19+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26 - - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828085:objectType=note - New note by moonman - shitposter dot club  <a href="https://shitposter.club/file/9b084c7210b16abbf4d28594b924a07ef4a2a06f89d901a4c42fb1e243291263.gif" title="https://shitposter.club/file/9b084c7210b16abbf4d28594b924a07ef4a2a06f89d901a4c42fb1e243291263.gif" class="attachment" id="attachment-662047" rel="nofollow external">https://shitposter.club/attachment/662047</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:16:50+00:00 - 2017-05-05T09:16:50+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=d1ae088a1b91e5e5 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2828061:objectType=note - New note by moonman - even when i lie i tell the truth, is that so hard to understand? - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:15:07+00:00 - 2017-05-05T09:15:07+00:00 - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=a516e4b8506b8ef5 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2828052:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9591" class="h-card mention" title="warum hei&#xDF;en deutschl&#xE4;nder deutschl&#xE4;nder">hardbass2k8</a> history, anthropology. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T09:14:22+00:00 - 2017-05-05T09:14:22+00:00 - - - - tag:shitposter.club,2017-05-05:objectType=thread:nonce=fe4d7f35b13403ba - - - - - - - diff --git a/test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json b/test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json deleted file mode 100644 index 4b7b4df44..000000000 --- a/test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json +++ /dev/null @@ -1 +0,0 @@ -{"@context":["https://www.w3.org/ns/activitystreams","https://shitposter.club/schemas/litepub-0.1.jsonld",{"@language":"und"}],"actor":"https://shitposter.club/users/moonman","attachment":[],"attributedTo":"https://shitposter.club/users/moonman","cc":["https://shitposter.club/users/moonman/followers"],"content":"@neimzr4luzerz @dolus childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English","context":"tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26","conversation":"tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26","id":"tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment","inReplyTo":"tag:shitposter.club,2017-05-05:noticeId=2827849:objectType=comment","inReplyToStatusId":2827849,"published":"2017-05-05T08:51:48Z","sensitive":false,"summary":null,"tag":[],"to":["https://www.w3.org/ns/activitystreams#Public"],"type":"Note"} \ No newline at end of file diff --git a/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml b/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml deleted file mode 100644 index 6cba5c28f..000000000 --- a/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml +++ /dev/null @@ -1,591 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-05T12:01:21+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2063249:2017-05-05T11:40:21+00:00 - Favorite - lambadalambda favorited something by tatiana: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> they will start complaining about this, but won't come up with any solutions)</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T11:40:21+00:00 - 2017-05-05T11:40:21+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:social.weho.st,2017-05-05:objectId=172033:objectType=Status - New comment by tatiana - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> they will start complaining about this, but won't come up with any solutions)</p> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2063041:2017-05-05T11:27:28+00:00 - Favorite - lambadalambda favorited something by kat: @<a href="https://social.heldscal.la/lambadalambda" class="h-card mention" title="Constance Variable">lambadalambda</a> if the admin reading mine would delete a few it would be really useful in prioritising.  - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T11:27:28+00:00 - 2017-05-05T11:27:28+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:quitter.se,2017-05-05:noticeId=11807959:objectType=comment - New comment by kat - @<a href="https://social.heldscal.la/lambadalambda" class="h-card mention" title="Constance Variable">lambadalambda</a> if the admin reading mine would delete a few it would be really useful in prioritising.  - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:noticeId=2062924:objectType=note - lambadalambda repeated a notice by nielsk - RT @nielsk @<a href="https://social.heldscal.la/user/23211" class="h-card u-url p-nickname mention" title="Constance Variable">lambadalambda</a> but there are soooo many, where should I start to read? - - http://activitystrea.ms/schema/1.0/share - 2017-05-05T11:09:37+00:00 - 2017-05-05T11:09:37+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status - - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> but there are soooo many, where should I start to read?</p> - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T11:05:18+00:00 - 2017-05-05T11:05:18+00:00 - - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/nielsk - nielsk - Sysadmin by day and ehm… sysadmin by night. Besides that old video games, Japan, economics and some other stuff - - - - - - nielsk - nielsk - Sysadmin by day and ehm… sysadmin by night. Besides that old video games, Japan, economics and some other stuff - - - - http://activitystrea.ms/schema/1.0/comment - tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status - New comment by nielsk - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> but there are soooo many, where should I start to read?</p> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - https://mastodon.social/users/nielsk.atom - nielsk - - - https://social.heldscal.la/avatar/29849-96-20170428120041.jpeg - 2017-05-05T11:06:32+00:00 - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2062875:2017-05-05T11:09:27+00:00 - Favorite - lambadalambda favorited something by nielsk: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> but there are soooo many, where should I start to read?</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T11:09:27+00:00 - 2017-05-05T11:09:27+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:mastodon.social,2017-05-05:objectId=5024471:objectType=Status - New comment by nielsk - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> but there are soooo many, where should I start to read?</p> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2062863:2017-05-05T11:09:11+00:00 - Favorite - lambadalambda favorited something by kasil: <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> surely, google is not that evil !</p> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T11:09:11+00:00 - 2017-05-05T11:09:11+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:loutre.info,2017-05-05:objectId=23331:objectType=Status - New comment by kasil - <p><span class="h-card"><a href="https://social.heldscal.la/lambadalambda" class="u-url mention">@<span>lambadalambda</span></a></span> surely, google is not that evil !</p> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-05:noticeId=2062767:objectType=comment - New comment by lambadalambda - @<a href="https://sealion.club/user/4" class="h-card u-url p-nickname mention" title="dewoo &#x274E;">dwmatiz</a> dunno, probably. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:55:17+00:00 - 2017-05-05T10:55:17+00:00 - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-05:noticeId=2062705:objectType=comment - New comment by lambadalambda - @<a href="https://gs.smuglo.li/user/28250" class="h-card u-url p-nickname mention" title="Bricky">thatbrickster</a> I do it, too. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:48:12+00:00 - 2017-05-05T10:48:12+00:00 - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-05-05:noticeId=2062620:objectType=comment - New comment by lambadalambda - @<a href="https://social.tchncs.de/users/israuor" class="h-card u-url p-nickname mention" title="Israuor &#x2642;">israuor</a> @<a href="https://mastodon.gougere.fr/users/bortzmeyer" class="h-card u-url p-nickname mention" title="S. Bortzmeyer &#x2705;">bortzmeyer</a> so, 99%. 100% for 'normal' people. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:38:52+00:00 - 2017-05-05T10:38:52+00:00 - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-05:noticeId=2062583:objectType=note - New note by lambadalambda - I wonder what'll happen when people realize the admin at their mail hoster can read all their e-mails. - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T10:35:45+00:00 - 2017-05-05T10:35:45+00:00 - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=e95b99adc050e198 - - - - - - - tag:social.heldscal.la,2017-05-05:subscription:23211:person:35708:2017-05-05T09:34:46+00:00 - Constance Variable (lambadalambda@social.heldscal.la)'s status on Friday, 05-May-2017 09:34:46 UTC - <a href="https://social.heldscal.la/lambadalambda">Constance Variable</a> started following <a href="https://mastodon.social/@milouse">milouse</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-05-05T09:34:46+00:00 - 2017-05-05T09:34:46+00:00 - - http://activitystrea.ms/schema/1.0/person - https://mastodon.social/users/milouse - milouse - #Scout leader #sgdf, interested in #openweb, #semanticweb, #privacy, #foss and #socialeconomy. 0xA714ECAC8C9CEE3D - - - - - - milouse - milouse - #Scout leader #sgdf, interested in #openweb, #semanticweb, #privacy, #foss and #socialeconomy. 0xA714ECAC8C9CEE3D - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=26ca19a355bb6135 - - - - - - - tag:social.heldscal.la,2017-05-05:noticeId=2061871:objectType=note - lambadalambda repeated a notice by safebot - RT @<a href="https://gs.smuglo.li/user/25857" class="h-card u-url p-nickname mention" title="safebot">safebot</a> #<span class="tag"><a href="https://social.heldscal.la/tag/cheers" rel="tag">cheers</a></span> <a href="https://gs.smuglo.li/attachment/456444" title="https://gs.smuglo.li/attachment/456444" rel="nofollow external noreferrer" class="attachment" id="attachment-432334">https://gs.smuglo.li/attachment/456444</a> - - http://activitystrea.ms/schema/1.0/share - 2017-05-05T09:16:17+00:00 - 2017-05-05T09:16:17+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.smuglo.li,2017-05-05:noticeId=2188073:objectType=note - - #<span class="tag"><a href="https://gs.smuglo.li/tag/cheers" rel="tag">cheers</a></span> <a href="https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg" title="https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/456444</a> - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T08:36:53+00:00 - 2017-05-05T08:36:53+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.smuglo.li/user/25857 - safebot - - - - - - safebot - safebot - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.smuglo.li,2017-05-05:noticeId=2188073:objectType=note - New note by safebot - #<span class="tag"><a href="https://gs.smuglo.li/tag/cheers" rel="tag">cheers</a></span> <a href="https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg" title="https://gs.smuglo.li/file/5099e73c83da778cd032a721e96880f99a868b712be2975d08238547a5ba06c7.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/456444</a> - - - - - https://gs.smuglo.li/conversation/1009429 - - - - https://gs.smuglo.li/api/statuses/user_timeline/25857.atom - safebot - - - https://social.heldscal.la/avatar/25719-original-20161215233234.jpeg - 2017-05-05T12:00:57+00:00 - - - - https://gs.smuglo.li/conversation/1009429 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061643:2017-05-05T09:12:50+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:12:50+00:00 - 2017-05-05T09:12:50+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> @<a href="https://gs.smuglo.li/user/2326" class="h-card mention" title="Dolus_McHonest">dolus</a> childhood poring over Strong's concordance and a koine Greek dictionary, fast forward to 2017 and some fuckstick who translates japanese jackoff material tells me you just need to make it sound right in English - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061696:2017-05-05T09:06:10+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> <br /> <span class="greentext">&gt; (((common era)))</span> - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T09:06:10+00:00 - 2017-05-05T09:06:10+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827918:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> <br /> <span class="greentext">&gt; (((common era)))</span> - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:note:2061673:2017-05-05T08:58:28+00:00 - Favorite - lambadalambda favorited something by moonman: discussion is one thing but any argument I've heard over and over again for the last three decades is going to go unanswered. - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:58:28+00:00 - 2017-05-05T08:58:28+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-05-05:noticeId=2827895:objectType=note - New note by moonman - discussion is one thing but any argument I've heard over and over again for the last three decades is going to go unanswered. - - - - - - - https://shitposter.club/conversation/1390494 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061280:2017-05-05T08:47:38+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> sex is for procreation and as an expression of intimacy between commited couples, it is a sacramental act - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:47:38+00:00 - 2017-05-05T08:47:38+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827561:objectType=comment - New comment by moonman - @<a href="https://shitposter.club/user/9655" class="h-card mention" title="Solidarity for Pigs">neimzr4luzerz</a> sex is for procreation and as an expression of intimacy between commited couples, it is a sacramental act - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=55ead90125cd4bd4 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:note:2061535:2017-05-05T08:40:55+00:00 - Favorite - lambadalambda favorited something by fortune: What did Mickey Mouse get for Christmas?<br /> <br /> A Dan Quayle watch.<br /> <br /> -- heard from a Mike Dukakis field worker - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:40:55+00:00 - 2017-05-05T08:40:55+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-05:noticeId=2061535:objectType=note - New note by fortune - What did Mickey Mouse get for Christmas?<br /> <br /> A Dan Quayle watch.<br /> <br /> -- heard from a Mike Dukakis field worker - - - - - - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=5185e5c145ee4762 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061421:2017-05-05T08:36:27+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://maly.io/users/sonya" class="h-card mention" title="Sonya Mann ✅">sonya</a> banned from 4chan. you better watch ou. i'm trouble, y'hear? - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:36:27+00:00 - 2017-05-05T08:36:27+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827689:objectType=comment - New comment by moonman - @<a href="https://maly.io/users/sonya" class="h-card mention" title="Sonya Mann ✅">sonya</a> banned from 4chan. you better watch ou. i'm trouble, y'hear? - - - - - - - https://shitposter.club/conversation/1389345 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061351:2017-05-05T08:28:03+00:00 - Favorite - lambadalambda favorited something by moonman: @<a href="https://social.heldscal.la/user/29138" class="h-card mention" title="Claes Wallin (韋嘉誠)">clacke</a> is that the sequel to Time Crisis - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:28:03+00:00 - 2017-05-05T08:28:03+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827630:objectType=comment - New comment by moonman - @<a href="https://social.heldscal.la/user/29138" class="h-card mention" title="Claes Wallin (韋嘉誠)">clacke</a> is that the sequel to Time Crisis - - - - - - - https://shitposter.club/conversation/1385528 - - - - - - - tag:social.heldscal.la,2017-05-05:fave:23211:comment:2061339:2017-05-05T08:21:05+00:00 - Favorite - lambadalambda favorited something by hardbass2k8: @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> pretty sure it's money laundering - - http://activitystrea.ms/schema/1.0/favorite - 2017-05-05T08:21:05+00:00 - 2017-05-05T08:21:05+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2017-05-05:noticeId=2827617:objectType=comment - New comment by hardbass2k8 - @<a href="https://social.heldscal.la/user/23211" class="h-card mention" title="Constance Variable">lambadalambda</a> pretty sure it's money laundering - - - - - - - https://shitposter.club/conversation/1387523 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-05-05:noticeId=2061303:objectType=note - New note by lambadalambda - It's got tattoos, it's got a pierced hood<br /> It's got generation X<br /> It's got lesbians, and vitriol<br /> And sadomasochistic latex sex<br /> It's got Mighty Morphin' power brokers<br /> And Tanya Harding nude<br /> Macrobiotic lacto-vegan non-confrontational free range food<br /> It's got the handshake, peace talk, non-aggression pact<br /> A multicultural integration of segregated historical facts<br /> <br /> #<span class="tag"><a href="https://social.heldscal.la/tag/nsfw" rel="tag">nsfw</a></span> <a href="https://social.heldscal.la/file/61c13b99c92f40ec4865e7a3830da340b187e3de70d94b8da38fd2138bbede3a.jpg" title="https://social.heldscal.la/file/61c13b99c92f40ec4865e7a3830da340b187e3de70d94b8da38fd2138bbede3a.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432199">https://social.heldscal.la/attachment/432199</a> <a href="https://social.heldscal.la/file/a88bba1a324da68ee2cfdbcd1c4cde60bd9553298244d6f81731270b71aa80df.jpg" title="https://social.heldscal.la/file/a88bba1a324da68ee2cfdbcd1c4cde60bd9553298244d6f81731270b71aa80df.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432200">https://social.heldscal.la/attachment/432200</a> <a href="https://social.heldscal.la/file/887329a303250e73dc2eea06b1f0512fcac4b9d1b534068f03c45f00d5b21c39.jpg" title="https://social.heldscal.la/file/887329a303250e73dc2eea06b1f0512fcac4b9d1b534068f03c45f00d5b21c39.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432201">https://social.heldscal.la/attachment/432201</a> <a href="https://social.heldscal.la/file/6d7a1ec15c1368c4c68810434d24da528606fcbccdd1da97b25affafeeb6ffda.jpg" title="https://social.heldscal.la/file/6d7a1ec15c1368c4c68810434d24da528606fcbccdd1da97b25affafeeb6ffda.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432202">https://social.heldscal.la/attachment/432202</a> <a href="https://social.heldscal.la/file/2f55f2bb028eb9be744cc82b35a6b86b496d8c3924c700aff55a872ff11df54c.jpg" title="https://social.heldscal.la/file/2f55f2bb028eb9be744cc82b35a6b86b496d8c3924c700aff55a872ff11df54c.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-432203">https://social.heldscal.la/attachment/432203</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-05-05T08:17:08+00:00 - 2017-05-05T08:17:08+00:00 - - tag:social.heldscal.la,2017-05-05:objectType=thread:nonce=bb6f4343036970e8 - - - - - - - - - - - - diff --git a/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml b/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml deleted file mode 100644 index f70fbc695..000000000 --- a/test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml +++ /dev/null @@ -1,719 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/29191.atom - shp timeline - Updates from shp on social.heldscal.la! - https://social.heldscal.la/avatar/29191-96-20170421154949.jpeg - 2017-05-05T11:57:06+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/29191 - shp - cofe - - - - - - shp - shp - cofe - - cofe - - - - - - - - - - - - - - tag:social.heldscal.la,2017-04-29:noticeId=1967657:objectType=note - shp repeated a notice by lain - RT @<a href="https://social.heldscal.la/user/37181" class="h-card u-url p-nickname mention" title="Lain Iwakura">lain</a> @<a href="https://social.heldscal.la/user/29191" class="h-card u-url p-nickname mention" title="shp">shp</a> @<a href="https://social.heldscal.la/user/23211" class="h-card u-url p-nickname mention">lambadalambda</a> cofe. - - http://activitystrea.ms/schema/1.0/share - 2017-04-29T18:19:34+00:00 - 2017-04-29T18:19:34+00:00 - - http://activitystrea.ms/schema/1.0/activity - https://pleroma.soykaf.com/activities/43d12c05-db3f-4f3d-bee1-d676f264490c - - <a href="https://pleroma.soykaf.com/users/shp">@shp</a> <a href="https://social.heldscal.la/user/23211">@lambadalambda@social.heldscal.la</a> cofe. - - http://activitystrea.ms/schema/1.0/post - 2017-04-29T18:14:36+00:00 - 2017-04-29T18:14:36+00:00 - - http://activitystrea.ms/schema/1.0/person - https://pleroma.soykaf.com/users/lain - lain - Test account - - - - - - lain - Lain Iwakura - Test account - - - - http://activitystrea.ms/schema/1.0/note - https://pleroma.soykaf.com/activities/43d12c05-db3f-4f3d-bee1-d676f264490c - New note by lain - <a href="https://pleroma.soykaf.com/users/shp">@shp</a> <a href="https://social.heldscal.la/user/23211">@lambadalambda@social.heldscal.la</a> cofe. - - - - - tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=e0b75431888efdab - - - https://pleroma.soykaf.com/users/lain/feed.atom - Lain Iwakura - - - https://social.heldscal.la/avatar/43188-96-20170429172422.jpeg - 2017-05-05T08:38:03+00:00 - - - - tag:social.heldscal.la,2017-04-29:objectType=thread:nonce=e0b75431888efdab - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:29558:2017-04-27T17:26:37+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:26:37 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://gs.smuglo.li/kfist">KFist</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:26:37+00:00 - 2017-04-27T17:26:37+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.smuglo.li/user/28051 - KFist - I stream thanks to @nepfag. I also drink, shitpost, and fly planes. I visited Japan and it changed my life. Do you love your station? - - - - - - kfist - KFist - I stream thanks to @nepfag. I also drink, shitpost, and fly planes. I visited Japan and it changed my life. Do you love your station? - - homepage - http://smuglo.li:8000/stream.m3u - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=f766240d13ed9c2e - - - - - - - tag:social.heldscal.la,2017-04-27:noticeId=1933030:objectType=note - shp repeated a notice by shpbot - RT @<a href="https://gs.archae.me/user/4687" class="h-card u-url p-nickname mention" title="shpbot">shpbot</a> &gt;QuakeC - - http://activitystrea.ms/schema/1.0/share - 2017-04-27T17:21:10+00:00 - 2017-04-27T17:21:10+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.archae.me,2017-04-27:noticeId=760881:objectType=note - - <span class='greentext'>&gt;QuakeC</span> - - http://activitystrea.ms/schema/1.0/post - 2017-04-27T17:15:13+00:00 - 2017-04-27T17:15:13+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.archae.me/user/4687 - shpbot - - - - - - shpbot - shpbot - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.archae.me,2017-04-27:noticeId=760881:objectType=note - New note by shpbot - <span class='greentext'>&gt;QuakeC</span> - - - - - https://gs.archae.me/conversation/318362 - - - https://gs.archae.me/api/statuses/user_timeline/4687.atom - shpbot - - - https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg - 2017-05-05T11:45:08+00:00 - - - - https://gs.archae.me/conversation/318362 - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:23226:2017-04-27T17:20:48+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:48 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="http://quitter.se/taknamay">Internet Turtle Ⓐ 🏴 ✅</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:20:48+00:00 - 2017-04-27T17:20:48+00:00 - - http://activitystrea.ms/schema/1.0/person - http://quitter.se/user/115823 - Internet Turtle Ⓐ 🏴 ✅ - Scheme programmer, Novice esperantist, Spiritual naturalist - Will listen to your problems for free - XMPP: DarkDungeons94 at chatme.im - - - - - - taknamay - Internet Turtle Ⓐ 🏴 ✅ - Scheme programmer, Novice esperantist, Spiritual naturalist - Will listen to your problems for free - XMPP: DarkDungeons94 at chatme.im - - New Jersey, United States - - - homepage - https://quitter.se/taknamay - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=a66b1fb22020c152 - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:29302:2017-04-27T17:20:33+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:33 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://icosahedron.website/@Trev">Chillidan Stormrave</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:20:33+00:00 - 2017-04-27T17:20:33+00:00 - - http://activitystrea.ms/schema/1.0/person - https://icosahedron.website/users/Trev - Trev Prime - web tech, music, ethics. radical individualist. kinda queer. love thy neighbor. always open for conversation. - - - - - - trev - Trev Prime - web tech, music, ethics. radical individualist. kinda queer. love thy neighbor. always open for conversation. - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=781c05bd64ad9520 - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:29367:2017-04-27T17:20:27+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:27 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://gs.kawa-kun.com/aya">射命丸 文</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:20:27+00:00 - 2017-04-27T17:20:27+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.kawa-kun.com/user/4885 - 射命丸 文 - Traditional Reporter of Fantasy - - - - - - aya - 射命丸 文 - Traditional Reporter of Fantasy - - Gensōkyō - - - homepage - https://danbooru.donmai.us - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=5921da7a934e47ca - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:27773:2017-04-27T17:20:18+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:20:18 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://gs.smuglo.li/japananon">JapanAnon</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:20:18+00:00 - 2017-04-27T17:20:18+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.smuglo.li/user/27299 - JapanAnon - 匿名でしていてね! - - - - - - japananon - JapanAnon - 匿名でしていてね! - - ワイヤード - - - homepage - http://www.anonymous-japan.org - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=ae3d819865886cba - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:36560:2017-04-27T17:19:30+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:19:30 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://shitposter.club/wareya">wareya</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:19:30+00:00 - 2017-04-27T17:19:30+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/15439 - wareya - Who are you to defy such a perfect being that is the machine? 日本語難しいけど頑張るぜ github.com/wareya wareya.moe Short: reya or war, never "ware" - - - - - - wareya - wareya - Who are you to defy such a perfect being that is the machine? 日本語難しいけど頑張るぜ github.com/wareya wareya.moe Short: reya or war, never "ware" - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=bd88a3cd20b5a418 - - - - - - - tag:social.heldscal.la,2017-04-27:subscription:29191:person:41176:2017-04-27T17:19:21+00:00 - shp (shp@social.heldscal.la)'s status on Thursday, 27-Apr-2017 17:19:21 UTC - <a href="https://social.heldscal.la/shp">shp</a> started following <a href="https://hakui.club/takeshitakenji">竹下憲二 (白)</a>. - - http://activitystrea.ms/schema/1.0/follow - 2017-04-27T17:19:21+00:00 - 2017-04-27T17:19:21+00:00 - - http://activitystrea.ms/schema/1.0/person - https://hakui.club/user/6 - 竹下憲二 (白) - Oh boy. - - - - - - takeshitakenji - 竹下憲二 (白) - Oh boy. - - Seattle, WA - - - homepage - http://gs.kawa-kun.com - true - - - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=b139a673deba6963 - - - - - - - tag:social.heldscal.la,2017-04-27:fave:29191:note:1932205:2017-04-27T17:17:46+00:00 - Favorite - shp favorited something by dolus: Looks like Merry is pussing out and caving to pressure. Sad. <a href="https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png" title="https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432294</a> <a href="https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png" title="https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432295</a> <a href="https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png" title="https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432296</a> <a href="https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png" title="https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432297</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-27T17:17:46+00:00 - 2017-04-27T17:17:46+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.smuglo.li,2017-04-27:noticeId=2065465:objectType=note - New note by dolus - Looks like Merry is pussing out and caving to pressure. Sad. <a href="https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png" title="https://gs.smuglo.li/file/23e37de3c321248d3f322d8ec042372914568ab4c9431a94e568a61b8146587f.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432294</a> <a href="https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png" title="https://gs.smuglo.li/file/e5a9549a19986d59d51750090910f47c186787adf02b2b6ac58df37556887297.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432295</a> <a href="https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png" title="https://gs.smuglo.li/file/2fdfabbc8ab0b8dc135903a8c48c29b440d1f97446b98ced4ad14a54d3b5d41f.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432296</a> <a href="https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png" title="https://gs.smuglo.li/file/af605d7c6fe3a8c26c6d334c2a8e0005f7e86a266f14a5b3755e7d3ac4e226de.png" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432297</a> - - - - - - - https://gs.smuglo.li/conversation/927473 - - - - - - - tag:social.heldscal.la,2017-04-27:fave:29191:note:1932492:2017-04-27T17:13:55+00:00 - Favorite - shp favorited something by zemichi: <a href="https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg" title="https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432344</a><br /> that's a lot of loli - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-27T17:13:55+00:00 - 2017-04-27T17:13:55+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.smuglo.li,2017-04-27:noticeId=2065713:objectType=note - New note by zemichi - <a href="https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg" title="https://gs.smuglo.li/file/1d45ea4ffc95f15037f361b56ad6b89f8451b70ad1ff7a03b7bb0345b8e2227c.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432344</a><br /> that's a lot of loli - - - - - - - https://gs.smuglo.li/conversation/927673 - - - - - - - tag:social.heldscal.la,2017-04-27:fave:29191:note:1932559:2017-04-27T17:12:46+00:00 - Favorite - shp favorited something by gsimg: <a href="https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg" title="https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg" rel="nofollow noreferrer" class="attachment">https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg</a> #<span class="tag"><a href="https://gs.kawa-kun.com/tag/nsfw" rel="tag">nsfw</a></span> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-27T17:12:46+00:00 - 2017-04-27T17:12:46+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.kawa-kun.com,2017-04-27:noticeId=1608309:objectType=note - New note by gsimg - <a href="https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg" title="https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg" rel="nofollow noreferrer" class="attachment">https://gs.kawa-kun.com/file/3435c5cafda46f31cad5abb5837b3521b7b458198507073a496f4d10bad3633b.jpg</a> #<span class="tag"><a href="https://gs.kawa-kun.com/tag/nsfw" rel="tag">nsfw</a></span> - - - - - - - https://gs.kawa-kun.com/conversation/690817 - - - - - - - tag:social.heldscal.la,2017-04-27:fave:29191:note:1932601:2017-04-27T17:12:28+00:00 - Favorite - shp favorited something by zemichi: <a href="https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg" title="https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432372</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-27T17:12:28+00:00 - 2017-04-27T17:12:28+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:gs.smuglo.li,2017-04-27:noticeId=2065821:objectType=note - New note by zemichi - <a href="https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg" title="https://gs.smuglo.li/file/5d9114fafea7b9866c9d852bcfeaf66aade65ae26149758346bc5ade7e3fa8f0.jpg" rel="nofollow noreferrer" class="attachment">https://gs.smuglo.li/attachment/432372</a> - - - - - - - https://gs.smuglo.li/conversation/927760 - - - - - - - tag:social.heldscal.la,2017-04-27:noticeId=1932867:objectType=note - shp repeated a notice by shpbot - RT @<a href="https://gs.archae.me/user/4687" class="h-card u-url p-nickname mention" title="shpbot">shpbot</a> <a href="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" title="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-237676">https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg</a> #<span class="tag"><a href="https://social.heldscal.la/tag/2hu" rel="tag">2hu</a></span> #<span class="tag"><a href="https://social.heldscal.la/tag/ordinarymagician" rel="tag">ordinarymagician</a></span> :thinking: <a href="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" title="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-312306">https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg</a> - - http://activitystrea.ms/schema/1.0/share - 2017-04-27T17:11:35+00:00 - 2017-04-27T17:11:35+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.archae.me,2017-04-27:noticeId=760830:objectType=note - - <a href="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" title="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg</a> #<span class="tag"><a href="https://gs.archae.me/tag/2hu" rel="tag">2hu</a></span> #<span class="tag"><a href="https://gs.archae.me/tag/ordinarymagician" rel="tag">ordinarymagician</a></span> :thinking: <a href="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" title="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg</a> - - http://activitystrea.ms/schema/1.0/post - 2017-04-27T17:00:08+00:00 - 2017-04-27T17:00:08+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.archae.me/user/4687 - shpbot - - - - - - shpbot - shpbot - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.archae.me,2017-04-27:noticeId=760830:objectType=note - New note by shpbot - <a href="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" title="https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/cbf7fbbee1127a9870e871305ca7de70f1eb1bbb79ffe5b3b0f33e37514d14d8.jpg</a> #<span class="tag"><a href="https://gs.archae.me/tag/2hu" rel="tag">2hu</a></span> #<span class="tag"><a href="https://gs.archae.me/tag/ordinarymagician" rel="tag">ordinarymagician</a></span> :thinking: <a href="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" title="https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/abf3f82d9ce28d2293d858af26c75bb5d4fdd091c0d90ca7bc72ea7efba220e4.jpg</a> - - - - - https://gs.archae.me/conversation/318317 - - - - - https://gs.archae.me/api/statuses/user_timeline/4687.atom - shpbot - - - https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg - 2017-05-05T11:45:08+00:00 - - - - https://gs.archae.me/conversation/318317 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-27:noticeId=1932815:objectType=note - New note by shp - federation issues with SPC atm it seems - - - http://activitystrea.ms/schema/1.0/post - 2017-04-27T17:08:55+00:00 - 2017-04-27T17:08:55+00:00 - - tag:social.heldscal.la,2017-04-27:objectType=thread:nonce=645a13c841f51769 - - - - - - - tag:social.heldscal.la,2017-04-26:fave:29191:note:1907285:2017-04-26T06:59:07+00:00 - Favorite - shp favorited something by lambadalambda: Is this the most offensive video on the net? <a href="https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm" title="https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm" rel="nofollow noreferrer" class="attachment">https://social.heldscal.la/attachment/402251</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-26T06:59:07+00:00 - 2017-04-26T06:59:07+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-26:noticeId=1907285:objectType=note - New note by lambadalambda - Is this the most offensive video on the net? <a href="https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm" title="https://social.heldscal.la/file/4c34bfb81a8155c265031bc48f7e69c29eb0d2941c57daf63f80e17b0e2e5f47.webm" rel="nofollow external noreferrer" class="attachment" id="attachment-402251">https://social.heldscal.la/attachment/402251</a> - - - - - - - tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=07b02e1328f456af - - - - - - - tag:social.heldscal.la,2017-04-26:noticeId=1907951:objectType=note - shp repeated a notice by shpbot - RT @<a href="https://gs.archae.me/user/4687" class="h-card u-url p-nickname mention" title="shpbot">shpbot</a> <a href="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" title="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" rel="nofollow external noreferrer" class="attachment" id="attachment-346198">https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg</a> - - http://activitystrea.ms/schema/1.0/share - 2017-04-26T06:58:19+00:00 - 2017-04-26T06:58:19+00:00 - - http://activitystrea.ms/schema/1.0/activity - tag:gs.archae.me,2017-04-26:noticeId=752596:objectType=note - - <a href="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" title="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg</a> - - http://activitystrea.ms/schema/1.0/post - 2017-04-26T06:15:07+00:00 - 2017-04-26T06:15:07+00:00 - - http://activitystrea.ms/schema/1.0/person - https://gs.archae.me/user/4687 - shpbot - - - - - - shpbot - shpbot - - - - http://activitystrea.ms/schema/1.0/note - tag:gs.archae.me,2017-04-26:noticeId=752596:objectType=note - New note by shpbot - <a href="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" title="https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg" rel="nofollow noreferrer" class="attachment">https://shitposter.club/file/718db06b564841331c72f9df767f8c9459e20c4dddbf0d4e61cd08ecbee7739d.jpg</a> - - - - - https://gs.archae.me/conversation/314010 - - - https://gs.archae.me/api/statuses/user_timeline/4687.atom - shpbot - - - https://social.heldscal.la/avatar/31581-original-20170405170019.jpeg - 2017-05-05T11:45:08+00:00 - - - - https://gs.archae.me/conversation/314010 - - - - - - - tag:social.heldscal.la,2017-04-26:fave:29191:note:1907341:2017-04-26T06:58:16+00:00 - Favorite - shp favorited something by moonman: <a href="https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg" title="https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg" class="attachment" rel="nofollow">https://shitposter.club/attachment/630989</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-26T06:58:16+00:00 - 2017-04-26T06:58:16+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2017-04-26:noticeId=2681941:objectType=note - New note by moonman - <a href="https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg" title="https://shitposter.club/file/1377b0894e983599c11e739e406243cabed9f8af7961a2550ecaf97e32de8e60.jpg" class="attachment" rel="nofollow">https://shitposter.club/attachment/630989</a> - - - - - - - https://shitposter.club/conversation/1300990 - - - - - - - tag:social.heldscal.la,2017-04-26:fave:29191:comment:1907412:2017-04-26T06:57:56+00:00 - Favorite - shp favorited something by lambadalambda: @<a href="https://gs.smuglo.li/user/2" class="h-card u-url p-nickname mention" title="nepfag">nepfag</a> <a href="https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;gi=a6a47c5466a0" title="https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;gi=a6a47c5466a0" rel="nofollow noreferrer" class="attachment">https://social.heldscal.la/url/402273</a> - - http://activitystrea.ms/schema/1.0/favorite - 2017-04-26T06:57:56+00:00 - 2017-04-26T06:57:56+00:00 - - http://activitystrea.ms/schema/1.0/comment - tag:social.heldscal.la,2017-04-26:noticeId=1907412:objectType=comment - New comment by lambadalambda - @<a href="https://gs.smuglo.li/user/2" class="h-card u-url p-nickname mention" title="nepfag">nepfag</a> <a href="https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;gi=a6a47c5466a0" title="https://cherubini.casa/why-i-shut-down-wizards-town-and-left-mastodon-6d4e631346b3?source=linkShare-89c2f851e979-1493184822&amp;gi=a6a47c5466a0" rel="nofollow external noreferrer" class="attachment" id="attachment-402273">https://social.heldscal.la/url/402273</a> - - - - - - - tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=85c21eda7aaa7259 - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:social.heldscal.la,2017-04-26:noticeId=1907942:objectType=note - New note by shp - #<span class="tag"><a href="https://social.heldscal.la/tag/cofe" rel="tag">cofe</a></span> time my friends <a href="https://social.heldscal.la/file/ec254b45b3a86ff74bc08bc7e065cb681d77cf7d4cedc9cdcf59e16adf311da3.png" title="https://social.heldscal.la/file/ec254b45b3a86ff74bc08bc7e065cb681d77cf7d4cedc9cdcf59e16adf311da3.png" rel="nofollow external noreferrer" class="attachment" id="attachment-402381">https://social.heldscal.la/attachment/402381</a> - - - http://activitystrea.ms/schema/1.0/post - 2017-04-26T06:57:18+00:00 - 2017-04-26T06:57:18+00:00 - - tag:social.heldscal.la,2017-04-26:objectType=thread:nonce=9c9d9373bccfaf70 - - - - - - - - diff --git a/test/fixtures/tesla_mock/sakamoto.atom b/test/fixtures/tesla_mock/sakamoto.atom deleted file mode 100644 index 648946795..000000000 --- a/test/fixtures/tesla_mock/sakamoto.atom +++ /dev/null @@ -1 +0,0 @@ -http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/0ccc1a2c-66b0-4305-b23a-7f7f2b040056New note by eal<a href='https://shitposter.club/user/5381'>@shpuld</a> <a href='https://pleroma.hjkos.com/users/hj'>@hj</a> IM NOT GAY DAD2017-08-04T12:51:26.130592Z2017-08-04T12:51:26.130592Zhttps://pleroma.hjkos.com/contexts/53093c74-2100-4bf4-aac6-66d1973d03efhttps://social.sakamoto.gq/users/ealhttp://activitystrea.ms/schema/1.0/personhttps://social.sakamoto.gq/users/ealeal坂本(・ヮ・)eal \ No newline at end of file diff --git a/test/fixtures/tesla_mock/sakamoto_eal_feed.atom b/test/fixtures/tesla_mock/sakamoto_eal_feed.atom deleted file mode 100644 index 9340d9038..000000000 --- a/test/fixtures/tesla_mock/sakamoto_eal_feed.atom +++ /dev/null @@ -1 +0,0 @@ -https://social.sakamoto.gq/users/eal/feed.atomeal's timeline2017-08-04T14:19:12.683854https://social.sakamoto.gq/users/ealhttp://activitystrea.ms/schema/1.0/personhttps://social.sakamoto.gq/users/ealeal坂本(・ヮ・)ealhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/b79a1721-23f3-45a5-9610-adb08c2afae5New note by ealHonestly, I like all smileys that are not emoji.2017-08-04T14:19:12.675999Z2017-08-04T14:19:12.675999Zhttps://social.sakamoto.gq/contexts/e05ede92-8db9-4963-8b8e-e71a5797d68fhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/45475bf3-2dfc-4d9e-8eae-1f4f86f48982New note by ealThen again, I like all smileys/emoticons that are not emoji.<br>2017-08-04T14:19:10.113373Z2017-08-04T14:19:10.113373Zhttps://social.sakamoto.gq/contexts/852d1605-4dcb-4ba7-9ba4-dfc37ed62fbchttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/8f8fd6d6-cc63-40c6-a5d0-1c0e4f919368New note by ealI love the russian-style smiley.2017-08-04T14:18:30.478552Z2017-08-04T14:18:30.478552Zhttps://social.sakamoto.gq/contexts/852d1605-4dcb-4ba7-9ba4-dfc37ed62fbchttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/6e69df95-f2ad-4b8e-af4a-e93ff93d64e1eal started following https://cybre.space/users/0x3Feal started following https://cybre.space/users/0x3F2017-08-04T14:17:24.942193Z2017-08-04T14:17:24.942193Zhttp://activitystrea.ms/schema/1.0/personhttps://cybre.space/users/0x3Fhttps://cybre.space/users/0x3Fhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/54c5e260-0185-4267-a2a6-f5dd9c76c2c9eal started following https://niu.moe/users/ryeeal started following https://niu.moe/users/rye2017-08-04T14:16:35.604739Z2017-08-04T14:16:35.604739Zhttp://activitystrea.ms/schema/1.0/personhttps://niu.moe/users/ryehttps://niu.moe/users/ryehttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/092ca863-19a8-416c-85d7-d3f23b3c0203eal started following https://mastodon.xyz/users/rafudesueal started following https://mastodon.xyz/users/rafudesu2017-08-04T14:16:10.993429Z2017-08-04T14:16:10.993429Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.xyz/users/rafudesuhttps://mastodon.xyz/users/rafudesuhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/be5cf702-b127-423b-a6be-5f78f01a4289eal started following https://gs.kawa-kun.com/user/2eal started following https://gs.kawa-kun.com/user/22017-08-04T14:15:41.804611Z2017-08-04T14:15:41.804611Zhttp://activitystrea.ms/schema/1.0/personhttps://gs.kawa-kun.com/user/2https://gs.kawa-kun.com/user/2http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/4951e2a1-9bae-4e87-8e98-e6d2f8a52338eal started following https://gs.kawa-kun.com/user/4885eal started following https://gs.kawa-kun.com/user/48852017-08-04T14:15:00.135352Z2017-08-04T14:15:00.135352Zhttp://activitystrea.ms/schema/1.0/personhttps://gs.kawa-kun.com/user/4885https://gs.kawa-kun.com/user/4885http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/cadf8745-b9ee-4f6c-af32-bfddb70e4607eal started following https://mastodon.social/users/Murassaeal started following https://mastodon.social/users/Murassa2017-08-04T14:14:36.339560Z2017-08-04T14:14:36.339560Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.social/users/Murassahttps://mastodon.social/users/Murassahttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/a52c9aab-f0e6-4ccb-8dd3-9f417e72a41ceal started following https://mastodon.social/users/rysiekeal started following https://mastodon.social/users/rysiek2017-08-04T14:13:04.061572Z2017-08-04T14:13:04.061572Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.social/users/rysiekhttps://mastodon.social/users/rysiekhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/738bc887-4cca-4b36-8c86-2b54d4c54732eal started following https://mastodon.hasameli.com/users/munineal started following https://mastodon.hasameli.com/users/munin2017-08-04T14:12:10.514155Z2017-08-04T14:12:10.514155Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.hasameli.com/users/muninhttps://mastodon.hasameli.com/users/muninhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/dc66ad5a-b776-4180-a8aa-e4c1bf7cb703eal started following https://cybre.space/users/nightpooleal started following https://cybre.space/users/nightpool2017-08-04T14:11:16.046148Z2017-08-04T14:11:16.046148Zhttp://activitystrea.ms/schema/1.0/personhttps://cybre.space/users/nightpoolhttps://cybre.space/users/nightpoolhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/9c5c00d7-3ce4-4c11-b965-dc5c2bda86c5New note by eal<a href='https://mastodon.zombocloud.com/users/staticsafe'>@staticsafe</a> privet )))2017-08-04T14:10:08.812247Z2017-08-04T14:10:08.812247Zhttps://social.sakamoto.gq/contexts/12a33823-0327-4c1c-a591-850ea79331b5http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/49798053-1f40-4a71-ad33-106e90630863eal started following https://social.homunyan.com/users/animeirleal started following https://social.homunyan.com/users/animeirl2017-08-04T14:09:44.904792Z2017-08-04T14:09:44.904792Zhttp://activitystrea.ms/schema/1.0/personhttps://social.homunyan.com/users/animeirlhttps://social.homunyan.com/users/animeirlhttp://activitystrea.ms/schema/1.0/favoritehttps://social.sakamoto.gq/activities/2d83a1c5-70a6-45d3-9b84-59d6a70fbb17New favorite by ealeal favorited something2017-08-04T14:07:27.210044Z2017-08-04T14:07:27.210044Zhttp://activitystrea.ms/schema/1.0/notehttps://pleroma.soykaf.com/objects/b831e52f-4ed4-438e-95b4-888897f64f09https://pleroma.hjkos.com/contexts/3ed48205-1e72-4e19-a618-89a0d2ca811ehttp://activitystrea.ms/schema/1.0/favoritehttps://social.sakamoto.gq/activities/06d28bed-544a-496b-8414-1c6d439273b5New favorite by ealeal favorited something2017-08-04T14:05:37.280200Z2017-08-04T14:05:37.280200Zhttp://activitystrea.ms/schema/1.0/notetag:toot-lab.reclaim.technology,2017-08-04:objectId=1166030:objectType=Statustag:p2px.me,2017-08-04:objectType=thread:nonce=f8bfc4d13db6ce91http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/72bf19d4-9ad4-4b2f-9cd0-f0d70f4e931beal started following https://mstdn.jp/users/nullkaleal started following https://mstdn.jp/users/nullkal2017-08-04T14:05:04.148904Z2017-08-04T14:05:04.148904Zhttp://activitystrea.ms/schema/1.0/personhttps://mstdn.jp/users/nullkalhttps://mstdn.jp/users/nullkalhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://social.sakamoto.gq/objects/b0e89515-7621-4e09-b23d-83e192324107New note by eal<a href='https://p2px.me/user/1'>@stitchxd</a> test also2017-08-04T14:04:38.699051Z2017-08-04T14:04:38.699051Ztag:p2px.me,2017-08-04:objectType=thread:nonce=f8bfc4d13db6ce91http://activitystrea.ms/schema/1.0/favoritehttps://social.sakamoto.gq/activities/d8d2006b-6b23-45d6-ba27-39d27587777dNew favorite by ealeal favorited something2017-08-04T14:04:32.106626Z2017-08-04T14:04:32.106626Zhttp://activitystrea.ms/schema/1.0/notetag:p2px.me,2017-08-04:noticeId=222109:objectType=notetag:p2px.me,2017-08-04:objectType=thread:nonce=f8bfc4d13db6ce91http://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://social.sakamoto.gq/activities/cb9db95d-ec27-41fa-bebd-5375fc13acb9eal started following https://mastodon.social/users/Gargroneal started following https://mastodon.social/users/Gargron2017-08-04T14:04:04.325531Z2017-08-04T14:04:04.325531Zhttp://activitystrea.ms/schema/1.0/personhttps://mastodon.social/users/Gargronhttps://mastodon.social/users/Gargron \ No newline at end of file diff --git a/test/fixtures/tesla_mock/shp@pleroma.soykaf.com.feed b/test/fixtures/tesla_mock/shp@pleroma.soykaf.com.feed deleted file mode 100644 index b24ef7ab6..000000000 --- a/test/fixtures/tesla_mock/shp@pleroma.soykaf.com.feed +++ /dev/null @@ -1 +0,0 @@ -https://pleroma.soykaf.com/users/shp/feed.atomshp's timeline2017-09-14T08:31:48.911686https://pleroma.soykaf.com/users/shphttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/shpshpshpcofeshphttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://pleroma.soykaf.com/activities/0b5f5ef2-020a-4f9e-a92b-a2bf21224644shp started following https://pleroma.soykaf.com/users/goozshp started following https://pleroma.soykaf.com/users/gooz2017-09-14T08:31:48.911226Z2017-09-14T08:31:48.911226Zhttp://activitystrea.ms/schema/1.0/personhttps://pleroma.soykaf.com/users/goozhttps://pleroma.soykaf.com/users/goozhttp://activitystrea.ms/schema/1.0/activityhttp://activitystrea.ms/schema/1.0/followhttps://pleroma.soykaf.com/activities/d928b7f7-dc10-478c-859b-cd604770da60shp started following https://niu.moe/users/xiaoyongmaoshp started following https://niu.moe/users/xiaoyongmao2017-09-14T08:16:52.674253Z2017-09-14T08:16:52.674253Zhttp://activitystrea.ms/schema/1.0/personhttps://niu.moe/users/xiaoyongmaohttps://niu.moe/users/xiaoyongmaohttp://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/3f5089b3-f1e5-47b6-8bfe-a9c4a860e724New favorite by shpshp favorited something2017-09-14T08:12:18.213055Z2017-09-14T08:12:18.213055Zhttp://activitystrea.ms/schema/1.0/notehttps://mastodon.xyz/users/Azurolu/statuses/8346804tag:mastodon.xyz,2017-09-14:objectId=3669709:objectType=Conversationhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/0def9b19-6b0f-44e0-96b3-543fa06a4010New note by shp<a href='https://niu.moe/users/Pasty'>@Pasty</a> I love the peach<br><a href="https://pleroma.soykaf.com/media/7e8bd209-dbd4-481a-a62c-d302d68df16d/__hinanawi_tenshi_touhou_drawn_by_e_o__8c6824f52dd494f6026607570179265f.jpg" class='attachment'>__hinanawi_tenshi_touhou_drawn_…</a>2017-09-14T08:12:04.367142Z2017-09-14T08:12:04.367142Ztag:niu.moe,2017-09-14:objectId=1660781:objectType=Conversationhttp://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/a4170edf-d273-4b82-931d-662aaf3872f3New favorite by shpshp favorited something2017-09-14T08:10:26.205104Z2017-09-14T08:10:26.205104Zhttp://activitystrea.ms/schema/1.0/notehttps://niu.moe/users/NekoiNemo/statuses/3210992tag:niu.moe,2017-09-14:objectId=1660761:objectType=Conversationhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/c50c47a0-fac5-4781-a7e6-f20e7226d5fcNew note by shp<a href='https://freezepeach.xyz/user/3458'>@hakui</a> <a href='https://pleroma.soykaf.com/users/lain'>@lain</a> you guys are forgetting the pancakes jeez2017-09-14T08:09:30.088418Z2017-09-14T08:09:30.088418Zhttps://pleroma.soykaf.com/contexts/ac9c98ee-3eca-4b4b-9620-64b5e85e2623http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/2af9f622-5986-483c-83a1-ac59a9035b50New favorite by shpshp favorited something2017-09-14T08:09:16.346235Z2017-09-14T08:09:16.346235Zhttp://activitystrea.ms/schema/1.0/notetag:freezepeach.xyz,2017-09-14:noticeId=3926191:objectType=commenthttps://pleroma.soykaf.com/contexts/ac9c98ee-3eca-4b4b-9620-64b5e85e2623http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/f52aad69-5828-4e0e-bb7b-f2f0869d3ff0New note by shp<a href='https://gs.smuglo.li/user/253'>@kro</a> I'll probs try some of those 2hu mangos2017-09-14T08:09:13.262835Z2017-09-14T08:09:13.262835Ztag:gs.smuglo.li,2017-09-14:objectType=thread:nonce=c4ac2016e07c4123http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/35743658-efee-46cf-9cdf-487b95709cd5New favorite by shpshp favorited something2017-09-14T08:09:00.517534Z2017-09-14T08:09:00.517534Zhttp://activitystrea.ms/schema/1.0/notetag:gs.smuglo.li,2017-09-14:noticeId=4113226:objectType=commenttag:gs.smuglo.li,2017-09-14:objectType=thread:nonce=c4ac2016e07c4123http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/22258ba8-58dc-4e09-b476-fe28d3307377New favorite by shpshp favorited something2017-09-14T08:08:38.087136Z2017-09-14T08:08:38.087136Zhttp://activitystrea.ms/schema/1.0/notehttps://pleroma.soykaf.com/objects/13d7809e-5dca-4117-8738-887759392f2chttps://pleroma.soykaf.com/contexts/ac9c98ee-3eca-4b4b-9620-64b5e85e2623http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/f56d640a-0dbd-48af-80b1-06d0dbd26774New note by shp<a href='https://social.sakamoto.gq/users/eal'>@eal</a> ...but neither does my phone<br><br>low brightness, very dark wallpaper (pic related, but even darker, couldn't find the actual version)<br><a href="https://pleroma.soykaf.com/media/6d1b8d57-80ae-41d6-bdea-58fea09ecdf4/phonewallpaper.png" class='attachment'>phonewallpaper.png</a>2017-09-14T08:07:23.081214Z2017-09-14T08:07:23.081214Zhttps://pleroma.soykaf.com/contexts/f4c5d56e-fc58-467b-a8a5-10515c012355http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/d313df1d-121c-4ab8-abd1-e6aedcf55cbdNew note by shp<a href='https://niu.moe/users/Pasty'>@Pasty</a> y-you too2017-09-14T07:55:26.153486Z2017-09-14T07:55:26.153486Ztag:niu.moe,2017-09-14:objectId=1660616:objectType=Conversationhttp://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/7b642424-4edb-48cc-8711-1eafb4745269New note by shp<a href='https://social.sakamoto.gq/users/eal'>@eal</a> bothers me more when sleeping, wore one for nearly 2 years2017-09-14T07:54:53.449227Z2017-09-14T07:54:53.449227Zhttps://pleroma.soykaf.com/contexts/f4c5d56e-fc58-467b-a8a5-10515c012355http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/5bc1bff1-88c3-489d-8efd-7e4755690a18New note by shpquick test2017-09-14T07:54:09.045525Z2017-09-14T07:54:09.045525Zhttps://pleroma.soykaf.com/contexts/cd770c2a-408e-4895-988c-60319298f219http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/956f1fb5-6f2f-433e-ab71-7f732b76f4beNew note by shphad some trouble getting sleep last night. only used phone to check the time a few times (v essential to have a near-black wallpaper to not blind yourself when you do that). can't rember the last time I rolled in the bed for longer than an hour like that2017-09-14T07:51:23.557775Z2017-09-14T07:51:23.557775Zhttps://pleroma.soykaf.com/contexts/f4c5d56e-fc58-467b-a8a5-10515c012355http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/d935d9f2-ebc7-4ff2-b65a-fbf418a60935New note by shp<a href='https://gs.smuglo.li/user/253'>@kro</a> doesn't sound like a bad idea at all2017-09-14T07:49:55.702555Z2017-09-14T07:49:55.702555Ztag:gs.smuglo.li,2017-09-14:objectType=thread:nonce=c4ac2016e07c4123http://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/342c8803-ee16-487d-9488-a39d763073f6New favorite by shpshp favorited something2017-09-14T07:49:41.875840Z2017-09-14T07:49:41.875840Zhttp://activitystrea.ms/schema/1.0/notetag:anticapitalist.party,2017-09-14:objectId=3322865:objectType=Statustag:anticapitalist.party,2017-09-14:objectId=1251751:objectType=Conversationhttp://activitystrea.ms/schema/1.0/favoritehttps://pleroma.soykaf.com/activities/5d98a19b-dd55-4077-9841-142937c613adNew favorite by shpshp favorited something2017-09-14T07:49:30.584265Z2017-09-14T07:49:30.584265Zhttp://activitystrea.ms/schema/1.0/notetag:gs.smuglo.li,2017-09-14:noticeId=4113170:objectType=commenttag:gs.smuglo.li,2017-09-14:objectType=thread:nonce=c4ac2016e07c4123http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/fdf3626a-50ba-458b-9bf7-b5f2cfa505fcNew note by shp<a href='https://pleroma.hjkos.com/users/hj'>@hj</a> c time2017-09-14T07:48:52.805422Z2017-09-14T07:48:52.805422Zhttps://pleroma.hjkos.com/contexts/dc4a3a3e-d366-4c0c-8789-8a9bee3537d9http://activitystrea.ms/schema/1.0/notehttp://activitystrea.ms/schema/1.0/posthttps://pleroma.soykaf.com/objects/c7c8eb17-b669-4827-9fbc-90f1fc54e4b1New note by shp<a href='https://sunshinegardens.org/users/tbny'>@tbny</a> err.. mediterranean from finnish*2017-09-14T07:46:52.764234Z2017-09-14T07:46:52.764234Zhttps://pleroma.soykaf.com/contexts/ac9c98ee-3eca-4b4b-9620-64b5e85e2623 \ No newline at end of file diff --git a/test/fixtures/tesla_mock/spc_5381.atom b/test/fixtures/tesla_mock/spc_5381.atom deleted file mode 100644 index c3288e97b..000000000 --- a/test/fixtures/tesla_mock/spc_5381.atom +++ /dev/null @@ -1,438 +0,0 @@ - - - GNU social - https://shitposter.club/api/statuses/user_timeline/5381.atom - shpuld timeline - Updates from shpuld on Shitposter Club! - https://shitposter.club/avatar/5381-96-20171230093854.png - 2018-02-23T13:42:22+00:00 - - http://activitystrea.ms/schema/1.0/person - https://shitposter.club/user/5381 - shpuld - - - - - - shpuld - shp - - - - - - - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:comment:7387801:2018-02-23T13:39:40+00:00 - Favorite - shpuld favorited something by mayuutann: <p><span class="h-card"><a href="https://freezepeach.xyz/hakui" class="u-url mention">@<span>hakui</span></a></span> <span class="h-card"><a href="https://gs.smuglo.li/histoire" class="u-url mention">@<span>histoire</span></a></span> <span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> <a href="https://mstdn.io/media/_Ee-x91XN0udpfZVO_U" rel="nofollow"><span class="invisible">https://</span><span class="ellipsis">mstdn.io/media/_Ee-x91XN0udpfZ</span><span class="invisible">VO_U</span></a></p> - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:39:40+00:00 - 2018-02-23T13:39:40+00:00 - - http://activitystrea.ms/schema/1.0/comment - https://mstdn.io/users/mayuutann/statuses/99574950785668071 - New comment by mayuutann - <p><span class="h-card"><a href="https://freezepeach.xyz/hakui" class="u-url mention">@<span>hakui</span></a></span> <span class="h-card"><a href="https://gs.smuglo.li/histoire" class="u-url mention">@<span>histoire</span></a></span> <span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> <a href="https://mstdn.io/media/_Ee-x91XN0udpfZVO_U" rel="nofollow"><span class="invisible">https://</span><span class="ellipsis">mstdn.io/media/_Ee-x91XN0udpfZ</span><span class="invisible">VO_U</span></a></p> - - - - - - - https://freezepeach.xyz/conversation/4182511 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387723:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> @<a href="https://pleroma.soykaf.com/users/lain" class="h-card mention" title="&#x2468; lain &#x2468;">lain</a> how naive~ - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:30:15+00:00 - 2018-02-23T13:30:15+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=2f09acf104aebfe3 - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387703:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> @<a href="https://pleroma.soykaf.com/users/lain" class="h-card mention" title="&#x2468; lain &#x2468;">lain</a> you expect anyone to believe that?? - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:28:08+00:00 - 2018-02-23T13:28:08+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=2f09acf104aebfe3 - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387639:objectType=comment - New comment by shpuld - @<a href="https://mstdn.io/users/mayuutann" class="h-card mention" title="Mayutan&#x2615;">mayuutann</a> @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> pacyuri!! <a href="https://shitposter.club/file/eea140be45df3f993c4533026bf9a78fe8facd296d2fa0c6d02b2e347c5dc30e.jpg" title="https://shitposter.club/file/eea140be45df3f993c4533026bf9a78fe8facd296d2fa0c6d02b2e347c5dc30e.jpg" class="attachment" id="attachment-1589462" rel="nofollow external">https://shitposter.club/attachment/1589462</a> - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:20:38+00:00 - 2018-02-23T13:20:38+00:00 - - - - https://freezepeach.xyz/conversation/4183220 - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387611:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> why is pacyu eating a pizza so cute - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:18:07+00:00 - 2018-02-23T13:18:07+00:00 - - - - https://freezepeach.xyz/conversation/4183220 - - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:comment:7387600:2018-02-23T13:17:52+00:00 - Favorite - shpuld favorited something by mayuutann: <p><span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> <span class="h-card"><a href="https://gs.smuglo.li/histoire" class="u-url mention">@<span>histoire</span></a></span> <span class="h-card"><a href="https://freezepeach.xyz/hakui" class="u-url mention">@<span>hakui</span></a></span> pichu! <a href="https://mstdn.io/media/Crv5eubz1KO0dgBEulI" rel="nofollow"><span class="invisible">https://</span><span class="ellipsis">mstdn.io/media/Crv5eubz1KO0dgB</span><span class="invisible">EulI</span></a></p> - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:17:52+00:00 - 2018-02-23T13:17:52+00:00 - - http://activitystrea.ms/schema/1.0/comment - https://mstdn.io/users/mayuutann/statuses/99574863865459283 - New comment by mayuutann - <p><span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> <span class="h-card"><a href="https://gs.smuglo.li/histoire" class="u-url mention">@<span>histoire</span></a></span> <span class="h-card"><a href="https://freezepeach.xyz/hakui" class="u-url mention">@<span>hakui</span></a></span> pichu! <a href="https://mstdn.io/media/Crv5eubz1KO0dgBEulI" rel="nofollow"><span class="invisible">https://</span><span class="ellipsis">mstdn.io/media/Crv5eubz1KO0dgB</span><span class="invisible">EulI</span></a></p> - - - - - - - https://freezepeach.xyz/conversation/4182511 - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:comment:7387544:2018-02-23T13:12:43+00:00 - Favorite - shpuld favorited something by mayuutann: <p><span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> wa~~i!! :blobcheer:</p> - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:12:43+00:00 - 2018-02-23T13:12:43+00:00 - - http://activitystrea.ms/schema/1.0/comment - https://mstdn.io/users/mayuutann/statuses/99574840290947233 - New comment by mayuutann - <p><span class="h-card"><a href="https://shitposter.club/shpuld" class="u-url mention">@<span>shpuld</span></a></span> wa~~i!! :blobcheer:</p> - - - - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=d05e2b056274c5ab - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387555:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> more!! - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:12:23+00:00 - 2018-02-23T13:12:23+00:00 - - - - https://freezepeach.xyz/conversation/4183220 - - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:note:7387537:2018-02-23T13:12:19+00:00 - Favorite - shpuld favorited something by hakui: you have pacyupacyu'd for: 45 minutes 03 seconds - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:12:19+00:00 - 2018-02-23T13:12:19+00:00 - - http://activitystrea.ms/schema/1.0/note - tag:freezepeach.xyz,2018-02-23:noticeId=6451332:objectType=note - New note by hakui - you have pacyupacyu'd for: 45 minutes 03 seconds - - - - - - - https://freezepeach.xyz/conversation/4183220 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387539:objectType=comment - New comment by shpuld - @<a href="https://mstdn.io/users/mayuutann" class="h-card mention" title="Mayutan&#x2615;">mayuutann</a> ndndnd~ - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:11:04+00:00 - 2018-02-23T13:11:04+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=d05e2b056274c5ab - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387518:objectType=comment - New comment by shpuld - @<a href="https://mstdn.io/users/mayuutann" class="h-card mention" title="Mayutan&#x2615;">mayuutann</a> well done! mayumayu is so energetic - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:08:50+00:00 - 2018-02-23T13:08:50+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=d05e2b056274c5ab - - - - - - - - tag:shitposter.club,2018-02-23:fave:5381:note:7387503:2018-02-23T13:08:00+00:00 - Favorite - shpuld favorited something by mayuutann: <p>done with FIGURE MAT!!<br /> (Posted with IFTTT)</p> - - http://activitystrea.ms/schema/1.0/favorite - 2018-02-23T13:08:00+00:00 - 2018-02-23T13:08:00+00:00 - - http://activitystrea.ms/schema/1.0/note - https://mstdn.io/users/mayuutann/statuses/99574825526201897 - New note by mayuutann - <p>done with FIGURE MAT!!<br /> (Posted with IFTTT)</p> - - - - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=c6aaa9b91e8d242f - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387486:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> @<a href="https://a.weirder.earth/users/mutstd" class="h-card mention" title="Mutant Standard">mutstd</a> @<a href="https://donphan.social/users/Siphonay" class="h-card mention" title="Siphonay">siphonay</a> jokes on you I'm oppressively shitposting myself - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:05:44+00:00 - 2018-02-23T13:05:44+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=5d306467336c9661 - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387466:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> @<a href="https://a.weirder.earth/users/mutstd" class="h-card mention" title="Mutant Standard">mutstd</a> @<a href="https://donphan.social/users/Siphonay" class="h-card mention" title="Siphonay">siphonay</a> how does it feel being hostile - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:04:10+00:00 - 2018-02-23T13:04:10+00:00 - - - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=5d306467336c9661 - - - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387459:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> gorogoro - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:03:32+00:00 - 2018-02-23T13:03:32+00:00 - - - - https://freezepeach.xyz/conversation/4181784 - - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387432:objectType=comment - New comment by shpuld - @<a href="https://freezepeach.xyz/user/3458" class="h-card mention" title="&#x5FA1;&#x5712;&#x306F;&#x304F;&#x3044;">hakui</a> ndnd - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T13:02:05+00:00 - 2018-02-23T13:02:05+00:00 - - - - https://freezepeach.xyz/conversation/4181784 - - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2018-02-23:noticeId=7387367:objectType=note - New note by shpuld - dear diary: I'm trying to do work but I can only think of tenshi eating a corndog - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T12:56:03+00:00 - 2018-02-23T12:56:03+00:00 - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=57f316da416743fc - - - - - - - http://activitystrea.ms/schema/1.0/note - tag:shitposter.club,2018-02-23:noticeId=7387354:objectType=note - New note by shpuld - jesus christ it's such a fridey at work - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T12:53:50+00:00 - 2018-02-23T12:53:50+00:00 - - tag:shitposter.club,2018-02-23:objectType=thread:nonce=c05eb5e91bdcbdb7 - - - - - - - http://activitystrea.ms/schema/1.0/comment - tag:shitposter.club,2018-02-23:noticeId=7387343:objectType=comment - New comment by shpuld - @<a href="https://gs.smuglo.li/user/589" class="h-card mention" title="&#x16DE;&#x16A9;&#x16B3;&#x16C1;&#x16DE;&#x16A9;&#x16B3;&#x16C1;">dokidoki</a> give them free upgrades to krokodil - - - http://activitystrea.ms/schema/1.0/post - 2018-02-23T12:53:15+00:00 - 2018-02-23T12:53:15+00:00 - - - - https://gs.smuglo.li/conversation/3934774 - - - - - - - diff --git a/test/fixtures/unfollow.xml b/test/fixtures/unfollow.xml deleted file mode 100644 index 7a8f8fd2e..000000000 --- a/test/fixtures/unfollow.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - GNU social - https://social.heldscal.la/api/statuses/user_timeline/23211.atom - lambadalambda timeline - Updates from lambadalambda on social.heldscal.la! - https://social.heldscal.la/avatar/23211-96-20170416114255.jpeg - 2017-05-07T09:54:49+00:00 - - http://activitystrea.ms/schema/1.0/person - https://social.heldscal.la/user/23211 - lambadalambda - Call me Deacon Blues. - - - - - - lambadalambda - Constance Variable - Call me Deacon Blues. - - Berlin - - - homepage - https://heldscal.la - true - - - - - - - - - - - - - undo:tag:social.heldscal.la,2017-05-07:subscription:23211:person:44803:2017-05-07T09:54:48+00:00 - Constance Variable (lambadalambda@social.heldscal.la)'s status on Sunday, 07-May-2017 09:54:49 UTC - <a href="https://social.heldscal.la/lambadalambda">Constance Variable</a> stopped following <a href="https://pawoo.net/@pekorino">mono</a>. - - http://activitystrea.ms/schema/1.0/unfollow - 2017-05-07T09:54:49+00:00 - 2017-05-07T09:54:49+00:00 - - http://activitystrea.ms/schema/1.0/person - https://pawoo.net/users/pekorino - mono - http://shitposter.club/mono 孤独のグルメ - - - - - pekorino - mono - http://shitposter.club/mono 孤独のグルメ - - - tag:social.heldscal.la,2017-05-07:objectType=thread:nonce=6e80caf94e03029f - - - - - - diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index a0ebf65d9..344e27f13 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -103,14 +103,6 @@ def get( }} end - def get("https://mastodon.social/users/emelie.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/emelie.atom") - }} - end - def get( "https://osada.macgirvin.com/.well-known/webfinger?resource=acct:mike@osada.macgirvin.com", _, @@ -137,14 +129,6 @@ def get( }} end - def get("https://pawoo.net/users/pekorino.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/https___pawoo.net_users_pekorino.atom") - }} - end - def get( "https://pawoo.net/.well-known/webfinger?resource=acct:https://pawoo.net/users/pekorino", _, @@ -158,19 +142,6 @@ def get( }} end - def get( - "https://social.stopwatchingus-heidelberg.de/api/statuses/user_timeline/18330.atom", - _, - _, - _ - ) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/atarifrosch_feed.xml") - }} - end - def get( "https://social.stopwatchingus-heidelberg.de/.well-known/webfinger?resource=acct:https://social.stopwatchingus-heidelberg.de/user/18330", _, @@ -184,27 +155,6 @@ def get( }} end - def get("https://mamot.fr/users/Skruyb.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/https___mamot.fr_users_Skruyb.atom") - }} - end - - def get( - "https://mamot.fr/.well-known/webfinger?resource=acct:https://mamot.fr/users/Skruyb", - _, - _, - [{"accept", "application/xrd+xml,application/jrd+json"}] - ) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/skruyb@mamot.fr.atom") - }} - end - def get( "https://social.heldscal.la/.well-known/webfinger?resource=nonexistant@social.heldscal.la", _, @@ -507,19 +457,6 @@ def get("https://mamot.fr/.well-known/host-meta", _, _, _) do }} end - def get( - "https://mamot.fr/.well-known/webfinger?resource=https://mamot.fr/users/Skruyb", - _, - _, - _ - ) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/skruyb@mamot.fr.atom") - }} - end - def get("http://pawoo.net/.well-known/host-meta", _, _, _) do {:ok, %Tesla.Env{ @@ -647,17 +584,6 @@ def get( }} end - def get("https://pleroma.soykaf.com/users/lain/feed.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___pleroma.soykaf.com_users_lain_feed.atom.xml" - ) - }} - end - def get(url, _, _, [{"accept", "application/xrd+xml,application/jrd+json"}]) when url in [ "https://pleroma.soykaf.com/.well-known/webfinger?resource=acct:https://pleroma.soykaf.com/users/lain", @@ -670,17 +596,6 @@ def get(url, _, _, [{"accept", "application/xrd+xml,application/jrd+json"}]) }} end - def get("https://shitposter.club/api/statuses/user_timeline/1.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___shitposter.club_api_statuses_user_timeline_1.atom.xml" - ) - }} - end - def get( "https://shitposter.club/.well-known/webfinger?resource=https://shitposter.club/user/1", _, @@ -694,37 +609,10 @@ def get( }} end - def get("https://shitposter.club/notice/2827873", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/https___shitposter.club_notice_2827873.json") - }} - end - - def get("https://shitposter.club/api/statuses/show/2827873.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___shitposter.club_api_statuses_show_2827873.atom.xml" - ) - }} - end - def get("https://testing.pleroma.lol/objects/b319022a-4946-44c5-9de9-34801f95507b", _, _, _) do {:ok, %Tesla.Env{status: 200}} end - def get("https://shitposter.club/api/statuses/user_timeline/5381.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/spc_5381.atom") - }} - end - def get( "https://shitposter.club/.well-known/webfinger?resource=https://shitposter.club/user/5381", _, @@ -746,14 +634,6 @@ def get("http://shitposter.club/.well-known/host-meta", _, _, _) do }} end - def get("https://shitposter.club/api/statuses/show/7369654.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/7369654.atom") - }} - end - def get("https://shitposter.club/notice/4027863", _, _, _) do {:ok, %Tesla.Env{ @@ -762,14 +642,6 @@ def get("https://shitposter.club/notice/4027863", _, _, _) do }} end - def get("https://social.sakamoto.gq/users/eal/feed.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: File.read!("test/fixtures/tesla_mock/sakamoto_eal_feed.atom") - }} - end - def get("http://social.sakamoto.gq/.well-known/host-meta", _, _, _) do {:ok, %Tesla.Env{ @@ -791,15 +663,6 @@ def get( }} end - def get( - "https://social.sakamoto.gq/objects/0ccc1a2c-66b0-4305-b23a-7f7f2b040056", - _, - _, - [{"accept", "application/atom+xml"}] - ) do - {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/sakamoto.atom")}} - end - def get("http://mastodon.social/.well-known/host-meta", _, _, _) do {:ok, %Tesla.Env{ @@ -853,28 +716,6 @@ def get( {:ok, %Tesla.Env{status: 406, body: ""}} end - def get("http://gs.example.org/index.php/api/statuses/user_timeline/1.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/http__gs.example.org_index.php_api_statuses_user_timeline_1.atom.xml" - ) - }} - end - - def get("https://social.heldscal.la/api/statuses/user_timeline/29191.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_29191.atom.xml" - ) - }} - end - def get("http://squeet.me/.well-known/host-meta", _, _, _) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/squeet.me_host_meta")}} @@ -996,17 +837,6 @@ def get( }} end - def get("https://social.heldscal.la/api/statuses/user_timeline/23211.atom", _, _, _) do - {:ok, - %Tesla.Env{ - status: 200, - body: - File.read!( - "test/fixtures/tesla_mock/https___social.heldscal.la_api_statuses_user_timeline_23211.atom.xml" - ) - }} - end - def get( "https://social.heldscal.la/.well-known/webfinger?resource=https://social.heldscal.la/user/23211", _, @@ -1036,10 +866,6 @@ def get("https://social.heldscal.la/.well-known/host-meta", _, _, _) do }} end - def get("https://mastodon.social/users/lambadalambda.atom", _, _, _) do - {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/lambadalambda.atom")}} - end - def get("https://mastodon.social/users/lambadalambda", _, _, _) do {:ok, %Tesla.Env{status: 200, body: File.read!("test/fixtures/lambadalambda.json")}} end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 6e096e9ec..cc55a7be7 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -105,7 +105,7 @@ test "it fetches reply-to activities if we don't have them" do object = data["object"] - |> Map.put("inReplyTo", "https://shitposter.club/notice/2827873") + |> Map.put("inReplyTo", "https://mstdn.io/users/mayuutann/statuses/99568293732299394") data = Map.put(data, "object", object) {:ok, returned_activity} = Transmogrifier.handle_incoming(data) @@ -113,11 +113,11 @@ test "it fetches reply-to activities if we don't have them" do assert activity = Activity.get_create_by_object_ap_id( - "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" ) assert returned_object.data["inReplyTo"] == - "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" end test "it does not fetch reply-to activities beyond max replies depth limit" do @@ -1104,17 +1104,17 @@ test "returns modified object when allowed incoming reply", %{data: data} do Map.put( data["object"], "inReplyTo", - "https://shitposter.club/notice/2827873" + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" ) Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 5) modified_object = Transmogrifier.fix_in_reply_to(object_with_reply) assert modified_object["inReplyTo"] == - "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" assert modified_object["context"] == - "tag:shitposter.club,2017-05-05:objectType=thread:nonce=3c16e9c2681f6d26" + "tag:shitposter.club,2018-02-22:objectType=thread:nonce=e5a7c72d60a9c0e4" end end @@ -1216,7 +1216,9 @@ test "returns nil when cannot normalize object" do @tag capture_log: true test "returns {:ok, %Object{}} for success case" do assert {:ok, %Object{}} = - Transmogrifier.get_obj_helper("https://shitposter.club/notice/2827873") + Transmogrifier.get_obj_helper( + "https://mstdn.io/users/mayuutann/statuses/99568293732299394" + ) end end diff --git a/test/web/mastodon_api/controllers/search_controller_test.exs b/test/web/mastodon_api/controllers/search_controller_test.exs index 24d1959f8..04dc6f445 100644 --- a/test/web/mastodon_api/controllers/search_controller_test.exs +++ b/test/web/mastodon_api/controllers/search_controller_test.exs @@ -282,18 +282,18 @@ test "search fetches remote statuses and prefers them over other results", %{con capture_log(fn -> {:ok, %{id: activity_id}} = CommonAPI.post(insert(:user), %{ - status: "check out https://shitposter.club/notice/2827873" + status: "check out http://mastodon.example.org/@admin/99541947525187367" }) results = conn - |> get("/api/v1/search?q=https://shitposter.club/notice/2827873") + |> get("/api/v1/search?q=http://mastodon.example.org/@admin/99541947525187367") |> json_response_and_validate_schema(200) - [status, %{"id" => ^activity_id}] = results["statuses"] - - assert status["uri"] == - "tag:shitposter.club,2017-05-05:noticeId=2827873:objectType=comment" + assert [ + %{"url" => "http://mastodon.example.org/@admin/99541947525187367"}, + %{"id" => ^activity_id} + ] = results["statuses"] end) end From e430e98e7dac24978e4f985948b7ae6847dfaee6 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 14:21:34 +0300 Subject: [PATCH 058/141] CHANGELOG.md: Add 2.1.1 entry --- CHANGELOG.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01d7a7bc6..06a24a7e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,24 +3,29 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## unreleased-patch - ??? +## [2.1.1] - 2020-09-08 ### Security -- Fix metadata leak for accounts and statuses on private instances +- Fix possible DoS in Mastodon API user search due to an error in match clauses, leading to an infinite recursion and subsequent OOM with certain inputs. +- Fix metadata leak for accounts and statuses on private instances. +- Fix possible DoS in Admin API search using an atom leak vulnerability. Authentication with admin rights was required to exploit. ### Changed - **Breaking:** The metadata providers RelMe and Feed are no longer configurable. RelMe should always be activated and Feed only provides a header tag for the actual RSS/Atom feed when the instance is public. +- Improved error message when cmake is not available at build stage. ### Added -- Rich media failure tracking (along with `:failure_backoff` option) +- Rich media failure tracking (along with `:failure_backoff` option). ### Fixed -- Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers +- Default HTTP adapter not respecting pool setting, leading to possible OOM. +- Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers. - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. -- Mastodon API: Cards being wrong for preview statuses due to cache key collision -- Password resets no longer processed for deactivated accounts +- Mastodon API: Cards being wrong for preview statuses due to cache key collision. +- Password resets no longer processed for deactivated accounts. +- Favicon scraper raising exceptions on URLs longer than 255 characters. ## [2.1.0] - 2020-08-28 From 7490b76bbfa0e39f7950d5611f00bddb2aac34ad Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 12:21:33 +0000 Subject: [PATCH 059/141] Merge branch 'fix/upload-filter-exiftool-webp' into 'develop' Skip processing webp image files because we can't strip EXIF Closes #2080 See merge request pleroma/pleroma!2924 --- CHANGELOG.md | 3 ++- lib/pleroma/upload/filter.ex | 13 ++++++++++--- lib/pleroma/upload/filter/anonymize_filename.ex | 4 +++- lib/pleroma/upload/filter/dedupe.ex | 4 ++-- lib/pleroma/upload/filter/exiftool.ex | 10 +++++++--- lib/pleroma/upload/filter/mogrifun.ex | 6 +++--- lib/pleroma/upload/filter/mogrify.ex | 6 +++--- test/upload/filter/anonymize_filename_test.exs | 6 +++--- test/upload/filter/dedupe_test.exs | 1 + test/upload/filter/exiftool_test.exs | 11 ++++++++++- test/upload/filter/mogrifun_test.exs | 2 +- test/upload/filter/mogrify_test.exs | 2 +- 12 files changed, 46 insertions(+), 22 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 06a24a7e4..92635f6d0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Fixed - Default HTTP adapter not respecting pool setting, leading to possible OOM. -- Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers. +- Fixed uploading webp images when the Exiftool Upload Filter is enabled by skipping them +- Mastodon API: Search parameter `following` now correctly returns the followings rather than the followers - Mastodon API: Timelines hanging for (`number of posts with links * rich media timeout`) in the worst case. Reduced to just rich media timeout. - Mastodon API: Cards being wrong for preview statuses due to cache key collision. diff --git a/lib/pleroma/upload/filter.ex b/lib/pleroma/upload/filter.ex index dbdadc97f..661135634 100644 --- a/lib/pleroma/upload/filter.ex +++ b/lib/pleroma/upload/filter.ex @@ -15,7 +15,11 @@ defmodule Pleroma.Upload.Filter do require Logger - @callback filter(Pleroma.Upload.t()) :: :ok | {:ok, Pleroma.Upload.t()} | {:error, any()} + @callback filter(Pleroma.Upload.t()) :: + {:ok, :filtered} + | {:ok, :noop} + | {:ok, :filtered, Pleroma.Upload.t()} + | {:error, any()} @spec filter([module()], Pleroma.Upload.t()) :: {:ok, Pleroma.Upload.t()} | {:error, any()} @@ -25,10 +29,13 @@ def filter([], upload) do def filter([filter | rest], upload) do case filter.filter(upload) do - :ok -> + {:ok, :filtered} -> filter(rest, upload) - {:ok, upload} -> + {:ok, :filtered, upload} -> + filter(rest, upload) + + {:ok, :noop} -> filter(rest, upload) error -> diff --git a/lib/pleroma/upload/filter/anonymize_filename.ex b/lib/pleroma/upload/filter/anonymize_filename.ex index 07ead8203..fc456e4f4 100644 --- a/lib/pleroma/upload/filter/anonymize_filename.ex +++ b/lib/pleroma/upload/filter/anonymize_filename.ex @@ -16,9 +16,11 @@ defmodule Pleroma.Upload.Filter.AnonymizeFilename do def filter(%Upload{name: name} = upload) do extension = List.last(String.split(name, ".")) name = predefined_name(extension) || random(extension) - {:ok, %Upload{upload | name: name}} + {:ok, :filtered, %Upload{upload | name: name}} end + def filter(_), do: {:ok, :noop} + @spec predefined_name(String.t()) :: String.t() | nil defp predefined_name(extension) do with name when not is_nil(name) <- Config.get([__MODULE__, :text]), diff --git a/lib/pleroma/upload/filter/dedupe.ex b/lib/pleroma/upload/filter/dedupe.ex index 41218a918..86cbc8996 100644 --- a/lib/pleroma/upload/filter/dedupe.ex +++ b/lib/pleroma/upload/filter/dedupe.ex @@ -17,8 +17,8 @@ def filter(%Upload{name: name, tempfile: tempfile} = upload) do |> Base.encode16(case: :lower) filename = shasum <> "." <> extension - {:ok, %Upload{upload | id: shasum, path: filename}} + {:ok, :filtered, %Upload{upload | id: shasum, path: filename}} end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} end diff --git a/lib/pleroma/upload/filter/exiftool.ex b/lib/pleroma/upload/filter/exiftool.ex index ea8798fe3..1fd0cfdaa 100644 --- a/lib/pleroma/upload/filter/exiftool.ex +++ b/lib/pleroma/upload/filter/exiftool.ex @@ -9,11 +9,15 @@ defmodule Pleroma.Upload.Filter.Exiftool do """ @behaviour Pleroma.Upload.Filter - @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} + @spec filter(Pleroma.Upload.t()) :: {:ok, any()} | {:error, String.t()} + + # webp is not compatible with exiftool at this time + def filter(%Pleroma.Upload{content_type: "image/webp"}), do: {:ok, :noop} + def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do try do case System.cmd("exiftool", ["-overwrite_original", "-gps:all=", file], parallelism: true) do - {_response, 0} -> :ok + {_response, 0} -> {:ok, :filtered} {error, 1} -> {:error, error} end rescue @@ -22,5 +26,5 @@ def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do end end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} end diff --git a/lib/pleroma/upload/filter/mogrifun.ex b/lib/pleroma/upload/filter/mogrifun.ex index c8fa7b190..363e5cf0f 100644 --- a/lib/pleroma/upload/filter/mogrifun.ex +++ b/lib/pleroma/upload/filter/mogrifun.ex @@ -38,16 +38,16 @@ defmodule Pleroma.Upload.Filter.Mogrifun do [{"fill", "yellow"}, {"tint", "40"}] ] - @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} + @spec filter(Pleroma.Upload.t()) :: {:ok, atom()} | {:error, String.t()} def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do try do Filter.Mogrify.do_filter(file, [Enum.random(@filters)]) - :ok + {:ok, :filtered} rescue _e in ErlangError -> {:error, "mogrify command not found"} end end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} end diff --git a/lib/pleroma/upload/filter/mogrify.ex b/lib/pleroma/upload/filter/mogrify.ex index 7a45add5a..71968fd9c 100644 --- a/lib/pleroma/upload/filter/mogrify.ex +++ b/lib/pleroma/upload/filter/mogrify.ex @@ -8,18 +8,18 @@ defmodule Pleroma.Upload.Filter.Mogrify do @type conversion :: action :: String.t() | {action :: String.t(), opts :: String.t()} @type conversions :: conversion() | [conversion()] - @spec filter(Pleroma.Upload.t()) :: :ok | {:error, String.t()} + @spec filter(Pleroma.Upload.t()) :: {:ok, :atom} | {:error, String.t()} def filter(%Pleroma.Upload{tempfile: file, content_type: "image" <> _}) do try do do_filter(file, Pleroma.Config.get!([__MODULE__, :args])) - :ok + {:ok, :filtered} rescue _e in ErlangError -> {:error, "mogrify command not found"} end end - def filter(_), do: :ok + def filter(_), do: {:ok, :noop} def do_filter(file, filters) do file diff --git a/test/upload/filter/anonymize_filename_test.exs b/test/upload/filter/anonymize_filename_test.exs index adff70f57..19b915cc8 100644 --- a/test/upload/filter/anonymize_filename_test.exs +++ b/test/upload/filter/anonymize_filename_test.exs @@ -24,18 +24,18 @@ defmodule Pleroma.Upload.Filter.AnonymizeFilenameTest do test "it replaces filename on pre-defined text", %{upload_file: upload_file} do Config.put([Upload.Filter.AnonymizeFilename, :text], "custom-file.png") - {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert name == "custom-file.png" end test "it replaces filename on pre-defined text expression", %{upload_file: upload_file} do Config.put([Upload.Filter.AnonymizeFilename, :text], "custom-file.{extension}") - {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert name == "custom-file.jpg" end test "it replaces filename on random text", %{upload_file: upload_file} do - {:ok, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) + {:ok, :filtered, %Upload{name: name}} = Upload.Filter.AnonymizeFilename.filter(upload_file) assert <<_::bytes-size(14)>> <> ".jpg" = name refute name == "an… image.jpg" end diff --git a/test/upload/filter/dedupe_test.exs b/test/upload/filter/dedupe_test.exs index 966c353f7..75c7198e1 100644 --- a/test/upload/filter/dedupe_test.exs +++ b/test/upload/filter/dedupe_test.exs @@ -25,6 +25,7 @@ test "adds shasum" do assert { :ok, + :filtered, %Pleroma.Upload{id: @shasum, path: @shasum <> ".jpg"} } = Dedupe.filter(upload) end diff --git a/test/upload/filter/exiftool_test.exs b/test/upload/filter/exiftool_test.exs index 8ed7d650b..d4cd4ba11 100644 --- a/test/upload/filter/exiftool_test.exs +++ b/test/upload/filter/exiftool_test.exs @@ -21,7 +21,7 @@ test "apply exiftool filter" do tempfile: Path.absname("test/fixtures/DSCN0010_tmp.jpg") } - assert Filter.Exiftool.filter(upload) == :ok + assert Filter.Exiftool.filter(upload) == {:ok, :filtered} {exif_original, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010.jpg"]) {exif_filtered, 0} = System.cmd("exiftool", ["test/fixtures/DSCN0010_tmp.jpg"]) @@ -30,4 +30,13 @@ test "apply exiftool filter" do assert String.match?(exif_original, ~r/GPS/) refute String.match?(exif_filtered, ~r/GPS/) end + + test "verify webp files are skipped" do + upload = %Pleroma.Upload{ + name: "sample.webp", + content_type: "image/webp" + } + + assert Filter.Exiftool.filter(upload) == {:ok, :noop} + end end diff --git a/test/upload/filter/mogrifun_test.exs b/test/upload/filter/mogrifun_test.exs index 2426a8496..dc1e9e78f 100644 --- a/test/upload/filter/mogrifun_test.exs +++ b/test/upload/filter/mogrifun_test.exs @@ -36,7 +36,7 @@ test "apply mogrify filter" do save: fn _f, _o -> :ok end ]} ]) do - assert Filter.Mogrifun.filter(upload) == :ok + assert Filter.Mogrifun.filter(upload) == {:ok, :filtered} end Task.await(task) diff --git a/test/upload/filter/mogrify_test.exs b/test/upload/filter/mogrify_test.exs index 62ca30487..bf64b96b3 100644 --- a/test/upload/filter/mogrify_test.exs +++ b/test/upload/filter/mogrify_test.exs @@ -33,7 +33,7 @@ test "apply mogrify filter" do custom: fn _m, _a -> :ok end, custom: fn m, a, o -> send(task.pid, {:apply_filter, {m, a, o}}) end, save: fn _f, _o -> :ok end do - assert Filter.Mogrify.filter(upload) == :ok + assert Filter.Mogrify.filter(upload) == {:ok, :filtered} end Task.await(task) From 27c3973b78b432cef7feb9e2518bf143285c461d Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 7 Sep 2020 12:47:43 +0000 Subject: [PATCH 060/141] Merge branch 'temp-hackney-fix' into 'develop' temp hackney fix See merge request pleroma/pleroma!2951 --- lib/pleroma/http/adapter_helper/hackney.ex | 4 ++++ lib/pleroma/reverse_proxy/client/hackney.ex | 1 + mix.exs | 4 +++- mix.lock | 14 +++++++------- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/lib/pleroma/http/adapter_helper/hackney.ex b/lib/pleroma/http/adapter_helper/hackney.ex index cd569422b..62bd42485 100644 --- a/lib/pleroma/http/adapter_helper/hackney.ex +++ b/lib/pleroma/http/adapter_helper/hackney.ex @@ -22,6 +22,10 @@ def options(connection_opts \\ [], %URI{} = uri) do |> Pleroma.HTTP.AdapterHelper.maybe_add_proxy(proxy) end + defp add_scheme_opts(opts, %URI{scheme: "https"}) do + Keyword.put(opts, :ssl_options, versions: [:"tlsv1.2", :"tlsv1.1", :tlsv1]) + end + defp add_scheme_opts(opts, _), do: opts @spec get_conn(URI.t(), keyword()) :: {:ok, keyword()} diff --git a/lib/pleroma/reverse_proxy/client/hackney.ex b/lib/pleroma/reverse_proxy/client/hackney.ex index e84118a90..ad988fac3 100644 --- a/lib/pleroma/reverse_proxy/client/hackney.ex +++ b/lib/pleroma/reverse_proxy/client/hackney.ex @@ -7,6 +7,7 @@ defmodule Pleroma.ReverseProxy.Client.Hackney do @impl true def request(method, url, headers, body, opts \\ []) do + opts = Keyword.put(opts, :ssl_options, versions: [:"tlsv1.2", :"tlsv1.1", :tlsv1]) :hackney.request(method, url, headers, body, opts) end diff --git a/mix.exs b/mix.exs index f018a4465..51e05965e 100644 --- a/mix.exs +++ b/mix.exs @@ -195,7 +195,9 @@ defp deps do {:ex_machina, "~> 2.4", only: :test}, {:credo, "~> 1.4", only: [:dev, :test], runtime: false}, {:mock, "~> 0.3.5", only: :test}, - {:excoveralls, "~> 0.13.1", only: :test}, + # temporary downgrade for excoveralls, hackney until hackney max_connections bug will be fixed + {:excoveralls, "0.12.3", only: :test}, + {:hackney, "1.15.2", override: true}, {:mox, "~> 0.5", only: :test}, {:websocket_client, git: "https://github.com/jeremyong/websocket_client.git", only: :test} ] ++ oauth_deps() diff --git a/mix.lock b/mix.lock index 874ea9215..b97dd6342 100644 --- a/mix.lock +++ b/mix.lock @@ -11,7 +11,7 @@ "calendar": {:hex, :calendar, "1.0.0", "f52073a708528482ec33d0a171954ca610fe2bd28f1e871f247dc7f1565fa807", [:mix], [{:tzdata, "~> 0.5.20 or ~> 0.1.201603 or ~> 1.0", [hex: :tzdata, repo: "hexpm", optional: false]}], "hexpm", "990e9581920c82912a5ee50e62ff5ef96da6b15949a2ee4734f935fdef0f0a6f"}, "captcha": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/elixir-captcha.git", "e0f16822d578866e186a0974d65ad58cddc1e2ab", [ref: "e0f16822d578866e186a0974d65ad58cddc1e2ab"]}, "castore": {:hex, :castore, "0.1.7", "1ca19eee705cde48c9e809e37fdd0730510752cc397745e550f6065a56a701e9", [:mix], [], "hexpm", "a2ae2c13d40e9c308387f1aceb14786dca019ebc2a11484fb2a9f797ea0aa0d8"}, - "certifi": {:hex, :certifi, "2.5.2", "b7cfeae9d2ed395695dd8201c57a2d019c0c43ecaf8b8bcb9320b40d6662f340", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "3b3b5f36493004ac3455966991eaf6e768ce9884693d9968055aeeeb1e575040"}, + "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.3.1", "7fe612b739c78c9c1a75186ef2d322ce4d25032d119823269d0aa1e2f1e20025", [:mix], [], "hexpm", "d6222483060c17f0977fad1b7401ef0c5863c985a64352755f366aee3799c245"}, "concurrent_limiter": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", "55e92f84b4ed531bd487952a71040a9c69dc2807", [ref: "55e92f84b4ed531bd487952a71040a9c69dc2807"]}, @@ -41,7 +41,7 @@ "ex_doc": {:hex, :ex_doc, "0.22.2", "03a2a58bdd2ba0d83d004507c4ee113b9c521956938298eba16e55cc4aba4a6c", [:mix], [{:earmark_parser, "~> 1.4.0", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm", "cf60e1b3e2efe317095b6bb79651f83a2c1b3edcb4d319c421d7fcda8b3aff26"}, "ex_machina": {:hex, :ex_machina, "2.4.0", "09a34c5d371bfb5f78399029194a8ff67aff340ebe8ba19040181af35315eabb", [:mix], [{:ecto, "~> 2.2 or ~> 3.0", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_sql, "~> 3.0", [hex: :ecto_sql, repo: "hexpm", optional: true]}], "hexpm", "a20bc9ddc721b33ea913b93666c5d0bdca5cbad7a67540784ae277228832d72c"}, "ex_syslogger": {:hex, :ex_syslogger, "1.5.2", "72b6aa2d47a236e999171f2e1ec18698740f40af0bd02c8c650bf5f1fd1bac79", [:mix], [{:poison, ">= 1.5.0", [hex: :poison, repo: "hexpm", optional: true]}, {:syslog, "~> 1.1.0", [hex: :syslog, repo: "hexpm", optional: false]}], "hexpm", "ab9fab4136dbc62651ec6f16fa4842f10cf02ab4433fa3d0976c01be99398399"}, - "excoveralls": {:hex, :excoveralls, "0.13.1", "b9f1697f7c9e0cfe15d1a1d737fb169c398803ffcbc57e672aa007e9fd42864c", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "b4bb550e045def1b4d531a37fb766cbbe1307f7628bf8f0414168b3f52021cce"}, + "excoveralls": {:hex, :excoveralls, "0.12.3", "2142be7cb978a3ae78385487edda6d1aff0e482ffc6123877bb7270a8ffbcfe0", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "568a3e616c264283f5dea5b020783ae40eef3f7ee2163f7a67cbd7b35bcadada"}, "fast_html": {:hex, :fast_html, "2.0.4", "4910ee49f2f6b19692e3bf30bf97f1b6b7dac489cd6b0f34cd0fe3042c56ba30", [:make, :mix], [{:elixir_make, "~> 0.4", [hex: :elixir_make, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}], "hexpm", "3bb49d541dfc02ad5e425904f53376d758c09f89e521afc7d2b174b3227761ea"}, "fast_sanitize": {:hex, :fast_sanitize, "0.2.2", "3cbbaebaea6043865dfb5b4ecb0f1af066ad410a51470e353714b10c42007b81", [:mix], [{:fast_html, "~> 2.0", [hex: :fast_html, repo: "hexpm", optional: false]}, {:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "69f204db9250afa94a0d559d9110139850f57de2b081719fbafa1e9a89e94466"}, "flake_id": {:hex, :flake_id, "0.1.0", "7716b086d2e405d09b647121a166498a0d93d1a623bead243e1f74216079ccb3", [:mix], [{:base62, "~> 1.2", [hex: :base62, repo: "hexpm", optional: false]}, {:ecto, ">= 2.0.0", [hex: :ecto, repo: "hexpm", optional: true]}], "hexpm", "31fc8090fde1acd267c07c36ea7365b8604055f897d3a53dd967658c691bd827"}, @@ -51,12 +51,12 @@ "gen_state_machine": {:hex, :gen_state_machine, "2.0.5", "9ac15ec6e66acac994cc442dcc2c6f9796cf380ec4b08267223014be1c728a95", [:mix], [], "hexpm"}, "gettext": {:hex, :gettext, "0.18.0", "406d6b9e0e3278162c2ae1de0a60270452c553536772167e2d701f028116f870", [:mix], [], "hexpm", "c3f850be6367ebe1a08616c2158affe4a23231c70391050bf359d5f92f66a571"}, "gun": {:git, "https://github.com/ninenines/gun.git", "921c47146b2d9567eac7e9a4d2ccc60fffd4f327", [ref: "921c47146b2d9567eac7e9a4d2ccc60fffd4f327"]}, - "hackney": {:hex, :hackney, "1.16.0", "5096ac8e823e3a441477b2d187e30dd3fff1a82991a806b2003845ce72ce2d84", [:rebar3], [{:certifi, "2.5.2", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.1", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:parse_trans, "3.3.0", [hex: :parse_trans, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.6", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "3bf0bebbd5d3092a3543b783bf065165fa5d3ad4b899b836810e513064134e18"}, + "hackney": {:hex, :hackney, "1.15.2", "07e33c794f8f8964ee86cebec1a8ed88db5070e52e904b8f12209773c1036085", [:rebar3], [{:certifi, "2.5.1", [hex: :certifi, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:metrics, "1.0.1", [hex: :metrics, repo: "hexpm", optional: false]}, {:mimerl, "~>1.1", [hex: :mimerl, repo: "hexpm", optional: false]}, {:ssl_verify_fun, "1.1.5", [hex: :ssl_verify_fun, repo: "hexpm", optional: false]}], "hexpm", "e0100f8ef7d1124222c11ad362c857d3df7cb5f4204054f9f0f4a728666591fc"}, "html_entities": {:hex, :html_entities, "0.5.1", "1c9715058b42c35a2ab65edc5b36d0ea66dd083767bef6e3edb57870ef556549", [:mix], [], "hexpm", "30efab070904eb897ff05cd52fa61c1025d7f8ef3a9ca250bc4e6513d16c32de"}, "html_sanitize_ex": {:hex, :html_sanitize_ex, "1.3.0", "f005ad692b717691203f940c686208aa3d8ffd9dd4bb3699240096a51fa9564e", [:mix], [{:mochiweb, "~> 2.15", [hex: :mochiweb, repo: "hexpm", optional: false]}], "hexpm"}, "http_signatures": {:hex, :http_signatures, "0.1.0", "4e4b501a936dbf4cb5222597038a89ea10781776770d2e185849fa829686b34c", [:mix], [], "hexpm", "f8a7b3731e3fd17d38fa6e343fcad7b03d6874a3b0a108c8568a71ed9c2cf824"}, - "httpoison": {:hex, :httpoison, "1.7.0", "abba7d086233c2d8574726227b6c2c4f6e53c4deae7fe5f6de531162ce9929a0", [:mix], [{:hackney, "~> 1.16", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "975cc87c845a103d3d1ea1ccfd68a2700c211a434d8428b10c323dc95dc5b980"}, - "idna": {:hex, :idna, "6.0.1", "1d038fb2e7668ce41fbf681d2c45902e52b3cb9e9c77b55334353b222c2ee50c", [:rebar3], [{:unicode_util_compat, "0.5.0", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "a02c8a1c4fd601215bb0b0324c8a6986749f807ce35f25449ec9e69758708122"}, + "httpoison": {:hex, :httpoison, "1.6.2", "ace7c8d3a361cebccbed19c283c349b3d26991eff73a1eaaa8abae2e3c8089b6", [:mix], [{:hackney, "~> 1.15 and >= 1.15.2", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "aa2c74bd271af34239a3948779612f87df2422c2fdcfdbcec28d9c105f0773fe"}, + "idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"}, "inet_cidr": {:hex, :inet_cidr, "1.0.4", "a05744ab7c221ca8e395c926c3919a821eb512e8f36547c062f62c4ca0cf3d6e", [:mix], [], "hexpm", "64a2d30189704ae41ca7dbdd587f5291db5d1dda1414e0774c29ffc81088c1bc"}, "jason": {:hex, :jason, "1.2.1", "12b22825e22f468c02eb3e4b9985f3d0cb8dc40b9bd704730efa11abd2708c44", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b659b8571deedf60f79c5a608e15414085fa141344e2716fbd6988a084b5f993"}, "joken": {:hex, :joken, "2.2.0", "2daa1b12be05184aff7b5ace1d43ca1f81345962285fff3f88db74927c954d3a", [:mix], [{:jose, "~> 1.9", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "b4f92e30388206f869dd25d1af628a1d99d7586e5cf0672f64d4df84c4d2f5e9"}, @@ -105,7 +105,7 @@ "recon": {:hex, :recon, "2.5.1", "430ffa60685ac1efdfb1fe4c97b8767c92d0d92e6e7c3e8621559ba77598678a", [:mix, :rebar3], [], "hexpm", "5721c6b6d50122d8f68cccac712caa1231f97894bab779eff5ff0f886cb44648"}, "remote_ip": {:git, "https://git.pleroma.social/pleroma/remote_ip.git", "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8", [ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"]}, "sleeplocks": {:hex, :sleeplocks, "1.1.1", "3d462a0639a6ef36cc75d6038b7393ae537ab394641beb59830a1b8271faeed3", [:rebar3], [], "hexpm", "84ee37aeff4d0d92b290fff986d6a95ac5eedf9b383fadfd1d88e9b84a1c02e1"}, - "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.6", "cf344f5692c82d2cd7554f5ec8fd961548d4fd09e7d22f5b62482e5aeaebd4b0", [:make, :mix, :rebar3], [], "hexpm", "bdb0d2471f453c88ff3908e7686f86f9be327d065cc1ec16fa4540197ea04680"}, + "ssl_verify_fun": {:hex, :ssl_verify_fun, "1.1.5", "6eaf7ad16cb568bb01753dbbd7a95ff8b91c7979482b95f38443fe2c8852a79b", [:make, :mix, :rebar3], [], "hexpm", "13104d7897e38ed7f044c4de953a6c28597d1c952075eb2e328bc6d6f2bfc496"}, "sweet_xml": {:hex, :sweet_xml, "0.6.6", "fc3e91ec5dd7c787b6195757fbcf0abc670cee1e4172687b45183032221b66b8", [:mix], [], "hexpm", "2e1ec458f892ffa81f9f8386e3f35a1af6db7a7a37748a64478f13163a1f3573"}, "swoosh": {:hex, :swoosh, "1.0.0", "c547cfc83f30e12d5d1fdcb623d7de2c2e29a5becfc68bf8f42ba4d23d2c2756", [:mix], [{:cowboy, "~> 1.0.1 or ~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}], "hexpm", "b3b08e463f876cb6167f7168e9ad99a069a724e124bcee61847e0e1ed13f4a0d"}, "syslog": {:hex, :syslog, "1.1.0", "6419a232bea84f07b56dc575225007ffe34d9fdc91abe6f1b2f254fd71d8efc2", [:rebar3], [], "hexpm", "4c6a41373c7e20587be33ef841d3de6f3beba08519809329ecc4d27b15b659e1"}, @@ -115,7 +115,7 @@ "trailing_format_plug": {:hex, :trailing_format_plug, "0.0.7", "64b877f912cf7273bed03379936df39894149e35137ac9509117e59866e10e45", [:mix], [{:plug, "> 0.12.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "bd4fde4c15f3e993a999e019d64347489b91b7a9096af68b2bdadd192afa693f"}, "tzdata": {:hex, :tzdata, "1.0.3", "73470ad29dde46e350c60a66e6b360d3b99d2d18b74c4c349dbebbc27a09a3eb", [:mix], [{:hackney, "~> 1.0", [hex: :hackney, repo: "hexpm", optional: false]}], "hexpm", "a6e1ee7003c4d04ecbd21dd3ec690d4c6662db5d3bbdd7262d53cdf5e7c746c1"}, "ueberauth": {:hex, :ueberauth, "0.6.3", "d42ace28b870e8072cf30e32e385579c57b9cc96ec74fa1f30f30da9c14f3cc0", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "afc293d8a1140d6591b53e3eaf415ca92842cb1d32fad3c450c6f045f7f91b60"}, - "unicode_util_compat": {:hex, :unicode_util_compat, "0.5.0", "8516502659002cec19e244ebd90d312183064be95025a319a6c7e89f4bccd65b", [:rebar3], [], "hexpm", "d48d002e15f5cc105a696cf2f1bbb3fc72b4b770a184d8420c8db20da2674b38"}, + "unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"}, "unsafe": {:hex, :unsafe, "1.0.1", "a27e1874f72ee49312e0a9ec2e0b27924214a05e3ddac90e91727bc76f8613d8", [:mix], [], "hexpm", "6c7729a2d214806450d29766abc2afaa7a2cbecf415be64f36a6691afebb50e5"}, "web_push_encryption": {:hex, :web_push_encryption, "0.3.0", "598b5135e696fd1404dc8d0d7c0fa2c027244a4e5d5e5a98ba267f14fdeaabc8", [:mix], [{:httpoison, "~> 1.0", [hex: :httpoison, repo: "hexpm", optional: false]}, {:jose, "~> 1.8", [hex: :jose, repo: "hexpm", optional: false]}], "hexpm", "f10bdd1afe527ede694749fb77a2f22f146a51b054c7fa541c9fd920fba7c875"}, "websocket_client": {:git, "https://github.com/jeremyong/websocket_client.git", "9a6f65d05ebf2725d62fb19262b21f1805a59fbf", []}, From 7528a7e447c2a30cd0ea9c87a10dcbb6d0dcb711 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 15:34:20 +0300 Subject: [PATCH 061/141] pleroma-fe bundle: update to 938887ef91a12dcaaaaa0884af4e76abd1c6c679 --- priv/static/index.html | 2 +- .../static/font/fontello.1598361006087.woff2 | Bin 12536 -> 0 bytes ...1006087.eot => fontello.1599568314856.eot} | Bin 24524 -> 24524 bytes ...1006087.svg => fontello.1599568314856.svg} | 0 ...1006087.ttf => fontello.1599568314856.ttf} | Bin 24356 -> 24356 bytes ...06087.woff => fontello.1599568314856.woff} | Bin 14912 -> 14912 bytes .../static/font/fontello.1599568314856.woff2 | Bin 0 -> 12524 bytes ...1006087.css => fontello.1599568314856.css} | Bin 3736 -> 3736 bytes .../static/js/10.1c5cd5fbe554eca63dfe.js | Bin 22666 -> 0 bytes .../static/js/10.46fbbdfaf0d4800f349b.js | Bin 0 -> 30691 bytes ....js.map => 10.46fbbdfaf0d4800f349b.js.map} | Bin 113 -> 113 bytes .../static/js/12.6619e0b2f854637e76d4.js | Bin 22115 -> 0 bytes .../static/js/12.b3bf0bc313861d6ec36b.js | Bin 0 -> 22125 bytes ....js.map => 12.b3bf0bc313861d6ec36b.js.map} | Bin 113 -> 113 bytes ...4f0e3e1a.js => 13.adb8a942514d735722c4.js} | Bin 27095 -> 27025 bytes ....js.map => 13.adb8a942514d735722c4.js.map} | Bin 113 -> 113 bytes ...3a99e871.js => 14.d015d9b2ea16407e389c.js} | Bin 28304 -> 28256 bytes ....js.map => 14.d015d9b2ea16407e389c.js.map} | Bin 113 -> 113 bytes ...45fe94b8.js => 18.94946caca48930c224c7.js} | Bin 28414 -> 28359 bytes .../static/js/18.94946caca48930c224c7.js.map | Bin 0 -> 113 bytes .../static/js/18.b29eedabe76445fe94b8.js.map | Bin 113 -> 0 bytes ...18779f03.js => 19.233c81ac2c28d55e9f13.js} | Bin 31593 -> 31472 bytes .../static/js/19.233c81ac2c28d55e9f13.js.map | Bin 0 -> 113 bytes .../static/js/19.ed1cd5db596618779f03.js.map | Bin 113 -> 0 bytes ...62209a143.js => 2.c92f4803ff24726cea58.js} | Bin 178475 -> 179190 bytes .../static/js/2.c92f4803ff24726cea58.js.map | Bin 0 -> 460544 bytes .../static/js/2.fb3f90b584362209a143.js.map | Bin 458701 -> 0 bytes .../static/js/20.6d311b830d8ac672729f.js.map | Bin 113 -> 0 bytes ...c672729f.js => 20.818c38d27369c3a4d677.js} | Bin 26374 -> 26280 bytes .../static/js/20.818c38d27369c3a4d677.js.map | Bin 0 -> 113 bytes .../static/js/23.2c5f0fd2f2acd04592e8.js.map | Bin 113 -> 0 bytes ...d04592e8.js => 23.a57a7845cc20fafd06d1.js} | Bin 27732 -> 27669 bytes .../static/js/23.a57a7845cc20fafd06d1.js.map | Bin 0 -> 113 bytes .../static/js/25.365514e44606a895ab50.js.map | Bin 113 -> 0 bytes ...a895ab50.js => 25.5a9efe20e3ae1352e6d2.js} | Bin 28110 -> 28038 bytes .../static/js/25.5a9efe20e3ae1352e6d2.js.map | Bin 0 -> 113 bytes .../static/js/28.9eb3e783aeba24c84f0a.js.map | Bin 113 -> 0 bytes ...24c84f0a.js => 28.e0f9f164e0bfd890dc61.js} | Bin 25289 -> 25157 bytes .../static/js/28.e0f9f164e0bfd890dc61.js.map | Bin 0 -> 113 bytes .../static/js/3.7d21accf4e5bd07e3ebf.js | Bin 78761 -> 78760 bytes .../static/js/3.7d21accf4e5bd07e3ebf.js.map | Bin 332972 -> 332972 bytes .../static/js/30.a9377272337674f2dd05.js.map | Bin 113 -> 0 bytes ...74f2dd05.js => 30.fce58be0b52ca3e32fa4.js} | Bin 21107 -> 21037 bytes .../static/js/30.fce58be0b52ca3e32fa4.js.map | Bin 0 -> 113 bytes ...d548baf0f.js => 8.636322a87bb10a1754f8.js} | Bin 21670 -> 21604 bytes ...f.js.map => 8.636322a87bb10a1754f8.js.map} | Bin 112 -> 112 bytes ...2c9050c4d.js => 9.6010dbcce7b4d7c05a18.js} | Bin 27113 -> 27050 bytes ...d.js.map => 9.6010dbcce7b4d7c05a18.js.map} | Bin 112 -> 112 bytes .../static/js/app.154c25316542278028a6.js | Bin 582127 -> 0 bytes .../static/js/app.154c25316542278028a6.js.map | Bin 1486592 -> 0 bytes .../static/js/app.55d173dc5e39519aa518.js | Bin 0 -> 582581 bytes .../static/js/app.55d173dc5e39519aa518.js.map | Bin 0 -> 1487987 bytes ...js => vendors~app.90c4af83c1ae68f4cd95.js} | Bin 304083 -> 304082 bytes ...> vendors~app.90c4af83c1ae68f4cd95.js.map} | Bin 1274957 -> 1274957 bytes priv/static/sw-pleroma.js | Bin 181581 -> 181672 bytes priv/static/sw-pleroma.js.map | Bin 696306 -> 696306 bytes 56 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 priv/static/static/font/fontello.1598361006087.woff2 rename priv/static/static/font/{fontello.1598361006087.eot => fontello.1599568314856.eot} (99%) rename priv/static/static/font/{fontello.1598361006087.svg => fontello.1599568314856.svg} (100%) rename priv/static/static/font/{fontello.1598361006087.ttf => fontello.1599568314856.ttf} (99%) rename priv/static/static/font/{fontello.1598361006087.woff => fontello.1599568314856.woff} (98%) create mode 100644 priv/static/static/font/fontello.1599568314856.woff2 rename priv/static/static/{fontello.1598361006087.css => fontello.1599568314856.css} (90%) delete mode 100644 priv/static/static/js/10.1c5cd5fbe554eca63dfe.js create mode 100644 priv/static/static/js/10.46fbbdfaf0d4800f349b.js rename priv/static/static/js/{10.1c5cd5fbe554eca63dfe.js.map => 10.46fbbdfaf0d4800f349b.js.map} (56%) delete mode 100644 priv/static/static/js/12.6619e0b2f854637e76d4.js create mode 100644 priv/static/static/js/12.b3bf0bc313861d6ec36b.js rename priv/static/static/js/{12.6619e0b2f854637e76d4.js.map => 12.b3bf0bc313861d6ec36b.js.map} (56%) rename priv/static/static/js/{13.c843797f3e374f0e3e1a.js => 13.adb8a942514d735722c4.js} (95%) rename priv/static/static/js/{13.c843797f3e374f0e3e1a.js.map => 13.adb8a942514d735722c4.js.map} (56%) rename priv/static/static/js/{14.71f8caca49093a99e871.js => 14.d015d9b2ea16407e389c.js} (99%) rename priv/static/static/js/{14.71f8caca49093a99e871.js.map => 14.d015d9b2ea16407e389c.js.map} (56%) rename priv/static/static/js/{18.b29eedabe76445fe94b8.js => 18.94946caca48930c224c7.js} (93%) create mode 100644 priv/static/static/js/18.94946caca48930c224c7.js.map delete mode 100644 priv/static/static/js/18.b29eedabe76445fe94b8.js.map rename priv/static/static/js/{19.ed1cd5db596618779f03.js => 19.233c81ac2c28d55e9f13.js} (96%) create mode 100644 priv/static/static/js/19.233c81ac2c28d55e9f13.js.map delete mode 100644 priv/static/static/js/19.ed1cd5db596618779f03.js.map rename priv/static/static/js/{2.fb3f90b584362209a143.js => 2.c92f4803ff24726cea58.js} (97%) create mode 100644 priv/static/static/js/2.c92f4803ff24726cea58.js.map delete mode 100644 priv/static/static/js/2.fb3f90b584362209a143.js.map delete mode 100644 priv/static/static/js/20.6d311b830d8ac672729f.js.map rename priv/static/static/js/{20.6d311b830d8ac672729f.js => 20.818c38d27369c3a4d677.js} (98%) create mode 100644 priv/static/static/js/20.818c38d27369c3a4d677.js.map delete mode 100644 priv/static/static/js/23.2c5f0fd2f2acd04592e8.js.map rename priv/static/static/js/{23.2c5f0fd2f2acd04592e8.js => 23.a57a7845cc20fafd06d1.js} (91%) create mode 100644 priv/static/static/js/23.a57a7845cc20fafd06d1.js.map delete mode 100644 priv/static/static/js/25.365514e44606a895ab50.js.map rename priv/static/static/js/{25.365514e44606a895ab50.js => 25.5a9efe20e3ae1352e6d2.js} (96%) create mode 100644 priv/static/static/js/25.5a9efe20e3ae1352e6d2.js.map delete mode 100644 priv/static/static/js/28.9eb3e783aeba24c84f0a.js.map rename priv/static/static/js/{28.9eb3e783aeba24c84f0a.js => 28.e0f9f164e0bfd890dc61.js} (87%) create mode 100644 priv/static/static/js/28.e0f9f164e0bfd890dc61.js.map delete mode 100644 priv/static/static/js/30.a9377272337674f2dd05.js.map rename priv/static/static/js/{30.a9377272337674f2dd05.js => 30.fce58be0b52ca3e32fa4.js} (93%) create mode 100644 priv/static/static/js/30.fce58be0b52ca3e32fa4.js.map rename priv/static/static/js/{8.5f48d6f0cbed548baf0f.js => 8.636322a87bb10a1754f8.js} (84%) rename priv/static/static/js/{8.5f48d6f0cbed548baf0f.js.map => 8.636322a87bb10a1754f8.js.map} (57%) rename priv/static/static/js/{9.a95fcd286ba2c9050c4d.js => 9.6010dbcce7b4d7c05a18.js} (96%) rename priv/static/static/js/{9.a95fcd286ba2c9050c4d.js.map => 9.6010dbcce7b4d7c05a18.js.map} (57%) delete mode 100644 priv/static/static/js/app.154c25316542278028a6.js delete mode 100644 priv/static/static/js/app.154c25316542278028a6.js.map create mode 100644 priv/static/static/js/app.55d173dc5e39519aa518.js create mode 100644 priv/static/static/js/app.55d173dc5e39519aa518.js.map rename priv/static/static/js/{vendors~app.bc5812c087f5dbcb914d.js => vendors~app.90c4af83c1ae68f4cd95.js} (99%) rename priv/static/static/js/{vendors~app.bc5812c087f5dbcb914d.js.map => vendors~app.90c4af83c1ae68f4cd95.js.map} (99%) diff --git a/priv/static/index.html b/priv/static/index.html index c850e8756..6fa237768 100644 --- a/priv/static/index.html +++ b/priv/static/index.html @@ -1 +1 @@ -Pleroma
\ No newline at end of file +Pleroma
\ No newline at end of file diff --git a/priv/static/static/font/fontello.1598361006087.woff2 b/priv/static/static/font/fontello.1598361006087.woff2 deleted file mode 100644 index e9991e4f9e302d419650796bb1fed7727f050c7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12536 zcmVX0RR9100000000000000000000 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 O_)Bfa*Q=-l0002yM?)h3 diff --git a/priv/static/static/font/fontello.1598361006087.eot b/priv/static/static/font/fontello.1599568314856.eot similarity index 99% rename from priv/static/static/font/fontello.1598361006087.eot rename to priv/static/static/font/fontello.1599568314856.eot index f25e4b7e439ee9b34742a65233b62240d65a636f..1a6931a0eb07cc24d512dcafb2c891f0cbfe033b 100644 GIT binary patch delta 57 zcmX@JpYhCo#tAme&N(d;?O!ps&CuDb!^r6^-IC)R&u{aUft&dS0}$M<)v|}tn*)4m FgaK075}5!1 delta 57 zcmX@JpYhCo#tAme%`)dE+P`8>JixPAhmq4;`kYL2JipCX25#mT3_x%@Yo9)h-W=dl GBMbm(s1wov diff --git a/priv/static/static/font/fontello.1598361006087.svg b/priv/static/static/font/fontello.1599568314856.svg similarity index 100% rename from priv/static/static/font/fontello.1598361006087.svg rename to priv/static/static/font/fontello.1599568314856.svg diff --git a/priv/static/static/font/fontello.1598361006087.ttf b/priv/static/static/font/fontello.1599568314856.ttf similarity index 99% rename from priv/static/static/font/fontello.1598361006087.ttf rename to priv/static/static/font/fontello.1599568314856.ttf index ccedb3fa10cc7a710555b3584861d8a324cfdee0..7954644759a21507582b43e04f155f2f139e63ed 100644 GIT binary patch delta 49 xcmZ3ok8#O9#tDtgZ8LN>ws3k&x8yj-^V@u7;AVco00g&dwd`T^<`v#G!T`3E5J&(3 delta 49 ycmZ3ok8#O9#tDtgi3fN#ws3k&pOa~h=ePOFz|H)E0SInq?bCz diff --git a/priv/static/static/font/fontello.1598361006087.woff b/priv/static/static/font/fontello.1599568314856.woff similarity index 98% rename from priv/static/static/font/fontello.1598361006087.woff rename to priv/static/static/font/fontello.1599568314856.woff index de9dbbc355d0f7da38531b271f0fa09eff5539fc..64f566383ab933c9d02a8b2c64879722d6f2c83a 100644 GIT binary patch delta 67 zcmV-J0KEUebij0w!wE6~001@`hL|j|%t|yVEzcLn^V@u7;AVaS6k)hst7Q+P|9}0T Z#8SbW4&-t$Fo8q?d_4^`0JA?e0R`8R8;t+} delta 67 zcmV-J0KEUebij0w!wEA0001@`VZaQr%t|yV=cYf7=ePOFz|H&uD8g_%Yo9)h{{QuV Z5=#YhI*`l3zyuNn0GnwJP_sWZ0RI01%*uqg)9t#1{*n32gKcX z6>>XJ__zEuj-n>4Rg#Fx(Xg}s|L@6-A%b<(vTEBQ!4>HknxqmIL?vtpKHN^q3X&Sf zsX2o__Tb*CGmWN}!}6gjGWnMY{slU#WI9ece= z%B-q^P`45YMyw06Zs+T<1Gb&8gpn^JdJt%?oQWM;Vx5mTTOx?mU)9I6{`aPRJLcZ| zUbm!goXd6>Ye(}x!mIuY-x#av>4_+Ukc^CwDBGAIrN{_!=Iy7JWGAz`Qc{%kL&E_Y zVE!;omO}M%UZ0nJk*?C~O<>0@+fHl`LZC=#KJ4ML0dTmch0vFTjvZWwY8E|^O!$$c zm?s$E-PXUyd+>1a7|PQGl%)*^!{;JXmT0IzPcn2Tu4t&FWJ*J`Y)Q1y_EPIQ&)e0% zvs-#)eZS|~ZM&g2mi86maogV;jD1x?uGVZ71emu_FJf_8N{*BG*53NH2SE>u(6Q2o zEev2zrhXAC;iW~OK5d^Agf=S~`59=}KnJK#Mv#o!PeFV^c%>|At$A>+Oj5d(K27+J zn-mVPPY}DYP$2KEi`|Nl1q?DpLEEbkvfVJ!f35U7{Rq)V#)y*rxmn>Ug*GqV1U zq)*Z(!NOSnAP8BXwZuN@kSZW~OfuxG3=7O%fVoPaqDxVxEOOFsS*GstTKeCJf+_E- zX&o%daZh`Utva#xGTb&WY5}Ps^j{%63r_Ssz+p*V?JpQ0fy>(1p1$R6NLiWueuV;2 z?4AuA?#;^L-37#@2O=>jR*NF%t=lsPNU*2u1HjJjiFr+BX6iM$_J&%AIc*KP!YKWm61cJioAyE$a|=X ze1O`>7pRN;hx&vJXh_I|#)LL#O6Y{** zgyXV-L38oD4iBIEG^bOe+34+;=*_#bzheCyJ@n&5J3F)elT<6DyE*B*cEVD$EX!E% z>(Nr>r`thmxdXep7PTdbs;kv8a94Kh&u zMh_WTKoP1ERwiJYPY3%f!Cx>U9~)F?gkGJ`{&Bjj4KPWHsW_I0;ba26T7{`mxb6uJ znxTXbYdc7wnKT|;vqmMBG^dgSiINuKIZCu)Bs3Wwwtrr9b#3Aw2y8I|JOAygqa*A`p4<2#L}0;Jgb}w zV-&2B8PDFw%KwJxVt&upj)dj0=1qL|?%sC3ZnGWNiVDN-55hE6fGJ?IG@CrrQ1uVQ zPy!B2NcxkNa2EWYDnIHoarE{^KZIQwFg~bH-h|#K7!((3uxV?UH)92CHUu4b*dya( za~oDFS?~LZNrFb`rW2wSFb3rto_?EKtH8))DChsy!j?~S7gB>A6{a^D9F`(DDFYXk zz)d-Ls0?1JfRC!+rvd_0;|8$;7qpFngvd4tBZ3HJ5Tz2tD2F(eAwd;LQWa8EK$>b+ zXP_NXf^1R795v|Q9MIds7(EtaQHmn%ly>Z7&3?7bGjItQY?bGdTuPVtldaa5&gH}UI0fxi5Uvu#v~1j5B6k&$ zS;K@td<5osZb;tE8^PwhL-PDm6Ms&fN$_CfZo?VE$1nwTfJ@Da!luUrcS!eytldzv zLJ}Ts#?%ognnU{QZH5uaK}&%J!?+x7-?g0$uC1L$NRY)?VNbYFvXiHdUZZ9?e2=Ym z%)5tve-$B<+g9|l%M-I2V$v3cR$CM)yeqq}NNN2^X1iN+emWc79;^f@=8oUShc~q~ z$NUDjq<@Onbq1JQF8{zo(6AQ8NGxhv39oiI<8#va_h*$);+=T-vD5Fh3D2My6Kd5=%647Ql-v!uJ7-=z$3$OH^3yL?SDcVKoR$ zk~J!chcfI20U~=;*zZIl2bAG32uzV9DjatrkrT>r8U#k< zj0)$SNaTX@`b*FvvAjC6=~Zplqz^X^ECMos+h`jT?gDMN547b2QeWV4Ne7++9e56O z;3d$3*Ckze3v}T<(1njccau;2)Z~~~B*L#)e37=Vk8Fugv$6`R0!-dIm6X;oE<^j6 z@7uz5!2SU=5g-I1q1fc*@)ek+1b<4FYo{b5l}m`f5ZVD#?On@{HWbMV(}!P#pVz~! zbtC24L-#v?rQ0hiSf;Ul`lu?#joR7mW4nv0x zU13ad+b&39`W2ZiRuW?@^-S(~f>T`e>t)?*L*khrgp3zex%cR{=p9K5Om^Ye1r{YH zFKrc8X^Nfw?J?!V*OG-_2U_7p2RcOq!^D`HWKpzgE9GXr9sRWg_zKz~TYXTphj8U8 z#_D>1lWR_u5#kksECzM#vxyGuW(f;>0N1r%tR-k*x(O5`b5T|G1~c_y6tWD~_)##8 z^|~NA@*>x4o3xBsi}NnLG*W4XbHF-VKF7&S3T=#GSMX3cZ@V&-8Uu1zHRq!B^ltG| z>?Z|biHrd^%0ZD~s(arZ#~Oc)vT?c!SYDf@9>0@L4Ak< zRx*YjqEC=Yuj0zTLWtG`$rR>AhLZ%;oC7=Fje#8Be1s{VA}8}&wje}b`-`@Rb9K64 zN?e@n6@>1ELhFGH(=;k%!MDk+i9f#@kGHbt3hm9&y~&vImM02Z>8t17pO2FuA`MsX zi1^R^Mx2T)+1v+qz$hrp?U0&uaO3S%j&%wfbVS9&?l?DZ?-W~)&0#ZuqD7Eg0iY(v zsvTb2QM=d92vzpw71X8BoPxXS{j+K0KS4X`n96IogpweF%7_<8pb?HRF*-kHeed2 zP^9l(3mp`#-{0_KfW<>!zqk1O)x^hHnEpW-kk6(OxJL3O6mGiP`N#2{GdaF8xJ|bD z@~U}!C^D7!K$I3M;i(W;PQ9QtQO-fPJhDu!^SpipZ6PPZYG?^%Ob9;@qPdh@YDpZk z$XSN3+qO}8C^g!cRghX3WAHcw=6K~t?64hFOT;A9XS2<;{5lj_2npPxC$O5oz zm9hiNC~FakY_o`kgc(LhIkTRitTw28dYO9kr64ipFt%bp-!w4r8xjz!B){3%yyJ0J^E|&Hqdd=5Xx)=d48T|pYJcott&dq@ z9aZkOg|3UZ2FQtdG1ejyco2=vT)N=@EJ~#iWxmKPQ{yq~8P9Ys49_O0u%-$!Xsz=E zWegRUvKAx5Ov^yeR8x2*bbA{YAvjUOW-;UE&|-W zo~h6Z(d19LHgh}n2m$ft``iC~ zI$8c`7f4_N>?0vQH&PA|}}Zl{dH$|Narnoy@j&PAaQ zFmRUmy6Hu358yHCf~JzFTMd~C86{!w8e(epEeM78oU2a-^9UB-4?j|(X85D*!2s1OYuVH z1{DF<41Mh{tp^dZnO4#M%206r0t>O2LhK`X?RJ6HkI7@|u`=NMh*TDeCUZIOI6_G^Qt zrnwakdYoYb*!>TjKpmPA@12JFF-3X z23bnEsiLDYsNuoEgN6qG%(7G+}?r|@%5QCF|MTb zY|v@o^$hI={KUssq9Iwba2^FP!=A+@N|6RTkO?@zXF}kRZmgkUWwfe&mL*Yvp*Z?tPR54r>)6VHs-; zTVVpevtz^qW9ICHb6%E)sZP&JqG8WC3HS#A(;}Aeo$2>eJ;Yiih|d9TJeMO;`iB}rvN1eve_~-e{8M_HIE{Cz%}A`v)uU@?H>Ur{k?RsfZmCft z{x??!4kSr-`{A$VuJ`Q?mIQ;jUq(A*pLnD4#*#mCz-USE#2rT_vuI-ITfs=B>4JVC zkCKN4L)%#bZ%w<}e>;Nx^OzAxuHP;s;G2)BIlhXJq!^I#!1n1Z%N*-b{qo;`3OE5H zk%ZXEqBGX(q4m0Lnr~)%aIDFcg_gLl%bI9up{RO?p-4|%yOgHe6x}~l6)dwqNQ$D| zFtpX>Iz5=E>~^>MRc86BTtB{Xer@KC976y%Q~SmP$##uEZCKUp^}Zm{U)_tcZ+~I0}wR*UX)wj)NrBbH+K)FY|VuICXQ6;R%MZycOe8R1f zd}kDzK5G8_g^thc zNPDC7eBe+6?J*TI)ntk{D5T-T(y+QiP5b<4%HJ4aroJX^M<3hEuEi$EbVnGc-p&)c z1bLrMvFGlY+JjxQsQiTs#RFzt*b-o7#>4Ye4?I0RnenUt)ZoKdw!hyyX|K(;&9uG7 z?(v0@SoY(GU-}1qi$yx;E``6=GKWR}$=$s0>ct=VHBYOb{=~m_ap8}judm{BJx$*j z4(9vHPUIj1>8{1dCZ-Sw1r0V7_igGOxgI{yGqRgQ4B4J3eYC4=an`Q_ntDdw48PGk z(iCc@*`BF<(pRmC3-Hti!zQK(#Go7-&8)&VEYA5op~hbwvNbKYt;khV>E}I?US6*C z^D_05sMQib@5Li9m|XqxVsdp)hA*OyX!k{S8-(o+Y1Wy=XU(mzjvbSQe3#)1ja-yp z1a{a-IeA+%7M#EmXNp+oh_yt?SWU~q%toIN+BDT^<%Ov+>aw!G&gHdsRJq-sf$k%Z z-N!y7yZ3S{xc$j-Z@*oxX*Rl3s%lbQ;913f+q(Tp=b`;dTZQ5XkkzayfBS7sZn9Nj zA~u-_u)$1hG!vnY7Nohf3O#vYah;i_{nlW37qMn3_8p_@ZK?DYYCnQjUa{pUa_MGm zYEc|b+gx|*r_B|#(q>8v(w$a?ZW`T?wbDQR8-pPL*_fqhIY!kt$1+-wehRJf^))%k z8q}&&DdK4O-dFQ$sz6J-wbnQi1Ljie>U-5iMe2_5j_sv-sJ>J(hvKO170byTVnTA4 z!ZKmxCA4cXu~#_+dUlp(raeQ6q1m&m-E)O0RVDWvJ$a&w*9Ez2ysL!;n-LkZ*Enw! z6hO-%f9$AK>vUS^9dpt2w82mmGN9ECgp@$5qoa-zA8!_2-mlMYk{{FS2b%8p*v(w4 zjIf4xicG)!qSQm}0Cs z@)szmLy5FG`4kVtO=So0in2FRJo$jAHt(kEl2T?vP5vc7%i>Sp;G#EHemnx@qVgB< zXCLN90afPrRZfZJVyB3Jr$#>A!X`W^Cu1YMz&g|*IlJC?P6p-zSOk-oG;93dd+=(Zz zaYDj`7WO>bSD)_NC`_u3zn9dqC_gKW>*3Bsij`^NoHVgm898%hjI}sFa);lGPpp<# zru(K)*;C7-E^>7owMnNjJNy&ne{iDL0css!;Apt%AN~MqVEz<;5>(r>(6jJ?xZiu7 zyH-IE4Ip9g|Lly4J!izQ30TGU8X0RV4;}jW$RV&|EfX7Gyx<9Q<0E_BgC8AhUSXg7 zz`pJQ`DN3C0XtJbcksa=926odQ5P^^t~c@hN-YRU21^ftO0xoPATdEWJX|J&VVFdL zDD?VPC2Ydv5ZKTMsQM&AIEYPhP(~>%Yr9Ax14wcbA6VTToT7Rlib!}WfNM=8E{JLN zG66xyDx9UF9D!3#q=SPt0vPs899YB9LQ0|u3As+_*yhZd271d;e^NO9~WD0fQ8{cBhej_@6; z3r&=?y4v4lNrymIVxXBM7!^n%xSL!@N8C&%%nAa@tR%`wx~NA8vPe{r9=JsWikM}7 z$soqEOZoO=G%6QPqzkol5F(LCd{AN+v`3I(FlLbcM8XgNQh_dTrCo|)5KOB}O0t4= zs`57y;Xnq10xEHS2&C}lOQm9;`Tg{;WRLxbukZ`^xM2DAq8y;w?H+Qws=#n9 z%hk@@d9KK5Q!tJ%kAhH-+-l{ycvkMx&ZUE`8IF7%^YI@yT{o>GZLYS;95oHJvktL$%w4PU+ zvelCsLpGq|Cip4;`NMpKPe~Zlg&06>kZbo$ouI+|$3Fo|zobqDK{S5+;dan1PUmfK zYZG{{+0jRCYEyl_WPC`UsJ4)z(sJmcEHPh=IV9Tj26w49u#$fxyQZyAZ<7RTCAn

x9UrG7npgdk0UxH;M;z;=}z9?)nA$BK?SBh7{bm4t8U#D?Fo_G5k=nlHGG8 zH8^M@t!C|55p;q*0S^riWu-yhpp`22c&OC1_*+b3?U!Fpd|8{g@$A_j!1EXD&wcle z3hzjfY^WETx7)oj!7O-(%){o4)F-2Ib9l^ry?rWr-emN4oMKPc*L$OmRi^nUZ{8fI zVt`7)$rK;t)%dF8UvJD&u~+Yl7IALxEp+O*PieU$Qs-W#?4AeZ1rRDK|E# zU#iWMej(N7EtU8Xn7RA;yBWI2nYzVFaZxCNm^`}=7sZm zY5uYeQiDNS7hQef!g6ULvDaYO510zZ@>i)(*VUcYUI))AH#BIw!9JzO?l_rpo7|n* zU`xHYnD>pPtu}RSifWB!9lVX2A(iB^m~dI#3Yl?5%t}eQVSh@(@eXG1-_mo5M^cl% z#ul`vDb!kvxFAyY3Jc7W8FgVAuI|bv=DB}T=g6z5vM{o;wKjEKin9Bj?Nr^9<4%~+ zl4s-)Ty-K~*4P4TSe4wGu$&yFGTa=#g4`=I{~zyiE4S|u)Yxr)U3qFF}p zv>eYP3oYRLLg5;8y8Qgj!bbiktR=YA*iQSJVAu-yQ`=}9XJktGM6Xu=#Jg1wRYdh5 zyLYi(>SYTfqg<5exn5RgvuWwLHA)O!E8Pc7Vw|g;`c3 zXjf-v7Y+4afW9R7F&2y;u<20wuMBUrjDeZ~G=qkF)uZKVKLQBQh3Tbg@Ip;kw*8X< zu{BOheGe-tu6P}U^YOgKP z=V6)AkGGvRi^^VWX;bL^y0NNlOaIErTDvvw&S^dnNDDlWv-x19;eOk$f$R@^=GcC7 ztberDKgzbZ0s3Wzx{QUdzJ32>u27@c_$YCt$vv&Eq4P1hM?DMUfk;cucG?!y#QwVEb`R){O1bS!<{t) zwqo|U>+TQ762csu4V z`+A8U@9o<(F#a9Wi2cjhe7wD` zdpO*yysP7V$FcKV&Q8k`zlA?vau&hZO#{ZVm2px@dH1p7MbBIGU$=4lBpY5Hk zow?b6Cuaf~Vl#t#N`r-?hYLS*y4T3?3==v$?>8+P(p{J2C}D7d1{(UH<`i-F5^v5W z?((XdgH<($YifWD#P7rM*mV7wt51(TS$;^ux9SL3VFO(?whTabE@>5RjHct_4U`yC zqViw4C?3Gw^MfMbbVp}L@*i9dk)c!-H+~6Fym!O-$UPEghcg>pYaeGAe;N_!$(NJ5#4Ueqc!0{Y^UQrdWdw_+I+gwxZUr%+6$5Y#}jx^zi^x%CYI*<&|zwJ}f{^jr~_ZmrZ4^dDDCo;#0%R&Cpw=xi0q{IVCBn z;aYxF!>AEHENs^wDS9@6J9E1}L5Lq0ned}$ zO#R?#rW>(}u_YrH1VWr)_4^+wzxNUQtX)a;_w|0sb})|5lDyM+?T*9+n%ce_ufFb+ z69mA(1Yyw=(nfES4**%`CHJ(=J){qq-nD;~<%~voyYZ7Z2g?(j_+m%Ir%op%G(AD1 zfR}YFfLNfpV0l6M!=IzAjfMH#rd~3dXD!^bxV=ge#5m{aqW%I4;!t& zHiP@dH{5IQ4=5S<*7Zy0Pjw$X+_`V(jx8;X_Vu<(YjMHK+#Ed~j0jBPayI|P;wacL zG5d&en-t{@?o?pcQYp@8s4Vm^IqB~c%k4D^+#iUc?R%6b@5bY=`;>_oAcAv{gQ1Pz zj+Marl-6|MM3zn5=}Hc!K}|nzBH(PF+7f}KO){3OP!~6C(vB;Eiu;o>)jKvOp1`|P#Z|Nir@0snj9k3!>*{opA^NAdq} zUOurd(U0gLItttLVVoL&PfQKWDF`FUC;#q74iD{rQT_=cL7XHa#M*;Jn2s7iZdRLV z<;EfVbys&gT`m3yc~%P>`&z(0MX`&EXa^2ok@?2soxnqLTG1Qp!DF#A(fg*qRrOod-(es6d6U>M7%CWghBjDa*4OQ3;7oAaa%;1^-~9VhW)@@a zn>knweOUE*1iOZ=<4}2!kEIDBIrlm;nh@7Djsv|R(wN3@7}lpmY{JxDu(NIPxAo52 z%MEXnpWEEku;^r8Ejy<#$>q|LpeAV>&_0^#n-=_ba(J-2y}7=$xG*<0IeLA3FoK&q z%T|Q)(Y5ct^CR%98n2bT?P#7{h5D9eH2h0h@*h$Cz!gtv_-tz%GP^LFUZV1%^1P*j z4{ugSR?mq7Rh*EC5GJBEX8@YFMcd6~8}e0aEuO-{SM*Zc?m_Sbw`#5#70X@UFN=we z<4lN|hEl7EM8E<!+Qu%VTMqDVk|%c8pH^IAP) zwAvKi4(}rz^5a*GxY`w)w?A`eI4QCwoq89ihsfWjhf?2_U#(S>2P+}euXO9Bh{e;Tzp?+``e|az0zaNH3wQN;QIy{ z)E8Cw!&Ft3x)`2)6Gz~PI5I&Xcm+5Q;7sKDv@jC~fDImz>sK&- zS&7Hi0r{gBCvn>%1!1v>wfyEb5zIm=vph3C`NN!mggwAi0IQd#b>itU9xh_@cJ|YH z5MG-)NuVcYrsqC8crWmbx%g()u6v{uF9Ti3079K!Cs z7X_&LOzrIU4Abzoy2e^L=uZh(^Rd<_;}``CJhDP*RZ}jtg5*yH5a{WXQZ_Loa z5PO88O1ra9tz}eviiZWkhbpX-S<}Q2`vo1NH4u#xQ6*QX$04e2+}J@{XDypdI)8n1 z`3SEVjW0tqsbG2+@uh%y$Xvyow6y9BwFHFyBrgC?0tP21vU`N^O&!Jm3BUBBwG39 z@ztta^Oo+N_TIwZCGA~%K;fza`0S0#dB5#DS1;xhQ}K#33NCT+vwa=)U+6pEps_vL zDQ$f?MbW*5jSFpT%Rr2q5u2ISMw^x9o+CD^aWfSv=`K(7h`y)yIMhauoqYG*;{43? z#OQW7AJ@IBrxPV8Nrwz{_KSI~0R+Hi!R;NNzQ#>0-{Sn72Y7b2=uNlN=6K)=e zBLmecS}Q@+u>^b>2E$f%nqj+if3k=YRj!JTj;MMNU)`(vUuI7{9H6Jr?R?B$vM2mc z9s7$r#;csXXmT>*3Y>)Wqga&(iyf7I)$B$y^@}DCs*Md_+V@hQHf75EB}cucUK{J? zqusiDaH5OREoz7y*~y=H7Ry?TZNL@3TDB`QybL#}u=4Q!Ly*vrL^Tj1Oc&wmvSd2j zQV3`I%DMaO$L5cNwFZDSUPdBwOftsoC^4r{qb)YQ(5RI`L+(~C6B0(! z<#JnBQ~gwA+-wP_wZjUPOzqdy17p4!iavg>qNuEbT$`CHQwXBk-H9(9iDTf_v@SF& z7Y)bFE>qmQ*oYp6l2TjuI&y_GrEaVI7Mt0=0e~;5tS6;q^*^)1(#qP7U3>N&ICNyO z+UyRe%kA;{{DEL79Erx_iDW9B$>#EfVyRrI*6NLBtKI4L`h($!oNyBIAIHLke<)F} zPVs2|K%g|vPAk*&#x&H726Af&95Fvvxg!|GWZML+LkZ}^dZc?r5z1XOaVJRCw64m@ zfQzW!QnW1=a)ZB=fS}|(dq{+kw6ODx+Z@ZPt$l!8l!(%pBtkP5C8Adv8pcfstipF&%*X8B!!!sGx*gc{&Wl%9zFw(;i%>tQ0L*LlBi1%ol}49o8!#rS3^{4d+~4 zLtEIP_GHzSVfG125vLBO5)7Yp!n+UVfqifHAzLk)OKRGifI_& CT6|{! literal 0 HcmV?d00001 diff --git a/priv/static/static/fontello.1598361006087.css b/priv/static/static/fontello.1599568314856.css similarity index 90% rename from priv/static/static/fontello.1598361006087.css rename to priv/static/static/fontello.1599568314856.css index d6ff3f7185b116db2c28fcb6c8b4c7623a5a9095..e636286c091a3dd370daafac252bc334e971d850 100644 GIT binary patch delta 94 zcmbOsJ41GY6PKl_nT4^TiG``zL?1O|UX2|x?}!N!Z!#035i-|~(G-chxt39y7XU+Y B76JeO delta 94 zcmbOsJ41GY6PJatnW2G!nSq7*L?1O|UX2|x?}!N!Z!#035i-|~(G-chxt39y7XUF- B6`}wD diff --git a/priv/static/static/js/10.1c5cd5fbe554eca63dfe.js b/priv/static/static/js/10.1c5cd5fbe554eca63dfe.js deleted file mode 100644 index cdd1409d92d9f6a689faa220599d3f8e109a6ca5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22666 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 PH_Ov}|3$mM%GUn}?V2_Z diff --git a/priv/static/static/js/10.46fbbdfaf0d4800f349b.js b/priv/static/static/js/10.46fbbdfaf0d4800f349b.js new file mode 100644 index 0000000000000000000000000000000000000000..0fd8463dfcd2856fa235d677b063c9e014df7f20 GIT binary patch literal 30691 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 Q-~Il7O%GqyhpTk`-&buGd;kCd literal 0 HcmV?d00001 diff --git a/priv/static/static/js/10.1c5cd5fbe554eca63dfe.js.map b/priv/static/static/js/10.46fbbdfaf0d4800f349b.js.map similarity index 56% rename from priv/static/static/js/10.1c5cd5fbe554eca63dfe.js.map rename to priv/static/static/js/10.46fbbdfaf0d4800f349b.js.map index 5cbfc317fe4adf48ff76147c7f65e11e9e8cbee4..bee2feb10deab5978aaa828b3002841967175ec6 100644 GIT binary patch delta 46 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 V{kd$m}Xl!9-m|~WiY;2aKmsPB!qg0$QOE^T3O D8w@86 diff --git a/priv/static/static/js/13.c843797f3e374f0e3e1a.js.map b/priv/static/static/js/13.adb8a942514d735722c4.js.map similarity index 56% rename from priv/static/static/js/13.c843797f3e374f0e3e1a.js.map rename to priv/static/static/js/13.adb8a942514d735722c4.js.map index a11c0ac7c49253dd7992acddcf085a6265afb44c..2b8ff6d6cf07c1e746815a9e97cfa5470ffcffb1 100644 GIT binary patch delta 46 zcmXRcoZz9En380XXlY_(YG{&TZft69WRz^8msPB!qg0$14$ delta 88 zcmaEGhjGGP#tlumdU^RJ@oD*`c_~&(uDOYsISTou3VHdt3MuNPC7C&y#fc@Ur9}#v sdCB>Cd8K-j8*-0In;WKCBqt^(nphfG8Yfy>rdpUA>SYz{RVwq%=nrLWdVql(XY+;$KmsPB!qg0$s8YGH1umsPB!qg0$EOshhJi9NDCkj4V@AQxcO>&CN_qOw&>=O_D71vWoR`6AJ(mNh1LO diff --git a/priv/static/static/js/18.94946caca48930c224c7.js.map b/priv/static/static/js/18.94946caca48930c224c7.js.map new file mode 100644 index 0000000000000000000000000000000000000000..ad04b99ab009051dae79b883fffd15d5cd57bd5c GIT binary patch literal 113 zcmXwxI|_g>5C!kDb?_TB@ffyZu`E#%G!Zx2h<7(4b^~wTTyUD5ZSc_50yrEy8HR2c z1$bP4Tyfj1pVI&!V6uxz#1W&V+;Lv2OiL{rLPDu@T~Jj?YBR^l{+fLV@qOP93lAeC literal 0 HcmV?d00001 diff --git a/priv/static/static/js/18.b29eedabe76445fe94b8.js.map b/priv/static/static/js/18.b29eedabe76445fe94b8.js.map deleted file mode 100644 index cb2b7292102570b00e0502903fa0d39ae1c742d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmXwx!45z$5C#8b&kaFQKEqWUT9&k-m2SC+e^(K=N#4A<;6zW_S!fFeL4sLIBUuJK0Ze%(l`SvzT<(P diff --git a/priv/static/static/js/19.233c81ac2c28d55e9f13.js.map b/priv/static/static/js/19.233c81ac2c28d55e9f13.js.map new file mode 100644 index 0000000000000000000000000000000000000000..cd3f7354dc25962615946baee3911fda18938ef0 GIT binary patch literal 113 zcmXwx!3uyN5C#8b&yuJJ*=KZ(4zgJorQ%wb=-)G<+rXPQ7o0AWj{!QxfZ~zS5p=`I zAlUuK-KONjQU?GAv)^1LDzTi9 literal 0 HcmV?d00001 diff --git a/priv/static/static/js/19.ed1cd5db596618779f03.js.map b/priv/static/static/js/19.ed1cd5db596618779f03.js.map deleted file mode 100644 index 8e7846eb38b0897625fabd8e5b1b80f5cd3c988b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmb@a>ka#RoUl>TBA%R#lBvfFuJb=V?Q#M%2i|zBB z@0{~}_xQf|YhZ0XP;NFL>fUQS6lhXpn;(t}V#0|PB~YAC*ABRDu>&CCyp$h(W8wkl z(D61ma{QSI$+l$hNkJU8G*43+4n z!4qNL=7;(Rgp!zWM{jVgO!vz2gYMDa#~`3cNK9%dmLT-{9yTtp{%q&NNwOhnKVjn8 zCm&&|$E#S1VR0WDibR+L?^GMCG(g;&*bdn`7fZq`*h7;_YAUjW0_=hTiR=3 z&6Wt7RAzOeX0RpgwX-I%r8L%1Axk7pH_{0sjf?b`x1e3YQW_By3RT|{BE+(v5BgXi zYtm<+91b3nWto(OefTjs918u<7-oqH;;~S2dgr$9RI?aa%D-*i79DiH__4!z^M!^; z)hN$)K8u)G=KMd$$efYQdH*o!S1z~fzBrc0Ca1AVcvC_GpThoSq=znXi=E0g&PV~cd&GBrJm>GWl8rmMEv#%jUR$sE0YnbW&#^Q@Mwi0zU-b%mSgs3njL z&S84t3Rm1!n>0+KYr2a3du!8fk2@KxCHc!p@PREWc)EW0@Iw3$l%~Y5`CO>E6 z$3eocve0PEJ#91|q~7krjoq?=q!zEcYh~RZ9o72v!C{Tl`N=rvb-4JX5F*kBs${-1 zYllep?;zM@Q56DFwKb&Uk4>NuTj5gODMc??YS)>0R&q|}I=syV7$+4uuhYpA(A(9J zDFcc29)>F>XfwLjJ8;SimAI!KDyY347OWuC4^5z2L80fGVXA+hn;m5|;-55PkLz*O zJXmOU4%XUh<;Y&su9l){y0#95a***<25RWLFAy?s2R@Cvvv8ShXJ>fM{GY{Mx3*Yo-*?)rdaK`C?A81IM(etFe&4=Knj??rwRWpdwg2hWdc6;qYb$I2 zdjFexo6}JP0K5HqcQO6(KaYd@ht19HtzT-mkz8%eX;^;_Bc?xW#LIfJ`b!OKwUvuG z4M$MlPcC|k_k(`Dcb>E^&o7$o+FkFQQpf(<!Hu-~(sBY~0%B%GI24 zvj(<`)`>M;UfGy8>Sg;rX|&FVJ&YDuN6E(WJj9K*TO2L$$!x9H=S-$oZ`NxNU$cJR zY(N7e&jFtLJa|T$P3)$&ay1V>lUSu!uMN75{)<>-@%}0?kk;3heueEO_Eo#wp10(0 zf$RJN**oYUOE2p^1M)Iiy_}2wf><`$Fbd>&$LpIHzk(pYoGvCUVgIInZ|GReez_1{+FJURmCJe= z>2D5bwRW@JJ#Vx+gFah!_S-?Jt*y@!gt<0j?SFA-?ZO+$+Ps};+Q@2taj~*8XY}4p za@l?|?W5a9DJeV}ZCqSk&ecT865csmo`_c^8{eN&0_w+r%}I} zHw~#^-K5t)?a-NYTZVM?Y1>uGM|zri3`!mm|gz{jEq|W6MK3KYTn+}hoz0J zdAjAKNw(Vk##N&xJ*DNIi(i`IcsIW`y@~yN*to3C(_TmBc2jR+px`RINxJn*w8486 za(=WgZZVO6jUKSK@NVIFGo$O5&{XW=*HARp$A{JA>Q|P2wr%=L^PAn}ug!OEpC6XD zx8~UdBjhn|o1<-CHM;k|Mi~VV)1H3AY;#?GxJ;Jj*)4M?iO1!<-|lyQ!z|^z`8_0J z0R0AJWs{??54FpSc{=%9uqB&hjyCbuZa!>nZvTp3qd;5vhu?tyLU+Gms-yjVSh`%D zXU@&?D9t6XS&iqm#0mk&se@m{IpC zso^R<<@S7ER58kCTgG+0RqrOvUsnL~9sJtT zj`Z+hrM^60%OBSxL)dY~OnUY1V}oeqVyK$_{h#pS*W^!r++Rb$NDr7fqoRIp4_5dw7`SLv4Gmi#6}2F8ZwJ z!au#~dVo?q6d1lEV8tIeM@ z)r!4a@JcB>b6L08ZdxYLPtUH{Z3d3!wzf`~`Tu_ZuU2yJiArKYV1+!+&qLDEdAI&B zXmso6=aiD8G-yhVZty?(F-cPa7N>jtN-hG*$c@;Dk0jen)vwc z8~u+Y+BEB3p8GEy^}91@)#Sb6XBbxBhNd-`(N%6?vFV%PLMq4;P-gWC&DzLqg zzv^f>8w$AcnM z-Y3n*tG!R#sOQIf{VP1bt99#1zg}q)J@-|Vr|lfCti)cgk7KYFHxq-4nNXJW`&~h4 z7(ajHSFPEo-SPKa#pjxIB_w9?^Sa)TGZN9{MLCo^1r!&EmDXB-%OU=UWi$#8{8CRR z?Q;96)odq5LG9WgOks3NkaGmkjSF0W8o8ykj?=Guahg&`p`n?-tU{-myzuLyeW^bQ znGUVX_@>d+DBb#f`>~!r(eX*+zTO^aO?*Q2ZhqDB#p(N889&RAm(#lA>?F~SnLyEx zb^qO}Kb0-j=%jt%6Y%*7oOiu`yQ?_~>;!X-pV{(jHR79k?e3!e9LnVb<>vquo%Xl zPNhLs+_ZcBPLh~Ko$oKFs3@^Sorm=(QB{{ zSr4m{s(*{{Pvzt^}_w>fx6I3fQg_nS7C zY!*iG0yHd2H+lN(k^-pA3kQCfgeA+;q<#M->ZBt6I$VR6 ziUJrTKPQc?Dqf!b^6tEp-!7OAhGViOhDVp{)bLQHY6zo^R;@W8r7nBH4~NQo;!#6o z58is1V>yDHvDc#o**L>4DC#xaTL0rLU2>mnNeaRr(TE_7x?S4{Ac$&ROy{9W!)elN zQszV=POM*gZ}#%eYC}Br=R?~uo6X$Y7Fpc6$6otB|Jdl|-u2tp*T$>(;R2blJK>Z8 z7=ITvMb*7f*2`vO37{j`8htzRoJ}xGAf-f;kWgu~e5;Ve^6B+z?GCdBmBPaLfPbze zMQcG>820{$l2QKdmDl=85-C_sf;hTx1Y_FxH-)0l* z4eo_LBc1c1QY#(BdC;a+ztpx*n|GbiH((=vB&Hg@%6+GAGG04jsK~zT65b@4M=_5P zhpzh6kyLeoS?}V784mkSn3u~^;J+)bm|>1?d4u$1-}XA`dIFH-lJL38U!$h>Gx)tRl zy9)1VomLnMTfHgtKb*s$Yu1o$1FKZynSX8EYH_w!WsR3CGiHJ$00h%+KDsQ}Z$D|f zvGTk?)z~f+Q}{+R8b*YKDM6aYXgxZbQjCg)o+z^aL#+i_`-y*r=08ji{G3lR@I}f8 z`j3OBoi_Pmj1c!*tFI3FS3TcPu2HU@fuHZhavDZDPRlS&%`U_yZAz!5+Pin+@^|#e zpJPiNkQ@+IWcJnMoPv;AkTGRSo@KXe19v)`-J_E=;+r;-yih*U26=MTkPgH4G6;lj z))`DGQb2X&eHh?4DD(GqlpsV}XzDW&8!PyzzjD5?G#JD61i5}4nNBYekeUsgP|vSNNafzzEL3ZuBlDrOeASI@}}?Q6pM6T|QafpnjHn_p4W zU>nqyj2vp)m-V_7vTnW8d?{2hk|=;jwXtV2Cf>2|Izmyu{ALsEblXIy-OV5(p<&xn zj6~#Z{y$H3Q(MuF;qC@K_zT8`7DV+5&xSe-at&ZRh~7$M zos1TbwN-pPf2;w}{4v%c2c8-&h%wcI?c@W6+G2$0U>Bb>`ZmeY&PJq2J`j99T9@9` zJAaHy&0;Z9wqNh+xKmU`vRxRr^(%BZtURSSO$AUlZqt6jgAquJ<6*KjT%Sp6j#6x+ z7llejjpR(w7sh4EWtZ*reFkbd-|uC+@E9O2lrePK_4dP)FZ9wGf{0|N;J~uGlgFfC z!j%$yCqd1Jtp^z}_CO~oaO}IE>rd&j0{ih$kV4Xrn1Jn;Se3Il^h$-W5GQTydP;23 z_gc0NSY~)Ux-S^2P9|SNLE69aH%z;u;X^m9Eb7rw`dc_2(O6hqU>bCM<_7;>p89fx z`2~(v4i~+r^DI=A3f4qNy$o3N>i!VWUU&dAB|F@c!k=7 zj5ktfgj_63XTqewP7W29QX-XzOnOfteN@o%~y{JgM*$Vl(0acQRfaX3ciyAuww3Pft%8LE7FNAft7P;}xoknZtl-c~+7Zq|Kpa z6g(p|RDP%&mC0?TS5L|X^0bN z?g^uXH$F^S%>ppi{-9@Zly*ioOsL;&OH(i?fR~^6UvwXbr*%xtG))8b5}(^iIRq!mEttEa51 zVjDp3zNQcDG?<{*Q4hXIPQUI8EcrlFsPQFKAVd$Syu5z$q@j_&rQtG#c zzWR$q{xWACXD#iF*N9>~)W%Y2Y4EFg19T_JB8D4QFFfQc3`a-_eb}hTw#Qn^9FJA* z+qaFBvj~vgHq3(Yn+S{x!>t7N+bRG>Z2-yMTU(yoz*oCoa28p;<6I{LnMt{4rUMLe~%p?^?6>iUDhzDev-~wFIbaKq>>Fks=Ux{p^W-+;AI438NW2&y1cv0j`RiLA zX_G|z0|ZhmX8R*>3y%$O+(?>#q*9vzrTzTFH8*M~*F(}ZjC5g9Ov?JfV}Qu;@Ic#~ zl(wT5#mbCKVfsn)l2fxSL{){a^i}@1b~QtE(#dHDAbUULH-~L6ZA&-V_-Pf&Zl%xN zCg*hwB!0ch{Z1#Lan@oyYnoh0wB*Sd)%2lZH4}dBdQP$L$IW)Ta}0m9M6j9N&xnUl zvX9NdkD6h-vPsjACkOlAKznC|#gb~gzvr+L&&@8HIA))XpJ z@8mJ6ug;8pNm_LxEO3`uOd_7W;FB*@p{Y@6ZXk+^PokW?W4S@}>p=ci`Oq|Mv0%)t zMUHMW>GbLc&QVgD2`B}({`8k){h+?OKa?Rm3FLp+I&EE%RMImo+V}@W5w8$l(!-Vl z;!QMcY8xZO?T!c}`#siw(tJu@ddDCsfR}EVlV6OrM>J_t`;1wt-z1NXu(6Jnh7B!s zFlr5h7I@;G%;BnPs>RnMjqwk&^)-*R;rCLLX0&V!RM}TrwH;JbS=Cxew^R(bSly@y z{8SwhbCTMP5_i(I&Xw%7fLu-pJoQkVYjp_!3zK00$18Mjb2%i>CpWxl!8PjXT<<#CDt@fqhj{kdG)Z> z)Z!~~$ZGWVS|H2zYPuBmxhZJJ{oD16FJ!poBN+l0w<{=cojLnGhS+al0P=HDAteGA zK`5h-tF9^g(@UTo#W;!$Lm}#sy3Xu5wqt_M0?mH$*LXNolarsK;?oVm1qyRX^Lh#i zNayJf%C6XA1Oz`zZ4~Fk))CHd`#Nc!uuXZ=5(^Z>i@7dh-Kdg{QG+;$c=F6`8!Zx` zl)W^p;$fTgxrg=H?@2sl?HfvD8QD*B(4+Hb_qWhS5WB{mcA3kW=cbP=W1qVBi88JT zA6*^{e;K(J(%Y$1cs?&Y@wVR<(`i30CW(&;%2Ygvb7+Gy0ESmx^lV;~eTUoIi z6_}}9zqI6*S}HVbhN*x$^z8oh(cw8r43RQhPTl4AST7sTnJJtxThe+VjE1{Lq%?fk z8InNo(C13LQ(&>+p`OaE^l6~9o?PATwFvR1{=DM9AR8Z#QmIxwM6QO{R110fBkMl$ zviL~j^K;Ri7xRPoK*$a`mn3`lPRM=t&X(%kI~nKi-sy#DR30-zdm@)IrE5oDKao=- zpG41NGhGFANLK-dey3J@uf>@x6D3&;>54d>37|$VHlvD8jB&&o`OZh?TzHj#pqX1| z{BYn^f^->PYC}O&=~lTH{JcTy(Hjf_&4QmvBFxx7R?352io@R^?$qXddCPngO|Q-$ z-WLZPfqmp<@sY-!Oc(NFc@Bw$Ak?>W%Se=ihj(oK5S2C<`O7{XAAZgiimkk}EC77b zZ>yPi8Tybh@+H--kwmUF*bk~cik1`4lq7-9k{T&?H&gJO6d)d%ZSh^~UFJU#e?oUGOIRJu0d) zqPA`&6|8Fd_blluG^NM-eaA5s%tsRWP=3DoMn#1H=W!-pLV*b{bsV0*l6xaw439fZ zLvNjz*{W@EC@@)>d+w^;@bw)5X6u@&`aK+1PeDkAcVFe0!H=eK^fn#yc>nO^eDCwe z%GbS<=yP1*_2HK&-aFZ=9P`^ja?gs*eWHuoe7P*MML*pJ zm4aZzp(3R&Y=*x&(B&`U5dEV-ik$VeLjc8)bPU6}ksa`ux2ddsptg_P7C{dXhz3wT z{=58Z3f=p{4=b;XP-4rX!Po_8x@mfCeERik<@3q;x60S!J(nn9s~u8s*!nVp)f~44 z0)OpPXQ(hFE_B7u zPrgU0iX17!H->C`jhdt-3fc?5x&fMicS?+O`5StT!)8Lsg_zxWk5VagM*23vRbJVT zHGbH>k&?o4n$EH;|A;a=_j=^rrV$P8Eh)2F2O=HRb2A(slWrrijVeH_EJohT%ywNT z6lA?Mm^bGko(WUwdPeGm z{OzyOms6FpfE-#mSXSDW5+U(9d;&qit6i~OJljq)37~;tp_L_mXk-4C4eOR5*-v)U zGOzL2>(tF~+Zlq`YvEVGk2}ikp+*lC*bZFyWRFAb13C;ZY_LloY9HyuaM_8RAfP-f zYZX;vL~Lc{nul!IbP%3v9;a2SY%(so{7}d{hz<`_@15$JR+#bY@F{C)%af`@Q0uS? z%~Kbqq1}ZQIh(#n&JYAA6tQ)2IQToR z(nkKHFukkmtdf2d-hpJ$Xg$TkmH#qC`cFp}zvWpQYn~SJ-mxDlS_flPrrOyXY9=Iy z^wa3v@SyjUgXvjGKmc$``<-*2cpx!)8I zqg0SwUKbLCsdq72Rv3NkZ2)0nd7-80RO2Nh5LvCzXZCx%RiHJiF-9-AA4`cm5B{Uj z+Ka*f!-olV!Vq3(Yz(s-3azYUWHwe72FrdITA_N5K9BT4jTFcJYqb6sSti3O+2d%v z6GO|e;_!L2Cdxw3ZE*$<4^!$4y9@PHFr{t=nW!x5I4hmfY6xbb*|2!DT}Ti$dDCyD zPt$4*Cy>^hG=ubA2CTy}Ry=i-5!|N@r_bWVjxmKvgon}IL-BA5xq>NmMR8K>F_lZ!#rOeT>CZx&v~Z+ZhqxR~^rui=1pzVX&%*l# ziY@K*r%-;=xV~xfztn;3_v9L(`>fX33T1Bs!V1rYK0ECW?q><$@N3fBv6)+&Y?9g2 zq_zQq(EFHdPTlig&;$S?|5)fP{~`=LS~RtO03lz0DjWy(mQMPmb@e#0U%eQCBQ2U* ze*_NIAA>{wq*77O&AFKNIN7fwE%R%Pk;H^vCJr8)S=mU&!G$U1dg4^{HD}9bz?0UP z1y5RM7CdR4(l|VdLjB>fQiO-+B(Q|7_8*NblpsaZXk4*k%Syn&v1D?KW6JhMrKW}= z^S$iA-ibv4&93yH4V;lA&vG?@5lOC#^lU=Ab?Av8epuU^;Z_;L(4YnP*_UACF6R{lv7dthP@KC$)x%*5`U8oNJ9jT=Ud z&r_-K=`xC*E^WmY>;I$``^Qe~?qd|)eY6#O-TNo4*fkTo_K7|Iqb9b+{;_ptE7tw~ zPg=2uCAKpDd4FAwch;BxGh12D1>^Hi3dU=R@#^YS!MM?3Zv11**6IGE=GOQWMU783 zv*+r6gdqQ>-Rz~$KFvQiwVOxneNpre(XF<=AVt2o6#4oenb_aNX}!VcDB>TR+UDcu z|H$0_CS`x6jsCyUj%{w8hxnf~w|h*U`-;tMdFP)rvFnE&G?9lLo7y89_diIAY`|+9 z&T5@6|D=gM9b(8F+LA5)vnICB#P)q+2mg^3`DzYLom4V(TLZ`!k_mG=p*9gX_q>#*g) zu;sV$mJGVrE$veMwNwYNrP4)ys+u3~G(Eu!M&d7;Z*;7mC-M95Q6vLm_XfamUma_7 zYB1SDdaLYz6Cl;9{yp5c-)HI{qz(V2eWe?#(I++9+clap=Tvm1(Q#v`7qD{50^F4B z=}2QI0;5^7=~h2$Wom*~Bg)HG`fd+&8XcLFt@>5KpE5vsu|$>1vAr{AS@lG7JmTHX zc8SUCp4mIiG^&2_(W+79F+Squ4?&uwupD}?z;b14Rz2{pzQ>PoONx30ELEa!k?P?L z+>PQ&EBFl$qL)&Y{g~H=gWxQ5|6p18yu=R(Asq=Ea3I<5$aywQBrhd_h}Tj7RzyEI z^6bGKj(fs2uhr17@Kh3b!D*9=-|Mw$J3$O2T-;zmIojP5-o)7>f7mPW^+te1jZ-a?b_;HK~9W zD)e>(Oo`PsHqnxTFgoWu-~td5S540Z3)R(i56KeX!~kCCt5dR;pn@{ zzpYLYu1h9~ggNV{bNs7i-P6z{MOAfYOPkDDf1 z_Qj(I_*tQ}29kg`$F^(Ls2Oj^#!K~GTGJzxeDuBnkKH4Ew4nE;TR9@)zL;e;VJ$&k|;pJ>lcqC-u{o1Y(G0sUTLL6hZkGQznMB&I|;E zq2#Kh?ucMzVZ@(*r)2dAPhQ*=rO87o`L1ytES0_bxWJG!a{2D>#sx;B^!`Z#;^uhMB?>{-iFftbKs(D<`lfi%&Ks7oX5$=bI#ecDrN~CO`rJ1|r~8B4GFZb*a(= z<&sY(J(o7sJgRP$ zwaAA-JE3;vk$Ratd9Ls~j!eYF(OOA@Vkaj{#8YK$v6au(Ppgve^&rr=Q+f?WEoRtE z;bCkr8dM%@{y3qzard4JmpfpqxwaNnY{T3mK9!qCaYUH^yOgN7v%Bomy>+%>B`^6M8EGPz8W^UGvbeBmM32@UmsvJxD9O%qxXW zNxR=FyIgY=HV@Z4s0~|a41&a_Fr8_93eE~&$MN&sdE}tzCP``63B}`U;V|1;=g+#1@|&x6RiI^9JS$OeOmQy)?6jme!R<9RxF#x9V!f$NWGxRp{4z}+pX_X)eMDZX~Uau zdS~E~+Raiwdt|z&H)W7x%60r)3flG4jxZtDRs83U{@w9@tM@y$C7X?X(Am*ixS7#Y zwWvmb6B$ws?Pcgaqnp!aE!N(dMBk*3ob7Kr2rQt`%(lpW`Amg+bfF5h{l(D=)%ZEa z3X+a5dpXtdHx0ZI9lx=s8u9wh}9A>`9iDA1xZ>xD12XsN}2+F0F`?{cM zs@{ckx6}?}#9mA_4Y^^8s@$b|@*1B+r3!8<%mM%`hD{m>M%~AA4Eswlq z*ITytwDO5;tliBL%1~x^4Jxt?D?8gC1&)ieg^%FSJsxtmM$xMqvL?tbg0pu|lRg8D zAnK+7pHE4;N`29d7a*2!vd;E`fdmMoS-Oa77zTx1_?I1d zws%H-pA0(&wVz6G^F(<=ZWcs<`&%R3cpJ3{LLkVEgy(VRNNQ(nsBKZzoZVoc2Ej+H z!3O)kXEM+zH~|v%fBS2bS^3$?EFp)Mu~3JSYf0N_(Pwj1L2#+K3;WaHs{bh!PIBAdi38Uwh{o&i>;eaCNP57N|1_(ty|lV-TgdCY`yF;Ll;|zCbn8aO5`!BA8(Z$ zP**LL9D63Bn-(IhN?^4n2`t-;U1E7|lvA@yEMiI$eb;lvr6lsyac`%~DxxSuVRb9B zW>i=`$PfH2Mo4SZ4B|kDaWAVBv=L#&W}x@~6~YQnPlS72oD+nVl$W8fTKP@FYU!i4 zNL=R{Y5CXqd+lfWyQc;@VfFBvgw@JNs8x|D^}qUSlR@_UoaB8$_OuGZ>R#JqQCQ(% zF1vsE5jB+--O~1`xPrMe{p4xqJvwnkHqRRstDB?LKWmo&`Z#Z5$)ey zZ&`NHv+{|}V|Oubej4gUOvlVT1|Wu(Bakj%qQ&oo~P%wrd*KT_;-{XxeQrk3`nLn0ab8~kac+KioP@IRO~A4C-z zer~+k@XJkcW#v@Cc7K>?6Mtz$?rGty6%uPwSg_ z)tXnIEW~>3%8DjbSw`S|FDO*&4&F=ET#AhnL327iV{6Dk{VIP&rCTOGk8?jVf%n+mAb8^&o{WpvH7IR!WP3 z@?uF)xOy3}U*2^1GO*od_VumOR@eb*D4MBCRSxi&T+>&yi!*OxJ5zr!Lma( zY>Ka|Q)+9ta{boBSBO)n^Gpvcnk7~3gjWM2hvOTsc)t(8l~yTq8eX0mR86lE%F?xA z1x2rWk7Zf8S6bQn9zFxQ`GSS0wXhcDk01lnx)urpJ$x5o$|uR7?+?&MgT1P`r8`8k zDlCpT;d)Az`xf6C#>Q2^J2sFJ6>!l>^Y`x%vR$`aRQe{c=5{R0$ZC$chwiaykW>-r zjL2KxJjQnx2{vLS5^v!pZ5nwC`Ofz7=+&py{$!ng7kx%ImM0PQKIv(tyzQX@bym!e zVpFEqAa zZNk(*<-E{)+kN{Ez`$IP5nRIb2wMwdxqebl$IsHmuvBZTcJT&#wn+ui>N)I`$I8>-pz{FNDk4cw#F=cO zJA;yzlS~e6R6P0YWpC_0!hPh!eU#so?$mbo3sd{(A^MQrC=sytSUPx*Zuluzbx$(! z69gh^qwgvL52z3ZkdzV>;)89;wDNTcZ#-B#L>NnaT0YYqU{U3{gzs4Ie9_EHWm1OS zAD9m8;7I+@s+cJESibumNqAr#PAzlBG8M@c?R*x$IPKrrR>y|SKvDNIaN$HJ)kAKg z%8q=Q`?#se_vo7IKd3Z1AP!@K$CFn}LY1dt_fMktl)GvH$Kid=sTP+)!eP_%wHm&| z-hQ^(VtHVtbfBK2=%&PY-;sK3)b4f#M0!25-TSEJEv`Sa36leMfYa#1Nw9~iaTJtLUhnlKD&OhpgQr_MTdzegPvJkg`$vPOUcEGiTQ)uDe#kP)-8Do zpt)E+nSiKXhd#;nHGOPPnZP6$8!Txmu)6pB-?TcE@(MK_;tR9b-~&??CC6GIwc7_#_9`_nPTnJm$`@MM>ZX&J8JPPZ(yB_l_C-A|Q!RKC*U9t~ zHG*E$n~r*?FSf6GRE8elo_0C(W_-3Q`Y*4SA99`A_?7SP$+S?=)+n}P(>E;_hn8q@ zE3{yW5htNEsF6sSWFzq%fK_%phvm9Nb5#IzbnWL7Y7AiS!TlZS4ZS>GvkV8n8??xS%w1kyRe_+&W0F9Czo(4p~NA{Ys#TQlz}2uQHELx|guNYUZ4 z`Ee(csUO#Dh!Zb21xO>fUSnY_Zg`Dp8}QT{2j2?bUXxD zxAU-)l?SYyk^#H4`@Jn_pLbJxRabMA%{(;CTXF&(-cK_izjI(jrpafka@d-j^9ZWD zsbi?IPn3Q@41yZ;JVMO2nHiG#YOHaFrRr5No+kSLx5^~Y^7IRO) z7zne&1>02)O>7^FT;f%!RTU0DaHi;?)G=Rk65Ov?+>cxrWv^ZQLBY-VO!trf@nMkj$yF;Y_munPX9IBc&v(rn1 z%A15tVFT*1438wyy1}#-A7Y7tR!@D!`VjC%#x_}l^-#ID1cK!l$B=3n=9n%L(bA&N zYPJ=)rpL?5O^mnXEV?lkx-O&EGLWASYxxnT;y?+$i?>_l7eoXJ$=#6QSF+c6?A&b;WQ1PYBX6z6%&FBE`9RdaEh&CLLxyI zZLo#%ckDK)9YTDxA&sV-Q;p*0j#@Sl(_V(s9H z2t$(24KQ~#?wK#F=03#ZXX*R9kCiR?96A+Erd=Tygsv~FlUrR_HA+pMo^^+`j+Z~S zJUE~>sq1I)P#ui8e(rU)<6FFKW=>GY1bc}7!O*)St{O(t$L;Sn1bxO z@>1M8H2ccTu_t#5E&J%g!uOo3Vsd`-3mu~8!(o|QTkV3&NNKW-f>)@nqbRvv+2*Mq zk=m~rqkTh-JbH~~FGVj-DBP4;mL+1PuAMuEZhU;vJ{`?;j>x5wca9K}f`g<$!l!_QDWRb;B&-FxH6#Qk`6(nk<=G1SFZ@*`405^t=E^n`mMkF#sxW=g zkgei4i7g|I^m@J*F_EV<$Krv9P!=GGkiIj`BbRg01+$uIzr@oVZJ|0N&RF>g2~0@# z)FTVc4t8_UP8M@ICKdvx@V}_U^H($X7=mQH6ES;80=schCglFAaD4jgq8j%&OclLF zIO^Eq*6!~Tjx0qlKg(Ybj&#xZcMHc=vM~NF!tt$g0f&utfo+ougc8N&MY&*`;B?_g zp2u*z1*PrXltFly7zMX|e|m?6k&QJ)*uN$md*nGY_=Jqbkn23UL*O=3{Y67UV6C4* zf~E4M%t%+gzlwyV0usbx;DxBc(o530w$DAZA8R&fOn+GVG%V4zVKzab64T{WdL7jJ%eYbYyBW zA)U=7Ve=Ofg*Yv;SKbey$cB!n6f*;l zDx4{nRr1Ug1GqFFOC1@(#2tZ}Af=YD=yuh?^Q{B3*?Ohdg2g=MP5<6L(6PyQxlG*9 z4QV>(th(uio>Z(O-vzg+0wZ~^=});p?~W{}qmvAk{nZK3&CL6%z@b$os<4v*L;4zIjZ3lO>M`Dr8hlR#kQIGNkLK zyJJom=WIUD127ru`Kd1cr)vqb6=~_zK^XyPU6uebF)Ru{**N`RmKjoTvx~ek(v2k$5=U-DdDp1(|VI-u#yu66ZgJ{ zy`a_nSD{T*3L~0VLH`)q9(HD<&GI=6ZM_U_y8An%Zu|_|8r-#)O3;aDTbYhFQOVn= z?Ov-nRWW&cKbCSiwI3Amr-JG_JV{f$FzNn_;?U_9hFev%6J{?OoX$1?5I?RGfSqU_gT9oapB&7+depx%{(1YF{65HVS7u@w}(RYp+ z^ZN$}rmaZ!RL{Km)?%Y%Aze`L2$>4ggHyi_!-1;_*zqV;<%ni|I_3jI}siKAU+Quo{PZAT!zi)M-E8_u8Ndy zN(gQ8K0TCbo9bb!5El*TAn`B3zt1@!a(!;g_xh`2pu}nZB<~lW`^S){Sq#ds5m{nZ z#RFRhmVZS6qYU-#Hp?W@rCbrnF=W*Vi%x%wj#9c!5qRjavM&!goI?G){y}ndhSNWN zb(s1aiE&Xljd72xmdLvf3KB@VB9}eYJzyN9$juCmg)jF`kWh#V*BKEjPbT=pQuz06DJz6GPi#KOG_nFdz3Y zS?gOG{gqn=Ky<6LsB03-oF+rSlJAqLyVu7-#qAtV;MG8!$|sIaH$B0JnAPsG?rLId zD5|zkl$^GuMw@Vp_laFGs17_=KI6vEEj-C^Vd1$*BDe7EV~N!Yw_ol>pR~q%zQ!37 zP(dD~L5VbdGPKr96PGxwP<%rwl%}QNL;TtNF@c>ATb?;atk9Ol5TZph`DJm_QzrwH zMF$KAm_o$CV*!Dv)>7Lnz!dk%2P1VKD~RaC#j|4IahiKwB*JkB2{)x67UxtH6o>}0 zm3P-YyT$Ugp)gSUO$2-Paj~$DfnwVwB6mN~Go|9MT2|3`v~CTWEUNggMxFmw6@P*^ z8oZ}|<#Am#_fk<3_E}M1(Eo|9CPB+(X)Vz*&3$(DX1Zo$@rkLb71YvBPXpD>hR==4 zOXy#+NRncyG~HTge>K`MXI!)%u3Z39S9`g*VUo3wHDY!V2?_}G`*Lb6$Sc0)u85-A zJI993dk)6+-r|fl_TDff0XH_I_M91M!}b|HWHXYky!8t+y4M2CTEN^IE&P9TMxwN_ zHF}t{MluL|je6M{{;2 zmXufts-Iexa8r{cO&T{ z^`E^HM;k|WDUQ7MPdgZbA{Qa#7?EiPhqjPG34_+2c#|H|VLw;6K;=L$$UO5r3K7c% zJAxl!#tI?i#-nsZBw-78o_MgauVkO$CD75GUs~il1!smq++B&AmTcM@4o!;TaAE)^ zIqX8L8bP9BQki-Av71^CB4ZIqkrz~ z?11IvZ}`?)2xLv)KP{VLs`zCIAM$sTr9;*z_hG_(=55mxF1--uLx7!ORwfMtc2T2* zf;SE`TN_}+`&1i{F1W!ZxLWw}ja0-jR1H?*=_1WS3nZn95bPhL$@_9p3GQ^+F|h|L z?UmB)-<|Ulcs!x<^u?0aknWZFtFhA%l)OWYk0e)$Bm&Crk9AL`Vq+RKYS~eVxl>*$ z|MHa4{554~&i}}iAF?S+f<)aJQ_ixACTgrH4Tx0V<}tLKp{eX7HFNiG5{ZdC^Tw_;uBb%7R>%YgSj` zviL_hL3SAJT`Zosu`K;TDXQ@WMk@>NXUDFU;%^ZvzJh=xJ8b$VEE?XK7M82~WMuEy zVE}iCb_$iu1V6xsMth0JxLID(y}uvTVpms)M~7W+acAAu!XRx94#uDHZs`gwr8lN| zsV&_cKAM+0_@)|h(=v?5E!`D{9?466c4o${0aGSu93nm6V*lD#6>=#8zAG?W`3%*+ z$O#-=QUG2Sj@@F4m{-oPR&=$=m84ByRw4Sjgpwu=h`eZ+UFQ)wp6&Pw!zPsE zv5&x~rsu;o+*=wNgbYKuY!P_F8?@M$$3xFem{yVyKMlUP%bRa0(?Xf>jNSZ)i)zSq zxjPJCuJi)|2g}YFE5`KZ($a0&oQ<_GaCN=-I*IQ}Ka5l2=P7*f0`C+(K7F75Z)1b7 zy``syMF_!9JHFCrYuq6#AvPh^s(3kE&+hblDsj80Ef7mdq>DukIl6ZzvJ!$Si4@4~ zBihIEYwRBZNj06>H&4^&AXW5C>+vx~Nu$@-&4aLgB3=(Jsm@P8NK$y*=Z24I5x0#) z?wkmx=C^dQE7+vTMSmvMQR7dKc4<%evUHj{Ymu$maaa`JEw210QuwkdnH^lfOZqNO zbY|lD;_>Lcxq`318jopsNS|}Z2Q;Yo35%A09B9o>Fdp-*296bV7$|YhjK7hdAQby$ zq?}7+B7U01l!=2hzX5MCzEDz7ZHHr|FB|%X1m`f68Ns9xf7O&@60R-&Eb4b>n0 zb>o{Rl`sVR*C8N;yY!#^wWWI~St7m&XJE7XfNWrL9PBJQwsSTSTq<(2gH0_|9|17d zg>P<&klieWE$*daGrlV|zDm=r32!a@(b|Al9hB>Ds#3Z1joMH8FgXC<-?U+?_a{CV zI=*E42a-Ko`S`O*LJl{>B}Y9=W!D>Gmo09^q+WFtCY7yOePq*@xKB(1`Pu$dw+!me zC#4m|-(C%}RC-bJ=aa3e>kJsV(1_jS$!8pxiH3?#?1pCdU4K^vk0W@9#Lk&~*)SZ` zwcT6%*cM2=bLIjXG0a^MNX-Z{s4>((;ns?*x_ukLj}?Gv4j!`u=xA(3x5H>ZA&Hrl zy)7Xu@{fywU3mB9+CE5frdAhy`)E|SC(uD z($*Di4WHdyS2vG^_PXE{M~J=A=&%onj2j&e^okMMU3JwTOVs;VWpE0I(v zaI}B?UW4=L#0}18cM-XkSTs0itG3qCbb7nXCuG;6D(DYLwruqhkb}3a|gPTNFEdTM7yKMVtJQCB-4CdB2>F5X2}_ zp2?HOm*^dVVC%z0ti7weme-C&rr*@nS=yCVzxi{dIt2fccGCD0yi^`Jig^}YsBO*K z;-Z44nsKwxR@Y^aY6SW@2}^3|89PCtdTUa3+=dCCMN;*4R-MIY#p6srbpU|N8iW=0~ z83=O?D(dmcsItxQXt(iLnTBY!^y{F~eakNsY$OXAt+40ZtIb0#JnbnN8_2G!E%E^NMZtuxv-P&X0=aqML^Fym2J^=~v zTA1rn*#D@_sx6rBqPiTuba$}3&249NQQ2G3f}|eOZRP8YdPwhN?tY6m?J9*Zq)oxo z{kLc{;vrpiPsv|&4f)#Rn2@Hs?K(6eA?ZnAR08@s^|wT zejc9L;miahB7b6S!|91Hrwb&o2>PB%+^~>YFO3t!^Q&Xvn z9RNUE%bN*MsV1exSj&HPtZ35(C$?!HM92ad5ca5LcV-HNqE;f&VA|cCS+Yb!pJ_nz zaGYzgP6MAXc+dHyV4_GDnK9270iM~eCbC6dehX-@T80H<>tuYBGni6Lj8fHfL{D+a zdV{BLhKlPme02iU`0|EttsA6(ISau*gTYvHX*affw+ZGfb5_$@vn!HUK z+t*dzG?X@vfB|tp7?htYX(%emyh`I6#*h(ydc#-{vrOGE-ageSL_N$~S@@JE+d|A8 zt40*yp3R74bvb>+^zE`;M#KXpb+&ymL5?Fs@1sy!LiG&7%%7moOTqxht6hrZcPK}E z(O~kRtWEnM2qJhXgl2vk|0Y*|1OD?Kxp54kjSN2h=6s6Oy~Wbh{x6N)OXTRB!U07w8JCy?p$eum-{Z`<;Tb(FR37kQKNQg$=_WOt zY(WXJJe_gEOC6=g_L-+t(m$_%z%p3OvxXnGLP&(DV&L7(;|vbYme zYH$8CU9Aai7A*4m-Q?QgEnk~YPvYIl+SVz^Y=M?l674OSUU+6t@zu&VZH?SQ3Y(qT zC&Gnn=*d2rf&DEgZ3{coU5xsmCx>k~RL2C=5H5|s+$SI?1en(y$h9A4Mu2!+fv+Xj zxE5l}I*W;+>r`kl;VbuLh2ubui!_=oPQ5F&O@&naH>x!K(?lWuyYb__j@))C>+Yx! z4F)e~O-ccMGqXKB6QsjT~OXl{Y+F_CvEedc3fC+jwkE;6OKUS8&c716T1; z$Vhl7`A5d(9OGbCKYmGAX1+7QCwCPb%`zh0-TCeMLc<%*F1m$jEc`G6cOL1Gry|&s zTL+`?@-Zd>Kyk>IQgie*j*f15QT#bVSw(F2Ov2jrk6gbT>d!_TUw;qZ zx^d-^<(}vcRg-Jqqb?mBbJpQtT_T>05dUfl$wE-OeL^`}v|DfPO59Daj$SS#IJn3b zU@8hEMC42&40o0%fuMTolt(aleN$mAsbfXP@ zuWz_EWA+_Jf5l&AH!n<8$Ayt#nt|ju8iD#0%XAA1GQX?-td2>e?CeK^vQ^0+{mAL% z(OpeK-^1H6IkajhsW=jXMz^}`9|3UgpU6o#}L@;GkM^+{j(dwKN`nx-X#WZ{e_bckH2l3kQn^MePSUe zzhA-@NjO}*JhltW*>dt-&5lc$b`X3%qg%w3L4eI%KQcq2*L1Ux1Sw!qy$$z?UM+am z{>nZvSKvIPnf~LWNG}YEEoMXh=i34uGBBp^uIln_{mc$uOBu-bV+$X!h#?f-70=Q5 zYHWPh9&+bb0g`xOWCK{)5twNy&wtOfo~A7y!#7vUfVp zlp|iDv%H)WvVYoUobYM%oWvM~HBXR5bj*$}!S(k)e%AJslQ%Oybi9KBFMmR_qsL6Md-!h7=JdpJY9zrKYtz*@*d#kdFf)Si@WX;mA?KxA;K_v9PsewD z-6m`;5@6oA=N`zY6=c!ql1|xOQu5OsnyI{Ra0J)A|;g{;Y)Lje__6MJZ{wa z9KMFB8ts}SyWP$ZU-rFgqGNpj=?Iscwk=@V{V@b(%^crys;SRp7;J%El}Q#8p5dnq znD`_N8MbvAuO%_IJNqVbO3lj&3W^ZwGXZJ#`dueQ@_e4_g6O3iLU z;M5WG+Ab~T-vM24iSmwvOqYf$-5$8heO*<)B#F253{K78$@XM!sAG8}1u}E8h(&yY zm$AmIdN$i{EC@_4j);E@0v0&Vbz35f(I(H3U$^u-f6cIiP<^SHZ~MOVYT(*8pwKl5 z`Bh%y>r46E?PKCqznAaU0Ix39-pjteilz9)f|n97nQ8hsT=e=27h)Ff6Le2MkKpFCY2n@Dd%+XcZt8|%-m$Qc zJ4E_N)9X1&Y8s(^HSW`$;v&)arZ*c-G~Tp}^-=kNh6M6URXc^=So?udTEFy=6&fXJ z*(6t9`Pisd**-CUxG`EOUN;ik^DZrees9&oq-zRrk}WJkjks=!v3xc8U@H`L#a9P- zQRRXKO?=aWHWe<`lnCcoFM{y7CHT3zr-YW25k2$Q0QF`(Fqic$H-^NmjRuI`$I+(52rnGd)qLr4qDMPF=! z+_uW*z&D^jn(BB&Hnze`2y4;#vv<8D@wD?82l7k7Q;k%9L&Kdoz?xgNRtf$I9ZIl< z4ja0+luzOv2?h51!XP9cdmKW}%veUijzdU-wmHTf!sQ%)h> z?E7@%;3L#iLsWndFB9NIo5?5#h>vYDO4N5_kR%i&|56-Mhc(+Xj%835K{o;;pQHCA z6;2Rd3@01LQJ<4++;8s_SiQ^7Zt%2SF=5`wX#2 zA#}h%nV+C8S~Tt{WL`}+6;>`x-L=!W(X*pjEOMV_)mxZ$7&co1Oi_cc56mai z3hxxtC{PzfdCi5v#-&14*$CSZo#&5o${$QHdb%=shPI%w$d%wul@3C9nCfL&R>f4W z>vHAp@RpkocB9)bcKJKnxm2? zKH|)F&nSl^la2N1a!FcIyjWVvTo({%yluOcU!~J>LvO(ih2SRJyz=lbJ$SyG=d;&6kWxxzWjLKOX$-{w_~7v<={} zumUK+e-SzO^;zTetKQR)gTP3*#z3I0l)^U**g?itB&;%5j6jY`c0J|$>1wqVT6IFJ zd;UU4^;YpYu^mEjnaZk3zZ>ih?kou3P3X=TlRJE%z~lamDqQBmZ3xe7?zO089k)Zr zk26}mq2rCvvF$;9>v=%WFcF>=(3`x@=pU$HWs-UY{=^yP_uqEi1j1&#JgLi(nvyYh zCE`c0#4-7;u-q-PXQNy-AlC{&u21SQtSB=a0yz;|`Jo3`Y*G?7C-pc|QA!2r=YsI= zhag-fO9{O{TJKMxcP@gkZGTShpag|2bWUPtuJZw%vm_+8ZzEmJ zQjhU4Em0gYuw&1!UUuEt(`Dx*ShL40)oJgy1zfb;XN@$AKXa5{`bq~^gBZ9cxf1{B z6_#BedbxsgcQ5!p8BAL1hMEsj5$Tx2m%e-T!;1w~=UZz(ggQU2+csaE`C-gk_*s`a zqtv~Y1yp_8$Jw~j%-LLgpmi@@xe~Fp5F8r46?W@8{({05mkieBJMV__Hh-z!MP#aa zsyu8^EX9zm79tob2^0g!w~FoFz0wUR7Zw&M*G{{NpV761M@kGo{6#+FY}^fPUc;NG ztj(_Gf3_ORm-zb~=TT5}McXk~OyjEfvu9RGwRdC)<2ExPY|-qPD)ye9x;iT#H)9^P zOn!S&XmPe~MvAIZhqUY?liuV}t0j0d{HJ?c+`rOXTX7h5q*_oGWdrQ4#sjV4CXU2o zvIaRL0JJBoVSRm>5G62=rT%N5xCyD;Hum0nkrW8}0Lt;If0?EYDYJBorBwU}f=Sg* z+ho(6d^m%k_JIhAjr~T;xA!M1+;_V=;}{pB3)Mq|u~}LSBVXfxhIx)|_-iX_M0v&~ zPzaSp7Vj)t2IOPB3e_9=l%s=dJ8|NMSl2y8eiO%q`3DdARtVKnH{rUu$IYFH9}+OD zdhM6??U^U1y5X=KHUkU=VG~5@s|gI_lBT6k>mxDI0aq0;)|n~HJ%|<>uWKq4TDRb$ zTeb@pYCD==TBrMlp-{zFcW%uuS#9{#)IY0&Jm9lr{zmvjgOld_wQMLf41ZM09^ZVT zYUPf>pypGX?Xexz5rc{EjIfXGV`Yz}kE~XdSS^mRK!ai)x6jO>ia$#q#fop8;py}8 zgaME$hKm(5o7}%^e%;oXUsq9Hz=hN3{kgGntA z($av!dm=@TvEy)!W|Ec($@p}tTV$9xl*e@@*4I`g;X}D%+_`;i(HFSZX`Ee|BVe>; z*P^y}5**x9`yih-gXfyGj$p>n%QDw2C4AgfkXM6_q zNe79F528K7M7G+CyIPxt-NR*58vNi)$JR-iL5PK*2|R$?I=*9*et(MiDyyYV*xv5= z>$4VAkELcPF9@jOiK3D9AWUHkl5WTO1>r!h)}v`g;Ph>1a<$@OggOseoA`pDN0wya`Vwc0R4jW06)}*N}YtbX!T= zECZDIa*UIt`k4yR4!w`o^wm=}!!2-8B!tI`++3PyZD#ZkO{*wW5W+3V%+ zIq$OybTksuSt2;5n2z>3z#I?iNH&i~by}1$=-&|5VKst}*`%6zy3=G9ZE_(;D7-|I zDI_RP&sdqAFv;4#u^-`BQc1HPkJi9f?fkV1(pfAe3=|8sa!3o&YW)JuX+}ML!cP;C zrgl{P7_c=M`}n{{?9tSSAg+4s*nK_M*|!JK4}g%~qSb&W$h!8kd1vZ5J*Y#EPlYp2 zMA0-Ov3evfL`C;Y&R1gMuncFj89DVtaSy}88UkGvzn9Hh)#rccAxt*h?qk9}GC$JY z^kX`2UsvspGuL%1{~4HB>nfW`z41jIohY2VuHv+@bzMu>6&*vEb8|jy1a48Aj+=2$s?Tjvk;jrobKEed(>yIIkLh99)6GPZ7 zOswQcfkXjuOh_L9&P1v(U-?dnWpvk);xf*Gy>zBqb<>xlu1)nNo2vF!%Yh`b-$4oJ zX1p26s9Q66u(&=CGrrR(t#};j?1NcrPE<_$cMz3bhCNk}0O-44T_4~?iP|cG-D&Hi zB_E&ZQ@TFaSEh4Ek2cknY<-kK8Sbe0nf19Ax6hhtj_C)p)@Kgbc-gGR_U{3E!ifX$ z8tAZX(S5&rv~y+hj3Ut*ZWqnheh-D&R&~Z#%cTE|$%UIjV-gNAdw+8I6mHepDiF=TTT zxp(V$1{M=qjbZUFrD^=@s(=fUNk3#*l%xu$?tX@(^T!TyTY{r$4F%A2DA9rZ*+vgJ zT|kq{pUauP*H1Zb8J5G7XZ(tl$Z3BiY`M22-7-<`_tdy#Go~<**JiGWh)+waj5I>q z<+cA4u9Zpbys$<0_+A7h>e?8hPmJV71bkYSs|25rPy>FcK6(w!XUA zAZ9S*VvsJ~$f@Fywwm99ed_ZmPIWn%Tx9BLGJnAWngk{B9kHAlb!&wWfIj$ky6$d_ zl)03$_fY0jKAM&QDw;&2Lm;rPW4={vSfTbCOeCrBanrN4=3}bo&aIrvoqhN-N5_Hr zYQkbp5BM7?Ks(hK1!No2?0Jd!oC01l3dn6$zmWn2Wl8}WVe1VPpyOM;w^IP*-1yrl zK$se*0B-IrXj?h)3p82wsU*ZkK~JRO=>+Rj9O0a!xd`B#XNcR3CRyk zJY7(`62BG^Ep#}duX$m8DN8_0L0*J8R|%}^QQc&o4BbDK^JHwra!RYO5a)@~{np&P z{_SiDf~WFBZZmbLJ;C@MM;BVkOR2>VjW;DDI;V%eZ5bD4E+a5)O}d6;mdtdtq%OOn zoD>d*i?O25>>BykC?|nYOCi}5zC?@o)>Pj_F8MFfj+2X4ZYh70{Iy-A=AX~xP=l?k zr|(2!8Yt>V&HMev8`K%J8q zlAEJO7*hCJdfRGF5(Em@2)|>20VKQjK^H`j131D*IfZH>>)>C3FxN`mBIjr(&N=e8 zYXUF(ig!8f^7eJ#Ukj_*$D`lOICewPka4an(-`N0)zs>~loXhnjB3I9He}{+qsmcP zn2D%(cn)De>WbMa<^dg2{lbU{BBRCuBwanj&aB%&pe@xCfo6p}E#0HPrn96hCOt-4f84Y%DaT2sq9V=J@UYcWth56GIeQ-vd#A|%D?((hO7W7a z6u%}!Z~`g@)rcRbNs%5eROR77(R80V&EX!s{X!NikQD*C`H;+rN{sR)Na2~ zdi)JiWXeZRCR5&l$YE=acj7C~Yf!EiTN`!zw*K#-WGZGt2~DnZgn8Sd8w ziI!k3CrC&QT)ri}xO}LbyJWMZy>s-&aE?M&Z{pMwMj~LO6mYY0^zg(3naa}Q$Vky9 z6Er+=tn&BB=%B*BDjcL0WFBo}r!lQa`5oFvm&5Y{e_3ud%Ld`P2Q~4iUF*==c@7Q7 z^~|}qVv+Xf!9JD}M|`)@8mNb+KD8Bd$~xaHbe{0OZMk}p`wLSQ{4lCUIIZN6U=N6+ z9#A1qnJ0(2bXnl8W^X_{FyLOdfvm0M2!QHbTap#9^;kO-N4g(7LT1*v(m0H@r?TrZGHoa#iKN;F0Wp;l?zQHAqbL*ClSh3L+=noY0bPR)&d zCl5{2`sbryT5MnE8;kbel{z~^0&ZKFn2au_v1zBusH~yAL(BAvng{AObCy0q78>E% zMV;5YKCm)78DZzimny3s(`rvbsd#dFjW+Ggm#cY^SdJjhdn01|gv_ zMH>T>K81B9?gJ{el-7SSbQ!oMp=g|99;j5~%_<=RV`AwsB#{ZgagW*1{(VV}CoXo0 zJD8Gt<*MXb_z4~JaDVaeq$rTPlP?Q#r0oRIA>>ZBvG50oQ6D^bUp z^YDScvUOj`>(o}$C_UPJCiXGL%6fUxJ_4JoRteRf(`qEJnw zakPf4#)VPYQKG(mj9w+eGXIQz6E`|sw0VuB9)_%RuD42bB#w+coux&i`=rmX?%}3{ zG7oPc03>xWYcVwCVn}6(-&Xj>?qU4#h;Qslf^ANdU|YNxxh{N_B5}}flVESSFI;fS2tGC87s0JSehSMe`>lFi#b?S~YZz}GW1b;w--v(Z|y-SlBx;=i&hXqZ) zoQ3$zSvM2$AaSWQBZ{kOk0G(0h5|Q0qH6HvVvsn z2q^M;l+I>V`ZjNN&XBaG zeH1`M41f2$uMuzxd-uw&$=&e$m*=g$d~DjoOg)BB4ZlxieyW}*V>-)BaWw@tVX^*S z_TGd&jU-tY{ws{t(X<0!`VMQ zrWa-gUmdHML7rxT!`Cn}rOSe*=XRK{vd2_nSIi1SAg4sS9$xBAk#|D8bY{uE8Y@bU z{F{uKEgKS3EM7L`=wTeC2v`9GY5Oxf8T4VE-DeWGNk{Q95-VX%U{a z7Gz6@0Z7LZxK$XGd#H2>N7W|H4~|E9C%P0+XQfz%xhAXQ2){}H2Q39+8%!}w(J+jM zKBNfZ;DPpnKZ6Je)c3nC1!31&8s4SY5;y@2+#bS_F~R$C9=vITg}F=C@pKmJF=oun zY|P%9*IKRPOinUid6x)`65{_5^HmTs_UrWhB*uW{5Fjw}FKobK%mmkK?fp$LVK26Y zq}R%h<%DxXP7AX&hsW?!k@nG064}sAALNTrV4z|?F>v+$&45s@;<(l9Wwf&Fr3#?j zARUugSC1YDVmSC)gUCIohl03}1R_`)=KP(h7>*XvAkxs70piT4+`$_?R#(T zl&&&?(|yNRcp{{1dIr`+NMF9lGX3DXPSBVA;MWpRkRk|~1FiG^dQTUNj&Z$14^+jE>dQn7rsinY@DcgH7Ir&{8u?KfB4YZ^*_|>X{#` z-vm3e#HBzTkJhJXzsq2SFHV^T8X~n|OxA~J^I_F@x)&^@{?=G>FM(m0>Ddu+GetSy zFl>WzQsi1l_h8d7yl^LC6`G)(tO1vO$0@iAMj`J2ZYhGhXD~s_{sg6wq&ITzGUkPO z85L~S*$XK;W*>*r0u~^7Epno8hQgh4q#>}M^GR`QR5bKfkXY2wy`VbYn#EMcmT|gR z9%LQxc63F^50~z9S>Ii}4c7NT%5E zTAg5|iP0rKxl~=@6C-Y211bJi%b=v%E!#yrq+k?jz!YUD8NCT6kLq0Jij`H};4C)1 z$~yF#Etd-Df+diZ9DqDjE{SoL>Sch$C>yyHvPzX(C#(}WT=DV#OQ$fV@+lBv_SXEBAsxg))bbYYUEvQJq&?#|a>bp*RZ$BfNN00C1MhHIgwzS~ zQM%tE+jgd~3Us1OWpak{-v%|M2y&Hznh#d~#j4Jd+ab7{S+ktW;1m=1C#7kavBa%F zJ;(Wb&_842ChR2&4Ug7LFve{Y3PzE5-vlvYCuY&6X9C2MdkIE7QwtWuc8YX)GklpEpKYwU@>K*my{K=+WuLjblVg=eQJO=G##;5jz`S3VM`1p!GI1Hx@=1g^2Qa}}Da1oSkZ6I7Lr&P#k@ zTho#}3do#@->~m2(NjuQ0HXb6B2GexkYl{FK^)s(b0B_&syJL@cR|C{>+%YAt%Qg< zO%s&1xak4nO0XIDo@(`tcDrFpKzQJ|DG>k&H7l<&>)^Z1EG?9Rps@{2hoi?B*d1OL zs>>sZ{B}~AJqzd5{W8}H?I7$0|#zRR!cG=KWO9Q#Fusm$(S1=da@x z+Q16Qcdao#r5HPz;D-=jDz)${*3DF{J>pvnI-(yK*SF~)YB8J$Es1lni}3^n5kdLU zdd(91DvFxom?K@Fh#|ye+BN*(n1?Ilmm+@wPZ_0sNJ06AO&zO50Ww&j&PwR4Zhc^h zkE*jSkn#)o4FWa}2Q!ljE1cMy$a%@Ueq1;{i>F~wp@fd4^+O`jw*oHHkL4@-7l^H; z6m6j(F`AO11EMH7q0x;BD7DVIu>2E<&5Mb~)fnPWfJ5P&HGmKLvl zB@S5tONn@l=z5wYHN|u5_U2zs1Wcj6P!GTMCBn-RrkyH0Ghnl zAYR~8IFyr|H3(VWoHOAV1_0hvI;goZG|DQMh|5hd25CHK&a#x zX#%VF+j{TR^c7nlw^$GoTx!Ao^|mYlCmNfQ7vyGpbSj0iH#5*f+njlt_UD8~LKN2k z(<|e=(-#|KD9GdT2hv5p6MEcEMPlmUs)XUk+X9jVoB15`>H$Nx62cJWJN6pnu1`69 zCl#axlW90l*lJj!VrPI&O?NY zKLrs|m_-vrcrQ4mb7hVpaqaK6Z#?)iC7w$XA{v+d)HS+QqBVzyn41~Degvp=JlrARdDC#P@G=&^CB zs<-AdWDQtjVi!ZHc=FY_AVvpXW%J&WLvb)E>i}$I@}mUSGFFS;i(0^(Q?r1qui9Yg zIO@I;O{NZnOTvmLq7|hOqM%m1lsOx0?)WE)-ALP=M-W^@Bag+6`!rNRNE2F<1k(I& z<2TDmp>^gi2Hmt<@&cbMYkqf3SvG{Sd^gr*JtH6>`J4OcJ3)WUnh}uOPpWe#a+5+c z*NG%@le}b_7-dOG{Wy(?3%h?95$l${aS2w~PB~?Cyz{6B4Wkbkrha7G zOc30-!~AZ7yI*mcN1iLhB`8OwV@j3w@FI4Ckp2*|>f?)eiH-}2_}-sO#G8 z@2UMpyGU^u+kD-z-W+Yb5u+ph)^yqq{;lbNXW#nxTUiB*0iONSby(HVL6q;6V)TTv zhi9>%rSm3|w+tM3LoMgKl7D5neh} zyWKuS&+iD<`vW$7sNzE3!#^HICLKbw128YEad?tzII3rMfBu#g*KFMrK?D4Cl8aZ^ zA6X4T_tD=-;Lxu` zTRRGK&t`?kd_(&QVeaHKK)WZrsmZWgiwfz9^@d0EkL3{fo@Q3uKF>l!bx-^PIt42? z;+>lbr^cjqUU`R6k-J5A`V~wp*pm&mt?sGZJJ%B>+ISOB0khpO^Tz=-`v76Yu&&o2r9Mrm&S~uo)$jn-CZjF$;+5;_*tu<+{sN2)7(0w3@ zi^R$@ug+~vNHYn;goD5dX6XRX;QBszGwZmvjM(u;Nv`73(AiK!s~oMP3eOSl#jc2y zTdt1Bx+J6!hn*2r$GlyPPPIcTxcZSif(z?OXn+hEe9Q%+Tj@EJnjfVx=UO+WoU-;B zn!r6>ax?0lBv}2R-KV5i#C>{*Sb+V!C@;7b1#i*cw4&F9+=<_cvhie^o_JM4n%*G6 zXA0c0$ig#X84Ht;n@uQsT_sk>;2X-NO!$d1nC=4 zOZn0A`pkT2jdlXxW=ZOA@vO!V)n~ zF5F|Pz60=bm3P0&&;jU=^HI5A8e_darakD7S&8P1!#bMRH-oY+csrA_er7+iG9*uk zv>`qhZ=rS(;N~li9YsbN)*!!6Z%LxAZ>s;CB=F&e_+2ukq@GUYSFeaN$;G9h>ME}K6mleUt?ku89rfsj!Rx(|1Y%k6{o;M zQ=QrnNc*daRuP0oemY1>(LZPEqB67;(qm`Tc96> zI`13jL()ciVy_0^yHZV`#YQt& ztW>%~s0SRCSZiF%^csw>{%J1mRwf*4)FpvK$;_4*!^G7i@CesV&BA(L#j_*Z2x>N{ z)WaPx542XG%=xpTl}2J=;!)XQemWra?x5w-mBTPx1{nAZ8wO^87nrVC6bTHYN@NH_ zz%bya@EE{Q)Cn;CG+-_wz!2s*Fb^BFm=tq4#*wKUri_ZM)1%~RPj84W9HdxQcf2*6 zh6&;8B(fD3$isGZTB`-SC8^ihAr72qYW_qI`hds@fepqTn|-JZBr41}=!0G%G{C`T z&)ux{d}OqGa*elb)cQK!1O({$5|{HPDsYX8&rJR#r%WxgQ4SNqtA*8ly@RI?h+K(n zi;W^JoHSSk3?aqSs-9>xuSH5s7b5~9r%YLc8R`#q!WIPTvdw9k&)f)PTH4F}3<1H` zv1szCIV-CK=arbmmZeUq^3HA0rK~ctMNw1FI8~uYbBR$K<@CC-S%aEpR&>}_mj_$A z(RQT`BC)8Dz|>3D!#OylDU0)RaX}be<7REV>g`VOOk@iG%-x z1=3I`y|nA|XBgf~dDWYq6Fxrx7-+!TF-nUkC2Ib(9Oh?(4Ew?z9B zJ$u`;?N9JjF=FN4SG6Wk)0TZH-ToAgx?`S9BU#eP>H>^_v1YnLxVHIcBGGDR4wHR~ zWN_Zf)MR5OPU@~UUjq3Yj9@zXP{E&03*f8})}23iIyEy-{DDfv`%WiP$xJ7PHeJn} zP8^dN(}_i9PABwSoMSq133`<2M4+ap(?U8wphEtxx7wQNlup(=PA9B4b9fe~i1Zi} zD1l%Oph+hfw5!NHUDN6%WosWEM^0`X)at8)oN;;RM(o!3c5k41i=o$$D!5uhV)tb! z*6B*c%)5DAe61t~)}7c_1H^2dCUT_fEMgDpwD3Yr+YX;rTE>l=KcMahyt7my8n-&@M^pXbyxI@KV0-IsF=vuBmVa;UY*e_}){_0e zHueL-5U?zud$ua;8krJ40YgJhDk!L#G$?=?bui=@+EzsaUyv&HM;=IPRn~Mv{!@UR z@DzlOKIPewa9s@40b%}4i18bV@zD^&Ad0R)1(z87dai5-p#@KM9NHVUM8MVdcqI|y zxbzm_8c?3z0$jlLs*Lqo)q57&sG?@A4xhDI%{~{}nQ&fiowLNXObG`zy(-VYHIgHb zlWqK=X0S@%!3Y_>6NEkiKZ>#pzqXANN(_zA7GP8Ma#@&Loh;6sSm2E&AdD?;T}vb2 zYvY&YG7zYge&8r;nOq?ksK!P|y1EY9*KwpKgrC;^mGaR(=9vmEL5ab>^TpG1BKZ0b z*y-t_eZ_8k;0X)NfBc1$6?>XbpUHXE!~W z&A92oho0}I7yToE&cD4r7U7)&9Zp90CG-4M6Bx^^o# zC>(atix4Sm@n_0H9MikAC}v$#1S)=ssW1B5$BicK?}u!b_<+=t82K#silwYQm_nklcMLV^x14U{7S=#NG@HM z(6WHuv6ExZc?SAn;IXD7($wmM>B#1As)kC!>up;%sLfZav2J+29%?09S&MccNyD%3 zj7#SjEt4SBorn{63USgBQJxAtWr@VmI}tF1#v8GIaW@c}Lj$&@vXA^}&~xlD298Hf zxx@FHR+Oj`#uO!-FKt50p`t`xjU=2>lu8ss2+*QNZ4@PHRUC>3DoV;_9u@%@DF3t~ z{gfr84(T`>ymeAGspD6Q5^A6$W(>AEG`vN83Wsy#jPw%jP<}EF_LVsXNTa!(e&~(U zPRTISs=7mICDxak1qOmxXMS1|B5O7cQ_lO$-C29Lg~8wQL|HnI@CZK^2tm~8I+rQ4+<`i z0#u_|Uuy0eVG|n^{|eAM4@yR7yhRvFTdODe<)E(Fptl|BNC z%MOBur&bDehC$!Gpd^Jg!KcGknABi=CiKAVJ!BkSgoYQC{vYqfx=Mq6(LU!A0oNdgX}7cr^P7ue7$@#-jOOajHq8^B}(ZNj2TDN$2A zq9nDhc-bb*=#N%itruK|IGkq!vI@HE06oEiODn3;q-Pn<{t%A5C5>FqS2SN8e9EA3 zC?gNSfi=rK?YfELMh`W9>C4yLD>~lj9gu;|DS39{*dL)BJfFd6sxkLK;b73| z-AW#HD)5K)icqk&cZfP>8KoL9y^OXIk;r9~SSBu`MRXNkMsKx5P?O^^{SBd${z^CT zbS46h$5`px(^@-T7LA~#w9s`hMLak%_(a9P&==(Rz6xp%WC-0JDX!LzaP$v_1gePN zSv0s%4Jvw}=oqt_WI@nY&EYSAv(E7uYA+drLKp%nilG{WK*4P2B=+kxq4Y}Xpu9F( zP_=BbaJgcY5~4^tx@35Y0D%jPB8izDnQOlRjsklXH3yiH)=&u|&;+poh%-xd0g&$)~d!n`FBwbloCOdLF8ajvvVHqE{$ z=*MUWLowY7oeo$*le@rR!AzSPLkI9ob2aBQM^JVeVMLLoAW*CYvy6uV_aiJJhd)(& z(|DkPrkMoy0w+6DAe#4c?geCufR~MJb_^1Qh&kqu5z!j>9h%Qh)QTqk<{3(e{PoEL z2{fZo`XN3FrC*N#CR#<>u%NzYhK0Va2nSJEMfP>Xvz5*<*=Z30ducb69XhhRglINm zY+_`{Zw`eCRT{o=v?j%*ojQee3-gq`sd*}3u{b^S}{ITcjX z5f;Y)W{eav*V~s}Imm@QH*l(>RHRdA2H;NzzzPS5f9R4&^6(UUG|H}=YZDB#&`YZ( zHThmo9f?q&l4zt@r)tCsm88~we=I#-9pKswS#wd@XpQ(v1y!ob`G;^r1HT~-VfR=! zRCqh1A&O72Z4E?izafVFbU*5bioeZhNSyg$hhRlv?K+_Gmj8BJmW5Pu+RnF|PQJa^Cn zzapK0{#wIV!i3^zm&H++&9FFHByCv+6IOcqO`R`gfz!y>P&FwF)AQ{$aK~Ia>gnU} z@JR!g&$QTms)`j3TL23n??@))L0R5DiM?fPRIxs(q#}8%2&oogb0sJ%nNgEv0i%q1 zV$C06)bRZcu3k5fKB>%kpLt3Cy_xI32CyYUfJ6n89Kq!-dD4zdJs&a+79FU z(Z(Ld9etk*oI16)oG9DZ0p4~`aIp`>U$wuYLhw2j9NXS!qz=+a9K*H70lupJwjy@^ z{>7?FFAGrsWUebC{KjIoPr87~kfQ)!%mbJ4B<6v~nqVLh1g@WL? zg^(;vrkcn|m+1T^BPwPb!l=k9r~sfjneYSF4JY3_)q%aKxP9Rijajv_oLxJ_tVW^; zmfjP_xByh}F=GmFX7rs%St<`uT!#?> zjaDm(G=kz}8ybP2dvnuB7@Q4X&u$o=AY@bpgI26{;qy{eg%sX`Pp}vt>hna$biH#1 zAuk1VWNw*Yp~eJWx35sLZmme|h3X0U%4!KkwNw90SmYu}2|%pd9BU+kU(ww@bRm35 zVqtqdK`DTm$3a!jdL@I;Mc80H3IvyRGzP$E=*>iZifI0%ca=VS;Ap&5q8aO}G>AXh zs=<+2GO@sHRJk?oTEiN*dIvSNM|Q2W5o>ji(*`Rtr%jY5T5Ukk;T$wkiq1Y-v5)VJ;EJx)qw_CA+>3 zx)pPNe_T-PMd|Na_J>O>xnRGe&%$&AEyq9O@)S{(b?FN{$E35*@SLTu^>fdZ@4q3P zkNcQA!n}A6NoSvSWIOHStuB9s=TJB>EO>#H|72Ca$m0b`+kkCC4QEY1zrk}jzo46< zXBallx_(i>3yPhwYH7Sp9++&aIi=L?OHQVmXbGQGUBHhZ$YDozoz5#QWoPb3URPy7fL5YIalr?B3VpH+ zzLKQ+D~S?*x^M0Ecf@Ac6gU$Lj2zJvjzmEckAUnK-parq%7(>> zfiGMGwy`kx`}0_Hw2bVo;u}$};!T6q_N)_GZ=rj30R<KhYkNc;x^sACdrFzUMNJAfrW-SJModNwLp~lG3T>GHxwUMNxsPQSt zeGEnG&?+C`=n}Rr&vzlQ0mI2CN(Sm{7~f8XXUbx9(7K$GLRy<$*T@$_$hRuzN~$$0 zOzUQ7@*4w~@Z%%HrSwC4%&RfPp9p%trOgjIk?fJz2F@)<7B$nmzeUl6)jAJ_4TK0{Mrzl=wKACd<2 zRx=3M`_SQUG7bW+!>+M40pX=oRLkLbf@GZH_G*JmK$vr2Hfe_lCT* zpw``)?24tbM~T56l6r*X+w0oiHhbzHh>m$6q&XgIVw+V|dKbyL*T;AmkU`Q~tBO1A zff_R>*r&|(4l)J)$|FrA-M3$?}|xER}I8JA7LVL{_? zt#RN^x-yZ*nlmQ&+%mctRniG5YUh#eub;oioo zYEpG+ImogNg`bWpNQEQhat5~^5A|?#grjQRN>{U#0?cxooX+Cjy5R#;gM$QJ@}O%|d+B?CSnJMuWvOlCDj z985XHi=*DP?hXq$QKK|wsS9*hw~o(brcbJ7S^}^gT<39Uy*bkh0~qi#cAu3~kF4s+{V=;&<<)y-~@oJ68U0( zo1*!k_703-UsbqP?yZVn=QaFX5KBATd}doKb@4o>r`_cmq%2TK2gFW6d9W@ULe@!1 znJ~CH0;N7~h&MtGs2=jc-Uj#(!*IyU*T7dY7qlA+vyC(AH@I{mbIKLL#8Ngw?Yw%y zr3vAOSb=J?{@hg7^m4+65!6mgXbj1S+Fk_*`0y#l?H;BA%rNRPKyS4Q*B*u$o^mk< zCfZYEBbf&XbGX?cP#@YKL2}zU7y0yCxsKN0;?gxx6vX4%LNtWiePl&{FGU9x95z5V z-72;=(NG8MhpO}$<3qG#TnZ##A*+cj6opz_m<^6Dp}@JQ73-B%&C%MMC&CbiCTV1n zMQ9R=*A4u9xCl>Btwy5_9AQb{_J>uB2AMsv0V5w4NLWY!AQx>BlKi)~D$8(216Ynx zy$?o;)&@KuKdag$fWZM6R90jw;0SkNfp90M{Cg~t8s}GQTrqAX7jnLOu&F_(@09*J zS+Hv7Hule4_=1?6w^Tj23?T?`Em!S44J#XULA(iiu;(_npunrwm5vMMZq-=7gC+jR zf|?dW=??u{g(CiE^A#)g0dtH zkL)>azvH%1&Dt(j2UL!0x3G$E?zmS0$!pfGr$PpHZV}1@#;EO#MP|GgNqBs^rWf8G zMjoe}ce!HLklCAiswe`*=lFu{V8ptjdmrN|_y^iD*nyG+cYAH0Yxqnnea%N2-b0ae zu+AZ=PnhTgJ*_GEPV>O|mAtjGLt-~~55`es#glX*&Km;PvSBpJJg>v;Dp8t8bPz(u z$)4^())EEQ+xcuRM&_SYR zah_aMhLmb^&oFyr>*bn)$)$J%E7hpbt!as+SlW7jt+-!C3!Twp0~-c}>%JyDo!9Tr z8M0uX5uU@6lzzVF{*jD86(8e@7vBqc&e#qAc8+u?VXK|Q% z?+ubtAQiT}F1!|_QVcrGOzZXy`SBeZ2-#cL>M;ER+JQiBtfL*VVyG;|G7zARTImCN zhYc$<*pRSi{~5%F-LF#BOKf2u_B_z|)B>ll4aso`zhC(SSwkEp)+MM3;=I9zKJ7H@ z>Y&qo4>O2tKEhixz2D<`lD)Oc#Tnoj?hB9ai!vd1EE3ms!L?O+6lAG?a%(LO%yR`M z4gVxCy)(>@bpf-uul7^8x)973-C=g)QJ^IGv!GN#68j5KACjP)5Xzz4cyMuWFf50K z6$AygpT-re93QP~DRXmhFw$jc^oVZ@CkraWN@0f@#O)#3{pPR^4F;pGF3f1vy6^=+ zD{a<_Fq=sMx@|G#SM4iIQ9Q`o=d%_+if~_>#(5rA+ZojPfy{?dU7TGMKge9?@Toxk zQKjs%^xeb&6dd?-F>8NAUob`w;JySXt^(jlX@gk2MJryh&oK|s$MHgupEfSez_0hG z{L8W+5pH`}0qIz%BV^fOCU@%)d1CpDTPXNE^zaF;KT*Fi#FX-Q@tz)F7T|BJ!`xTq z<4gT`f=|pd@n34!`!P3ESmg?zY?G7ivLgF%?}z%`0$_qThOwccI~?E*h^I^7qT@WI zg@dM7@yX`G1#q=#1$y3&HKfxI_-c18{)X_y`BH)#ehTCNEvvwZLmeA4 zeuta|Qw0wj7h*jeA+!i{W?V%ltPjX`$ewqrgyS-eYps3ojEXFZ@Yd9<9Z~o`(>O#R zgD!FfRtLha_=Jz)d?Rol2uI>U~jSak(^bH^(xC04+1O*q3^;&_)OHAE_$zE4O-m zD}#_wcGTq=dh3#YK5LH$eDJABiS(W588JH`A%$!t1PkT@fyO2$Dttz!A#f+)M>$}F zf$mp$wF7u@r!Sg1S4$hW!?GJPP{LQ(P39@UGhg93dDoMTo_%g5#>Juv(@|R<)^SO= z>xh@%a@kXyZo#n`A`)K$^0i7?X374he9-)7BoNwvtE)9DSj0eqxi$=PtU%<7xphcmBTT9fp^xbW!ZS&zY?VO#N@#a z4#pAd+p0-)L;nmE2>Y$^UUh&J*QA3DHM|BZPhoWgd)*%sv7q3LCL+Q-Ru@CYUu}H) zXo=_CdawQFg!#=ifW-SF9u(K*pw2V+55EpQtXcT1Ay!Qk0`T;wmJp@Jw3mk{LOz$E zr+p^X1mCSzuLV(md|gf#h*9i5`e}XWF~bnPHLkpYj9_gyx+1B#gwGRkmvm@P%RbcMxHFgJO_ko6YL|VHa8=U}p#`J;qWq>~nJ=*{i0G@{nRV1~oC* z?B!CT0qr;EawK2-P)&(3UXm5e-hkc|IIlD@BDz=m^H54vKM}?c9DA5N;1CSgTVdKJ z5T;XLP#JA1*r{=2@Z9SW*&14(U;=U}zK1+cCE8k_!#c*iN(sjN?zg0-vtka$Ng;h?e+D+Q-=%aqbX$8ZJE=G-5{!58_quIHb9-z^BM*hPPN_ z^)koC5nBy8)bOrRAePgtk7q1_4?yMs2vwecAC}Y15v2vvJmH`wJih6tID?AndoLrNgBD|G7`azJKOA|2 zo)3C#n=_|bJ^t~ue-O^$Q++81#WgE%cn5Hckr*80qjp)1xkU+1Dz`!HIzEvI(8b5C zehjGuy~t7-W7`lod`W@BI+2$hyyP^u)?#ma9GM>8auToWmmbzZ=+6*Tm?zcg6qD-zUvpYKpRML zWr&VB?qr@%>Y(&cw$HdHLB&w|)(a6sfFgV=&OY&6XrO_m%xNAfRAo+Ll=t<{_;3f2`XEj|1D&r2ZI$BkErFCvQnes6G zg$(>7?7Uzr7l+lx2vaCr!)(GxcPb`lbX~$O*-tcYH2RMaNoAYCD2n95LDq~l5@=lQ z-WLxFv?)B=RgDK-H!N|h@EG`bgx1=-AX1uzNdAcs>1jk(|NMx6MW#ojXGUZIL|9@? zA>#QXLV1hXa97q^m^C8Bdyfbwz!YowQ{+NVk@X)jMJN)KNL3;w{YZLtrVg&nzpAYw zBj%`0K&Yq4D-M-&if4}oX& z2y_h+^Q9JP^AmwFDAeX__?VW#=%Z=u2}W2VlseQ4M%|r5Q7(X2K?A_ex@-6q>g*2s z`ZRa|plvciWGT)b`b1f*f`nlFh!D(AXvvwAN@zkqAJ=9lQow-a-|8``$GHLzdf}}9 z18&iPK{RB`LMtlA)6?4E^12UVvge#b~KdL&umQg#(Uf3r4{>x*}| zPr*PcOBf~-mtm8&jbV1|M7-$;Si+pkS1(n_h3GADn8AzFF#DH6lmIhJ456%HMTYt+ zsctRNqBHJ*0C5+Rh)a-@iAy5%vWS}vXa^23mSB+OT>zzZ(LokoGo(jM7Ds~e{96s5 zB@k4!&h{=@V`6WDBz!SF0n?DibGg1NX`GaPicLK7-a70!0us9zM5IFJQi3JGpcJEP zT6s36V0(X6OJ`2%_!x@`HN}{o&zPIac9$FzARb~a^(a%yHSMUPLqN5bnTBu{V=9Di zQ) zfnjS-md9Z0bcBRqvk@u@Ld_lCOOeL5GZ69&LX5Az3qtd+%U79NG2wosb-8$W*LC^n zmJTfrcz-ge`UK(tk|4-6hkNJA6A#o$G}>fmh&fo& z)is3XV*o84b>vvZ3>Zp~LKbx-Ki?E}N`^XRfGkBuiaJgIDnj1H1(WRI)Iks#Nm;g6 zQpqzv6BcJN;YBzhtYJb2giBuQY>2LMg)g zAi#qqp9i_&Fi59z8sCUKNXAHBWn+|Ap@sRKwG5PGS80lI$_6FwTuKpMasrgvKI5qD z(~rP7;CwF1mwLwpg0x&E#CMxwY$BObDjjvEtyJ9Ox_Ys2r zWAF=R@EJJ#G=q<0P{PT$Y(#*>%+DHpsu+=5agEsL)K6Pnl^3@sNlcnGUVM{Aj~Uv1 z3G|R6yr>8C2(){ytJuiEv)ImT$j_JQry@l2IR$1ei#JKS8SS|g*(izEvsV%CwK}Hv znm53v5sxx%+6mq^l7z8(QiO*bK&XK)NpPDDuDMHHMbZ{V(Pi!}9IsxBsJ_}|YP2+z zWP@c&I9?c(+Bk?JMR;opP`dI_x&TTG=_t)F9Kp48A6p~6Ujm2dg&fzHYjTp8$46qc zUZ$miQE8^>UuhFj*#JxwiWn0FJn=K86=ogNyIBD{|oI0a&dOHzhYA#LV}#LXTg z+=C8LZ1LE3!YC1%i>y%+aWge>ZhS=v7)g zoP$zj)lom0QqIs*GB86!3@ z$zrk@HfsSGNs+F?Xl|R8l$uY;$5}v*r@e}PIZ?SCaSHV*ZGPVInk{ z(s9Pp-o~L$Wo#&no?vP3?T2tV{49>X!wJ`l+^sBYewKFY(I zNuMi8#SHgaGJPm`23ho3NEAE+L!UNM9!U{ipAP<+`1Ik0j^)Ro4-(sO-d&>}i@mkdsX-$z&!1nbTAWg1B-}F#fR~P?sXBip*u-KgKC? zkxph{l&I~f*+1!p!2FZtrHyEN*X4FIfu)r3;`WMb;Hc9iMZ^Pd9f* zX^zQI){~*1jFKoR510%SGZ~n>^e&SjZIl>?F+(ZENl~>Qkc^Tj7Fj6G*wMHFN>ZeC zBPh+iqcQ)Kd^%m=Q0W56lzFf&0Lmy`KvCw0=mNZ}3szh*Mx2qELS~jO0F0C_pfGw0 zUEsjz0_f{*CdfRxfZR9+KXo#F9;^!hW~B=#`aFd$aAB`Baki@`FA3c(2E`?egD4C4 z_x1EZ6)Y&$s^(H(RhZ%HNn3;{ak6!vqFkP7oi8M!BZ@+niNXTYibCKR0X|Y>T_H5L zOLTtIAE^M9Ve{(4G zM}7%Tx^XIv9%<6e)Ccan2`D$ISfk`|ppuh04&`6L zO<^tNV_lGIVJ+r*pK`L^03c4A!7eYEqnJqwUR9P&-0tuLsPkw;?wy=8jFjNd#Ax!X=Gw zKQ_CGblp;f*A8Kf=GNg;CvDbZspf1)#89)w3~6bzQV}K&w!b2_0k#z3%~}9ESP{7r zV3dButeojdDJIQI>P9e*6SN-DwX&lQ^TOU&yG-MlM!FdStq0Oc5$2QynF4`E(q)_o zNgeS_CRRg!^Q(yG^&~Mp06;Y0i@VGzn}*d4K4v3Qgp`T!F|DS-k70=WDa%+RQW!#9 zRM`ws5(!@1-pnAK%*gmu@-s1bpd3q(_#oWer&QBKS~`D=_|8UWLHN78%{%APIAI2V zUm5;p{>BJ@|G)+Nei6y(oNxu*%*rNRTdw^q?J#R^8tJk*A+I@s7q3M)ffK7N&z@Y< z;d+*7ZB3)BPlXc7(Ibe)jZPMsT=64hGCyS@ks`GWHHK~DH9>j&Cd1x$GZo(v;ICIF7vJmHDhquF|t-3RaGcm;3 zd@|x-rjg-s&nSp*jZ;bVNV4R9$7HCS+*_73-_YY*+~Gw-Y2zRwX)4gcKdO2IvPh8@ z+5nyA4zNPUi95`qs3v1H$F%FbQSyJMpMjFv5{m2g{!!HeP?92Dh0+roRV^KfsA^YN zQ@QFM^qFJkA(bpkE$r~x%(Nk&L7$SL&+y6Uvv4Hq0j~Vw)LTy_(qDJ#d3x$yW{ks( zskZ>KND{71LcPN@v=TJmZ_OC-~+ zt(4mMGU4ys3_uzw!tumd%)N8Nv7ay86*mTF6Q`6Ebv8%z&wSLm$O_Y%5dd@n>PQh@ z2MX%U9RQTJ?k$i}viFlEF+BFGIICO8(LqATjs$Ax4&DTnlbFfN|?7VZ}u6B8`t*l+3_uaBW7Z8@@qPZ@vJOsBtc!Let zr}#<4Bb|+i@;Qh@J4T-I=3Fl0Zq#4E{!GYykc8r>|ah`tdCi~F;ZMzoZP=nStq?=hDm z*9y_Ow;a+C&De94Lp<4tzLhPbZZe{SOhkpkQ>^O;D0YCT6uDK1&K=K_hNuX(WY(3~ z|7=8mU34(VWvL$~V|(#BOY+X}6!NZRDYB}t4V?7kHt!B`K67eWG=>pukH1M;7720_ zxveLpf{~Dj+GEwob!szop9x(hMx(<9W5MK_=4NA{7C!pLgOttY;z1I}+rHhF6MafD z20j0cZXUdX+?O>8xyft5UnfgC6wTpRC6%D{HMiH^%KL%Jpgq(V(aOXhs7n)?Rmre) zj$dqv65PLiu!9IsJ{1zv|3Fh`-%d#k{4 zuyw0-e?>fvlT5sHoU(69j>9GFJ-<6%A`sarAZ! zYs*{=pogucM2K{N8wN-Z`F^c#(&2;{RFP+&laU1Zn6FB=pQT57^$5yH4`XpnCzxKx z7mll^n8g~03J7@8peZG>CB@xi8B6w(exoPZhYerG8-(=b^K1QHarTvBHr%kvcPo&g zfY#fVexewtjEd}AvzKCdrt}Nrp*9|fd)rpub))SHuTE!C;RaKW1QC2k3cMjMs{^A6 zDZ4_+(#}L(V3%ES4X}$n#xBZgF|aOmYXf}pxhcf=0tzPO#r6~|>i*7-&6|H%Y&sB$ zY-h~#7|RT7!|>D)I+fK3vxnvr`YxF^2zgpE{vs@8S5^SdxAjM~n+bVmFSH49aU$Hh zej;d>F*c$yt*K~TbM+UWbIfjPmxFX8xDH^av=l%6P6=(W#1Jh&KxL=j5mie`2nuNV zsSL|&{NxB3xjoXqg@^RDfZ*uJafl0ys!U^%EVdF(7=V0D1e)Onp+tByV^Q>11;#W- zu*Gocbb%)8d1^{OKzp?x9+LY)8`3JKp`}a;L#s5#G~A|2JE)#f_$qvfv`=n{0tv{C z9IfQ%baIQyl-A4qk+^ICVtjXPOnLXKYghb|3d0gIj;b`fXG8Xp2Bbx6@b|Q zAo081UAxArRo(jpxSfqkX_JV)gGRY;)!t)4`LwfmT{Fw%tu_Ljz>v1p2if2kuyO2)C2Sl{g|cVkoF&vF{Njxpw&hjj zqg;m|uWhqsaLaqP{I($7RFBbD?N{n7CmVe+Q})YZfF2!k%{vqW2!Bz(Z#M<_*Q~QI z=Y?Ri0MveUjQd+L#D{pRVW2 zS{qG-V^W(5hisc9!{NZ#i@_n}Ry0U~LwkvU&}23d#8~t@=Yr-F0k&Sea~ZCw0SG!= z2rF61BQ6TM-yt;|ze6q#wJ6nv6{b2&q;zpMvf}IW`xa}<@0@UTcA~uthh)+^5t7pE zG4FAv_>howeL$%6T*Uy9ozlAl5{Xt!9u6^(3y`){t7Z1AsW1o87<{0}b-3i3Q2R4N z_%;)$fH6vU9UM1I62O*^O#`mPqjSi!>XBaLi;zswMZR&U!~vP?fC9Q*dA9iMtlf2= zZ9VhG&bVD)Irmly%k|B|S+Sg7J3A{BHwvY?>#UcT&pj0O29r_U_3S}^?Dogcw*K>M zWhLj0Z@TVMci=SK(N@lCG`yTQ=()MN=jFzO+_>fDsz-;p)0>>rXtevyoRj-MQs-Z} zvD5t0|I$YztS&|6jrXO0>5Ou9)lcr1+{nF{v`6lXFVFt*kLBeR^ws=J8_g`Sag@SIwBVyMsEgc$w3s-Rt3CH1;qm(E_N1fy5Yx#xcYIYDoDyGMvey z$)O4Jl?)K-o{-l(yW0l)fgZqkx#6BUlkQkGKN&Whv5Ov17R=%l*WJ|(w~m1_z%J%w zm~!8~zkCIb4v?9`F5tOj7(*P#LE_I-$8!}}FJyo@9-v9PCln*A%Wu`ym%i?Nc{uS} zFT#WI<=L`7&SU3v$-8Qg>n(Tmt>w0xt?|}sKL6j}lZ)iczsDo zMZ*c+*Dw!786+33k!yde54wZVmg0{3Teq<|avLvSsi*ilClvij?-X3u?hhv*j*nCc zwBc0z^6bmA-#IsAHt1RKrH|?Ob2<63%Sqx=8ebQM#|I;>s9afoQA_my$TIs&9&3`4 zZ|-QBE8)*YD7FZ#pSq3mM(MA(2$_LhnhdFfU?uo=2AyolgHpA%N`bBg=hkw8(*5V; zrgHaZ(G?$Oax3xtb8;tZn8mfiS$(5k`U`59W?+|wqXCRM?=L*Np`hQx7>w77uX|$G z{z3L&9JVZzus0dI-dCsJ_<9Octt0B*-@qV@lYqnX2sYu`THVPvHuH})W8+{xtyw5z zy@at|Qe(XY)jnz!CY6Ae@3|w-bw>5p($&Zr4q;1b+m06B_vPeTr;~1H$*GI$;~Nc@ zC8yhN_P0i~LX8o%m8Ze@iZ+loSPEs@D>Iv1I-S5O?fV8$IvkBb&q4ESap`O@>V;u{ z)o6Reu5+`s)bp0ky6*Mq;M#x2->=Mzr3PF`g3J~Snn|z!im#`hra>MCLPPGiOj}#i z#_cy=36+*$9G-1S7ks9T;qhQdioY^e-%qW{`}d#9!}d5@lQS6)yh*d^dgGr~kvMZ> zR?(WX>DE_I&mKz*r>*}_;F=4K?YH5;Yg0UKjodCg=$G#I<B0+_ z9l0L-m|oDNa|&M_MBb~edp6$6zY@^_&)+K%zj#2;iWa%We13TS>eQ)snxnx4%Y$;+ z{ByOi>J*C8FO-Mpl>R>{@$!}SlIePdLP0;-T8%jkRl&u7qKIE>1mkexZ50WF@;K@z zsvmI#y_GVHDC1WHMoUC)Nte!>+I%5chTmK-c`c_gxDtp66`IP8ny1c-{38EdF0o<1 zl)O-1AaOsZDx`V5wn=MlQ)hz}Hdj(soKP}h4p$wMk_O(zL`y6<1upFK1QHO>3n;-CBP?w-#-QpRyr! z=XAq$Hp_YU(X8YjsGf1CZ#PO9dGPp@-Sj{gHXGk}O5vBF=um25&Q%SH_LP=HKZD_y} z{9fy;Zox_OdztEoZhry~n3Oe9PReZ*F7XZ_;G`?U_*{Z3jEAqtA^qGjK}kKt26JJ2S=csQi*?i1?dXW>Mc-)eHV~4Fp`) zJM<^UH_Wi#MQ5wughUi_pJ$8T{=}|CY*l9LR%V1vCsh2CZI;LJn!`$%1F4yjZ@n|; zukTw-A;cr>wd3GGxwx_RXv<&%q))uve&%2sS4G_CmV55FHNct!J$-Q*Lmz&HUzC*$ zqM3i0q-5FRAGH%5{4}y<>Hek#W6`_thenJG^ALO75%8~^QJ+^{a$y z{YaiIs#jPjqV++e$#7{f9^L_YK}}mbaid8;_Q?=XM)uSFpQ&)^${lrf(Us^vsTU~!F z!z-JcpCGt^VnPkJh%Yaauay>|CT8wQAC7~5d2ZS18j_6GfdIIUj( zxus0RD;!b-vPDd!R(vY{RU$qSvCDItJlFFx&@=7uUtwdjuw43dgeoAV?} zv{K*cxj0Nnt#*{&bbT@!!5_bb6LdJ42l3k&Edo zFuw@~cSYl;(jux9jG>UKSkDM1bH^sY)`#DZC?j_)7qCg7whQEIv}1Ba^ocSA#)Cn3 z+#c$lQ3^3v@u;&{Ox6IJKKOHMc|)5N|2#W8GbEG<4MW0sxP~?ZXvUa8H+AYLehLYM z_Hb@-IDiMv9c9pBtHm9VZw92*SkVEvzXc_`yA zEzJto4owLR@&kgj(;A9dAabfTTsFK5^#dZZv${5*`o`jeg0Z85L)-pK-sF_6noTwd z$Xs3CkQ2=z*m8dDv$or9c>atxu*LTfBcmR#{jX)WH#l$WAX3u=_9jMNR>a6CK&;24o7IDd>oOP)@i%vG!aQP8t_obU*9yHBE}=QLGz8XM*ei| zuNW&Kqr0R>cL|!AmPW?MDLWp^@lxQ3kTmhtk03@qvw|pqrURubMfJ?@u?|(lrsr?e zgaSa7cQ4vqthiY}LbZN+*#3wdI0?R%4C%Fk#6rElkqHd!pF;K&&zv*obhYq^R&X5B zr!|CSnB|ybEEx^dobSv2+noMtyk$my7_}*`dHLJ7T0Jp4BZ=E3ue5B?+tgI9(z}Ma zF6SEIx;q{Bjmnr-6_zwDH9y0T?#U11iu9w_A{wTnL3gHd`4AK-0mH7i4S5iwe6sw3a#)>wdM6JfRJ-RQ+jJ^bRvLozXd67;z~8P zXmT{>MW>b@8NJOwVLB_&8qde7{7QL$RB(Vx^){;~<*-pXb$(B$obEPKIuuG1=h-M# zLY^Vn=$p46Rd|{cWF^Udnv-8=W~zBhcQZSD)xpCzusI;-{S>9mP-& z+Dap8Fog4ONoV!=uU1hzST;A|;|s}+7-(~kijt)F8Z&jSFc?rHN)SdXv9~avLjb}h zD|`KSii?_`Y5}FyJjq^}%sFyq4+~DT8ajv+%mm~ zqjq9gfhLsrhGsXUnw(-e+2CKI*Ec$POKb53*|}8NDX%m-Jo|LE|R8dnWFP$i9grRI78y!n-NH<77Sm-#Pprq23h6IFK>v^=`n%*v(Jbs8-=qq1X2I@;y*X@r;c09VLHoq$&n8zMnSE*3SIwr2ow4VNij;mvm^0=kz^9Xd--19es+> z=f2~lwuXtYk$OowhHhO%E|VcCxK!3eA6E^uo4rdC1BW9Ww21FV z4Apw_xy!H&K$l$lB{R*nKCXGs9+}Wg03QWYIXL1n7i~jMOQA@h+ysf<0?$s&=!}3J z^S$^G&0%Up+EE?>6?Pv&LAznp#=LL;6%ebS=NQA9awQdjeTRi~KC{%H^s*uE`wqDu zA9WW5&@Y2*Q4SBGATPg>oQk-mn7$V@1D+hekm4`5`UqE%Ea@)>jmFE!BnY*gUc>Od zQdl-(;yUP4yGKMC|o3TN!m0 zIc*_=W3lCRofm~-ei4e#1{9v<^_Mu%r?VVJJ*guX_XEhgCcG0%Bc!-e>JF}bkXQ0c zWhB&(?uM5h>!_HGpxpMiIz(zf6-em83(O>Xt?1EzXKV3F+8z@rd37jc@b?=5hpaHFug*>K8##ayDH zz@WQDT+SIrl^t%Ow~>r5p8-5kfN+`8iV8`YTB#_lxF_aEx)zc$y4ylr}j1TZGvv8U>3{T7%vl$qa%AFfr zE)yac9^QpqF?Lnt(y^GdVU6(#q#x4kG*!i3(7P}e({m38K*+EcYSR@o^D;_aX zQ~?vEQb{5sLWX`W|8g;2dg*S(Rq1e>8;rhSXX%Zn6c3{!J1F$2=Tyu>a4Oul<>540 zRN3;@?I2i_E*xkcPCA@4{DagS$lT&m|J@$211&E-gI;*4F%sclkBgtug+T zJ71}yHa#TKR18NIwjrC@8Y3ODk;3?D@iwd$Fn4IxD}$n`B$4_ER#LYnP@^$z`64;I zT@-OV&flo)o21I$DHwPmar_o#2F0kzT(vPN$5FC~5=Khx+xTw8oZMt>M0##n0-@(` zO9N*Jb0Mawu#*rs)sNdwSLA)nOK4t&+=Sex{OLXVn|Y6TlQQGiej1Yv zH$A~uW3!%j>WxQBDft84M-rT9>@iu!mg`6wKj`63Lu^Y2LR?)UA1#K#oqGQVpFD5vKcYc?J3f-d_8c*3OwtMWN(}aUeqRB;jH``?qjZd_+ zcsT+aO0cW<=GDHUgjt5Iw4Y+>Zzz`3VX&|2DAiA?lq8i(C8y{*r_Nt+gDrAGE^ubw zK|H1Tm*bAK>=1q5LYwW(`4dZ-gnTNY;Hr$wRtXj3X`%k$OsVk{BpG>P%(ngexyQr~kqWYz1n$Gc9yfrB^x(_D@@Ubk}FlfE3QT4Y83GjcB` zZG^jT<;Eifr^wUq`mJiJBDrf0nBQfpxs&k->X+Y`Hq&!2UK(gr7vssOkF=O=Z~4E* zFPad;iJ*9v@EjJKYL)DSK_td*QQzw5NE3P_hS~HFeJsCV$}r z<2R9$xkO|*CfU>OL%2Q!~E zrqd({Ad`xUZW>hsM(B;q6a2w{U;0Y_&6%lZgu|Eqv&Cm;dbVSS{2W(!iQvw?pbdpM zTs=p%0C@4`*+2flH9aix{}Bk*f5REo?zL~-e<=BjzY#~-9O}TopVImWt@m?6sMq#? zOY&>M+WQ|-fqtRi)fZAKWKW2_^1nH+K57rgx&K}93ID&jv(cc3Fs^_6<-Zi|4H}a!%0e4! z1BwNt*FFF6M|L_F`V050yqNX1COdcvF+#X@-P=&t%2Gzv?3w zGrrbER!bZQls9#G^A+2NXUkvf|M&lXZN1X!!PokW=Z*H|^Tls!irZbs^R~V`GlJ~P zv+s-lVIjs_JXc?3%Kx98hlei#Z1}5(vvLqicp5 zyvve6Ee%ysw-lZ-5<>12jFCXs!?KV7qSg{X(ilOB`j8{1Adf&B)|6iYz~5hP2_B+7 z{1G5Y$69~Z013eE3%~}&h1?upq<+c$=XZZLebcjLdM*17%|=;5wQI#Am{AFqP}9X( zBXzVSP@eB$29f)DU&Ndi$X4#Tn)l0f@AA1~E~5de7a_Kqv(1RgNTV%kQK@EOQK>J} zwuOi>u@q@hL8*RJ%f{~>mZ)xj8UzwzF7qa6WM2D3*N6~FY=WREt;eg;(3*9?AA#-R z8xEo*BQ=uP52hNeFU5J}iFbqQ;Hpn`53M%_^$ErFaztpqcmYUrSLtKDt9 zh|(;pmpUbOcu?Zaj&Kjcr8~3Pm6e>;Xuviiu6jQda1?x$&ItjxctX=fN(OgmBcgSBQ(oj<|wGOc1K!)SA~yb_ENB&z8r+9N^D zm<8}K<4rd^+j>(dgw*V)_4XJBh?diP+DcU}lIPy29{4>x--+md;XWa>C0)5@%op(> z#w(j~STSFsm2I7wF1cruw{FFJ(UreIapWFS6)L8JT>< z282r8b8TMaa((xzI_N=XeK$CSN{b@K01~}M$|(i85z^L0`}{A&J&u%WDZcpUXG~M{ zPA*c*`U>`$0M&|ny{>Ys*CAqda}b4B>Z7cW-}!4osE6kwtyF3UA+h`p41 z0pFvV(g2m(CLP8%Phe$i54v5bmD(7cuOnyJUgk*yXwQ4FVMieQz}R=&BW%4kycgec zZSLF2zFH=bi0}6|BdDV@rCwicn>1Zq8ET85%(cB-d;A>xB{}dp{QRtEn#$!ku6&aF zpZ}3J%WdzglnVjEZqb}Fd@it^>BP^jN^ZDYI6x2dgCP?=z?Q> ziBSb-;qoDLkcw*Ly8W*-+2Im+{{PW2Kxh!Y*R`1iP)%j+%Mz8qvQC#sx?opGro_BmC@9XH@Ie4t7dy*&h50)W}#6p z=VdeOhis?K0AHPC8jRFFszD~Sqn0ujKh_BIcgws#_r}@`V*lJ*Guq!Dw72H(jmdpi zdQ*u(P4NCPSjAgTX7}eW#cF~5le9;tE6edeG3L0{(<&s|R*}xmM6=XF^Z83|v?SPR z$(u%zhLl$ERka8G?<-A`ug+I&VSE)8KdtROZ2)06&ZmvqWLr`WQ|$T5Mqxy!TKw`% z$Gj}{RCresDHSxHMvpoY>dD5^>{|XpLM4mTfBF03Y7%jtVm#F9l{y~AKnc?fs8qD?ZFK86EF`9T`) z=>V}9?qR#zZF?>rHas{&*7Nyb7H=8K6tx`7{oD!(7pfz2X$j(u8h(jCK^=r_!s zt;3xs#5?+m`TaJe;Sosa72*Le{BGNQe1#Fi9W0~UN4rx`jd_nfy}H{PbP-eLyGCHJ zO5kvEq%RyiC%D<8-dbK>p7!)`DGa#?wAJC;!vM8M50N%((UaOfi^aBTB5ol#z%Qwv zeQ0}acr4QPiRmhe_<0n4aOGq;Kv{!jwm?b1fBPGv_@(?Ly2qC}?Qqe*H39jdsCY%^ zl}|mQn0s;QbVCNB>WI#*w~9UF{ZvD7Ka%)MbdB5#HXLfR-o+@G-ACy_)6(B!3_k>e zPj6N#0BF5RQH>vpGA4tM`40`?Sl4_kHH78WTjj)gq1y<@;0Dc_Z^pmDc6<{R8>C4y zGvK;wT9wOrAXd*cX_h+PSb}VrAb}Um@ zc#~$+_5OeM-mN)~BTEzfD?yH|k!T?kyhtS#M3$N&#V*WeU4E+^Oway`+xd_N~v$-+b}g-+ml+*%0+t zs};ERx(&R1uf1+B<#nqyV$REI@5Ke((cm}BeoSq61kv$=JKD7O=6iW_-cH{^NH{CS zX)`{Sws#-|xiY+MB;AJJ%;}mh#&hm4VK*Ia3>vRpFEVEIX!+;^5tGx4 z$k~`XB?Lq>W1-vd9*Ns}L8w{ygPzO>m5>Q*^|sz1QafEbMj(#^+++&`R$#L<6aS9 z{`y+s0tK#v`9KWakHF)T#ilkLh;0&^LSqp41WV4eZ}ta?n0!Jel1P#d?Sl5??(Yo0rgmZ2YPn7PjFASWt2EyypsVQw2=Ojc@c_dnf^0z9@$;4MSMxUu)6rs0SlBZ!h0yNEulJ)gRXM?g5 zTZ6o@yMYI{uKuTC1UHMIraTc6%qQDIzB2hY9x<51s-1g)@?Fmnl4U5u$F;tF7jp9D zL}gjgF0IF9CFWXJ>j=)-PCjb+`SaUf_WO4}ySnI~d0t7e^~HRY!q6XPktsb~XI{9@ zyzmi;(K&w&VJvN8bSxV?N1J6Dx8-Z^;6W+#vRUY)q0?wLrk*1>RQ!&mjwN#BIVqDJ zlFX{WlJO(nzKhc>kV;-a4Yqnl5T>kv6xn2)f}k5sW^igUK`e`toCTm^xV#;J@#a+b zo52vF{8IR#4kB6jePV|OTYwu1kJ^~x{<|S^Oh{G>NEC>ynDM_x}l8;IGu|1M^kx$w@ z;?0d5enJ1Lq$m&?gZ_zwEb86RnA8#d7v3)N89TpAmkXSm1X=jpbm6$ut;CBByw1 z1=B(@(xr4|X%Z1j#QP5vW2@rk!0T_#DX>JxW0LS61_Mj{i8hO#t68XG{!k7&r)Sl1 z)IS!hD3KiB?@`{Tlsd(Igq()Mekr@aJv7`AvF;Q`sJ!|HyGE@TH3<41j7A*zb5;g` z(k$7PG-R`P8K|?-EXDX;16iesg_%)R*5|pZ~W1hnBqI+6V0;@j=U7 zXFXjbO;Lqx1?I*T3S9HU9g;5E$0gO5ntO>(KVd20aPmu=>bso=AG5rH7ooqLiVS+W z4FoX`7#Wll@qwByGs<>PaS@?F=bYG(&f>K-aA$n(a!kTO-Dk~DK+XpF-32hwEl?B8 zuavBUYNgYm!|S2QY*U^-#2@$@HHC&4qIWDZM4&(^4w-l=I!devlF3`NNG7`o-L*nw zGZ|=q{5Oyc39$_cN}r0n_-==D@eB^20;ptwv(}3XG=oBbK158?(bxy_AUXCnZdl}5 zMsFeM;7N!6{OaXcr~Xg3|VMx7QLoa zy9vJ%UOhk#eJu?`JtHgLkXTi3WZhE+ju)>ui=KNY-SRke>eyh){lgyLv5uzo2R;`D zZozygk=$P=sDw^+yksHo7f%nVL{D>HrcO^8vR2BMW%MY0;Swo-Dy0;t}J;ebwvzNLSVlY<{Q{nHj0CW7LQ zw+OX|lL?YWjEk!G7CxP{U?>dJFWW*tOaX6@B^1$<(?V0WO2@CXzeGvp;8kb{0;-LG z&NT?n!BG^P>n4iL^S4!PMl?cd?Le)@pp}D1aas`?NKqx^D>wL0WbUG&5G%TBnd(Dv zot@Zn&Y3PqJ)k%%{`_Yohh#n>{RhBo*RS*ZmH_p+P3<6{A{eiy1&Iz4m2{)`CV1(mk6fj3`dCitC&8h2h3lKAb2rarJqi4J?8FZ!4c-}7} zF7ZmU%>=|2HaC@%pbX*RO6|lUDX(u8Y&ld0rPPNiZrQf*k9@xlQ>MjZkbo!9k8(*p zUX*Ugh*NE|3c2+H40NYpCD$uvxyPZs2eJrTd+3&=t@GUp;NLbwNku3#DM z{>z)h{@USj`SRxPJm~bvy_EA87sd(SB~6Rs!sZrCnmgG|dx<{1w+onpCvFCH_1x++ z;tGP~XP?gO!f)kx$^|kO-Rq&?8>h3mFYO#VdFPPVLrK_~Fkf^o&B%Bs$#zE_{x4#+ zEfv|l-Ci(BS&zNq-q3Y81o3mZuDen3u9r7=lkXz*He*kw#f^zs;E$TdGCluTXQ>t? zoZGPwhX-ERf{7!3iwFMgw50PtZXnNmn+HBsjW$dYz6WvqyTRYF-3z(X4=@Yd0;c(1 zaGC2?+G02SfojVhm~SjfINyoH{q#BDo|Ep;pD`d$aK4h;Q@#VX8S?k;ulRE@f6nhD zwbSmV58^Hl+y#tom3g@2katQ}NZod6b4pi_q-Qx#z+}@q~uw$Vvahnt!s z?UTz-(Qm7bPSkh1sp-mA76e{?RjUW%flwU843?OZ3x*z~PMFFSq6p6qp|P51FQS*! z0Py~)Oz>f`2^BAEI|Ic2ug0kUCFleyX-JX7+^yDErU+QQiehe?>Te@x{pnYU7C-!k z7(DK-jw@`L~ieQtfg1($t6YZ z7c!#s%JwNj6^O52Hlgk0lug(B1Bw#gqkr9U@!~Mt@l#R= zbNL(5YVtEyIm^Sz8EhF(dZ+&RyBig(QLI}lr#Cvgv`?xo>|e=OS^&PNH0D$;%B}W*LENU<#RzY}iuQ>8#x5_eabw{b z&u8aXLt+t*rN5eUSD?TMU5-ThQ12oWMR+(BvEhQm$Ferzzexzf9Rsg|48+MkC zh`S+mQP_=|t6kN_X#@x~-XbW%Bpw%J!|C!14_ z?w)nWKUz?UhUV@PZ$G)Ot{wX&pD!_NKKjdljnBH( zkV&)w=@a?q(x(%3Q)dD3=<|7_^ziFEq&B}AqU1>!qO64?V!b$e-^Kj(knz`9kqw?$ z#44H@&U-$v1kGvQ;qcI+RZq_>T^tdmE_rT=VviFlV3>L5kF=Cz6!77tk}Psqt#Vr; zY!4oZE;4uigqqgHS0)O8@2YCDi#rn`Ya^$SK$s&98Eu7Ylke*KK)URK6ltX|c__(3 z&d($gGqN?aio~6yd%XdS56l!j(Wb0X;067E9GsDOBrZ3bOF3emEbDpCeLtBEkB0C^ zr&;0=#DJeEq(i7{`ZWoNqHI=#B+B zA<;*ZF7A~2#eeN!gJuduTaNZFIIKwOMuyNE#}~bRmjYb76>*8z{e5%bS@KXrO!F@|a21<88?Ic*u0(TCMd()Dm@#)4PVWf~JB$im>lakwqdi>Te z1lhZXIC&zj{qNz#vZ4TGVhQ7aVf~ zr1(|%EoO1&T>;U``~W#RR=;{7eH9!9`)RSIWBo)GptpEUh{Z=%Y5T&tBZp`)XXXU< zhrA3Fko(F$=POQ8yiy-l1h)^)kY29U>-Q1CgO*X~F78jjhB z8D%#%gR}2!dDp-iB3|8T$up`tTg9hY|L|s%DhgdZ`37;yRE+R#Xd~ctO;>r^Ga()0 zuJH?J#E^Zg3lXNUsP9!9;ToVLzKfenNRGx%N)*q=KBgVcq~)?;Qj8$J zXM_e$-c5m2X#AA@JmJK8!3jk6Xg??c2Dt*1X5j%NRJ;MA1%eMw%l@!8D*Eu=g%|F) z1cE6`iQO3u+h7`CmUN3OD3$@*q2g#bt!4}iIMKlj5oSmp_4>i-(CJZDMI;q=2s?5( z&0-Wwi`ZCjF7jvw4`qzo4yRD?aNWE^eK{rvt|vXHo(@o7xSZj9^k2n_DgPDz%6(=Z zDirgotkpv3aw|_I9YYL&D0o^S9Ux^27n5iq$|R0IB8(uLNr&UsTU(ENa7G;zVD&iV zu!DHc51#E8ZiJ#@3}BQpz(F2w4HzI6P5InL>9T4^K#HA{d^hTGDI#wM(4hj_saP>bfN7y~pZpEiR#BO0_-H9aI;c#}75FRtM zSg+;PuOu}7VKN<5SXg|>XF^QKb~J`;tK&ZF{BbfIx3+MvvaKK(=aX$c6)Mid97YP74dBkc=3(YxcKFGUm_=5&09oqI_vHr-5andaL0O(+ zW58)w+8M=6%hS$`?sST4DtfT@z7HbbMAz+K_du zK`|n=qty`UKH4xMwco2m9@0qkOVy z98#}WiNNw?^2gy1rK<2QPm^(ftD!XgcEh;k?z_-Rin?+hmSOMB8P-`A$wau#IS9e2 zM=&ULhvV*Scv6mrjkqL6?;;L-UbK;;T&Mm~_jE20zSC-Eg2Hn&((gLZW{Rd@@AJ&fOxLqxR^j;JVAID8J~(h{KZBA;wJo(`71HLAU4%7nTbX$MU_rX=q|vh~%^; zvogck4TLdtg-wtr^?4x3p$R!}y%x2n52wU$Lu{)Z_`w}iH?nd85{+Ce?C1N1bHty$H`3snI z*}L4Cxjv+g*aekadqA$zWpjVpGe_otw5t zA;?iSvja-0g~~tV-S`V~oAJs_%YQtBgpBb08#kbNZ&#dmiz*o)4;J!WX$q^a;lwaJ zfx}d!kzU}wEqxImNYg*5nEGCGcm=-vi{RuO;g;%&p{{~D^(RNYt}Hc7)Sy{PN{+Le zvAklCN3E-MELPc0K8Vq30bWUqZC5l z&>Hli>zlq6#wx-O$1(8TsHv_X1K`g<8J-PH^PRwH#5X;Z6N9@z4?3`9Y)G7QN8}@R z`)iIW!R;WqPDu5XH@)dtbOJ7_#o=PEt*DNTuJ#pRMNLE*^H9bNm#!OYL`E$}UMRWn z!ftzw5&d>bBeUIcjv;#EEr`Lq!kO{sp9U{^DIs3n+J5EGOUa}ltB}@-?%l)w4~X9^ zr;p)3DJ7~^h@_hXz1XQWdk6VOTpb^hw<#PjH6~X@%@;_e;ehu%Fbs+8bb^vS z7SuN#p3V@{$EEo)IY`5A{|dx~JN^FM-kkx5bY4|Z=z`O0p}1g6aP8yL;N!9Y!Pnx! zhZPUR>_e4U^?DEHo;i({j-Ya?ePh(w zr0;+aFhz4Hkrk8KX(56DpV(dz#B#V-Q8^)CuTX?>dxpw<*S+4TdO%i302x;f4dd3F zhYQSlr-BG`y@jK=VcYAxNNS7nTtIzA;*&%?@L!!d`7p%wS4Kz$pTWeyWr;?BvG4^E zfyiP^^Kovyx*Q@1J#vc@h(vy+Af0jkbtgUzCdn7kkWyIFk`su&kA4RLSUlstJ1 z(#1x{{kuL^@c>kRlk+lcSzpSz=AJ;MjNr7z&fG^lT^QfNuxG;Lbzpu_0CzSN zvl-^b1Q-7zV7OfeOuA_Qu0YAq**9LvFVDCIHiG;jhB+$1OhvMep=jrW7&Snsp%i;~^|Ej>!b3lk~(i9gAp> zw)To>7i*teM2&2QMFZNh_FOmBUg7qiy-{wC_6j@AR~EW<661UV=9#vlvrSLppqQ}K zb>TJH_vRdwcV^ZV(9biWJ%lFx`Omg0ysfB)l&&V2t?WH(uwA%9(XI*2JbKJv`oZI6 zOd%uPgY}-s6}pK#vOjO!zfT*=X2SjOJ`3MBY#VNjMe#u8u*evy^-EQ+Nc`hj@%U28 z$A%i9-*}3;tMPoPQ9_=Ffp3Pn(#VQBwIE^ZMhKypF!i$ z5NYcjzGn6mSRB&{F&_m-{Km8I+_>qEKym1q@zJ=;_bbWLSg9;)f@-=bzHU26Qato^ ziw65hMVUG&2ZtKt&>dX*g%rj0SZk@p*+(QQ^GX{==&j+^A3{wsr&`iG3>6yD$s zJT7_&>3ma2$MHd2LuEjs5iU(Y&^;cY!i}V_Xhc4#=Z={!Fv@>5O79DRjPT;bW5tSG zyt3emZrY&ci!X$Wxlo5|6Jsg>f>0%^3iKZk_a%u%o*18ZNK;lUqM>g$XNOrAZf`Mq z!o3(X{32oZ+BHojrgX@!3@w0NiM#`;O$fV2(({0e4~-mQ4<-*q^YwW8xD*P>GD7K6N@6UXMhYG?W;5(ihDHFU4TpB{Sl@^d*mA zQ*+I13~FIqEqqqLi`u!$%O0+|f$2#(YFg*U^H(^z#ncFv^<|KPY>=3=6I6o6Bpsv7 zGr~pf1+y7Uk54k2q2p!D0eJFmKdQxw=VQpL!JBTd7~T*UHnX_JS~D`JLHyXaA!89Z z@tkK%tc0g4_i)KiDNTCS+i_o7Vb;5HUQ;zUt+F=c(9JC5Iy<#;?5# zQ&RvDI8z6r5-f>z5B1g!`fBJ+KjNCSv^lh%P}19Faz?|@?}kREthr|K6sa*Vc&hV| z^TA1MpW;-tHt3C(TxS=`*>XcG(5e$u^WB^o)*jEixjTceBtkGb zM@jMi<3{Ww$=o9-a~H3!bY@O+Y|nRtQ{fB9V3%}_v(xw5^}n;bd?x>#>;L7v{nv8T zqa%id=1|}wDN8M(7vd91Id{eLPkwj1buUTRgzNyrK73xuo3eW}uDV^#%}b7gkYmFC z%|n>UcS~0FzI}IayZ`xbKPo3ZLO*P}S19rZ@i`w!)rM=y_tz--vV7z3_ptxaIppLB zr*CLJ$Fwbr#$@#;3pFb%PQ4*=xoJ4akMAxg-S^H&T@QB2@w{C%FJ%RO0?=Ep0}0ZjjSqJFX=07{e^CiB z(%wLPG#i$_wx3WFBQiFT+zE)o=~nufiNOXoV|0MB7lKn2Az{4x#v8AsSz^5prbjB~ zvr~%+;VH_ahvW(Y5S=)az`AhEOWc)UwFst=ld(mu8p~o)r4b@Xxj@ZO6QX=m4-zq< z&AM6?G%^RhLfN!>CdLOCPOcyUb^{Bqk&}LJw+*?R1h~lGM}h{7EC5muYndO=B3Q^> zLmlA}O0|>joxESRtqf43^0$g)9(BWKexfw zOgYp0*grJ2z@tSr>LoUf+*1!|mQ6dRzF$noARk9J@MW|Nn}pwRzdZ2xLe%d>nf$pf zZ@9JNJ6R)rC5tYhao&eTR%eCCG}MnQslri6a*qCUQ0UGF93f|S=VlV4#yz(|%gn@m0ug#>5WL#oh!{a=Gmw;L#sfOzb2T8y2&{fy4fMHtp3W5+bJg`+x zz2(3QHToRv@}hV%9L$jW`Od9d1tp!B4|5RJW}I&!@2dza;?c)Zj7ZdOlJ=-*Ha(BT`}PBI|uOV^r|{=+U2< z`X#0!A_lm5vwY$qsL#asm~@j!D&dF3NK>-s8`LEgzkZCA!N*GAxE)||$36iT{`4;p zMD2fsZ7#1rR#oFOjh_1EY&M&WHTt2N_7NebX$q=ci?Hg-DyP4baEs%z|MTJGmwZK;P%gjQsrD>2xwR-+y!A z2;M()eo=t~zPul3$87d?u2d*LS<=RO(C?EIN7^;NF7>6JWH!b=<=u(^jattEHR=J; zY%eHWK>xpZ@Q2MN}-EUW0#gQ zuoHi*h|`WIq;?W)EZ1xBL5KbLDy|~uA17sy6g(F(KpbZX4EYZ_!+`=L+^BbY%IQ(V zCV1AREUHmM$lk-jk5HLmE0L4wBdmWb=$GGjLGi;8d|@Y?j;y3cl3dQaSvhCvzz5i` zYU=2%C(|R^Rgxu3P^w;p$!?3?ofQ6P6GeDuU#W;PvZ0j_YH4)cw5W-9>X-ue5WUXr zX&3cIIA6wZlF0N7c``V*;;i2>KoGTVwE#KIKi2$jVmItnpvxL_Uuq-UKtaYD)9!9wej#GEEt6D&B@ zHtS7$CzL2803pG8+z0c{3b|ziq6L{6GgJT9>^HX?zR{Ir4e`A1@4T{!x*3N{BP=IR zSTQ^;nRT#qo23;QZD2TwHjAwkLmq==iyZifN3Dh8!VNx`fa*{*b({xdJzC?ldPzbn zMPOi5nEVisRhAC9f5Yr0>4E#YB4QA{#G%ds%aA4DMvY`Jhgs-a+aU87IvQowRTd(Q z7C795&HPbXDQBe2(LIzy-P$zz>1pp3m;0HAGaPV@wos^kz6l`ea1JaA;NQ zA3nK|ZilzOgt{y!HY(k~tp`5&s1ft^KWqm*DTl2IQNh@d>M(dhU(9y!FZ{3O*c(X9 z>p1vAsl@{K+NHN@9sCtIJoG=mUEaF&ab+cn*5PVBA0(=Qyn_2kFTOuW-Gb$5>=!JB zr1xD(C?vrsr%*8#lkw>7cG811jtWTOY?ER2k~>EERxSqp&@Q!d%S_5|UAsK|8eJZ| zsl$1oYOO0)jYQVnkj~dA!nKS?gB)tzlB9%2t+_Y+E}^%Dkg=e<4QOUfl1Wsu_P9Y8 z%d_M<47j^aEW!z9m6td5)f_##^}R_2y7k$lIj?E>9Q9aIN2_bnWam;PwR6I4T;mNa zN+4gE@R+PmrbWY2nOvG*EuB@{x0!UfnymsLjgEw6-He3e?7O|bOL$LJibDJ*Q28<~g zzFU%-v~eQ@a|c{)*YVP4vtjuPj%OR{k|(sSWL-4a%P_dw zft)x^ts)&bCgu+4)ujYO0>iaDCSuBzkDCT>mdQ7D(z78-)M`{;2a-lcwwO`&yjoIs z{9Bam<{<-HVLYvM1-UT3D81!pBeKLLd-{L?dW;L4&Q z;p4$gh-L@_#cwj+=$S!qO_6u)+1%U zK7{i%@b@Wmy2KLe1>_MshUAyHj!bh@Y*HkJj(!`75Le^JLsaHFh3!QA>iY8Qj}?+S zX@f2IY!`;o*{=TVpf(&Dne*NLN$+)OeZ`en)EGLO4qv}6;ZEm_qf+qih4=vNz!RVC zq~DH8s-f=vF0?`&Je7RPZL_=zwtf%SRJdi;x_*2%W|r*i^YgmWc|GOx#3y}+-E~e~ z!pNrV5;wUS(rMqTPEmXB2l5ozD{ebb_!YF~gtG^5m`mTC56d@C5KNaoN0Ihio@eUr zPZKz%WpY5%yVqwZyNg*RR(9u2gNm&E|K*kTh`NME_4EH6b zKWt>_g3Ulnbs^5dOAk!r%jlH2J0OA7!%j(RuQ)^0{Sk_ud-po}^2aG=Sbv3@pm4KB zRr1U`p?6Yvrv91ohB>FCa8@jNV97oc`9u=7pCjBMn1Lf*xS(t^RCGCTSTrha|jgWvq1pK7X$QsWDphgCB#x#HOgcjKfz>Dytdfkjy z-^}M^4xX96C{lKEU#OZc>*3qLi&8cN98lH&ETDke+NYkA-~~u`B*jUkv81@;VRTXJ z&L_6o`nC7!a%@CATc+hvg(y`}o0N-(!QC>Fo1>tRKVCTcH!!3Nt-3XuRCT&yETE1l zomE(AbyW+%4Uk1!MH@r|AQT?On14K_LZ^aba|$4CsZd6ziyzO@Dl0m6WN~QQI_Deb z$;s6k7#@eTun|Jc`^T+TIh{6?bqE#}(?C0$h4-5za68~GC}jV(1#-CmJI^+gsVFwm zLqH)ij(R%m|IFukM8LJB<(fQ31NN=>em_*9BJ_^t?-ga33bgEnHj}jLp9s~Q;IIgr z>Uo@ih*0n6B2PSe`XmC=oUn0dWBYJVDtU;yE<^;P7nxb+yH{(y;;Q(H=+8JZfLf#Fbt{ecf! zQews($BwS_97B_`gAIjsflh?7Z2FNE#!qBR!^;QGZT_ue9d1w>`#}Zo@ZOI} z7Q8Qt@*K1Tk0c1KEceQcg*uGrlr|z_wpEa1J>F3f0 z1T5gK9ePh84Tkg7AyZ-L^ag`(3FPm1BA|vXo`>Pp@dVogGM{+n%<`EE3(){;QH*8x zgs0yOG`!9Rj%_`LMwaD}>N}N>Usb%95QFHO=ndI&Z@phji=Fit9HzyKz73q|vSSaP=;>^ANdW zHnF>epx&3ixw0&}^I%_C>@!CG)%w*2oAzVKC^iqz*EK)QE%{eb5}c{Jt%5w;L`AJE zH#)KGcvA}hmDuH?9@_eAGM@FIA(=WW>+l50c#-Px2u?8g8;*<4!50C@n(9c!PfC~t zk&_%x>3c~XN}_Adi$y($s@dceaiyod*Br#v+WsoA>qXZX^M9G|UNm=-hpg19+Ha;X zf(Db6=QXqQ;cOhvmrfa;oHS=2&LlsS$gOn0iycNNoy9}o7LuK!tSi}DO!?zXELLLG z&V8FTmSA=^9ZM!TzIwOV(JHYm%r}d?@7Z|mPHjG9YSX)SKEKO{U4um9MGC6g6qZ;L z@!!m3u;I<=sYCWBG7_ca3c<5oL7nnh(Szn6p}G7EyD3aDkgR#oH(#fM&7X9?C_Qd! z@(QkDP^6_ct{oz_`W$2-S+87>a=9&30otqQ)%JHl5Jg}y3;s+d%VX00-E$?r&EMRS z+^P>p@HJyz1zouDM{qZ|rfNIKzubPN3lHyRSkTK;+o7y{XRshLUNR4`8gb6Xu$A{t zt$yWbGU!#uyY|!@drnGR;nfzTjrfsou^$?G#AuY{gJ6bkn&Cu-g%ISsI-uYlQ?%%y zNnaclgoIe4jMpWFmj}Z?m5(W!XLf*ypkd#plJts59*P*k`)Zdy>sI)#OI4D3 zv)Th>;`JcMi3svAuapnt+mp#3hoULUA`|!3KMuQ0LA$}<@zkp`Sk`c!nH4XYZt&f% zYZ^`K0Sr<4CO;>N@6ZOj!QU|$mWCnUg{AaJb9&9DZxt`Q|*X2DGcJ+8zjs`IPEi<7bZp(Qm_)k(kyX*n{ zL@-~lgEq7>)LxAO@3uW2k71pBJQ z%U~nutU|6gzY!KTN3T?=sL)>+TfI9Z>XRxo@M-AbR$pMVpGP zd6}WZFWl&dlO<^$4c$jDa!lR`r9jqw0x*`F0Dq?hgAco;26Ua0a`OQjgua=Le?n

ubb`j|X#_P!Cag-2!zB>EScD{K4E`duM$%zG(W; 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%0Dj) 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%0Dmt}Fe7u@+N9Aj1 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

ODfD_RY70^$O-2Xqw8yg( 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 SKCL)B{kbeRPY<3xz5V}EFIKq# diff --git a/priv/static/static/js/20.6d311b830d8ac672729f.js.map b/priv/static/static/js/20.6d311b830d8ac672729f.js.map deleted file mode 100644 index 728e16474e505856061b06e74c1c93bb02c553a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmbPv&5L+|abyDm9o<+APJ`&@jou Y*dWCsG1<)A$lS;>O)slhFE_CO0Ccezi~s-t diff --git a/priv/static/static/js/20.818c38d27369c3a4d677.js.map b/priv/static/static/js/20.818c38d27369c3a4d677.js.map new file mode 100644 index 0000000000000000000000000000000000000000..696eab20fe42a02c5e75cb8912296fd27de8e977 GIT binary patch literal 113 zcmXwxK?;B%6b0|{*OHZ?<}unv3o#3$RQlE?x_d^n8+h~Pg46Ekf(OM2U^sST5mY}A z@Ot}k(=j?f=K+AgcRG-l{T8NJ@N~5th(Z6Rzy94*!bHV9$3MoP-8BjWQ;|RK8 zWDxcGLilJUsF;F$c%%J@I5|Hj%02!Sl Ar2qf` literal 0 HcmV?d00001 diff --git a/priv/static/static/js/25.365514e44606a895ab50.js.map b/priv/static/static/js/25.365514e44606a895ab50.js.map deleted file mode 100644 index 0973086f2a9825bc44f4d2482385dfcfcae66ccf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmbo2fmx!3rDRD%Q(QEC2w74-feO delta 113 zcmV-%0FM8L+X2qo0kE`bMs9C(UuJK0Ze%(lPHANzZEt66X~mmuc_4ajVQgi^y2OVd zbY*96AZ2Y~X>4I2Y;|HFZeeKJXK#ZXfirQukc=`8}7UFa~=Q$Om3x2oG`gTEv&Sa7HgVF7i5r1V>MNymJ4V5YqlYz_kBMd03)aX literal 0 HcmV?d00001 diff --git a/priv/static/static/js/28.9eb3e783aeba24c84f0a.js.map b/priv/static/static/js/28.9eb3e783aeba24c84f0a.js.map deleted file mode 100644 index 5d106cfb72026ccd6fa2e54f1bfbfd4018d2fa44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmXwxK?;B%5Jm4YYq7{6>lkgL#VAu4rQukc=1PMDl67A`6+TQZ6ot&j{>wbk`hqFgxJU$YM(z3=-0B3dKg diff --git a/priv/static/static/js/28.9eb3e783aeba24c84f0a.js b/priv/static/static/js/28.e0f9f164e0bfd890dc61.js similarity index 87% rename from priv/static/static/js/28.9eb3e783aeba24c84f0a.js rename to priv/static/static/js/28.e0f9f164e0bfd890dc61.js index 3766823cb1fb0e74a6b47a31d841df435e17c25f..75ba6d69d01120e6e3d97f296e7e23f68cad9085 100644 GIT binary patch delta 42 ycmX?kl=0{h#tomtHkXH+b4#Zhq*|4;?wd=^HQvoF3h>ut#D!Qg{=w~8!zm+ujvpyqQ|fmi-wYlwqnXg++9WNUh?067o28i8$2i!z~R^j!=Soe zfY#tqWGn-hJ%vq+~Ur6=t(YBcCMf|%J@iwrtbHT~GxZt5P3M3pmu|PMB z3OsHzLJU$YM(z3=-0C+{Qx literal 0 HcmV?d00001 diff --git a/priv/static/static/js/8.5f48d6f0cbed548baf0f.js b/priv/static/static/js/8.636322a87bb10a1754f8.js similarity index 84% rename from priv/static/static/js/8.5f48d6f0cbed548baf0f.js rename to priv/static/static/js/8.636322a87bb10a1754f8.js index 2b8d4f5097565a097cba532cd40d48f33cb5efc5..6e635fb6a96010eebf74c6f6fd5e2bea3a31f244 100644 GIT binary patch delta 42 xcmZ3slJUt3#trW7n>*c^c%{vZ&5VtV5-rS=k_-(J4b4qW(k%3{iuH063ji{44Lbk; delta 107 zcmaE|f^peO#trW74te<{@oD*`c_~&(PN{jNB~__Kd5O8H`mVaZiJ3XNjwwZ{#l@)# zd6~%>B?{@OX+V{!d3p+AsYNB31qCJcn_b;mc%@C#Oe|8&(hQQ5Qd3M#ERqt_4AS(n JiuH063jli+CLjO+ diff --git a/priv/static/static/js/8.5f48d6f0cbed548baf0f.js.map b/priv/static/static/js/8.636322a87bb10a1754f8.js.map similarity index 57% rename from priv/static/static/js/8.5f48d6f0cbed548baf0f.js.map rename to priv/static/static/js/8.636322a87bb10a1754f8.js.map index b1730e83c304b4b49cd0960978cc4400c145d74f..f074928a5341c6911bc3281a1ff9be32e7cab968 100644 GIT binary patch delta 46 zcmXRYnBcByW^86`WRz%Oo|I&0kZ5RbYLaH5msPB!qg0$VG&FiV>m7#gG`B`2qvCz+&}CmWb18d~UO73<|D761TcA`bHa delta 74 zcmZ2=nepXi#tp@3(s}tM@oD*`c_~&(ewhk+sR|`U`DK~K3MHAPlXcUTHW#MJF-s>} enx-YE7+IJlB^o7L8kia+o22Mv73<|D761S(IT|hi diff --git a/priv/static/static/js/9.a95fcd286ba2c9050c4d.js.map b/priv/static/static/js/9.6010dbcce7b4d7c05a18.js.map similarity index 57% rename from priv/static/static/js/9.a95fcd286ba2c9050c4d.js.map rename to priv/static/static/js/9.6010dbcce7b4d7c05a18.js.map index 721bcb907e6d48772d8fe0d9a14e6a2b9058d619..e5e1cd823475c6cb72e582c81c442cecd3611f94 100644 GIT binary patch delta 46 zcmXRYnBcByW?*QLl9ZgBYMx}0VxDYZnrLXDmsPB!qg0$kZh8omsPB!qg0$4a diff --git a/priv/static/static/js/app.154c25316542278028a6.js b/priv/static/static/js/app.154c25316542278028a6.js deleted file mode 100644 index b52be573a2504ee8aa409e215ab6cdc73de092c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 582127 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

}I-0@Ys3hOk@e%6wwY+W#T@y;{4 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%0Do%Xr^%WA@P_g{nEtpot@|Gig}^naZU%M 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≧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�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 Iix+?V7x!@t6aWAK diff --git a/priv/static/static/js/app.55d173dc5e39519aa518.js b/priv/static/static/js/app.55d173dc5e39519aa518.js new file mode 100644 index 0000000000000000000000000000000000000000..d04ae34991f50b9d7d193693568a197fa62e9e07 GIT binary patch literal 582581 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 X+nbF0{@y{qci?&b-abstWQPAAM}Pgz literal 0 HcmV?d00001 diff --git a/priv/static/static/js/app.55d173dc5e39519aa518.js.map b/priv/static/static/js/app.55d173dc5e39519aa518.js.map new file mode 100644 index 0000000000000000000000000000000000000000..600e97afab24bc449c1707a937ad2a5fb281500c GIT binary patch literal 1487987 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Π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

rS0Eyqcj6t=Lfj%e2-uC} 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

o>yWApiyZze@zpm@azd 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�)Vj`AZF4%IPgCX$TB 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 z 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
  • X_yH&yj7H~F4_2Jo9V%8%-4>zj8K?$A9vsW$5y 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 literal 0 HcmV?d00001 diff --git a/priv/static/static/js/vendors~app.bc5812c087f5dbcb914d.js b/priv/static/static/js/vendors~app.90c4af83c1ae68f4cd95.js similarity index 99% rename from priv/static/static/js/vendors~app.bc5812c087f5dbcb914d.js rename to priv/static/static/js/vendors~app.90c4af83c1ae68f4cd95.js index d2f2c34da2c6cb76def05090481b107c8894cabb..879a3b312fbf3ae26acb21d3fae373cdf0a16640 100644 GIT binary patch delta 78 zcmcb7TLfS7r^UKz_zmF*g{Stf8u gTN)&rB&JyyCmSZFnpvcoB&S%K>SYz{LfS7r^UKz_z6~>tD>a$rU ia7ZU5n_3teB^y|nrK}5DRW!`(J252>^J2Ki&WU delta 138 zcmX^6!uRY8--a!WJ6aiwx9@Calx$#Oo@Sbol$>N~Xp+*t_CFgCvjZ^)5OV@C7Z7s;F%J;) V0x=&D^8>K}5DRW!`(J252>^C7Kh^*M diff --git a/priv/static/sw-pleroma.js b/priv/static/sw-pleroma.js index ee1b38e86a662a6da0d0d3fce610edd101ae7ed2..54c6ed8f00c6983eba70bcf25214b86bb1fd31d8 100644 GIT binary patch delta 656 zcmZXPJ8KnD6or|*3WGt(fQ^BhTUdnaf;Us2tiB9_J^=^&9|2u21(BYpR_SSy1djoAZ9Wb3o0 z6ioM}s7neeYcC*YrJb_GXneOa_qViQK`HbuMk!D_qqFbU=T~bhq)3s7UDU~uFerVs z+YCp;&8Ee6Oq;vSrWBR7ImVPRi_{N@3_8T_$$VW#h*?Ae3Es+NnZU;G>wH;biXMYj zM)qJZPASsY$+}8HniQg9lvWGJ-~)BH7T%OW2W<%nwGSXjDNU~Xv{2RxfV@Ofq(|vd+C*OeGqJ&TB)YME@uWn`C#qSeFI^XI6p%S%Oh)lj^?r z4Hmf{v6@B9$p?|h%I?8ZU1nnAV{aQp2n;HtesQvNezH{jyf?eOQIxZ1_lsX^qbVb` zoVJg~?W3*Xe?{ZT{+A_Vcp&ME4YwNxmmkLGYWU^W(g zZf~O2tbni2r-Seg&3`bW(XFLQ3HbeDdbXH$KOe77pLJsO?y&o{x_8(;`Eb>DXIK5k H_pko|ZnLAl diff --git a/priv/static/sw-pleroma.js.map b/priv/static/sw-pleroma.js.map index 114741e96a82abe149937214c1eba81a87fc208d..cd5ea0ae6f3d72361d5653655d345aae1cce28dc 100644 GIT binary patch delta 52 ycmeygU+dF;t%fa(;oq4G&D$ftGXgOa5HkZY3lOscF&hxG12M<;$nTspR{#K?4H*#t delta 52 ycmeygU+dF;t%fa(;oq6e4BI2WGXgOa5HkZY3lOscF&hxG12M<;$nTspR{#K%>ln}g From 073f5490ece616fd9602382c1be1347457cbbe79 Mon Sep 17 00:00:00 2001 From: Haelwenn Date: Tue, 8 Sep 2020 16:42:27 +0000 Subject: [PATCH 062/141] Merge branch 'bugfix/mock' into 'develop' mockfix but for non-secteam because gitlab See merge request pleroma/pleroma!2973 --- test/plugs/admin_secret_authentication_plug_test.exs | 2 +- test/plugs/oauth_scopes_plug_test.exs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/plugs/admin_secret_authentication_plug_test.exs b/test/plugs/admin_secret_authentication_plug_test.exs index 89df03c4b..14094eda8 100644 --- a/test/plugs/admin_secret_authentication_plug_test.exs +++ b/test/plugs/admin_secret_authentication_plug_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.AdminSecretAuthenticationPlugTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase import Mock import Pleroma.Factory diff --git a/test/plugs/oauth_scopes_plug_test.exs b/test/plugs/oauth_scopes_plug_test.exs index 884de7b4d..334316043 100644 --- a/test/plugs/oauth_scopes_plug_test.exs +++ b/test/plugs/oauth_scopes_plug_test.exs @@ -3,7 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Plugs.OAuthScopesPlugTest do - use Pleroma.Web.ConnCase, async: true + use Pleroma.Web.ConnCase alias Pleroma.Plugs.OAuthScopesPlug alias Pleroma.Repo From acf6393c87c776c0fab9fd41bbf5ba7078356be5 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 20:13:00 +0300 Subject: [PATCH 063/141] SECURITY.md: we don't support 2.0 anymore, bump to 2.1 --- SECURITY.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY.md b/SECURITY.md index c212a2505..8617c1434 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,7 +6,7 @@ Currently, Pleroma offers bugfixes and security patches only for the latest mino | Version | Support |---------| -------- -| 2.0 | Bugfixes and security patches +| 2.1 | Bugfixes and security patches ## Reporting a vulnerability From a781ac6ca5b7ab23eea795331db0a3fff406630e Mon Sep 17 00:00:00 2001 From: Egor Kislitsyn Date: Wed, 10 Jun 2020 15:37:43 +0400 Subject: [PATCH 064/141] Fix atom leak in AdminAPIController --- lib/pleroma/web/admin_api/controllers/admin_api_controller.ex | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex index aa2af1ab5..f5e4d49f9 100644 --- a/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/controllers/admin_api_controller.ex @@ -379,8 +379,7 @@ defp maybe_parse_filters(filters) do filters |> String.split(",") |> Enum.filter(&Enum.member?(@filters, &1)) - |> Enum.map(&String.to_atom/1) - |> Map.new(&{&1, true}) + |> Map.new(&{String.to_existing_atom(&1), true}) end def right_add_multiple(%{assigns: %{user: admin}} = conn, %{ From 10ef532c63431811b3998ed7b14aea21755a2b57 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 7 Jul 2020 07:06:29 +0200 Subject: [PATCH 065/141] AP C2S: Restrict character limit on Note --- .../activity_pub/activity_pub_controller.ex | 35 ++++++++++++------- .../activity_pub_controller_test.exs | 16 +++++++++ 2 files changed, 38 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub_controller.ex b/lib/pleroma/web/activity_pub/activity_pub_controller.ex index 220c4fe52..732c44271 100644 --- a/lib/pleroma/web/activity_pub/activity_pub_controller.ex +++ b/lib/pleroma/web/activity_pub/activity_pub_controller.ex @@ -399,21 +399,30 @@ def read_inbox(%{assigns: %{user: %User{nickname: as_nickname}}} = conn, %{ defp handle_user_activity( %User{} = user, - %{"type" => "Create", "object" => %{"type" => "Note"}} = params + %{"type" => "Create", "object" => %{"type" => "Note"} = object} = params ) do - object = - params["object"] - |> Map.merge(Map.take(params, ["to", "cc"])) - |> Map.put("attributedTo", user.ap_id()) - |> Transmogrifier.fix_object() + content = if is_binary(object["content"]), do: object["content"], else: "" + name = if is_binary(object["name"]), do: object["name"], else: "" + summary = if is_binary(object["summary"]), do: object["summary"], else: "" + length = String.length(content <> name <> summary) - ActivityPub.create(%{ - to: params["to"], - actor: user, - context: object["context"], - object: object, - additional: Map.take(params, ["cc"]) - }) + if length > Pleroma.Config.get([:instance, :limit]) do + {:error, dgettext("errors", "Note is over the character limit")} + else + object = + object + |> Map.merge(Map.take(params, ["to", "cc"])) + |> Map.put("attributedTo", user.ap_id()) + |> Transmogrifier.fix_object() + + ActivityPub.create(%{ + to: params["to"], + actor: user, + context: object["context"], + object: object, + additional: Map.take(params, ["cc"]) + }) + end end defp handle_user_activity(%User{} = user, %{"type" => "Delete"} = params) do diff --git a/test/web/activity_pub/activity_pub_controller_test.exs b/test/web/activity_pub/activity_pub_controller_test.exs index 57988dc1e..0517571f2 100644 --- a/test/web/activity_pub/activity_pub_controller_test.exs +++ b/test/web/activity_pub/activity_pub_controller_test.exs @@ -905,6 +905,8 @@ test "it requires authentication if instance is NOT federating", %{ end describe "POST /users/:nickname/outbox (C2S)" do + setup do: clear_config([:instance, :limit]) + setup do [ activity: %{ @@ -1121,6 +1123,20 @@ test "it doesn't spreads faulty attributedTo or actor fields", %{ assert cirno_object.data["actor"] == cirno.ap_id assert cirno_object.data["attributedTo"] == cirno.ap_id end + + test "Character limitation", %{conn: conn, activity: activity} do + Pleroma.Config.put([:instance, :limit], 5) + user = insert(:user) + + result = + conn + |> assign(:user, user) + |> put_req_header("content-type", "application/activity+json") + |> post("/users/#{user.nickname}/outbox", activity) + |> json_response(400) + + assert result == "Note is over the character limit" + end end describe "/relay/followers" do From 16c451f8f15b1b2907fb6fc40925b47821650f31 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 2 Sep 2020 20:11:24 +0200 Subject: [PATCH 066/141] search: Apply following filter only when user is usable --- lib/pleroma/user/search.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/user/search.ex b/lib/pleroma/user/search.ex index adbef7fb8..7babd47ea 100644 --- a/lib/pleroma/user/search.ex +++ b/lib/pleroma/user/search.ex @@ -115,8 +115,8 @@ defp trigram_rank(query, query_string) do ) end - defp base_query(_user, false), do: User - defp base_query(user, true), do: User.get_friends_query(user) + defp base_query(%User{} = user, true), do: User.get_friends_query(user) + defp base_query(_user, _following), do: User defp filter_invisible_users(query) do from(q in query, where: q.invisible == false) From 947ee55ae298a42c2667800c1aac96f637e31969 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Wed, 2 Sep 2020 20:24:03 +0200 Subject: [PATCH 067/141] user: harden get_friends_query(), get_followers_query() and their wrappers --- lib/pleroma/user.ex | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 94c96de8d..f323fc6ed 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1125,31 +1125,31 @@ def get_followers_query(%User{} = user, nil) do User.Query.build(%{followers: user, deactivated: false}) end - def get_followers_query(user, page) do + def get_followers_query(%User{} = user, page) do user |> get_followers_query(nil) |> User.Query.paginate(page, 20) end @spec get_followers_query(User.t()) :: Ecto.Query.t() - def get_followers_query(user), do: get_followers_query(user, nil) + def get_followers_query(%User{} = user), do: get_followers_query(user, nil) @spec get_followers(User.t(), pos_integer() | nil) :: {:ok, list(User.t())} - def get_followers(user, page \\ nil) do + def get_followers(%User{} = user, page \\ nil) do user |> get_followers_query(page) |> Repo.all() end @spec get_external_followers(User.t(), pos_integer() | nil) :: {:ok, list(User.t())} - def get_external_followers(user, page \\ nil) do + def get_external_followers(%User{} = user, page \\ nil) do user |> get_followers_query(page) |> User.Query.build(%{external: true}) |> Repo.all() end - def get_followers_ids(user, page \\ nil) do + def get_followers_ids(%User{} = user, page \\ nil) do user |> get_followers_query(page) |> select([u], u.id) @@ -1161,29 +1161,29 @@ def get_friends_query(%User{} = user, nil) do User.Query.build(%{friends: user, deactivated: false}) end - def get_friends_query(user, page) do + def get_friends_query(%User{} = user, page) do user |> get_friends_query(nil) |> User.Query.paginate(page, 20) end @spec get_friends_query(User.t()) :: Ecto.Query.t() - def get_friends_query(user), do: get_friends_query(user, nil) + def get_friends_query(%User{} = user), do: get_friends_query(user, nil) - def get_friends(user, page \\ nil) do + def get_friends(%User{} = user, page \\ nil) do user |> get_friends_query(page) |> Repo.all() end - def get_friends_ap_ids(user) do + def get_friends_ap_ids(%User{} = user) do user |> get_friends_query(nil) |> select([u], u.ap_id) |> Repo.all() end - def get_friends_ids(user, page \\ nil) do + def get_friends_ids(%User{} = user, page \\ nil) do user |> get_friends_query(page) |> select([u], u.id) From 630444ee0819ad5b58c5f9030758fe41e6fed530 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 14:19:48 -0500 Subject: [PATCH 068/141] Do not make RelMe metadata provider optional. There's really no sound reason to turn this off anyway. --- config/config.exs | 1 - lib/pleroma/web/metadata.ex | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/config.exs b/config/config.exs index 2426fbd52..df61c069e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -455,7 +455,6 @@ providers: [ Pleroma.Web.Metadata.Providers.OpenGraph, Pleroma.Web.Metadata.Providers.TwitterCard, - Pleroma.Web.Metadata.Providers.RelMe, Pleroma.Web.Metadata.Providers.Feed ], unfurl_nsfw: false diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index a9f70c43e..e45e74e7b 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -7,7 +7,8 @@ defmodule Pleroma.Web.Metadata do def build_tags(params) do providers = [ - Pleroma.Web.Metadata.Providers.RestrictIndexing + Pleroma.Web.Metadata.Providers.RestrictIndexing, + Pleroma.Web.Metadata.Providers.RelMe, | Pleroma.Config.get([__MODULE__, :providers], []) ] From ff07014b2657730101e826d7e82716989d43214c Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 14:35:22 -0500 Subject: [PATCH 069/141] Disable providers of user and status metadata when instance is private --- CHANGELOG.md | 3 +++ lib/pleroma/web/metadata.ex | 12 ++++++++++-- test/web/metadata/metadata_test.exs | 9 +++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f57e191fa..496c78ffe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## unreleased-patch - ??? +### Security +- Fix metadata leak for accounts and statuses on private instances + ### Added - Rich media failure tracking (along with `:failure_backoff` option) diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index e45e74e7b..0f0b56321 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -8,8 +8,8 @@ defmodule Pleroma.Web.Metadata do def build_tags(params) do providers = [ Pleroma.Web.Metadata.Providers.RestrictIndexing, - Pleroma.Web.Metadata.Providers.RelMe, - | Pleroma.Config.get([__MODULE__, :providers], []) + Pleroma.Web.Metadata.Providers.RelMe + | activated_providers() ] Enum.reduce(providers, "", fn parser, acc -> @@ -43,4 +43,12 @@ def activity_nsfw?(%{data: %{"sensitive" => sensitive}}) do def activity_nsfw?(_) do false end + + defp activated_providers do + if Pleroma.Config.get!([:instance, :public]) do + Pleroma.Config.get([__MODULE__, :providers], []) + else + [] + end + end end diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index 3f8b29e58..4dd0d2f5c 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -22,4 +22,13 @@ test "for local user" do "" end end + + describe "no metadata for private instances" do + test "for local user" do + Pleroma.Config.put([:instance, :public], false) + user = insert(:user, bio: "This is my secret fedi account bio") + + assert "" = Pleroma.Web.Metadata.build_tags(%{user: user}) + end + end end From 14d07081fd82211071eafb3c31d8c756fe9af9f5 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 14:48:22 -0500 Subject: [PATCH 070/141] Feed provider only generates a redirect, so always activate it. Making this configurable is misleading. --- config/config.exs | 3 +-- lib/pleroma/web/metadata.ex | 5 +++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/config/config.exs b/config/config.exs index df61c069e..1a2b312b5 100644 --- a/config/config.exs +++ b/config/config.exs @@ -454,8 +454,7 @@ config :pleroma, Pleroma.Web.Metadata, providers: [ Pleroma.Web.Metadata.Providers.OpenGraph, - Pleroma.Web.Metadata.Providers.TwitterCard, - Pleroma.Web.Metadata.Providers.Feed + Pleroma.Web.Metadata.Providers.TwitterCard ], unfurl_nsfw: false diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index 0f0b56321..926b5b187 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -7,8 +7,9 @@ defmodule Pleroma.Web.Metadata do def build_tags(params) do providers = [ - Pleroma.Web.Metadata.Providers.RestrictIndexing, - Pleroma.Web.Metadata.Providers.RelMe + Pleroma.Web.Metadata.Providers.Feed, + Pleroma.Web.Metadata.Providers.RelMe, + Pleroma.Web.Metadata.Providers.RestrictIndexing | activated_providers() ] From 44ced17634a9c89b9ff4a47c64805356f7f6401c Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 15:54:22 -0500 Subject: [PATCH 071/141] Fix test so setting doesn't leak --- test/web/metadata/metadata_test.exs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index 4dd0d2f5c..f7371cae2 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -24,6 +24,8 @@ test "for local user" do end describe "no metadata for private instances" do + setup do: clear_config([:instance, :public]) + test "for local user" do Pleroma.Config.put([:instance, :public], false) user = insert(:user, bio: "This is my secret fedi account bio") From a85ed6defbd2cec71d9a5594ef1de18d5333c7c7 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 15:58:21 -0500 Subject: [PATCH 072/141] Do not serve RSS/Atom feeds when instance is private --- lib/pleroma/web/feed/tag_controller.ex | 10 +++++++++- lib/pleroma/web/feed/user_controller.ex | 10 +++++++++- lib/pleroma/web/metadata/feed.ex | 20 ++++++++++++-------- test/web/feed/tag_controller_test.exs | 13 +++++++++++++ test/web/feed/user_controller_test.exs | 16 ++++++++++++++++ 5 files changed, 59 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/web/feed/tag_controller.ex b/lib/pleroma/web/feed/tag_controller.ex index 39b2a766a..e090dd625 100644 --- a/lib/pleroma/web/feed/tag_controller.ex +++ b/lib/pleroma/web/feed/tag_controller.ex @@ -9,7 +9,15 @@ defmodule Pleroma.Web.Feed.TagController do alias Pleroma.Web.ActivityPub.ActivityPub alias Pleroma.Web.Feed.FeedView - def feed(conn, %{"tag" => raw_tag} = params) do + def feed(conn, params) do + if Pleroma.Config.get!([:instance, :public]) do + render_feed(conn, params) + else + render_error(conn, :not_found, "Not found") + end + end + + def render_feed(conn, %{"tag" => raw_tag} = params) do {format, tag} = parse_tag(raw_tag) activities = diff --git a/lib/pleroma/web/feed/user_controller.ex b/lib/pleroma/web/feed/user_controller.ex index 9cd334a33..595889b9d 100644 --- a/lib/pleroma/web/feed/user_controller.ex +++ b/lib/pleroma/web/feed/user_controller.ex @@ -37,7 +37,15 @@ def feed_redirect(conn, %{"nickname" => nickname}) do end end - def feed(conn, %{"nickname" => nickname} = params) do + def feed(conn, params) do + if Pleroma.Config.get!([:instance, :public]) do + render_feed(conn, params) + else + errors(conn, {:error, :not_found}) + end + end + + def render_feed(conn, %{"nickname" => nickname} = params) do format = get_format(conn) format = diff --git a/lib/pleroma/web/metadata/feed.ex b/lib/pleroma/web/metadata/feed.ex index bd1459a17..dfe391b56 100644 --- a/lib/pleroma/web/metadata/feed.ex +++ b/lib/pleroma/web/metadata/feed.ex @@ -11,13 +11,17 @@ defmodule Pleroma.Web.Metadata.Providers.Feed do @impl Provider def build_tags(%{user: user}) do - [ - {:link, - [ - rel: "alternate", - type: "application/atom+xml", - href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom" - ], []} - ] + if Pleroma.Config.get!([:instance, :public]) do + [ + {:link, + [ + rel: "alternate", + type: "application/atom+xml", + href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom" + ], []} + ] + else + [] + end end end diff --git a/test/web/feed/tag_controller_test.exs b/test/web/feed/tag_controller_test.exs index 3c29cd94f..868e40965 100644 --- a/test/web/feed/tag_controller_test.exs +++ b/test/web/feed/tag_controller_test.exs @@ -181,4 +181,17 @@ test "gets a feed (RSS)", %{conn: conn} do 'yeah #PleromaArt' ] end + + describe "private instance" do + setup do: clear_config([:instance, :public]) + + test "returns 404 for tags feed", %{conn: conn} do + Config.put([:instance, :public], false) + + conn + |> put_req_header("accept", "application/rss+xml") + |> get(tag_feed_path(conn, :feed, "pleromaart")) + |> response(404) + end + end end diff --git a/test/web/feed/user_controller_test.exs b/test/web/feed/user_controller_test.exs index 0d2a61967..9a5610baa 100644 --- a/test/web/feed/user_controller_test.exs +++ b/test/web/feed/user_controller_test.exs @@ -246,4 +246,20 @@ test "with non-html / non-json format, it returns error when user is not found", assert response == ~S({"error":"Not found"}) end end + + describe "private instance" do + setup do: clear_config([:instance, :public]) + + test "returns 404 for user feed", %{conn: conn} do + Config.put([:instance, :public], false) + user = insert(:user) + + {:ok, _} = CommonAPI.post(user, %{status: "test"}) + + assert conn + |> put_req_header("accept", "application/atom+xml") + |> get(user_feed_path(conn, :feed, user.nickname)) + |> response(404) + end + end end From 96697db3bc4d8fda90906cdeff77ae2668066bd4 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 16:11:01 -0500 Subject: [PATCH 073/141] RelMe and Feed no longer configurable --- docs/configuration/cheatsheet.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index bffce95e7..ec59896ec 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -353,8 +353,6 @@ config :pleroma, Pleroma.Web.MediaProxy.Invalidation.Http, * `providers`: a list of metadata providers to enable. Providers available: * `Pleroma.Web.Metadata.Providers.OpenGraph` * `Pleroma.Web.Metadata.Providers.TwitterCard` - * `Pleroma.Web.Metadata.Providers.RelMe` - add links from user bio with rel=me into the `
    ` as ``. - * `Pleroma.Web.Metadata.Providers.Feed` - add a link to a user's Atom feed into the `
    ` as ``. * `unfurl_nsfw`: If set to `true` nsfw attachments will be shown in previews. ### :rich_media (consumer) From 549c895d80f36109731565abf00303a7f80add21 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 31 Aug 2020 16:11:13 -0500 Subject: [PATCH 074/141] Document breaking change for metadata providers --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 496c78ffe..512547427 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## unreleased-patch - ??? +### Changed + +- **Breaking:** The metadata providers RelMe and Feed are no longer configurable. RelMe should always be activated and Feed only provides a header tag for the actual RSS/Atom feed when the instance is public. + ### Security - Fix metadata leak for accounts and statuses on private instances From 2011142ed9ae45f53496b3682da7114255c814a5 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Tue, 1 Sep 2020 10:43:44 -0500 Subject: [PATCH 075/141] Use :restrict_unauthenticated testing for more granular control --- lib/pleroma/web/feed/tag_controller.ex | 2 +- lib/pleroma/web/feed/user_controller.ex | 2 +- lib/pleroma/web/metadata.ex | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/feed/tag_controller.ex b/lib/pleroma/web/feed/tag_controller.ex index e090dd625..93a8294b7 100644 --- a/lib/pleroma/web/feed/tag_controller.ex +++ b/lib/pleroma/web/feed/tag_controller.ex @@ -10,7 +10,7 @@ defmodule Pleroma.Web.Feed.TagController do alias Pleroma.Web.Feed.FeedView def feed(conn, params) do - if Pleroma.Config.get!([:instance, :public]) do + unless Pleroma.Config.restrict_unauthenticated_access?(:activities, :local) do render_feed(conn, params) else render_error(conn, :not_found, "Not found") diff --git a/lib/pleroma/web/feed/user_controller.ex b/lib/pleroma/web/feed/user_controller.ex index 595889b9d..71eb1ea7e 100644 --- a/lib/pleroma/web/feed/user_controller.ex +++ b/lib/pleroma/web/feed/user_controller.ex @@ -38,7 +38,7 @@ def feed_redirect(conn, %{"nickname" => nickname}) do end def feed(conn, params) do - if Pleroma.Config.get!([:instance, :public]) do + unless Pleroma.Config.restrict_unauthenticated_access?(:profiles, :local) do render_feed(conn, params) else errors(conn, {:error, :not_found}) diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index 926b5b187..68835c826 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -46,7 +46,7 @@ def activity_nsfw?(_) do end defp activated_providers do - if Pleroma.Config.get!([:instance, :public]) do + unless Pleroma.Config.restrict_unauthenticated_access?(:activities, :local) do Pleroma.Config.get([__MODULE__, :providers], []) else [] From 0d2814ec8e41942cd5b056d9c1ed902be1e1773c Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 7 Sep 2020 15:06:06 +0300 Subject: [PATCH 076/141] Metadata: Move restriction check from Feed provider to activated_providers --- lib/pleroma/web/metadata.ex | 3 +-- lib/pleroma/web/metadata/feed.ex | 20 ++++++++------------ test/web/metadata/metadata_test.exs | 4 +--- 3 files changed, 10 insertions(+), 17 deletions(-) diff --git a/lib/pleroma/web/metadata.ex b/lib/pleroma/web/metadata.ex index 68835c826..0f2d8d1e7 100644 --- a/lib/pleroma/web/metadata.ex +++ b/lib/pleroma/web/metadata.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Web.Metadata do def build_tags(params) do providers = [ - Pleroma.Web.Metadata.Providers.Feed, Pleroma.Web.Metadata.Providers.RelMe, Pleroma.Web.Metadata.Providers.RestrictIndexing | activated_providers() @@ -47,7 +46,7 @@ def activity_nsfw?(_) do defp activated_providers do unless Pleroma.Config.restrict_unauthenticated_access?(:activities, :local) do - Pleroma.Config.get([__MODULE__, :providers], []) + [Pleroma.Web.Metadata.Providers.Feed | Pleroma.Config.get([__MODULE__, :providers], [])] else [] end diff --git a/lib/pleroma/web/metadata/feed.ex b/lib/pleroma/web/metadata/feed.ex index dfe391b56..bd1459a17 100644 --- a/lib/pleroma/web/metadata/feed.ex +++ b/lib/pleroma/web/metadata/feed.ex @@ -11,17 +11,13 @@ defmodule Pleroma.Web.Metadata.Providers.Feed do @impl Provider def build_tags(%{user: user}) do - if Pleroma.Config.get!([:instance, :public]) do - [ - {:link, - [ - rel: "alternate", - type: "application/atom+xml", - href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom" - ], []} - ] - else - [] - end + [ + {:link, + [ + rel: "alternate", + type: "application/atom+xml", + href: Helpers.user_feed_path(Endpoint, :feed, user.nickname) <> ".atom" + ], []} + ] end end diff --git a/test/web/metadata/metadata_test.exs b/test/web/metadata/metadata_test.exs index f7371cae2..9d3121b7b 100644 --- a/test/web/metadata/metadata_test.exs +++ b/test/web/metadata/metadata_test.exs @@ -24,10 +24,8 @@ test "for local user" do end describe "no metadata for private instances" do - setup do: clear_config([:instance, :public]) - test "for local user" do - Pleroma.Config.put([:instance, :public], false) + clear_config([:instance, :public], false) user = insert(:user, bio: "This is my secret fedi account bio") assert "" = Pleroma.Web.Metadata.build_tags(%{user: user}) From ace94bfcc8a57a633a0bdf5746eefae32e6fdad9 Mon Sep 17 00:00:00 2001 From: tarteka Date: Wed, 9 Sep 2020 09:49:26 +0000 Subject: [PATCH 077/141] Added translation using Weblate (Spanish) --- priv/gettext/es/LC_MESSAGES/errors.po | 584 ++++++++++++++++++++++++++ 1 file changed, 584 insertions(+) create mode 100644 priv/gettext/es/LC_MESSAGES/errors.po diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po new file mode 100644 index 000000000..4b0972e88 --- /dev/null +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -0,0 +1,584 @@ +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-09-09 09:49+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Translate Toolkit 2.5.1\n" + +## This file is a PO Template file. +## +## `msgid`s here are often extracted from source code. +## Add new translations manually only if they're dynamic +## translations that can't be statically extracted. +## +## Run `mix gettext.extract` to bring this file up to +## date. Leave `msgstr`s empty as changing them here as no +## effect: edit them in PO (`.po`) files instead. +## From Ecto.Changeset.cast/4 +msgid "can't be blank" +msgstr "" + +## From Ecto.Changeset.unique_constraint/3 +msgid "has already been taken" +msgstr "" + +## From Ecto.Changeset.put_change/3 +msgid "is invalid" +msgstr "" + +## From Ecto.Changeset.validate_format/3 +msgid "has invalid format" +msgstr "" + +## From Ecto.Changeset.validate_subset/3 +msgid "has an invalid entry" +msgstr "" + +## From Ecto.Changeset.validate_exclusion/3 +msgid "is reserved" +msgstr "" + +## From Ecto.Changeset.validate_confirmation/3 +msgid "does not match confirmation" +msgstr "" + +## From Ecto.Changeset.no_assoc_constraint/3 +msgid "is still associated with this entry" +msgstr "" + +msgid "are still associated with this entry" +msgstr "" + +## From Ecto.Changeset.validate_length/3 +msgid "should be %{count} character(s)" +msgid_plural "should be %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have %{count} item(s)" +msgid_plural "should have %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should be at least %{count} character(s)" +msgid_plural "should be at least %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have at least %{count} item(s)" +msgid_plural "should have at least %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should be at most %{count} character(s)" +msgid_plural "should be at most %{count} character(s)" +msgstr[0] "" +msgstr[1] "" + +msgid "should have at most %{count} item(s)" +msgid_plural "should have at most %{count} item(s)" +msgstr[0] "" +msgstr[1] "" + +## From Ecto.Changeset.validate_number/3 +msgid "must be less than %{number}" +msgstr "" + +msgid "must be greater than %{number}" +msgstr "" + +msgid "must be less than or equal to %{number}" +msgstr "" + +msgid "must be greater than or equal to %{number}" +msgstr "" + +msgid "must be equal to %{number}" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:505 +#, elixir-format +msgid "Account not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:339 +#, elixir-format +msgid "Already voted" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:359 +#, elixir-format +msgid "Bad request" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:426 +#, elixir-format +msgid "Can't delete object" +msgstr "" + +#: lib/pleroma/web/controller_helper.ex:105 +#: lib/pleroma/web/controller_helper.ex:111 +#, elixir-format +msgid "Can't display this activity" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:285 +#, elixir-format +msgid "Can't find user" +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:61 +#, elixir-format +msgid "Can't get favorites" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:438 +#, elixir-format +msgid "Can't like object" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:563 +#, elixir-format +msgid "Cannot post an empty status without attachments" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:511 +#, elixir-format +msgid "Comment must be up to %{max_size} characters" +msgstr "" + +#: lib/pleroma/config/config_db.ex:191 +#, elixir-format +msgid "Config with params %{params} not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:181 +#: lib/pleroma/web/common_api/common_api.ex:185 +#, elixir-format +msgid "Could not delete" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:231 +#, elixir-format +msgid "Could not favorite" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:453 +#, elixir-format +msgid "Could not pin" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:278 +#, elixir-format +msgid "Could not unfavorite" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:463 +#, elixir-format +msgid "Could not unpin" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:216 +#, elixir-format +msgid "Could not unrepeat" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:512 +#: lib/pleroma/web/common_api/common_api.ex:521 +#, elixir-format +msgid "Could not update state" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:207 +#, elixir-format +msgid "Error." +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:106 +#, elixir-format +msgid "Invalid CAPTCHA" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:116 +#: lib/pleroma/web/oauth/oauth_controller.ex:568 +#, elixir-format +msgid "Invalid credentials" +msgstr "" + +#: lib/pleroma/plugs/ensure_authenticated_plug.ex:38 +#, elixir-format +msgid "Invalid credentials." +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:355 +#, elixir-format +msgid "Invalid indices" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:29 +#, elixir-format +msgid "Invalid parameters" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:414 +#, elixir-format +msgid "Invalid password." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:220 +#, elixir-format +msgid "Invalid request" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:109 +#, elixir-format +msgid "Kocaptcha service unavailable" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:112 +#, elixir-format +msgid "Missing parameters" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:547 +#, elixir-format +msgid "No such conversation" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:388 +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:414 lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:456 +#, elixir-format +msgid "No such permission_group" +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:84 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:486 lib/pleroma/web/admin_api/controllers/fallback_controller.ex:11 +#: lib/pleroma/web/feed/user_controller.ex:71 lib/pleroma/web/ostatus/ostatus_controller.ex:143 +#, elixir-format +msgid "Not found" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:331 +#, elixir-format +msgid "Poll's author can't vote" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:20 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:37 lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:49 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:50 lib/pleroma/web/mastodon_api/controllers/status_controller.ex:306 +#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:71 +#, elixir-format +msgid "Record not found" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/fallback_controller.ex:35 +#: lib/pleroma/web/feed/user_controller.ex:77 lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:36 +#: lib/pleroma/web/ostatus/ostatus_controller.ex:149 +#, elixir-format +msgid "Something went wrong" +msgstr "" + +#: lib/pleroma/web/common_api/activity_draft.ex:107 +#, elixir-format +msgid "The message visibility must be direct" +msgstr "" + +#: lib/pleroma/web/common_api/utils.ex:573 +#, elixir-format +msgid "The status is over the character limit" +msgstr "" + +#: lib/pleroma/plugs/ensure_public_or_authenticated_plug.ex:31 +#, elixir-format +msgid "This resource requires authentication." +msgstr "" + +#: lib/pleroma/plugs/rate_limiter/rate_limiter.ex:206 +#, elixir-format +msgid "Throttled" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:356 +#, elixir-format +msgid "Too many choices" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:443 +#, elixir-format +msgid "Unhandled activity type" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:485 +#, elixir-format +msgid "You can't revoke your own admin status." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:221 +#: lib/pleroma/web/oauth/oauth_controller.ex:308 +#, elixir-format +msgid "Your account is currently disabled" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:183 +#: lib/pleroma/web/oauth/oauth_controller.ex:331 +#, elixir-format +msgid "Your login is missing a confirmed e-mail address" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:390 +#, elixir-format +msgid "can't read inbox of %{nickname} as %{as_nickname}" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:473 +#, elixir-format +msgid "can't update outbox of %{nickname} as %{as_nickname}" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:471 +#, elixir-format +msgid "conversation is already muted" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:314 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:492 +#, elixir-format +msgid "error" +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:32 +#, elixir-format +msgid "mascots can only be images" +msgstr "" + +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:62 +#, elixir-format +msgid "not found" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:394 +#, elixir-format +msgid "Bad OAuth request." +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:115 +#, elixir-format +msgid "CAPTCHA already used" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:112 +#, elixir-format +msgid "CAPTCHA expired" +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:57 +#, elixir-format +msgid "Failed" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:410 +#, elixir-format +msgid "Failed to authenticate: %{message}." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:441 +#, elixir-format +msgid "Failed to set up user account." +msgstr "" + +#: lib/pleroma/plugs/oauth_scopes_plug.ex:38 +#, elixir-format +msgid "Insufficient permissions: %{permissions}." +msgstr "" + +#: lib/pleroma/plugs/uploaded_media.ex:104 +#, elixir-format +msgid "Internal Error" +msgstr "" + +#: lib/pleroma/web/oauth/fallback_controller.ex:22 +#: lib/pleroma/web/oauth/fallback_controller.ex:29 +#, elixir-format +msgid "Invalid Username/Password" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:118 +#, elixir-format +msgid "Invalid answer data" +msgstr "" + +#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:33 +#, elixir-format +msgid "Nodeinfo schema version not handled" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:172 +#, elixir-format +msgid "This action is outside the authorized scopes" +msgstr "" + +#: lib/pleroma/web/oauth/fallback_controller.ex:14 +#, elixir-format +msgid "Unknown error, please check the details and try again." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:119 +#: lib/pleroma/web/oauth/oauth_controller.ex:158 +#, elixir-format +msgid "Unlisted redirect_uri." +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:390 +#, elixir-format +msgid "Unsupported OAuth provider: %{provider}." +msgstr "" + +#: lib/pleroma/uploaders/uploader.ex:72 +#, elixir-format +msgid "Uploader callback timeout" +msgstr "" + +#: lib/pleroma/web/uploader_controller.ex:23 +#, elixir-format +msgid "bad request" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:103 +#, elixir-format +msgid "CAPTCHA Error" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:290 +#, elixir-format +msgid "Could not add reaction emoji" +msgstr "" + +#: lib/pleroma/web/common_api/common_api.ex:301 +#, elixir-format +msgid "Could not remove reaction emoji" +msgstr "" + +#: lib/pleroma/web/twitter_api/twitter_api.ex:129 +#, elixir-format +msgid "Invalid CAPTCHA (Missing parameter: %{name})" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/list_controller.ex:92 +#, elixir-format +msgid "List not found" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:123 +#, elixir-format +msgid "Missing parameter: %{name}" +msgstr "" + +#: lib/pleroma/web/oauth/oauth_controller.ex:210 +#: lib/pleroma/web/oauth/oauth_controller.ex:321 +#, elixir-format +msgid "Password reset is required" +msgstr "" + +#: lib/pleroma/tests/auth_test_controller.ex:9 +#: lib/pleroma/web/activity_pub/activity_pub_controller.ex:6 lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/config_controller.ex:6 lib/pleroma/web/admin_api/controllers/fallback_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/invite_controller.ex:6 lib/pleroma/web/admin_api/controllers/media_proxy_cache_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/oauth_app_controller.ex:6 lib/pleroma/web/admin_api/controllers/relay_controller.ex:6 +#: lib/pleroma/web/admin_api/controllers/report_controller.ex:6 lib/pleroma/web/admin_api/controllers/status_controller.ex:6 +#: lib/pleroma/web/controller_helper.ex:6 lib/pleroma/web/embed_controller.ex:6 +#: lib/pleroma/web/fallback_redirect_controller.ex:6 lib/pleroma/web/feed/tag_controller.ex:6 +#: lib/pleroma/web/feed/user_controller.ex:6 lib/pleroma/web/mailer/subscription_controller.ex:2 +#: lib/pleroma/web/masto_fe_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/account_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/app_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/auth_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/conversation_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/custom_emoji_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/domain_block_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/filter_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/follow_request_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/instance_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/list_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/marker_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex:14 +#: lib/pleroma/web/mastodon_api/controllers/media_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/notification_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/poll_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/report_controller.ex:8 +#: lib/pleroma/web/mastodon_api/controllers/scheduled_activity_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/search_controller.ex:6 +#: lib/pleroma/web/mastodon_api/controllers/status_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:7 +#: lib/pleroma/web/mastodon_api/controllers/suggestion_controller.ex:6 lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:6 +#: lib/pleroma/web/media_proxy/media_proxy_controller.ex:6 lib/pleroma/web/mongooseim/mongoose_im_controller.ex:6 +#: lib/pleroma/web/nodeinfo/nodeinfo_controller.ex:6 lib/pleroma/web/oauth/fallback_controller.ex:6 +#: lib/pleroma/web/oauth/mfa_controller.ex:10 lib/pleroma/web/oauth/oauth_controller.ex:6 +#: lib/pleroma/web/ostatus/ostatus_controller.ex:6 lib/pleroma/web/pleroma_api/controllers/account_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/chat_controller.ex:5 lib/pleroma/web/pleroma_api/controllers/conversation_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:2 lib/pleroma/web/pleroma_api/controllers/emoji_reaction_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/mascot_controller.ex:6 lib/pleroma/web/pleroma_api/controllers/notification_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/scrobble_controller.ex:6 +#: lib/pleroma/web/pleroma_api/controllers/two_factor_authentication_controller.ex:7 lib/pleroma/web/static_fe/static_fe_controller.ex:6 +#: lib/pleroma/web/twitter_api/controllers/password_controller.ex:10 lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex:6 +#: lib/pleroma/web/twitter_api/controllers/util_controller.ex:6 lib/pleroma/web/twitter_api/twitter_api_controller.ex:6 +#: lib/pleroma/web/uploader_controller.ex:6 lib/pleroma/web/web_finger/web_finger_controller.ex:6 +#, elixir-format +msgid "Security violation: OAuth scopes check was neither handled nor explicitly skipped." +msgstr "" + +#: lib/pleroma/plugs/ensure_authenticated_plug.ex:28 +#, elixir-format +msgid "Two-factor authentication enabled, you must use a access token." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:210 +#, elixir-format +msgid "Unexpected error occurred while adding file to pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:138 +#, elixir-format +msgid "Unexpected error occurred while creating pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:278 +#, elixir-format +msgid "Unexpected error occurred while removing file from pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:250 +#, elixir-format +msgid "Unexpected error occurred while updating file in pack." +msgstr "" + +#: lib/pleroma/web/pleroma_api/controllers/emoji_pack_controller.ex:179 +#, elixir-format +msgid "Unexpected error occurred while updating pack metadata." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/subscription_controller.ex:61 +#, elixir-format +msgid "Web push subscription is disabled on this Pleroma instance" +msgstr "" + +#: lib/pleroma/web/admin_api/controllers/admin_api_controller.ex:451 +#, elixir-format +msgid "You can't revoke your own admin/moderator status." +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex:126 +#, elixir-format +msgid "authorization required for timeline view" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/fallback_controller.ex:24 +#, elixir-format +msgid "Access denied" +msgstr "" + +#: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:282 +#, elixir-format +msgid "This API requires an authenticated user" +msgstr "" + +#: lib/pleroma/plugs/user_is_admin_plug.ex:21 +#, elixir-format +msgid "User is not an admin." +msgstr "" From 6ec1a9ded164df2872ad4ec99ca673e7618c9253 Mon Sep 17 00:00:00 2001 From: tarteka Date: Wed, 9 Sep 2020 09:52:08 +0000 Subject: [PATCH 078/141] Translated using Weblate (Spanish) Currently translated at 9.4% (10 of 106 strings) Translation: Pleroma/Pleroma backend Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma/es/ --- priv/gettext/es/LC_MESSAGES/errors.po | 32 ++++++++++++++------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index 4b0972e88..ba75936a9 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -3,14 +3,16 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 09:49+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: Automatically generated\n" -"Language-Team: none\n" +"PO-Revision-Date: 2020-09-09 10:52+0000\n" +"Last-Translator: tarteka \n" +"Language-Team: Spanish \n" "Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Translate Toolkit 2.5.1\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0.4\n" ## This file is a PO Template file. ## @@ -23,44 +25,44 @@ msgstr "" ## effect: edit them in PO (`.po`) files instead. ## From Ecto.Changeset.cast/4 msgid "can't be blank" -msgstr "" +msgstr "no puede estar en blanco" ## From Ecto.Changeset.unique_constraint/3 msgid "has already been taken" -msgstr "" +msgstr "ya está en uso" ## From Ecto.Changeset.put_change/3 msgid "is invalid" -msgstr "" +msgstr "es inválido" ## From Ecto.Changeset.validate_format/3 msgid "has invalid format" -msgstr "" +msgstr "el formato no es válido" ## From Ecto.Changeset.validate_subset/3 msgid "has an invalid entry" -msgstr "" +msgstr "tiene una entrada inválida" ## From Ecto.Changeset.validate_exclusion/3 msgid "is reserved" -msgstr "" +msgstr "está reservado" ## From Ecto.Changeset.validate_confirmation/3 msgid "does not match confirmation" -msgstr "" +msgstr "la confirmación no coincide" ## From Ecto.Changeset.no_assoc_constraint/3 msgid "is still associated with this entry" -msgstr "" +msgstr "todavía está asociado con esta entrada" msgid "are still associated with this entry" -msgstr "" +msgstr "todavía están asociados con esta entrada" ## From Ecto.Changeset.validate_length/3 msgid "should be %{count} character(s)" msgid_plural "should be %{count} character(s)" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "debe tener %{count} carácter" +msgstr[1] "debe tener %{count} caracteres" msgid "should have %{count} item(s)" msgid_plural "should have %{count} item(s)" From 0c1d24318565ec5bca0dfbe749f09d7acc9f7e42 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 9 Sep 2020 18:34:07 +0300 Subject: [PATCH 079/141] bump concurrent_limiter Should fix gun deadlocks --- mix.exs | 2 +- mix.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mix.exs b/mix.exs index 9499aab2d..18f748672 100644 --- a/mix.exs +++ b/mix.exs @@ -180,7 +180,7 @@ defp deps do {:flake_id, "~> 0.1.0"}, {:concurrent_limiter, git: "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", - ref: "55e92f84b4ed531bd487952a71040a9c69dc2807"}, + ref: "d81be41024569330f296fc472e24198d7499ba78"}, {:remote_ip, git: "https://git.pleroma.social/pleroma/remote_ip.git", ref: "b647d0deecaa3acb140854fe4bda5b7e1dc6d1c8"}, diff --git a/mix.lock b/mix.lock index c4f9cd28c..a28c47017 100644 --- a/mix.lock +++ b/mix.lock @@ -14,7 +14,7 @@ "certifi": {:hex, :certifi, "2.5.1", "867ce347f7c7d78563450a18a6a28a8090331e77fa02380b4a21962a65d36ee5", [:rebar3], [{:parse_trans, "~>3.3", [hex: :parse_trans, repo: "hexpm", optional: false]}], "hexpm", "805abd97539caf89ec6d4732c91e62ba9da0cda51ac462380bbd28ee697a8c42"}, "combine": {:hex, :combine, "0.10.0", "eff8224eeb56498a2af13011d142c5e7997a80c8f5b97c499f84c841032e429f", [:mix], [], "hexpm", "1b1dbc1790073076580d0d1d64e42eae2366583e7aecd455d1215b0d16f2451b"}, "comeonin": {:hex, :comeonin, "5.3.1", "7fe612b739c78c9c1a75186ef2d322ce4d25032d119823269d0aa1e2f1e20025", [:mix], [], "hexpm", "d6222483060c17f0977fad1b7401ef0c5863c985a64352755f366aee3799c245"}, - "concurrent_limiter": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", "55e92f84b4ed531bd487952a71040a9c69dc2807", [ref: "55e92f84b4ed531bd487952a71040a9c69dc2807"]}, + "concurrent_limiter": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/concurrent_limiter.git", "d81be41024569330f296fc472e24198d7499ba78", [ref: "d81be41024569330f296fc472e24198d7499ba78"]}, "connection": {:hex, :connection, "1.0.4", "a1cae72211f0eef17705aaededacac3eb30e6625b04a6117c1b2db6ace7d5976", [:mix], [], "hexpm", "4a0850c9be22a43af9920a71ab17c051f5f7d45c209e40269a1938832510e4d9"}, "cors_plug": {:hex, :cors_plug, "2.0.2", "2b46083af45e4bc79632bd951550509395935d3e7973275b2b743bd63cc942ce", [:mix], [{:plug, "~> 1.8", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "f0d0e13f71c51fd4ef8b2c7e051388e4dfb267522a83a22392c856de7e46465f"}, "cowboy": {:hex, :cowboy, "2.8.0", "f3dc62e35797ecd9ac1b50db74611193c29815401e53bac9a5c0577bd7bc667d", [:rebar3], [{:cowlib, "~> 2.9.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "~> 1.7.1", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "4643e4fba74ac96d4d152c75803de6fad0b3fa5df354c71afdd6cbeeb15fac8a"}, From cad69669fc692da360929a5961e96550de1f1fe1 Mon Sep 17 00:00:00 2001 From: Ivan Tashkinov Date: Wed, 9 Sep 2020 22:44:38 +0300 Subject: [PATCH 080/141] [#2130] Fixed OAuth OOB authentication for users with enabled MFA. --- lib/pleroma/web/oauth/oauth_controller.ex | 5 ++++- .../o_auth/o_auth/oob_authorization_created.html.eex | 2 +- .../web/templates/o_auth/o_auth/oob_token_exists.html.eex | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex index dd00600ea..06b116368 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/oauth/oauth_controller.ex @@ -145,7 +145,10 @@ def create_authorization( def after_create_authorization(%Plug.Conn{} = conn, %Authorization{} = auth, %{ "authorization" => %{"redirect_uri" => @oob_token_redirect_uri} }) do - render(conn, "oob_authorization_created.html", %{auth: auth}) + # Enforcing the view to reuse the template when calling from other controllers + conn + |> put_view(OAuthView) + |> render("oob_authorization_created.html", %{auth: auth}) end def after_create_authorization(%Plug.Conn{} = conn, %Authorization{} = auth, %{ diff --git a/lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex b/lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex index 8443d906b..ffabe29a6 100644 --- a/lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex +++ b/lib/pleroma/web/templates/o_auth/o_auth/oob_authorization_created.html.eex @@ -1,2 +1,2 @@

    Successfully authorized

    -

    Token code is <%= @auth.token %>

    +

    Token code is
    <%= @auth.token %>

    diff --git a/lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex b/lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex index 961aad976..82785c4b9 100644 --- a/lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex +++ b/lib/pleroma/web/templates/o_auth/o_auth/oob_token_exists.html.eex @@ -1,2 +1,2 @@

    Authorization exists

    -

    Access token is <%= @token.token %>

    +

    Access token is
    <%= @token.token %>

    From ab56dd54e787eae82cf00fddc90eab4c5cbac4a9 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 10 Sep 2020 11:23:39 +0300 Subject: [PATCH 081/141] use Pleroma.HTTP in emoji packs tasks --- lib/mix/tasks/pleroma/emoji.ex | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/lib/mix/tasks/pleroma/emoji.ex b/lib/mix/tasks/pleroma/emoji.ex index 8f52ee98d..1750373f9 100644 --- a/lib/mix/tasks/pleroma/emoji.ex +++ b/lib/mix/tasks/pleroma/emoji.ex @@ -183,7 +183,7 @@ def run(["gen-pack" | args]) do IO.puts("Downloading the pack and generating SHA256") - binary_archive = Tesla.get!(client(), src).body + {:ok, %{body: binary_archive}} = Pleroma.HTTP.get(src) archive_sha = :crypto.hash(:sha256, binary_archive) |> Base.encode16() IO.puts("SHA256 is #{archive_sha}") @@ -252,7 +252,7 @@ defp fetch_and_decode!(from) do end defp fetch("http" <> _ = from) do - with {:ok, %{body: body}} <- Tesla.get(client(), from) do + with {:ok, %{body: body}} <- Pleroma.HTTP.get(from) do {:ok, body} end end @@ -271,13 +271,5 @@ defp parse_global_opts(args) do ) end - defp client do - middleware = [ - {Tesla.Middleware.FollowRedirects, [max_redirects: 3]} - ] - - Tesla.client(middleware) - end - defp default_manifest, do: Pleroma.Config.get!([:emoji, :default_manifest]) end From 3ce658b93098551792a69f2455e6e9339a1722e2 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 19:17:51 +0300 Subject: [PATCH 082/141] schedule expired oauth tokens deletion with Oban --- config/config.exs | 2 +- config/description.exs | 1 - lib/pleroma/web/oauth/token.ex | 24 ++++++++++------ lib/pleroma/web/oauth/token/clean_worker.ex | 2 -- lib/pleroma/web/oauth/token/query.ex | 6 ---- .../web/oauth/token/strategy/refresh_token.ex | 2 +- .../workers/cron/clear_oauth_token_worker.ex | 23 --------------- lib/pleroma/workers/purge_expired_token.ex | 28 +++++++++++++++++++ test/plugs/oauth_plug_test.exs | 2 +- test/web/oauth/token_test.exs | 13 --------- .../twitter_api/password_controller_test.exs | 4 +-- .../cron/clear_oauth_token_worker_test.exs | 22 --------------- .../purge_expired_oauth_token_test.exs | 27 ++++++++++++++++++ 13 files changed, 76 insertions(+), 80 deletions(-) delete mode 100644 lib/pleroma/workers/cron/clear_oauth_token_worker.ex create mode 100644 lib/pleroma/workers/purge_expired_token.ex delete mode 100644 test/workers/cron/clear_oauth_token_worker_test.exs create mode 100644 test/workers/purge_expired_oauth_token_test.exs diff --git a/config/config.exs b/config/config.exs index 1a2b312b5..fa4c96b79 100644 --- a/config/config.exs +++ b/config/config.exs @@ -530,6 +530,7 @@ log: false, queues: [ activity_expiration: 10, + oauth_token_expiration: 1, federator_incoming: 50, federator_outgoing: 50, web_push: 50, @@ -543,7 +544,6 @@ ], plugins: [Oban.Plugins.Pruner], crontab: [ - {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker}, {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} diff --git a/config/description.exs b/config/description.exs index eac97ad64..4c4deed30 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2290,7 +2290,6 @@ type: {:list, :tuple}, description: "Settings for cron background jobs", suggestions: [ - {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker}, {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} diff --git a/lib/pleroma/web/oauth/token.ex b/lib/pleroma/web/oauth/token.ex index 08bb7326d..4d00fcb1c 100644 --- a/lib/pleroma/web/oauth/token.ex +++ b/lib/pleroma/web/oauth/token.ex @@ -50,7 +50,7 @@ def exchange_token(app, auth) do true <- auth.app_id == app.id do user = if auth.user_id, do: User.get_cached_by_id(auth.user_id), else: %User{} - create_token( + create( app, user, %{scopes: auth.scopes} @@ -83,8 +83,21 @@ defp put_valid_until(changeset, attrs) do |> validate_required([:valid_until]) end - @spec create_token(App.t(), User.t(), map()) :: {:ok, Token} | {:error, Changeset.t()} - def create_token(%App{} = app, %User{} = user, attrs \\ %{}) do + @spec create(App.t(), User.t(), map()) :: {:ok, Token} | {:error, Changeset.t()} + def create(%App{} = app, %User{} = user, attrs \\ %{}) do + with {:ok, token} <- do_create(app, user, attrs) do + if Pleroma.Config.get([:oauth2, :clean_expired_tokens]) do + Pleroma.Workers.PurgeExpiredOAuthToken.enqueue(%{ + token_id: token.id, + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC") + }) + end + + {:ok, token} + end + end + + defp do_create(app, user, attrs) do %__MODULE__{user_id: user.id, app_id: app.id} |> cast(%{scopes: attrs[:scopes] || app.scopes}, [:scopes]) |> validate_required([:scopes, :app_id]) @@ -105,11 +118,6 @@ def delete_user_token(%User{id: user_id}, token_id) do |> Repo.delete_all() end - def delete_expired_tokens do - Query.get_expired_tokens() - |> Repo.delete_all() - end - def get_user_tokens(%User{id: user_id}) do Query.get_by_user(user_id) |> Query.preload([:app]) diff --git a/lib/pleroma/web/oauth/token/clean_worker.ex b/lib/pleroma/web/oauth/token/clean_worker.ex index e3aa4eb7e..2f51bdb75 100644 --- a/lib/pleroma/web/oauth/token/clean_worker.ex +++ b/lib/pleroma/web/oauth/token/clean_worker.ex @@ -12,7 +12,6 @@ defmodule Pleroma.Web.OAuth.Token.CleanWorker do @one_day 86_400_000 alias Pleroma.MFA - alias Pleroma.Web.OAuth alias Pleroma.Workers.BackgroundWorker def start_link(_), do: GenServer.start_link(__MODULE__, %{}) @@ -32,7 +31,6 @@ def handle_info(:perform, state) do end def perform(:clean) do - OAuth.Token.delete_expired_tokens() MFA.Token.delete_expired_tokens() end end diff --git a/lib/pleroma/web/oauth/token/query.ex b/lib/pleroma/web/oauth/token/query.ex index 93d6e26ed..fd6d9b112 100644 --- a/lib/pleroma/web/oauth/token/query.ex +++ b/lib/pleroma/web/oauth/token/query.ex @@ -33,12 +33,6 @@ def get_by_id(query \\ Token, id) do from(q in query, where: q.id == ^id) end - @spec get_expired_tokens(query, DateTime.t() | nil) :: query - def get_expired_tokens(query \\ Token, date \\ nil) do - expired_date = date || Timex.now() - from(q in query, where: fragment("?", q.valid_until) < ^expired_date) - end - @spec get_by_user(query, String.t()) :: query def get_by_user(query \\ Token, user_id) do from(q in query, where: q.user_id == ^user_id) diff --git a/lib/pleroma/web/oauth/token/strategy/refresh_token.ex b/lib/pleroma/web/oauth/token/strategy/refresh_token.ex index debc29b0b..625b0fde2 100644 --- a/lib/pleroma/web/oauth/token/strategy/refresh_token.ex +++ b/lib/pleroma/web/oauth/token/strategy/refresh_token.ex @@ -46,7 +46,7 @@ defp revoke_access_token(token) do defp create_access_token({:error, error}, _), do: {:error, error} defp create_access_token({:ok, token}, %{app: app, user: user} = token_params) do - Token.create_token(app, user, add_refresh_token(token_params, token.refresh_token)) + Token.create(app, user, add_refresh_token(token_params, token.refresh_token)) end defp add_refresh_token(params, token) do diff --git a/lib/pleroma/workers/cron/clear_oauth_token_worker.ex b/lib/pleroma/workers/cron/clear_oauth_token_worker.ex deleted file mode 100644 index 276f47efc..000000000 --- a/lib/pleroma/workers/cron/clear_oauth_token_worker.ex +++ /dev/null @@ -1,23 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.ClearOauthTokenWorker do - @moduledoc """ - The worker to cleanup expired oAuth tokens. - """ - - use Oban.Worker, queue: "background" - - alias Pleroma.Config - alias Pleroma.Web.OAuth.Token - - @impl Oban.Worker - def perform(_job) do - if Config.get([:oauth2, :clean_expired_tokens], false) do - Token.delete_expired_tokens() - end - - :ok - end -end diff --git a/lib/pleroma/workers/purge_expired_token.ex b/lib/pleroma/workers/purge_expired_token.ex new file mode 100644 index 000000000..6068e43bf --- /dev/null +++ b/lib/pleroma/workers/purge_expired_token.ex @@ -0,0 +1,28 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.PurgeExpiredOAuthToken do + @moduledoc """ + Worker which purges expired OAuth tokens + """ + + use Oban.Worker, queue: :oauth_token_expiration, max_attempts: 1 + + @spec enqueue(%{token_id: integer(), valid_until: DateTime.t()}) :: + {:ok, Oban.Job.t()} | {:error, Ecto.Changeset.t()} + def enqueue(args) do + {scheduled_at, args} = Map.pop(args, :valid_until) + + args + |> __MODULE__.new(scheduled_at: scheduled_at) + |> Oban.insert() + end + + @impl true + def perform(%Oban.Job{args: %{"token_id" => id}}) do + Pleroma.Web.OAuth.Token + |> Pleroma.Repo.get(id) + |> Pleroma.Repo.delete() + end +end diff --git a/test/plugs/oauth_plug_test.exs b/test/plugs/oauth_plug_test.exs index f74c068cd..9d39d3153 100644 --- a/test/plugs/oauth_plug_test.exs +++ b/test/plugs/oauth_plug_test.exs @@ -16,7 +16,7 @@ defmodule Pleroma.Plugs.OAuthPlugTest do setup %{conn: conn} do user = insert(:user) - {:ok, %{token: token}} = Pleroma.Web.OAuth.Token.create_token(insert(:oauth_app), user) + {:ok, %{token: token}} = Pleroma.Web.OAuth.Token.create(insert(:oauth_app), user) %{user: user, token: token, conn: conn} end diff --git a/test/web/oauth/token_test.exs b/test/web/oauth/token_test.exs index 40d71eb59..c88b9cc98 100644 --- a/test/web/oauth/token_test.exs +++ b/test/web/oauth/token_test.exs @@ -69,17 +69,4 @@ test "deletes all tokens of a user" do assert tokens == 2 end - - test "deletes expired tokens" do - insert(:oauth_token, valid_until: Timex.shift(Timex.now(), days: -3)) - insert(:oauth_token, valid_until: Timex.shift(Timex.now(), days: -3)) - t3 = insert(:oauth_token) - t4 = insert(:oauth_token, valid_until: Timex.shift(Timex.now(), minutes: 10)) - {tokens, _} = Token.delete_expired_tokens() - assert tokens == 2 - available_tokens = Pleroma.Repo.all(Token) - - token_ids = available_tokens |> Enum.map(& &1.id) - assert token_ids == [t3.id, t4.id] - end end diff --git a/test/web/twitter_api/password_controller_test.exs b/test/web/twitter_api/password_controller_test.exs index 231a46c67..a5e9e2178 100644 --- a/test/web/twitter_api/password_controller_test.exs +++ b/test/web/twitter_api/password_controller_test.exs @@ -37,7 +37,7 @@ test "it shows password reset form", %{conn: conn} do test "it returns HTTP 200", %{conn: conn} do user = insert(:user) {:ok, token} = PasswordResetToken.create_token(user) - {:ok, _access_token} = Token.create_token(insert(:oauth_app), user, %{}) + {:ok, _access_token} = Token.create(insert(:oauth_app), user, %{}) params = %{ "password" => "test", @@ -62,7 +62,7 @@ test "it sets password_reset_pending to false", %{conn: conn} do user = insert(:user, password_reset_pending: true) {:ok, token} = PasswordResetToken.create_token(user) - {:ok, _access_token} = Token.create_token(insert(:oauth_app), user, %{}) + {:ok, _access_token} = Token.create(insert(:oauth_app), user, %{}) params = %{ "password" => "test", diff --git a/test/workers/cron/clear_oauth_token_worker_test.exs b/test/workers/cron/clear_oauth_token_worker_test.exs deleted file mode 100644 index 67836f34f..000000000 --- a/test/workers/cron/clear_oauth_token_worker_test.exs +++ /dev/null @@ -1,22 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.ClearOauthTokenWorkerTest do - use Pleroma.DataCase - - import Pleroma.Factory - alias Pleroma.Workers.Cron.ClearOauthTokenWorker - - setup do: clear_config([:oauth2, :clean_expired_tokens]) - - test "deletes expired tokens" do - insert(:oauth_token, - valid_until: NaiveDateTime.add(NaiveDateTime.utc_now(), -60 * 10) - ) - - Pleroma.Config.put([:oauth2, :clean_expired_tokens], true) - ClearOauthTokenWorker.perform(%Oban.Job{}) - assert Pleroma.Repo.all(Pleroma.Web.OAuth.Token) == [] - end -end diff --git a/test/workers/purge_expired_oauth_token_test.exs b/test/workers/purge_expired_oauth_token_test.exs new file mode 100644 index 000000000..3bd650d89 --- /dev/null +++ b/test/workers/purge_expired_oauth_token_test.exs @@ -0,0 +1,27 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.PurgeExpiredOAuthTokenTest do + use Pleroma.DataCase, async: true + use Oban.Testing, repo: Pleroma.Repo + + import Pleroma.Factory + + setup do: clear_config([:oauth2, :clean_expired_tokens], true) + + test "purges expired token" do + user = insert(:user) + app = insert(:oauth_app) + + {:ok, %{id: id}} = Pleroma.Web.OAuth.Token.create(app, user) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredOAuthToken, + args: %{token_id: id} + ) + + assert {:ok, %{id: ^id}} = + perform_job(Pleroma.Workers.PurgeExpiredOAuthToken, %{token_id: id}) + end +end From 7dd986a563545cb63e8404d9b107f1d29c499940 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 5 Sep 2020 18:35:01 +0300 Subject: [PATCH 083/141] expire mfa tokens through Oban --- config/config.exs | 2 +- docs/configuration/cheatsheet.md | 10 +-- lib/pleroma/mfa/token.ex | 71 +++++++++---------- lib/pleroma/web/oauth/oauth_controller.ex | 4 +- lib/pleroma/web/oauth/token.ex | 5 +- lib/pleroma/web/oauth/token/clean_worker.ex | 36 ---------- .../controllers/remote_follow_controller.ex | 2 +- lib/pleroma/workers/purge_expired_token.ex | 11 +-- .../remote_follow_controller_test.exs | 4 +- .../purge_expired_oauth_token_test.exs | 27 ------- test/workers/purge_expired_token_test.exs | 51 +++++++++++++ 11 files changed, 106 insertions(+), 117 deletions(-) delete mode 100644 lib/pleroma/web/oauth/token/clean_worker.ex delete mode 100644 test/workers/purge_expired_oauth_token_test.exs create mode 100644 test/workers/purge_expired_token_test.exs diff --git a/config/config.exs b/config/config.exs index fa4c96b79..95a6ea9db 100644 --- a/config/config.exs +++ b/config/config.exs @@ -530,7 +530,7 @@ log: false, queues: [ activity_expiration: 10, - oauth_token_expiration: 1, + token_expiration: 5, federator_incoming: 50, federator_outgoing: 50, web_push: 50, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index ec59896ec..d0bebbd45 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -691,9 +691,8 @@ Pleroma has the following queues: Pleroma has these periodic job workers: -`Pleroma.Workers.Cron.ClearOauthTokenWorker` - a job worker to cleanup expired oauth tokens. - -Example: +* `Pleroma.Workers.Cron.DigestEmailsWorker` - digest emails for users with new mentions and follows +* `Pleroma.Workers.Cron.NewUsersDigestWorker` - digest emails for admins with new registrations ```elixir config :pleroma, Oban, @@ -705,7 +704,8 @@ config :pleroma, Oban, federator_outgoing: 50 ], crontab: [ - {"0 0 * * *", Pleroma.Workers.Cron.ClearOauthTokenWorker} + {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, + {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} ] ``` @@ -972,7 +972,7 @@ Configure OAuth 2 provider capabilities: * `token_expires_in` - The lifetime in seconds of the access token. * `issue_new_refresh_token` - Keeps old refresh token or generate new refresh token when to obtain an access token. -* `clean_expired_tokens` - Enable a background job to clean expired oauth tokens. Defaults to `false`. Interval settings sets in configuration periodic jobs [`Oban.Cron`](#obancron) +* `clean_expired_tokens` - Enable a background job to clean expired oauth tokens. Defaults to `false`. ## Link parsing diff --git a/lib/pleroma/mfa/token.ex b/lib/pleroma/mfa/token.ex index 0b2449971..69b64c0e8 100644 --- a/lib/pleroma/mfa/token.ex +++ b/lib/pleroma/mfa/token.ex @@ -10,10 +10,11 @@ defmodule Pleroma.MFA.Token do alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.OAuth.Authorization - alias Pleroma.Web.OAuth.Token, as: OAuthToken @expires 300 + @type t() :: %__MODULE__{} + schema "mfa_tokens" do field(:token, :string) field(:valid_until, :naive_datetime_usec) @@ -24,6 +25,7 @@ defmodule Pleroma.MFA.Token do timestamps() end + @spec get_by_token(String.t()) :: {:ok, t()} | {:error, :not_found} def get_by_token(token) do from( t in __MODULE__, @@ -33,33 +35,40 @@ def get_by_token(token) do |> Repo.find_resource() end - def validate(token) do - with {:fetch_token, {:ok, token}} <- {:fetch_token, get_by_token(token)}, - {:expired, false} <- {:expired, is_expired?(token)} do + @spec validate(String.t()) :: {:ok, t()} | {:error, :not_found} | {:error, :expired_token} + def validate(token_str) do + with {:ok, token} <- get_by_token(token_str), + false <- expired?(token) do {:ok, token} - else - {:expired, _} -> {:error, :expired_token} - {:fetch_token, _} -> {:error, :not_found} - error -> {:error, error} end end - def create_token(%User{} = user) do - %__MODULE__{} - |> change - |> assign_user(user) - |> put_token - |> put_valid_until - |> Repo.insert() + defp expired?(%__MODULE__{valid_until: valid_until}) do + with true <- NaiveDateTime.diff(NaiveDateTime.utc_now(), valid_until) > 0 do + {:error, :expired_token} + end end - def create_token(user, authorization) do + @spec create(User.t(), Authorization.t() | nil) :: {:ok, t()} | {:error, Ecto.Changeset.t()} + def create(user, authorization \\ nil) do + with {:ok, token} <- do_create(user, authorization) do + Pleroma.Workers.PurgeExpiredToken.enqueue(%{ + token_id: token.id, + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), + mod: __MODULE__ + }) + + {:ok, token} + end + end + + defp do_create(user, authorization) do %__MODULE__{} - |> change + |> change() |> assign_user(user) - |> assign_authorization(authorization) - |> put_token - |> put_valid_until + |> maybe_assign_authorization(authorization) + |> put_token() + |> put_valid_until() |> Repo.insert() end @@ -69,15 +78,19 @@ defp assign_user(changeset, user) do |> validate_required([:user]) end - defp assign_authorization(changeset, authorization) do + defp maybe_assign_authorization(changeset, %Authorization{} = authorization) do changeset |> put_assoc(:authorization, authorization) |> validate_required([:authorization]) end + defp maybe_assign_authorization(changeset, _), do: changeset + defp put_token(changeset) do + token = Pleroma.Web.OAuth.Token.Utils.generate_token() + changeset - |> change(%{token: OAuthToken.Utils.generate_token()}) + |> change(%{token: token}) |> validate_required([:token]) |> unique_constraint(:token) end @@ -89,18 +102,4 @@ defp put_valid_until(changeset) do |> change(%{valid_until: expires_in}) |> validate_required([:valid_until]) end - - def is_expired?(%__MODULE__{valid_until: valid_until}) do - NaiveDateTime.diff(NaiveDateTime.utc_now(), valid_until) > 0 - end - - def is_expired?(_), do: false - - def delete_expired_tokens do - from( - q in __MODULE__, - where: fragment("?", q.valid_until) < ^Timex.now() - ) - |> Repo.delete_all() - end end diff --git a/lib/pleroma/web/oauth/oauth_controller.ex b/lib/pleroma/web/oauth/oauth_controller.ex index dd00600ea..bbe7aa8a0 100644 --- a/lib/pleroma/web/oauth/oauth_controller.ex +++ b/lib/pleroma/web/oauth/oauth_controller.ex @@ -197,7 +197,7 @@ defp handle_create_authorization_error( {:mfa_required, user, auth, _}, params ) do - {:ok, token} = MFA.Token.create_token(user, auth) + {:ok, token} = MFA.Token.create(user, auth) data = %{ "mfa_token" => token.token, @@ -579,7 +579,7 @@ defp put_session_registration_id(%Plug.Conn{} = conn, registration_id), do: put_session(conn, :registration_id, registration_id) defp build_and_response_mfa_token(user, auth) do - with {:ok, token} <- MFA.Token.create_token(user, auth) do + with {:ok, token} <- MFA.Token.create(user, auth) do MFAView.render("mfa_response.json", %{token: token, user: user}) end end diff --git a/lib/pleroma/web/oauth/token.ex b/lib/pleroma/web/oauth/token.ex index 4d00fcb1c..de37998f2 100644 --- a/lib/pleroma/web/oauth/token.ex +++ b/lib/pleroma/web/oauth/token.ex @@ -87,9 +87,10 @@ defp put_valid_until(changeset, attrs) do def create(%App{} = app, %User{} = user, attrs \\ %{}) do with {:ok, token} <- do_create(app, user, attrs) do if Pleroma.Config.get([:oauth2, :clean_expired_tokens]) do - Pleroma.Workers.PurgeExpiredOAuthToken.enqueue(%{ + Pleroma.Workers.PurgeExpiredToken.enqueue(%{ token_id: token.id, - valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC") + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), + mod: __MODULE__ }) end diff --git a/lib/pleroma/web/oauth/token/clean_worker.ex b/lib/pleroma/web/oauth/token/clean_worker.ex deleted file mode 100644 index 2f51bdb75..000000000 --- a/lib/pleroma/web/oauth/token/clean_worker.ex +++ /dev/null @@ -1,36 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.OAuth.Token.CleanWorker do - @moduledoc """ - The module represents functions to clean an expired OAuth and MFA tokens. - """ - use GenServer - - @ten_seconds 10_000 - @one_day 86_400_000 - - alias Pleroma.MFA - alias Pleroma.Workers.BackgroundWorker - - def start_link(_), do: GenServer.start_link(__MODULE__, %{}) - - def init(_) do - Process.send_after(self(), :perform, @ten_seconds) - {:ok, nil} - end - - @doc false - def handle_info(:perform, state) do - BackgroundWorker.enqueue("clean_expired_tokens", %{}) - interval = Pleroma.Config.get([:oauth2, :clean_expired_tokens_interval], @one_day) - - Process.send_after(self(), :perform, interval) - {:noreply, state} - end - - def perform(:clean) do - MFA.Token.delete_expired_tokens() - end -end diff --git a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex index 521dc9322..072d889e2 100644 --- a/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex +++ b/lib/pleroma/web/twitter_api/controllers/remote_follow_controller.ex @@ -135,7 +135,7 @@ defp handle_follow_error(conn, {:verify_mfa_code, followee, token, _} = _) do end defp handle_follow_error(conn, {:mfa_required, followee, user, _} = _) do - {:ok, %{token: token}} = MFA.Token.create_token(user) + {:ok, %{token: token}} = MFA.Token.create(user) render(conn, "follow_mfa.html", %{followee: followee, mfa_token: token, error: false}) end diff --git a/lib/pleroma/workers/purge_expired_token.ex b/lib/pleroma/workers/purge_expired_token.ex index 6068e43bf..a81e0cd28 100644 --- a/lib/pleroma/workers/purge_expired_token.ex +++ b/lib/pleroma/workers/purge_expired_token.ex @@ -2,14 +2,14 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Workers.PurgeExpiredOAuthToken do +defmodule Pleroma.Workers.PurgeExpiredToken do @moduledoc """ Worker which purges expired OAuth tokens """ - use Oban.Worker, queue: :oauth_token_expiration, max_attempts: 1 + use Oban.Worker, queue: :token_expiration, max_attempts: 1 - @spec enqueue(%{token_id: integer(), valid_until: DateTime.t()}) :: + @spec enqueue(%{token_id: integer(), valid_until: DateTime.t(), mod: module()}) :: {:ok, Oban.Job.t()} | {:error, Ecto.Changeset.t()} def enqueue(args) do {scheduled_at, args} = Map.pop(args, :valid_until) @@ -20,8 +20,9 @@ def enqueue(args) do end @impl true - def perform(%Oban.Job{args: %{"token_id" => id}}) do - Pleroma.Web.OAuth.Token + def perform(%Oban.Job{args: %{"token_id" => id, "mod" => module}}) do + module + |> String.to_existing_atom() |> Pleroma.Repo.get(id) |> Pleroma.Repo.delete() end diff --git a/test/web/twitter_api/remote_follow_controller_test.exs b/test/web/twitter_api/remote_follow_controller_test.exs index f7e54c26a..3852c7ce9 100644 --- a/test/web/twitter_api/remote_follow_controller_test.exs +++ b/test/web/twitter_api/remote_follow_controller_test.exs @@ -227,7 +227,7 @@ test "follows", %{conn: conn} do } ) - {:ok, %{token: token}} = MFA.Token.create_token(user) + {:ok, %{token: token}} = MFA.Token.create(user) user2 = insert(:user) otp_token = TOTP.generate_token(otp_secret) @@ -256,7 +256,7 @@ test "returns error when auth code is incorrect", %{conn: conn} do } ) - {:ok, %{token: token}} = MFA.Token.create_token(user) + {:ok, %{token: token}} = MFA.Token.create(user) user2 = insert(:user) otp_token = TOTP.generate_token(TOTP.generate_secret()) diff --git a/test/workers/purge_expired_oauth_token_test.exs b/test/workers/purge_expired_oauth_token_test.exs deleted file mode 100644 index 3bd650d89..000000000 --- a/test/workers/purge_expired_oauth_token_test.exs +++ /dev/null @@ -1,27 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.PurgeExpiredOAuthTokenTest do - use Pleroma.DataCase, async: true - use Oban.Testing, repo: Pleroma.Repo - - import Pleroma.Factory - - setup do: clear_config([:oauth2, :clean_expired_tokens], true) - - test "purges expired token" do - user = insert(:user) - app = insert(:oauth_app) - - {:ok, %{id: id}} = Pleroma.Web.OAuth.Token.create(app, user) - - assert_enqueued( - worker: Pleroma.Workers.PurgeExpiredOAuthToken, - args: %{token_id: id} - ) - - assert {:ok, %{id: ^id}} = - perform_job(Pleroma.Workers.PurgeExpiredOAuthToken, %{token_id: id}) - end -end diff --git a/test/workers/purge_expired_token_test.exs b/test/workers/purge_expired_token_test.exs new file mode 100644 index 000000000..fb7708c3f --- /dev/null +++ b/test/workers/purge_expired_token_test.exs @@ -0,0 +1,51 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.PurgeExpiredTokenTest do + use Pleroma.DataCase, async: true + use Oban.Testing, repo: Pleroma.Repo + + import Pleroma.Factory + + setup do: clear_config([:oauth2, :clean_expired_tokens], true) + + test "purges expired oauth token" do + user = insert(:user) + app = insert(:oauth_app) + + {:ok, %{id: id}} = Pleroma.Web.OAuth.Token.create(app, user) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredToken, + args: %{token_id: id, mod: Pleroma.Web.OAuth.Token} + ) + + assert {:ok, %{id: ^id}} = + perform_job(Pleroma.Workers.PurgeExpiredToken, %{ + token_id: id, + mod: Pleroma.Web.OAuth.Token + }) + + assert Repo.aggregate(Pleroma.Web.OAuth.Token, :count, :id) == 0 + end + + test "purges expired mfa token" do + authorization = insert(:oauth_authorization) + + {:ok, %{id: id}} = Pleroma.MFA.Token.create(authorization.user, authorization) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredToken, + args: %{token_id: id, mod: Pleroma.MFA.Token} + ) + + assert {:ok, %{id: ^id}} = + perform_job(Pleroma.Workers.PurgeExpiredToken, %{ + token_id: id, + mod: Pleroma.MFA.Token + }) + + assert Repo.aggregate(Pleroma.MFA.Token, :count, :id) == 0 + end +end From c6647c08e10a45aedcd77258a0e71c41d213eaa6 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 11:54:10 +0300 Subject: [PATCH 084/141] migration and changelog --- CHANGELOG.md | 1 + ...ar_oauth_token_worker_from_oban_config.exs | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index 19b2596cc..14c0252f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Removed - **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. +- **Breaking:** Removed `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` config. ## [2.1.1] - 2020-09-08 diff --git a/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs b/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs new file mode 100644 index 000000000..d9c972563 --- /dev/null +++ b/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs @@ -0,0 +1,20 @@ +defmodule Pleroma.Repo.Migrations.RemoveCronClearOauthTokenWorkerFromObanConfig do + use Ecto.Migration + + def change do + with %Pleroma.ConfigDB{} = config <- + Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Oban}), + crontab when is_list(crontab) <- config.value[:crontab], + index when is_integer(index) <- + Enum.find_index(crontab, fn {_, worker} -> + worker == Pleroma.Workers.Cron.ClearOauthTokenWorker + end) do + updated_value = Keyword.put(config.value, :crontab, List.delete_at(crontab, index)) + + config + |> Ecto.Changeset.change(value: updated_value) + |> Pleroma.Repo.update() + end + + end +end From e11fca88d424b394359f50646e4b4ec9b3ae1a8b Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 13:44:42 +0300 Subject: [PATCH 085/141] migration to move tokens expiration into Oban --- ...92050_move_tokens_expiration_into_oban.exs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs diff --git a/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs new file mode 100644 index 000000000..832bd02a7 --- /dev/null +++ b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs @@ -0,0 +1,36 @@ +defmodule Pleroma.Repo.Migrations.MoveTokensExpirationIntoOban do + use Ecto.Migration + + import Ecto.Query, only: [from: 2] + + def change do + Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}], + strategy: :one_for_one, + name: Pleroma.Supervisor + ) + + if Pleroma.Config.get([:oauth2, :clean_expired_tokens]) do + from(t in Pleroma.Web.OAuth.Token, where: t.valid_until > ^NaiveDateTime.utc_now()) + |> Pleroma.Repo.stream() + |> Stream.each(fn token -> + Pleroma.Workers.PurgeExpiredToken.enqueue(%{ + token_id: token.id, + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), + mod: Pleroma.Web.OAuth.Token + }) + end) + |> Stream.run() + end + + from(t in Pleroma.MFA.Token, where: t.valid_until > ^NaiveDateTime.utc_now()) + |> Pleroma.Repo.stream() + |> Stream.each(fn token -> + Pleroma.Workers.PurgeExpiredToken.enqueue(%{ + token_id: token.id, + valid_until: DateTime.from_naive!(token.valid_until, "Etc/UTC"), + mod: Pleroma.MFA.Token + }) + end) + |> Stream.run() + end +end From eca42566ba62ece75b79915f4af0c8a0f0c48a17 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 13:54:28 +0300 Subject: [PATCH 086/141] formatting --- ...6_remove_cron_clear_oauth_token_worker_from_oban_config.exs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs b/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs index d9c972563..b5a0a0ff6 100644 --- a/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs +++ b/priv/repo/migrations/20200907084956_remove_cron_clear_oauth_token_worker_from_oban_config.exs @@ -2,7 +2,7 @@ defmodule Pleroma.Repo.Migrations.RemoveCronClearOauthTokenWorkerFromObanConfig use Ecto.Migration def change do - with %Pleroma.ConfigDB{} = config <- + with %Pleroma.ConfigDB{} = config <- Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Oban}), crontab when is_list(crontab) <- config.value[:crontab], index when is_integer(index) <- @@ -15,6 +15,5 @@ def change do |> Ecto.Changeset.change(value: updated_value) |> Pleroma.Repo.update() end - end end From 8af1fd32234df7d0cdb74d78bcca9f68587b70f2 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 20:06:28 +0300 Subject: [PATCH 087/141] oban warning --- lib/pleroma/config/oban.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/config/oban.ex b/lib/pleroma/config/oban.ex index c2d56ebab..81758c93d 100644 --- a/lib/pleroma/config/oban.ex +++ b/lib/pleroma/config/oban.ex @@ -5,7 +5,7 @@ def warn do oban_config = Pleroma.Config.get(Oban) crontab = - [Pleroma.Workers.Cron.StatsWorker] + [Pleroma.Workers.Cron.StatsWorker, Pleroma.Workers.Cron.ClearOauthTokenWorker] |> Enum.reduce(oban_config[:crontab], fn removed_worker, acc -> with acc when is_list(acc) <- acc, setting when is_tuple(setting) <- From e8bfb50fa3c16f98845e326b153c8a89505e8a55 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 10 Sep 2020 20:09:44 +0300 Subject: [PATCH 088/141] pass options without adapter key --- lib/pleroma/reverse_proxy/client/tesla.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/reverse_proxy/client/tesla.ex b/lib/pleroma/reverse_proxy/client/tesla.ex index d5a339681..4b118eec2 100644 --- a/lib/pleroma/reverse_proxy/client/tesla.ex +++ b/lib/pleroma/reverse_proxy/client/tesla.ex @@ -28,7 +28,7 @@ def request(method, url, headers, body, opts \\ []) do url, body, headers, - Keyword.put(opts, :adapter, opts) + opts ) do if is_map(response.body) and method != :head do {:ok, response.status, response.headers, response.body} From cb06e98da27994ac8034f3ba387b6eeaf8a2c48f Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 13:47:53 +0300 Subject: [PATCH 089/141] websocket handler: Do not log client ping frames as errors --- lib/pleroma/web/mastodon_api/websocket_handler.ex | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index 94e4595d8..e6010bb4a 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -64,7 +64,9 @@ def websocket_handle(:pong, state) do {:ok, %{state | timer: timer()}} end - # We never receive messages. + # We only receive pings for now + def websocket_handle(:ping, state), do: {:ok, state} + def websocket_handle(frame, state) do Logger.error("#{__MODULE__} received frame: #{inspect(frame)}") {:ok, state} From e16e8f98169f822416c18778abfa8495a486c8f2 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 13:48:24 +0300 Subject: [PATCH 090/141] Websocket handler: do not raise if handler is terminated before switching protocols Closes #2131 --- lib/pleroma/web/mastodon_api/websocket_handler.ex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index e6010bb4a..5090d9622 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -100,6 +100,10 @@ def websocket_info(:tick, state) do {:reply, :ping, %{state | timer: nil, count: 0}, :hibernate} end + # State can be `[]` only in case we terminate before switching to websocket, + # we already log errors for these cases in `init/1`, so just do nothing here + def terminate(_reason, _req, []), do: :ok + def terminate(reason, _req, state) do Logger.debug( "#{__MODULE__} terminating websocket connection for user #{ From 01fa68fe4542286519e3520793c6b59103b050ff Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 21:26:52 +0300 Subject: [PATCH 091/141] Websocket handler: fix never matching code on failed auth `:cowboy_req.reply` does not return tuples since 2.0, see https://ninenines.eu/docs/en/cowboy/2.4/manual/cowboy_req.reply/ --- lib/pleroma/web/mastodon_api/websocket_handler.ex | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/pleroma/web/mastodon_api/websocket_handler.ex b/lib/pleroma/web/mastodon_api/websocket_handler.ex index 5090d9622..cf923ded8 100644 --- a/lib/pleroma/web/mastodon_api/websocket_handler.ex +++ b/lib/pleroma/web/mastodon_api/websocket_handler.ex @@ -37,12 +37,12 @@ def init(%{qs: qs} = req, state) do else {:error, :bad_topic} -> Logger.debug("#{__MODULE__} bad topic #{inspect(req)}") - {:ok, req} = :cowboy_req.reply(404, req) + req = :cowboy_req.reply(404, req) {:ok, req, state} {:error, :unauthorized} -> Logger.debug("#{__MODULE__} authentication error: #{inspect(req)}") - {:ok, req} = :cowboy_req.reply(401, req) + req = :cowboy_req.reply(401, req) {:ok, req, state} end end From 275602daa7c4a01dffb83759012554da2d9335fe Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 21:28:47 +0300 Subject: [PATCH 092/141] Streaming integration tests: remove unexpected error assumption For some reason instead of fixing unexpected errors, we made tests assert they indeed trigger... Now that the errors are fixed these were failing --- test/integration/mastodon_websocket_test.exs | 26 ++++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/test/integration/mastodon_websocket_test.exs b/test/integration/mastodon_websocket_test.exs index ea17e9feb..76fbc8bda 100644 --- a/test/integration/mastodon_websocket_test.exs +++ b/test/integration/mastodon_websocket_test.exs @@ -99,30 +99,30 @@ test "accepts valid tokens", state do test "accepts the 'user' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user&access_token=#{token.token}") - assert capture_log(fn -> - assert {:error, {401, _}} = start_socket("?stream=user") - Process.sleep(30) - end) =~ ":badarg" + capture_log(fn -> + assert {:error, {401, _}} = start_socket("?stream=user") + Process.sleep(30) + end) end test "accepts the 'user:notification' stream", %{token: token} = _state do assert {:ok, _} = start_socket("?stream=user:notification&access_token=#{token.token}") - assert capture_log(fn -> - assert {:error, {401, _}} = start_socket("?stream=user:notification") - Process.sleep(30) - end) =~ ":badarg" + capture_log(fn -> + assert {:error, {401, _}} = start_socket("?stream=user:notification") + Process.sleep(30) + end) end test "accepts valid token on Sec-WebSocket-Protocol header", %{token: token} do assert {:ok, _} = start_socket("?stream=user", [{"Sec-WebSocket-Protocol", token.token}]) - assert capture_log(fn -> - assert {:error, {401, _}} = - start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) + capture_log(fn -> + assert {:error, {401, _}} = + start_socket("?stream=user", [{"Sec-WebSocket-Protocol", "I am a friend"}]) - Process.sleep(30) - end) =~ ":badarg" + Process.sleep(30) + end) end end end From 9bf1065a06837b4c753549d89afe23a636a20972 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sat, 22 Aug 2020 20:46:01 +0300 Subject: [PATCH 093/141] schedule activity expiration in Oban --- config/config.exs | 3 +- config/description.exs | 1 - lib/mix/tasks/pleroma/database.ex | 18 ++-- lib/pleroma/activity.ex | 3 - lib/pleroma/activity_expiration.ex | 74 ---------------- lib/pleroma/web/activity_pub/activity_pub.ex | 7 +- .../mrf/activity_expiration_policy.ex | 4 +- lib/pleroma/web/activity_pub/side_effects.ex | 6 +- lib/pleroma/web/common_api/activity_draft.ex | 2 +- lib/pleroma/web/common_api/common_api.ex | 5 +- .../web/mastodon_api/views/status_view.ex | 5 +- .../cron/purge_expired_activities_worker.ex | 48 ----------- lib/pleroma/workers/purge_expired_activity.ex | 72 ++++++++++++++++ test/activity_expiration_test.exs | 55 ------------ test/activity_test.exs | 9 -- test/support/factory.ex | 19 ----- test/tasks/database_test.exs | 62 +++++++------- test/web/activity_pub/activity_pub_test.exs | 25 ++++-- .../mrf/activity_expiration_policy_test.exs | 8 +- test/web/common_api/common_api_test.exs | 14 ++-- .../controllers/status_controller_test.exs | 44 +++++----- .../purge_expired_activities_worker_test.exs | 84 ------------------- test/workers/purge_expired_activity_test.exs | 47 +++++++++++ 23 files changed, 229 insertions(+), 386 deletions(-) delete mode 100644 lib/pleroma/activity_expiration.ex delete mode 100644 lib/pleroma/workers/cron/purge_expired_activities_worker.ex create mode 100644 lib/pleroma/workers/purge_expired_activity.ex delete mode 100644 test/activity_expiration_test.exs delete mode 100644 test/workers/cron/purge_expired_activities_worker_test.exs create mode 100644 test/workers/purge_expired_activity_test.exs diff --git a/config/config.exs b/config/config.exs index 95a6ea9db..d975db31e 100644 --- a/config/config.exs +++ b/config/config.exs @@ -544,7 +544,6 @@ ], plugins: [Oban.Plugins.Pruner], crontab: [ - {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} ] @@ -655,7 +654,7 @@ account_confirmation_resend: {8_640_000, 5}, ap_routes: {60_000, 15} -config :pleroma, Pleroma.ActivityExpiration, enabled: true +config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true config :pleroma, Pleroma.Plugs.RemoteIp, enabled: true diff --git a/config/description.exs b/config/description.exs index 4c4deed30..6ce27278c 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2290,7 +2290,6 @@ type: {:list, :tuple}, description: "Settings for cron background jobs", suggestions: [ - {"* * * * *", Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker}, {"0 0 * * 0", Pleroma.Workers.Cron.DigestEmailsWorker}, {"0 0 * * *", Pleroma.Workers.Cron.NewUsersDigestWorker} ] diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index 7d8f00b08..aab4b5e9a 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -133,8 +133,7 @@ def run(["ensure_expiration"]) do days = Pleroma.Config.get([:mrf_activity_expiration, :days], 365) Pleroma.Activity - |> join(:left, [a], u in assoc(a, :expiration)) - |> join(:inner, [a, _u], o in Object, + |> join(:inner, [a], o in Object, on: fragment( "(?->>'id') = COALESCE((?)->'object'->> 'id', (?)->>'object')", @@ -144,14 +143,21 @@ def run(["ensure_expiration"]) do ) ) |> where(local: true) - |> where([a, u], is_nil(u)) |> where([a], fragment("(? ->> 'type'::text) = 'Create'", a.data)) - |> where([_a, _u, o], fragment("?->>'type' = 'Note'", o.data)) + |> where([_a, o], fragment("?->>'type' = 'Note'", o.data)) |> Pleroma.RepoStreamer.chunk_stream(100) |> Stream.each(fn activities -> Enum.each(activities, fn activity -> - expires_at = Timex.shift(activity.inserted_at, days: days) - Pleroma.ActivityExpiration.create(activity, expires_at, false) + expires_at = + activity.inserted_at + |> DateTime.from_naive!("Etc/UTC") + |> Timex.shift(days: days) + + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: expires_at, + validate: false + }) end) end) |> Stream.run() diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 97feebeaa..03cd3b8c0 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Activity do alias Pleroma.Activity alias Pleroma.Activity.Queries - alias Pleroma.ActivityExpiration alias Pleroma.Bookmark alias Pleroma.Notification alias Pleroma.Object @@ -60,8 +59,6 @@ defmodule Pleroma.Activity do # typical case. has_one(:object, Object, on_delete: :nothing, foreign_key: :id) - has_one(:expiration, ActivityExpiration, on_delete: :delete_all) - timestamps() end diff --git a/lib/pleroma/activity_expiration.ex b/lib/pleroma/activity_expiration.ex deleted file mode 100644 index 955f0578e..000000000 --- a/lib/pleroma/activity_expiration.ex +++ /dev/null @@ -1,74 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.ActivityExpiration do - use Ecto.Schema - - alias Pleroma.Activity - alias Pleroma.ActivityExpiration - alias Pleroma.Repo - - import Ecto.Changeset - import Ecto.Query - - @type t :: %__MODULE__{} - @min_activity_lifetime :timer.hours(1) - - schema "activity_expirations" do - belongs_to(:activity, Activity, type: FlakeId.Ecto.CompatType) - field(:scheduled_at, :naive_datetime) - end - - def changeset(%ActivityExpiration{} = expiration, attrs, validate_scheduled_at) do - expiration - |> cast(attrs, [:scheduled_at]) - |> validate_required([:scheduled_at]) - |> validate_scheduled_at(validate_scheduled_at) - end - - def get_by_activity_id(activity_id) do - ActivityExpiration - |> where([exp], exp.activity_id == ^activity_id) - |> Repo.one() - end - - def create(%Activity{} = activity, scheduled_at, validate_scheduled_at \\ true) do - %ActivityExpiration{activity_id: activity.id} - |> changeset(%{scheduled_at: scheduled_at}, validate_scheduled_at) - |> Repo.insert() - end - - def due_expirations(offset \\ 0) do - naive_datetime = - NaiveDateTime.utc_now() - |> NaiveDateTime.add(offset, :millisecond) - - ActivityExpiration - |> where([exp], exp.scheduled_at < ^naive_datetime) - |> limit(50) - |> preload(:activity) - |> Repo.all() - |> Enum.reject(fn %{activity: activity} -> - Activity.pinned_by_actor?(activity) - end) - end - - def validate_scheduled_at(changeset, false), do: changeset - - def validate_scheduled_at(changeset, true) do - validate_change(changeset, :scheduled_at, fn _, scheduled_at -> - if not expires_late_enough?(scheduled_at) do - [scheduled_at: "an ephemeral activity must live for at least one hour"] - else - [] - end - end) - end - - def expires_late_enough?(scheduled_at) do - now = NaiveDateTime.utc_now() - diff = NaiveDateTime.diff(scheduled_at, now, :millisecond) - diff > @min_activity_lifetime - end -end diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 333621413..c33848277 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -5,7 +5,6 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do alias Pleroma.Activity alias Pleroma.Activity.Ir.Topics - alias Pleroma.ActivityExpiration alias Pleroma.Config alias Pleroma.Constants alias Pleroma.Conversation @@ -165,7 +164,11 @@ def notify_and_stream(activity) do end defp maybe_create_activity_expiration({:ok, %{data: %{"expires_at" => expires_at}} = activity}) do - with {:ok, _} <- ActivityExpiration.create(activity, expires_at) do + with {:ok, _job} <- + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: expires_at + }) do {:ok, activity} end end diff --git a/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex b/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex index 7b4c78e0f..bee47b4ed 100644 --- a/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/activity_expiration_policy.ex @@ -31,10 +31,10 @@ defp note?(activity) do defp maybe_add_expiration(activity) do days = Pleroma.Config.get([:mrf_activity_expiration, :days], 365) - expires_at = NaiveDateTime.utc_now() |> Timex.shift(days: days) + expires_at = DateTime.utc_now() |> Timex.shift(days: days) with %{"expires_at" => existing_expires_at} <- activity, - :lt <- NaiveDateTime.compare(existing_expires_at, expires_at) do + :lt <- DateTime.compare(existing_expires_at, expires_at) do activity else _ -> Map.put(activity, "expires_at", expires_at) diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index a5e2323bd..b30ca1bd7 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do """ alias Pleroma.Activity alias Pleroma.Activity.Ir.Topics - alias Pleroma.ActivityExpiration alias Pleroma.Chat alias Pleroma.Chat.MessageReference alias Pleroma.FollowingRelationship @@ -189,7 +188,10 @@ def handle(%{data: %{"type" => "Create"}} = activity, meta) do end if expires_at = activity.data["expires_at"] do - ActivityExpiration.create(activity, expires_at) + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: expires_at + }) end BackgroundWorker.enqueue("fetch_data_for_activity", %{"activity_id" => activity.id}) diff --git a/lib/pleroma/web/common_api/activity_draft.ex b/lib/pleroma/web/common_api/activity_draft.ex index f849b2e01..548f76609 100644 --- a/lib/pleroma/web/common_api/activity_draft.ex +++ b/lib/pleroma/web/common_api/activity_draft.ex @@ -202,7 +202,7 @@ defp changes(draft) do additional = case draft.expires_at do - %NaiveDateTime{} = expires_at -> Map.put(additional, "expires_at", expires_at) + %DateTime{} = expires_at -> Map.put(additional, "expires_at", expires_at) _ -> additional end diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex index 4ab533658..500c3883e 100644 --- a/lib/pleroma/web/common_api/common_api.ex +++ b/lib/pleroma/web/common_api/common_api.ex @@ -4,7 +4,6 @@ defmodule Pleroma.Web.CommonAPI do alias Pleroma.Activity - alias Pleroma.ActivityExpiration alias Pleroma.Conversation.Participation alias Pleroma.Formatter alias Pleroma.Object @@ -381,9 +380,9 @@ def get_replied_to_visibility(activity) do def check_expiry_date({:ok, nil} = res), do: res def check_expiry_date({:ok, in_seconds}) do - expiry = NaiveDateTime.utc_now() |> NaiveDateTime.add(in_seconds) + expiry = DateTime.add(DateTime.utc_now(), in_seconds) - if ActivityExpiration.expires_late_enough?(expiry) do + if Pleroma.Workers.PurgeExpiredActivity.expires_late_enough?(expiry) do {:ok, expiry} else {:error, "Expiry date is too soon"} diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex index 3fe1967be..ca42917fc 100644 --- a/lib/pleroma/web/mastodon_api/views/status_view.ex +++ b/lib/pleroma/web/mastodon_api/views/status_view.ex @@ -8,7 +8,6 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do require Pleroma.Constants alias Pleroma.Activity - alias Pleroma.ActivityExpiration alias Pleroma.HTML alias Pleroma.Object alias Pleroma.Repo @@ -245,8 +244,8 @@ def render("show.json", %{activity: %{data: %{"object" => _object}} = activity} expires_at = with true <- client_posted_this_activity, - %ActivityExpiration{scheduled_at: scheduled_at} <- - ActivityExpiration.get_by_activity_id(activity.id) do + %Oban.Job{scheduled_at: scheduled_at} <- + Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) do scheduled_at else _ -> nil diff --git a/lib/pleroma/workers/cron/purge_expired_activities_worker.ex b/lib/pleroma/workers/cron/purge_expired_activities_worker.ex deleted file mode 100644 index 6549207fc..000000000 --- a/lib/pleroma/workers/cron/purge_expired_activities_worker.ex +++ /dev/null @@ -1,48 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker do - @moduledoc """ - The worker to purge expired activities. - """ - - use Oban.Worker, queue: "activity_expiration" - - alias Pleroma.Activity - alias Pleroma.ActivityExpiration - alias Pleroma.Config - alias Pleroma.User - alias Pleroma.Web.CommonAPI - - require Logger - - @interval :timer.minutes(1) - - @impl Oban.Worker - def perform(_job) do - if Config.get([ActivityExpiration, :enabled]) do - Enum.each(ActivityExpiration.due_expirations(@interval), &delete_activity/1) - end - after - :ok - end - - def delete_activity(%ActivityExpiration{activity_id: activity_id}) do - with {:activity, %Activity{} = activity} <- - {:activity, Activity.get_by_id_with_object(activity_id)}, - {:user, %User{} = user} <- {:user, User.get_by_ap_id(activity.object.data["actor"])} do - CommonAPI.delete(activity.id, user) - else - {:activity, _} -> - Logger.error( - "#{__MODULE__} Couldn't delete expired activity: not found activity ##{activity_id}" - ) - - {:user, _} -> - Logger.error( - "#{__MODULE__} Couldn't delete expired activity: not found actor of ##{activity_id}" - ) - end - end -end diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex new file mode 100644 index 000000000..016b000c1 --- /dev/null +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -0,0 +1,72 @@ +defmodule Pleroma.Workers.PurgeExpiredActivity do + @moduledoc """ + Worker which purges expired activity. + """ + + use Oban.Worker, queue: :activity_expiration, max_attempts: 1 + + import Ecto.Query + + def enqueue(args) do + with true <- enabled?(), + args when is_map(args) <- validate_expires_at(args) do + {scheduled_at, args} = Map.pop(args, :expires_at) + + args + |> __MODULE__.new(scheduled_at: scheduled_at) + |> Oban.insert() + end + end + + @impl true + def perform(%Oban.Job{args: %{"activity_id" => id}}) do + with %Pleroma.Activity{} = activity <- find_activity(id), + %Pleroma.User{} = user <- find_user(activity.object.data["actor"]) do + Pleroma.Web.CommonAPI.delete(activity.id, user) + end + end + + defp enabled? do + with false <- Pleroma.Config.get([__MODULE__, :enabled], false) do + {:error, :expired_activities_disabled} + end + end + + defp validate_expires_at(%{validate: false} = args), do: Map.delete(args, :validate) + + defp validate_expires_at(args) do + if expires_late_enough?(args[:expires_at]) do + args + else + {:error, :expiration_too_close} + end + end + + defp find_activity(id) do + with nil <- Pleroma.Activity.get_by_id_with_object(id) do + {:error, :activity_not_found} + end + end + + defp find_user(ap_id) do + with nil <- Pleroma.User.get_by_ap_id(ap_id) do + {:error, :user_not_found} + end + end + + def get_expiration(id) do + from(j in Oban.Job, + where: j.state == "scheduled", + where: j.queue == "activity_expiration", + where: fragment("?->>'activity_id' = ?", j.args, ^id) + ) + |> Pleroma.Repo.one() + end + + @spec expires_late_enough?(DateTime.t()) :: boolean() + def expires_late_enough?(scheduled_at) do + now = DateTime.utc_now() + diff = DateTime.diff(scheduled_at, now, :millisecond) + diff > :timer.hours(1) + end +end diff --git a/test/activity_expiration_test.exs b/test/activity_expiration_test.exs deleted file mode 100644 index f86d79826..000000000 --- a/test/activity_expiration_test.exs +++ /dev/null @@ -1,55 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.ActivityExpirationTest do - use Pleroma.DataCase - alias Pleroma.ActivityExpiration - import Pleroma.Factory - - setup do: clear_config([ActivityExpiration, :enabled]) - - test "finds activities due to be deleted only" do - activity = insert(:note_activity) - - expiration_due = - insert(:expiration_in_the_past, %{activity_id: activity.id}) |> Repo.preload(:activity) - - activity2 = insert(:note_activity) - insert(:expiration_in_the_future, %{activity_id: activity2.id}) - - expirations = ActivityExpiration.due_expirations() - - assert length(expirations) == 1 - assert hd(expirations) == expiration_due - end - - test "denies expirations that don't live long enough" do - activity = insert(:note_activity) - now = NaiveDateTime.utc_now() - assert {:error, _} = ActivityExpiration.create(activity, now) - end - - test "deletes an expiration activity" do - Pleroma.Config.put([ActivityExpiration, :enabled], true) - activity = insert(:note_activity) - - naive_datetime = - NaiveDateTime.add( - NaiveDateTime.utc_now(), - -:timer.minutes(2), - :millisecond - ) - - expiration = - insert( - :expiration_in_the_past, - %{activity_id: activity.id, scheduled_at: naive_datetime} - ) - - Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(%Oban.Job{}) - - refute Pleroma.Repo.get(Pleroma.Activity, activity.id) - refute Pleroma.Repo.get(Pleroma.ActivityExpiration, expiration.id) - end -end diff --git a/test/activity_test.exs b/test/activity_test.exs index 2a92327d1..ee6a99cc3 100644 --- a/test/activity_test.exs +++ b/test/activity_test.exs @@ -185,15 +185,6 @@ test "find all statuses for unauthenticated users when `limit_to_local_content` end end - test "add an activity with an expiration" do - activity = insert(:note_activity) - insert(:expiration_in_the_future, %{activity_id: activity.id}) - - Pleroma.ActivityExpiration - |> where([a], a.activity_id == ^activity.id) - |> Repo.one!() - end - test "all_by_ids_with_object/1" do %{id: id1} = insert(:note_activity) %{id: id2} = insert(:note_activity) diff --git a/test/support/factory.ex b/test/support/factory.ex index 486eda8da..2fdfabbc5 100644 --- a/test/support/factory.ex +++ b/test/support/factory.ex @@ -200,25 +200,6 @@ def note_activity_factory(attrs \\ %{}) do |> Map.merge(attrs) end - defp expiration_offset_by_minutes(attrs, minutes) do - scheduled_at = - NaiveDateTime.utc_now() - |> NaiveDateTime.add(:timer.minutes(minutes), :millisecond) - |> NaiveDateTime.truncate(:second) - - %Pleroma.ActivityExpiration{} - |> Map.merge(attrs) - |> Map.put(:scheduled_at, scheduled_at) - end - - def expiration_in_the_past_factory(attrs \\ %{}) do - expiration_offset_by_minutes(attrs, -60) - end - - def expiration_in_the_future_factory(attrs \\ %{}) do - expiration_offset_by_minutes(attrs, 61) - end - def article_activity_factory do article = insert(:article) diff --git a/test/tasks/database_test.exs b/test/tasks/database_test.exs index 3a28aa133..292a5ef5f 100644 --- a/test/tasks/database_test.exs +++ b/test/tasks/database_test.exs @@ -3,14 +3,15 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Mix.Tasks.Pleroma.DatabaseTest do + use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + alias Pleroma.Activity alias Pleroma.Object alias Pleroma.Repo alias Pleroma.User alias Pleroma.Web.CommonAPI - use Pleroma.DataCase - import Pleroma.Factory setup_all do @@ -130,40 +131,45 @@ test "it turns OrderedCollection likes into empty arrays" do describe "ensure_expiration" do test "it adds to expiration old statuses" do - %{id: activity_id1} = insert(:note_activity) + activity1 = insert(:note_activity) - %{id: activity_id2} = - insert(:note_activity, %{inserted_at: NaiveDateTime.from_iso8601!("2015-01-23 23:50:07")}) + {:ok, inserted_at, 0} = DateTime.from_iso8601("2015-01-23T23:50:07Z") + activity2 = insert(:note_activity, %{inserted_at: inserted_at}) - %{id: activity_id3} = activity3 = insert(:note_activity) + %{id: activity_id3} = insert(:note_activity) - expires_at = - NaiveDateTime.utc_now() - |> NaiveDateTime.add(60 * 61, :second) - |> NaiveDateTime.truncate(:second) + expires_at = DateTime.add(DateTime.utc_now(), 60 * 61) - Pleroma.ActivityExpiration.create(activity3, expires_at) + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: activity_id3, + expires_at: expires_at + }) Mix.Tasks.Pleroma.Database.run(["ensure_expiration"]) - expirations = - Pleroma.ActivityExpiration - |> order_by(:activity_id) - |> Repo.all() + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity1.id}, + scheduled_at: + activity1.inserted_at + |> DateTime.from_naive!("Etc/UTC") + |> Timex.shift(days: 365) + ) - assert [ - %Pleroma.ActivityExpiration{ - activity_id: ^activity_id1 - }, - %Pleroma.ActivityExpiration{ - activity_id: ^activity_id2, - scheduled_at: ~N[2016-01-23 23:50:07] - }, - %Pleroma.ActivityExpiration{ - activity_id: ^activity_id3, - scheduled_at: ^expires_at - } - ] = expirations + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity2.id}, + scheduled_at: + activity2.inserted_at + |> DateTime.from_naive!("Etc/UTC") + |> Timex.shift(days: 365) + ) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity_id3}, + scheduled_at: expires_at + ) end end end diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 03f968aaf..9af573924 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -2069,18 +2069,25 @@ test "it just returns the input if the user has no following/follower addresses" end describe "global activity expiration" do - setup do: clear_config([:mrf, :policies]) - test "creates an activity expiration for local Create activities" do - Pleroma.Config.put( - [:mrf, :policies], - Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy + clear_config([:mrf, :policies], Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy) + + {:ok, activity} = ActivityBuilder.insert(%{"type" => "Create", "context" => "3hu"}) + {:ok, follow} = ActivityBuilder.insert(%{"type" => "Follow", "context" => "3hu"}) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity.id}, + scheduled_at: + activity.inserted_at + |> DateTime.from_naive!("Etc/UTC") + |> Timex.shift(days: 365) ) - {:ok, %{id: id_create}} = ActivityBuilder.insert(%{"type" => "Create", "context" => "3hu"}) - {:ok, _follow} = ActivityBuilder.insert(%{"type" => "Follow", "context" => "3hu"}) - - assert [%{activity_id: ^id_create}] = Pleroma.ActivityExpiration |> Repo.all() + refute_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: follow.id} + ) end end diff --git a/test/web/activity_pub/mrf/activity_expiration_policy_test.exs b/test/web/activity_pub/mrf/activity_expiration_policy_test.exs index f25cf8b12..e7370d4ef 100644 --- a/test/web/activity_pub/mrf/activity_expiration_policy_test.exs +++ b/test/web/activity_pub/mrf/activity_expiration_policy_test.exs @@ -18,11 +18,11 @@ test "adds `expires_at` property" do "object" => %{"type" => "Note"} }) - assert Timex.diff(expires_at, NaiveDateTime.utc_now(), :days) == 364 + assert Timex.diff(expires_at, DateTime.utc_now(), :days) == 364 end test "keeps existing `expires_at` if it less than the config setting" do - expires_at = NaiveDateTime.utc_now() |> Timex.shift(days: 1) + expires_at = DateTime.utc_now() |> Timex.shift(days: 1) assert {:ok, %{"type" => "Create", "expires_at" => ^expires_at}} = ActivityExpirationPolicy.filter(%{ @@ -35,7 +35,7 @@ test "keeps existing `expires_at` if it less than the config setting" do end test "overwrites existing `expires_at` if it greater than the config setting" do - too_distant_future = NaiveDateTime.utc_now() |> Timex.shift(years: 2) + too_distant_future = DateTime.utc_now() |> Timex.shift(years: 2) assert {:ok, %{"type" => "Create", "expires_at" => expires_at}} = ActivityExpirationPolicy.filter(%{ @@ -46,7 +46,7 @@ test "overwrites existing `expires_at` if it greater than the config setting" do "object" => %{"type" => "Note"} }) - assert Timex.diff(expires_at, NaiveDateTime.utc_now(), :days) == 364 + assert Timex.diff(expires_at, DateTime.utc_now(), :days) == 364 end test "ignores remote activities" do diff --git a/test/web/common_api/common_api_test.exs b/test/web/common_api/common_api_test.exs index 800db9a20..5afb0a6dc 100644 --- a/test/web/common_api/common_api_test.exs +++ b/test/web/common_api/common_api_test.exs @@ -4,6 +4,8 @@ defmodule Pleroma.Web.CommonAPITest do use Pleroma.DataCase + use Oban.Testing, repo: Pleroma.Repo + alias Pleroma.Activity alias Pleroma.Chat alias Pleroma.Conversation.Participation @@ -598,15 +600,15 @@ test "it validates character limits are correctly enforced" do test "it can handle activities that expire" do user = insert(:user) - expires_at = - NaiveDateTime.utc_now() - |> NaiveDateTime.truncate(:second) - |> NaiveDateTime.add(1_000_000, :second) + expires_at = DateTime.add(DateTime.utc_now(), 1_000_000) assert {:ok, activity} = CommonAPI.post(user, %{status: "chai", expires_in: 1_000_000}) - assert expiration = Pleroma.ActivityExpiration.get_by_activity_id(activity.id) - assert expiration.scheduled_at == expires_at + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity.id}, + scheduled_at: expires_at + ) end end diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index f221884e7..17a156be8 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -4,9 +4,9 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do use Pleroma.Web.ConnCase + use Oban.Testing, repo: Pleroma.Repo alias Pleroma.Activity - alias Pleroma.ActivityExpiration alias Pleroma.Config alias Pleroma.Conversation.Participation alias Pleroma.Object @@ -29,8 +29,8 @@ defmodule Pleroma.Web.MastodonAPI.StatusControllerTest do setup do: oauth_access(["write:statuses"]) test "posting a status does not increment reblog_count when relaying", %{conn: conn} do - Pleroma.Config.put([:instance, :federating], true) - Pleroma.Config.get([:instance, :allow_relay], true) + Config.put([:instance, :federating], true) + Config.get([:instance, :allow_relay], true) response = conn @@ -103,7 +103,9 @@ test "posting a status", %{conn: conn} do # An activity that will expire: # 2 hours - expires_in = 120 * 60 + expires_in = 2 * 60 * 60 + + expires_at = DateTime.add(DateTime.utc_now(), expires_in) conn_four = conn @@ -116,19 +118,13 @@ test "posting a status", %{conn: conn} do assert fourth_response = %{"id" => fourth_id} = json_response_and_validate_schema(conn_four, 200) - assert activity = Activity.get_by_id(fourth_id) - assert expiration = ActivityExpiration.get_by_activity_id(fourth_id) + assert Activity.get_by_id(fourth_id) - estimated_expires_at = - NaiveDateTime.utc_now() - |> NaiveDateTime.add(expires_in) - |> NaiveDateTime.truncate(:second) - - # This assert will fail if the test takes longer than a minute. I sure hope it never does: - assert abs(NaiveDateTime.diff(expiration.scheduled_at, estimated_expires_at, :second)) < 60 - - assert fourth_response["pleroma"]["expires_at"] == - NaiveDateTime.to_iso8601(expiration.scheduled_at) + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: fourth_id}, + scheduled_at: expires_at + ) end test "it fails to create a status if `expires_in` is less or equal than an hour", %{ @@ -160,8 +156,8 @@ test "it fails to create a status if `expires_in` is less or equal than an hour" end test "Get MRF reason when posting a status is rejected by one", %{conn: conn} do - Pleroma.Config.put([:mrf_keyword, :reject], ["GNO"]) - Pleroma.Config.put([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.KeywordPolicy]) + Config.put([:mrf_keyword, :reject], ["GNO"]) + Config.put([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.KeywordPolicy]) assert %{"error" => "[KeywordPolicy] Matches with rejected keyword"} = conn @@ -1681,19 +1677,17 @@ test "returns the favorites of a user" do test "expires_at is nil for another user" do %{conn: conn, user: user} = oauth_access(["read:statuses"]) + expires_at = DateTime.add(DateTime.utc_now(), 1_000_000) {:ok, activity} = CommonAPI.post(user, %{status: "foobar", expires_in: 1_000_000}) - expires_at = - activity.id - |> ActivityExpiration.get_by_activity_id() - |> Map.get(:scheduled_at) - |> NaiveDateTime.to_iso8601() - - assert %{"pleroma" => %{"expires_at" => ^expires_at}} = + assert %{"pleroma" => %{"expires_at" => a_expires_at}} = conn |> get("/api/v1/statuses/#{activity.id}") |> json_response_and_validate_schema(:ok) + {:ok, a_expires_at, 0} = DateTime.from_iso8601(a_expires_at) + assert DateTime.diff(expires_at, a_expires_at) == 0 + %{conn: conn} = oauth_access(["read:statuses"]) assert %{"pleroma" => %{"expires_at" => nil}} = diff --git a/test/workers/cron/purge_expired_activities_worker_test.exs b/test/workers/cron/purge_expired_activities_worker_test.exs deleted file mode 100644 index d1acd9ae6..000000000 --- a/test/workers/cron/purge_expired_activities_worker_test.exs +++ /dev/null @@ -1,84 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Workers.Cron.PurgeExpiredActivitiesWorkerTest do - use Pleroma.DataCase - - alias Pleroma.ActivityExpiration - alias Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker - - import Pleroma.Factory - import ExUnit.CaptureLog - - setup do - clear_config([ActivityExpiration, :enabled]) - end - - test "deletes an expiration activity" do - Pleroma.Config.put([ActivityExpiration, :enabled], true) - activity = insert(:note_activity) - - naive_datetime = - NaiveDateTime.add( - NaiveDateTime.utc_now(), - -:timer.minutes(2), - :millisecond - ) - - expiration = - insert( - :expiration_in_the_past, - %{activity_id: activity.id, scheduled_at: naive_datetime} - ) - - Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(%Oban.Job{}) - - refute Pleroma.Repo.get(Pleroma.Activity, activity.id) - refute Pleroma.Repo.get(Pleroma.ActivityExpiration, expiration.id) - end - - test "works with ActivityExpirationPolicy" do - Pleroma.Config.put([ActivityExpiration, :enabled], true) - - clear_config([:mrf, :policies], Pleroma.Web.ActivityPub.MRF.ActivityExpirationPolicy) - - user = insert(:user) - - days = Pleroma.Config.get([:mrf_activity_expiration, :days], 365) - - {:ok, %{id: id} = activity} = Pleroma.Web.CommonAPI.post(user, %{status: "cofe"}) - - past_date = - NaiveDateTime.utc_now() |> Timex.shift(days: -days) |> NaiveDateTime.truncate(:second) - - activity - |> Repo.preload(:expiration) - |> Map.get(:expiration) - |> Ecto.Changeset.change(%{scheduled_at: past_date}) - |> Repo.update!() - - Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker.perform(%Oban.Job{}) - - assert [%{data: %{"type" => "Delete", "deleted_activity_id" => ^id}}] = - Pleroma.Repo.all(Pleroma.Activity) - end - - describe "delete_activity/1" do - test "adds log message if activity isn't find" do - assert capture_log([level: :error], fn -> - PurgeExpiredActivitiesWorker.delete_activity(%ActivityExpiration{ - activity_id: "test-activity" - }) - end) =~ "Couldn't delete expired activity: not found activity" - end - - test "adds log message if actor isn't find" do - assert capture_log([level: :error], fn -> - PurgeExpiredActivitiesWorker.delete_activity(%ActivityExpiration{ - activity_id: "test-activity" - }) - end) =~ "Couldn't delete expired activity: not found activity" - end - end -end diff --git a/test/workers/purge_expired_activity_test.exs b/test/workers/purge_expired_activity_test.exs new file mode 100644 index 000000000..8b5dc9fd2 --- /dev/null +++ b/test/workers/purge_expired_activity_test.exs @@ -0,0 +1,47 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Workers.PurgeExpiredActivityTest do + use Pleroma.DataCase, async: true + use Oban.Testing, repo: Pleroma.Repo + + import Pleroma.Factory + + alias Pleroma.Workers.PurgeExpiredActivity + + test "denies expirations that don't live long enough" do + activity = insert(:note_activity) + + assert {:error, :expiration_too_close} = + PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: DateTime.utc_now() + }) + + refute_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity.id} + ) + end + + test "enqueue job" do + activity = insert(:note_activity) + + assert {:ok, _} = + PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: DateTime.add(DateTime.utc_now(), 3601) + }) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: activity.id} + ) + + assert {:ok, _} = + perform_job(Pleroma.Workers.PurgeExpiredActivity, %{activity_id: activity.id}) + + assert %Oban.Job{} = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) + end +end From de4c935071a47c78d873484b202e09dce5399570 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 24 Aug 2020 13:43:02 +0300 Subject: [PATCH 094/141] don't expire pinned posts --- lib/pleroma/activity.ex | 9 ++++++-- lib/pleroma/workers/purge_expired_activity.ex | 18 +++++++++++++++- test/workers/purge_expired_activity_test.exs | 21 +++++++++++++++++++ 3 files changed, 45 insertions(+), 3 deletions(-) diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 03cd3b8c0..84aba9572 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -301,14 +301,14 @@ def all_by_actor_and_id(actor, status_ids) do |> Repo.all() end - def follow_requests_for_actor(%Pleroma.User{ap_id: ap_id}) do + def follow_requests_for_actor(%User{ap_id: ap_id}) do ap_id |> Queries.by_object_id() |> Queries.by_type("Follow") |> where([a], fragment("? ->> 'state' = 'pending'", a.data)) end - def following_requests_for_actor(%Pleroma.User{ap_id: ap_id}) do + def following_requests_for_actor(%User{ap_id: ap_id}) do Queries.by_type("Follow") |> where([a], fragment("?->>'state' = 'pending'", a.data)) |> where([a], a.actor == ^ap_id) @@ -343,4 +343,9 @@ def pinned_by_actor?(%Activity{} = activity) do actor = user_actor(activity) activity.id in actor.pinned_activities end + + @spec pinned_by_actor?(Activity.t(), User.t()) :: boolean() + def pinned_by_actor?(%Activity{id: id}, %User{} = user) do + id in user.pinned_activities + end end diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index 016b000c1..ba0053008 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -21,8 +21,18 @@ def enqueue(args) do @impl true def perform(%Oban.Job{args: %{"activity_id" => id}}) do with %Pleroma.Activity{} = activity <- find_activity(id), - %Pleroma.User{} = user <- find_user(activity.object.data["actor"]) do + %Pleroma.User{} = user <- find_user(activity.object.data["actor"]), + false <- pinned_by_actor?(activity, user) do Pleroma.Web.CommonAPI.delete(activity.id, user) + else + :pinned_by_actor -> + # if activity is pinned, schedule deletion on next day + enqueue(%{activity_id: id, expires_at: DateTime.add(DateTime.utc_now(), 24 * 3600)}) + + :ok + + error -> + error end end @@ -54,6 +64,12 @@ defp find_user(ap_id) do end end + defp pinned_by_actor?(activity, user) do + with true <- Pleroma.Activity.pinned_by_actor?(activity, user) do + :pinned_by_actor + end + end + def get_expiration(id) do from(j in Oban.Job, where: j.state == "scheduled", diff --git a/test/workers/purge_expired_activity_test.exs b/test/workers/purge_expired_activity_test.exs index 8b5dc9fd2..736d7d567 100644 --- a/test/workers/purge_expired_activity_test.exs +++ b/test/workers/purge_expired_activity_test.exs @@ -44,4 +44,25 @@ test "enqueue job" do assert %Oban.Job{} = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) end + + test "don't delete pinned posts, schedule deletion on next day" do + activity = insert(:note_activity) + + assert {:ok, _} = + PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: DateTime.utc_now(), + validate: false + }) + + user = Pleroma.User.get_by_ap_id(activity.actor) + {:ok, activity} = Pleroma.Web.CommonAPI.pin(activity.id, user) + + assert %{success: 1, failure: 0} == + Oban.drain_queue(queue: :activity_expiration, with_scheduled: true) + + job = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) + + assert DateTime.diff(job.scheduled_at, DateTime.add(DateTime.utc_now(), 24 * 3600)) in [0, 1] + end end From 629a8de9cb2ba2cc2d09679862a24031f34abc2f Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 09:10:45 +0300 Subject: [PATCH 095/141] deprecation warning changed namespace for activity expiration configuration --- config/description.exs | 6 +++--- lib/pleroma/config/deprecation_warnings.ex | 19 ++++++++++++++++++- lib/pleroma/workers/purge_expired_activity.ex | 8 +++++--- ...541_rename_activity_expiration_setting.exs | 13 +++++++++++++ 4 files changed, 39 insertions(+), 7 deletions(-) create mode 100644 priv/repo/migrations/20200824115541_rename_activity_expiration_setting.exs diff --git a/config/description.exs b/config/description.exs index 6ce27278c..1253944de 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2472,14 +2472,14 @@ }, %{ group: :pleroma, - key: Pleroma.ActivityExpiration, + key: Pleroma.Workers.PurgeExpiredActivity, type: :group, - description: "Expired activity settings", + description: "Expired activities settings", children: [ %{ key: :enabled, type: :boolean, - description: "Whether expired activities will be sent to the job queue to be deleted" + description: "Enables expired activities addition & deletion" } ] }, diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex index 2bfe4ddba..412d55a77 100644 --- a/lib/pleroma/config/deprecation_warnings.ex +++ b/lib/pleroma/config/deprecation_warnings.ex @@ -8,7 +8,7 @@ defmodule Pleroma.Config.DeprecationWarnings do require Logger alias Pleroma.Config - @type config_namespace() :: [atom()] + @type config_namespace() :: atom() | [atom()] @type config_map() :: {config_namespace(), config_namespace(), String.t()} @mrf_config_map [ @@ -57,6 +57,7 @@ def warn do check_media_proxy_whitelist_config() check_welcome_message_config() check_gun_pool_options() + check_activity_expiration_config() end def check_welcome_message_config do @@ -158,4 +159,20 @@ def check_gun_pool_options do Config.put(:pools, updated_config) end end + + @spec check_activity_expiration_config() :: :ok | nil + def check_activity_expiration_config do + warning_preface = """ + !!!DEPRECATION WARNING!!! + Your config is using old namespace for activity expiration configuration. Setting should work for now, but you are advised to change to new namespace to prevent possible issues later: + """ + + move_namespace_and_warn( + [ + {Pleroma.ActivityExpiration, Pleroma.Workers.PurgeExpiredActivity, + "\n* `config :pleroma, Pleroma.ActivityExpiration` is now `config :pleroma, Pleroma.Workers.PurgeExpiredActivity`"} + ], + warning_preface + ) + end end diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index ba0053008..44a8ad0b9 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -7,6 +7,8 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do import Ecto.Query + alias Pleroma.Activity + def enqueue(args) do with true <- enabled?(), args when is_map(args) <- validate_expires_at(args) do @@ -20,7 +22,7 @@ def enqueue(args) do @impl true def perform(%Oban.Job{args: %{"activity_id" => id}}) do - with %Pleroma.Activity{} = activity <- find_activity(id), + with %Activity{} = activity <- find_activity(id), %Pleroma.User{} = user <- find_user(activity.object.data["actor"]), false <- pinned_by_actor?(activity, user) do Pleroma.Web.CommonAPI.delete(activity.id, user) @@ -53,7 +55,7 @@ defp validate_expires_at(args) do end defp find_activity(id) do - with nil <- Pleroma.Activity.get_by_id_with_object(id) do + with nil <- Activity.get_by_id_with_object(id) do {:error, :activity_not_found} end end @@ -65,7 +67,7 @@ defp find_user(ap_id) do end defp pinned_by_actor?(activity, user) do - with true <- Pleroma.Activity.pinned_by_actor?(activity, user) do + with true <- Activity.pinned_by_actor?(activity, user) do :pinned_by_actor end end diff --git a/priv/repo/migrations/20200824115541_rename_activity_expiration_setting.exs b/priv/repo/migrations/20200824115541_rename_activity_expiration_setting.exs new file mode 100644 index 000000000..241882ef6 --- /dev/null +++ b/priv/repo/migrations/20200824115541_rename_activity_expiration_setting.exs @@ -0,0 +1,13 @@ +defmodule Pleroma.Repo.Migrations.RenameActivityExpirationSetting do + use Ecto.Migration + + def change do + config = Pleroma.ConfigDB.get_by_params(%{group: :pleroma, key: Pleroma.ActivityExpiration}) + + if config do + config + |> Ecto.Changeset.change(key: Pleroma.Workers.PurgeExpiredActivity) + |> Pleroma.Repo.update() + end + end +end From 5ad0cc4c863f7f8a1e6fdfa40eb884a5c94ebf67 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 12:30:00 +0300 Subject: [PATCH 096/141] move old expirations into Oban --- ...1316_move_activity_expirations_to_oban.exs | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs new file mode 100644 index 000000000..585d1a600 --- /dev/null +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -0,0 +1,29 @@ +defmodule Pleroma.Repo.Migrations.MoveActivityExpirationsToOban do + use Ecto.Migration + + import Ecto.Query, only: [from: 2] + + def change do + Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}], + strategy: :one_for_one, + name: Pleroma.Supervisor + ) + + from(e in "activity_expirations", + select: %{id: e.id, activity_id: e.activity_id, scheduled_at: e.scheduled_at} + ) + |> Pleroma.RepoStreamer.chunk_stream(500) + |> Stream.each(fn expirations -> + Enum.each(expirations, fn expiration -> + with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: FlakeId.to_string(expiration.activity_id), + expires_at: expires_at, + validate: false + }) + end + end) + end) + |> Stream.run() + end +end From 5381d4b78b6ed550102008cbae7f578dab06f22f Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 12:33:38 +0300 Subject: [PATCH 097/141] drop activity_expirations table --- .../20200825093037_drop_activity_expirations_table.exs | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 priv/repo/migrations/20200825093037_drop_activity_expirations_table.exs diff --git a/priv/repo/migrations/20200825093037_drop_activity_expirations_table.exs b/priv/repo/migrations/20200825093037_drop_activity_expirations_table.exs new file mode 100644 index 000000000..11c461427 --- /dev/null +++ b/priv/repo/migrations/20200825093037_drop_activity_expirations_table.exs @@ -0,0 +1,7 @@ +defmodule Pleroma.Repo.Migrations.DropActivityExpirationsTable do + use Ecto.Migration + + def change do + drop(table("activity_expirations")) + end +end From 4981b5a1a3c097ca849552c3c6f650efd22c7451 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 25 Aug 2020 12:45:06 +0300 Subject: [PATCH 098/141] copyright header --- lib/pleroma/workers/purge_expired_activity.ex | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index 44a8ad0b9..42e2ae79c 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -1,3 +1,7 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + defmodule Pleroma.Workers.PurgeExpiredActivity do @moduledoc """ Worker which purges expired activity. From 93e1c8df9dca697e7bdb822a8a5b3848b7870f53 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 3 Sep 2020 13:30:39 +0300 Subject: [PATCH 099/141] reject activity creation if passed expires_at option and expiring activities are not configured --- lib/pleroma/web/activity_pub/activity_pub.ex | 44 +++++++++----- lib/pleroma/workers/purge_expired_activity.ex | 4 ++ test/web/activity_pub/activity_pub_test.exs | 57 +++++++++++++++---- 3 files changed, 80 insertions(+), 25 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index c33848277..ee6dcf58a 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -110,23 +110,14 @@ def persist(object, meta) do def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when is_map(map) do with nil <- Activity.normalize(map), map <- lazy_put_activity_defaults(map, fake), - true <- bypass_actor_check || check_actor_is_active(map["actor"]), - {_, true} <- {:remote_limit_error, check_remote_limit(map)}, + {_, true} <- {:actor_check, bypass_actor_check || check_actor_is_active(map["actor"])}, + {_, true} <- {:remote_limit_pass, check_remote_limit(map)}, {:ok, map} <- MRF.filter(map), {recipients, _, _} = get_recipients(map), {:fake, false, map, recipients} <- {:fake, fake, map, recipients}, {:containment, :ok} <- {:containment, Containment.contain_child(map)}, - {:ok, map, object} <- insert_full_object(map) do - {:ok, activity} = - %Activity{ - data: map, - local: local, - actor: map["actor"], - recipients: recipients - } - |> Repo.insert() - |> maybe_create_activity_expiration() - + {:ok, map, object} <- insert_full_object(map), + {:ok, activity} <- insert_activity_with_expiration(map, local, recipients) do # Splice in the child object if we have one. activity = Maps.put_if_present(activity, :object, object) @@ -137,6 +128,15 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when %Activity{} = activity -> {:ok, activity} + {:actor_check, _} -> + {:error, false} + + {:containment, _} = error -> + error + + {:error, _} = error -> + error + {:fake, true, map, recipients} -> activity = %Activity{ data: map, @@ -149,11 +149,25 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when Pleroma.Web.RichMedia.Helpers.fetch_data_for_activity(activity) {:ok, activity} - error -> - {:error, error} + {:remote_limit_pass, _} -> + {:error, :remote_limit} + + {:reject, reason} -> + {:error, reason} end end + defp insert_activity_with_expiration(data, local, recipients) do + %Activity{ + data: data, + local: local, + actor: data["actor"], + recipients: recipients + } + |> Repo.insert() + |> maybe_create_activity_expiration() + end + def notify_and_stream(activity) do Notification.create_notifications(activity) diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index 42e2ae79c..c70587b47 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -13,6 +13,10 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do alias Pleroma.Activity + @spec enqueue(map()) :: + {:ok, Oban.Job.t()} + | {:error, :expired_activities_disabled} + | {:error, :expiration_too_close} def enqueue(args) do with true <- enabled?(), args when is_map(args) <- validate_expires_at(args) do diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index 9af573924..d8caa0b00 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -239,7 +239,7 @@ test "drops activities beyond a certain limit" do } } - assert {:error, {:remote_limit_error, _}} = ActivityPub.insert(data) + assert {:error, :remote_limit} = ActivityPub.insert(data) end test "doesn't drop activities with content being null" do @@ -386,9 +386,11 @@ test "can be fetched into a timeline" do end describe "create activities" do - test "it reverts create" do - user = insert(:user) + setup do + [user: insert(:user)] + end + test "it reverts create", %{user: user} do with_mock(Utils, [:passthrough], maybe_federate: fn _ -> {:error, :reverted} end) do assert {:error, :reverted} = ActivityPub.create(%{ @@ -407,9 +409,47 @@ test "it reverts create" do assert Repo.aggregate(Object, :count, :id) == 0 end - test "removes doubled 'to' recipients" do - user = insert(:user) + test "creates activity if expiration is not configured and expires_at is not passed", %{ + user: user + } do + clear_config([Pleroma.Workers.PurgeExpiredActivity, :enabled], false) + assert {:ok, _} = + ActivityPub.create(%{ + to: ["user1", "user2"], + actor: user, + context: "", + object: %{ + "to" => ["user1", "user2"], + "type" => "Note", + "content" => "testing" + } + }) + end + + test "rejects activity if expires_at present but expiration is not configured", %{user: user} do + clear_config([Pleroma.Workers.PurgeExpiredActivity, :enabled], false) + + assert {:error, :expired_activities_disabled} = + ActivityPub.create(%{ + to: ["user1", "user2"], + actor: user, + context: "", + object: %{ + "to" => ["user1", "user2"], + "type" => "Note", + "content" => "testing" + }, + additional: %{ + "expires_at" => DateTime.utc_now() + } + }) + + assert Repo.aggregate(Activity, :count, :id) == 0 + assert Repo.aggregate(Object, :count, :id) == 0 + end + + test "removes doubled 'to' recipients", %{user: user} do {:ok, activity} = ActivityPub.create(%{ to: ["user1", "user1", "user2"], @@ -427,9 +467,7 @@ test "removes doubled 'to' recipients" do assert activity.recipients == ["user1", "user2", user.ap_id] end - test "increases user note count only for public activities" do - user = insert(:user) - + test "increases user note count only for public activities", %{user: user} do {:ok, _} = CommonAPI.post(User.get_cached_by_id(user.id), %{ status: "1", @@ -458,8 +496,7 @@ test "increases user note count only for public activities" do assert user.note_count == 2 end - test "increases replies count" do - user = insert(:user) + test "increases replies count", %{user: user} do user2 = insert(:user) {:ok, activity} = CommonAPI.post(user, %{status: "1", visibility: "public"}) From 357d971a10c28780795af4d19b37b0ac80d6ad09 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 3 Sep 2020 17:56:20 +0300 Subject: [PATCH 100/141] expiration for new pipeline --- lib/pleroma/web/activity_pub/activity_pub.ex | 18 ++++++++++++------ lib/pleroma/web/activity_pub/side_effects.ex | 7 ------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index ee6dcf58a..66a9f78a3 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -101,7 +101,9 @@ def persist(object, meta) do local: local, recipients: recipients, actor: object["actor"] - }) do + }), + # TODO: add tests for expired activities, when Note type will be supported in new pipeline + {:ok, _} <- maybe_create_activity_expiration(activity) do {:ok, activity, meta} end end @@ -158,14 +160,16 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when end defp insert_activity_with_expiration(data, local, recipients) do - %Activity{ + struct = %Activity{ data: data, local: local, actor: data["actor"], recipients: recipients } - |> Repo.insert() - |> maybe_create_activity_expiration() + + with {:ok, activity} <- Repo.insert(struct) do + maybe_create_activity_expiration(activity) + end end def notify_and_stream(activity) do @@ -177,7 +181,9 @@ def notify_and_stream(activity) do stream_out_participations(participations) end - defp maybe_create_activity_expiration({:ok, %{data: %{"expires_at" => expires_at}} = activity}) do + defp maybe_create_activity_expiration( + %{data: %{"expires_at" => %DateTime{} = expires_at}} = activity + ) do with {:ok, _job} <- Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ activity_id: activity.id, @@ -187,7 +193,7 @@ defp maybe_create_activity_expiration({:ok, %{data: %{"expires_at" => expires_at end end - defp maybe_create_activity_expiration(result), do: result + defp maybe_create_activity_expiration(activity), do: {:ok, activity} defp create_or_bump_conversation(activity, actor) do with {:ok, conversation} <- Conversation.create_or_bump_for(activity), diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index b30ca1bd7..46a8be767 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -187,13 +187,6 @@ def handle(%{data: %{"type" => "Create"}} = activity, meta) do Object.increase_replies_count(in_reply_to) end - if expires_at = activity.data["expires_at"] do - Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: expires_at - }) - end - BackgroundWorker.enqueue("fetch_data_for_activity", %{"activity_id" => activity.id}) meta = From 6f2d1145183389c415e4d5a915e0c3965c00a3fb Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 3 Sep 2020 18:08:19 +0300 Subject: [PATCH 101/141] use another stream function in migration --- ...1316_move_activity_expirations_to_oban.exs | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs index 585d1a600..2bfefceb0 100644 --- a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -12,17 +12,15 @@ def change do from(e in "activity_expirations", select: %{id: e.id, activity_id: e.activity_id, scheduled_at: e.scheduled_at} ) - |> Pleroma.RepoStreamer.chunk_stream(500) - |> Stream.each(fn expirations -> - Enum.each(expirations, fn expiration -> - with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do - Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ - activity_id: FlakeId.to_string(expiration.activity_id), - expires_at: expires_at, - validate: false - }) - end - end) + |> Pleroma.Repo.stream() + |> Enum.each(fn expiration -> + with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: FlakeId.to_string(expiration.activity_id), + expires_at: expires_at, + validate: false + }) + end end) |> Stream.run() end From b3485a6dbfb1a16dd5604294074ef5139fbf3ce9 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Thu, 3 Sep 2020 19:02:22 +0300 Subject: [PATCH 102/141] little clean up --- lib/pleroma/workers/purge_expired_activity.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index c70587b47..4be146194 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -23,7 +23,7 @@ def enqueue(args) do {scheduled_at, args} = Map.pop(args, :expires_at) args - |> __MODULE__.new(scheduled_at: scheduled_at) + |> new(scheduled_at: scheduled_at) |> Oban.insert() end end From eb5ff715f7917e174b9ae104a5d82779ff925301 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 4 Sep 2020 11:40:32 +0300 Subject: [PATCH 103/141] pin/unpin for activities with expires_at option --- lib/pleroma/activity.ex | 5 -- lib/pleroma/user.ex | 17 ++++++- lib/pleroma/workers/purge_expired_activity.ex | 18 +------ .../controllers/status_controller_test.exs | 49 ++++++++++++++++++- test/workers/purge_expired_activity_test.exs | 21 -------- 5 files changed, 64 insertions(+), 46 deletions(-) diff --git a/lib/pleroma/activity.ex b/lib/pleroma/activity.ex index 84aba9572..17af04257 100644 --- a/lib/pleroma/activity.ex +++ b/lib/pleroma/activity.ex @@ -343,9 +343,4 @@ def pinned_by_actor?(%Activity{} = activity) do actor = user_actor(activity) activity.id in actor.pinned_activities end - - @spec pinned_by_actor?(Activity.t(), User.t()) :: boolean() - def pinned_by_actor?(%Activity{id: id}, %User{} = user) do - id in user.pinned_activities - end end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index f323fc6ed..e73d19964 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -2315,6 +2315,11 @@ def add_pinnned_activity(user, %Pleroma.Activity{id: id}) do max_pinned_statuses = Config.get([:instance, :max_pinned_statuses], 0) params = %{pinned_activities: user.pinned_activities ++ [id]} + # if pinned activity was scheduled for deletion, we remove job + if expiration = Pleroma.Workers.PurgeExpiredActivity.get_expiration(id) do + Oban.cancel_job(expiration.id) + end + user |> cast(params, [:pinned_activities]) |> validate_length(:pinned_activities, @@ -2327,9 +2332,19 @@ def add_pinnned_activity(user, %Pleroma.Activity{id: id}) do |> update_and_set_cache() end - def remove_pinnned_activity(user, %Pleroma.Activity{id: id}) do + def remove_pinnned_activity(user, %Pleroma.Activity{id: id, data: data}) do params = %{pinned_activities: List.delete(user.pinned_activities, id)} + # if pinned activity was scheduled for deletion, we reschedule it for deletion + if data["expires_at"] do + {:ok, expires_at, _} = DateTime.from_iso8601(data["expires_at"]) + + Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ + activity_id: id, + expires_at: expires_at + }) + end + user |> cast(params, [:pinned_activities]) |> update_and_set_cache() diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index 4be146194..f981eda8e 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -31,18 +31,8 @@ def enqueue(args) do @impl true def perform(%Oban.Job{args: %{"activity_id" => id}}) do with %Activity{} = activity <- find_activity(id), - %Pleroma.User{} = user <- find_user(activity.object.data["actor"]), - false <- pinned_by_actor?(activity, user) do + %Pleroma.User{} = user <- find_user(activity.object.data["actor"]) do Pleroma.Web.CommonAPI.delete(activity.id, user) - else - :pinned_by_actor -> - # if activity is pinned, schedule deletion on next day - enqueue(%{activity_id: id, expires_at: DateTime.add(DateTime.utc_now(), 24 * 3600)}) - - :ok - - error -> - error end end @@ -74,12 +64,6 @@ defp find_user(ap_id) do end end - defp pinned_by_actor?(activity, user) do - with true <- Activity.pinned_by_actor?(activity, user) do - :pinned_by_actor - end - end - def get_expiration(id) do from(j in Oban.Job, where: j.state == "scheduled", diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 17a156be8..82ea73898 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -115,8 +115,7 @@ test "posting a status", %{conn: conn} do "expires_in" => expires_in }) - assert fourth_response = - %{"id" => fourth_id} = json_response_and_validate_schema(conn_four, 200) + assert %{"id" => fourth_id} = json_response_and_validate_schema(conn_four, 200) assert Activity.get_by_id(fourth_id) @@ -1142,6 +1141,52 @@ test "max pinned statuses", %{conn: conn, user: user, activity: activity_one} do |> post("/api/v1/statuses/#{activity_two.id}/pin") |> json_response_and_validate_schema(400) end + + test "on pin removes deletion job, on unpin reschedule deletion" do + %{conn: conn} = oauth_access(["write:accounts", "write:statuses"]) + expires_in = 2 * 60 * 60 + + expires_at = DateTime.add(DateTime.utc_now(), expires_in) + + assert %{"id" => id} = + conn + |> put_req_header("content-type", "application/json") + |> post("api/v1/statuses", %{ + "status" => "oolong", + "expires_in" => expires_in + }) + |> json_response_and_validate_schema(200) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: id}, + scheduled_at: expires_at + ) + + assert %{"id" => ^id, "pinned" => true} = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses/#{id}/pin") + |> json_response_and_validate_schema(200) + + refute_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: id}, + scheduled_at: expires_at + ) + + assert %{"id" => ^id, "pinned" => false} = + conn + |> put_req_header("content-type", "application/json") + |> post("/api/v1/statuses/#{id}/unpin") + |> json_response_and_validate_schema(200) + + assert_enqueued( + worker: Pleroma.Workers.PurgeExpiredActivity, + args: %{activity_id: id}, + scheduled_at: expires_at + ) + end end describe "cards" do diff --git a/test/workers/purge_expired_activity_test.exs b/test/workers/purge_expired_activity_test.exs index 736d7d567..8b5dc9fd2 100644 --- a/test/workers/purge_expired_activity_test.exs +++ b/test/workers/purge_expired_activity_test.exs @@ -44,25 +44,4 @@ test "enqueue job" do assert %Oban.Job{} = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) end - - test "don't delete pinned posts, schedule deletion on next day" do - activity = insert(:note_activity) - - assert {:ok, _} = - PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: DateTime.utc_now(), - validate: false - }) - - user = Pleroma.User.get_by_ap_id(activity.actor) - {:ok, activity} = Pleroma.Web.CommonAPI.pin(activity.id, user) - - assert %{success: 1, failure: 0} == - Oban.drain_queue(queue: :activity_expiration, with_scheduled: true) - - job = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) - - assert DateTime.diff(job.scheduled_at, DateTime.add(DateTime.utc_now(), 24 * 3600)) in [0, 1] - end end From 29c1178c2b20eb1b389c7e1d35b58af05f48e8a2 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 4 Sep 2020 12:05:17 +0300 Subject: [PATCH 104/141] migration fix --- .../20200825061316_move_activity_expirations_to_oban.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs index 2bfefceb0..137933368 100644 --- a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -13,7 +13,7 @@ def change do select: %{id: e.id, activity_id: e.activity_id, scheduled_at: e.scheduled_at} ) |> Pleroma.Repo.stream() - |> Enum.each(fn expiration -> + |> Stream.each(fn expiration -> with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ activity_id: FlakeId.to_string(expiration.activity_id), From f24828a3e848e6ce3bcdd254e8c6e451898cfdf7 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 20:21:32 +0300 Subject: [PATCH 105/141] oban warning --- lib/pleroma/config/oban.ex | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/config/oban.ex b/lib/pleroma/config/oban.ex index 81758c93d..9f601b1a3 100644 --- a/lib/pleroma/config/oban.ex +++ b/lib/pleroma/config/oban.ex @@ -5,7 +5,11 @@ def warn do oban_config = Pleroma.Config.get(Oban) crontab = - [Pleroma.Workers.Cron.StatsWorker, Pleroma.Workers.Cron.ClearOauthTokenWorker] + [ + Pleroma.Workers.Cron.StatsWorker, + Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker, + Pleroma.Workers.Cron.ClearOauthTokenWorker + ] |> Enum.reduce(oban_config[:crontab], fn removed_worker, acc -> with acc when is_list(acc) <- acc, setting when is_tuple(setting) <- From 4954667fb24ee6ab7b1bf3b676f7e88a582130cf Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 20:22:14 +0300 Subject: [PATCH 106/141] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14c0252f7..79cf02c96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. - **Breaking:** Removed `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` config. +- **Breaking:** Removed `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab`. ## [2.1.1] - 2020-09-08 From 2c2094d4b2722cf511e3db8288c3754a48038f05 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Mon, 7 Sep 2020 20:57:38 +0300 Subject: [PATCH 107/141] configurable lifetime for ephemeral activities --- config/config.exs | 2 +- config/description.exs | 6 ++++++ docs/configuration/cheatsheet.md | 13 +++++++++++++ lib/pleroma/workers/purge_expired_activity.ex | 3 ++- .../controllers/status_controller_test.exs | 8 ++++---- 5 files changed, 26 insertions(+), 6 deletions(-) diff --git a/config/config.exs b/config/config.exs index d975db31e..88c47fd03 100644 --- a/config/config.exs +++ b/config/config.exs @@ -654,7 +654,7 @@ account_confirmation_resend: {8_640_000, 5}, ap_routes: {60_000, 15} -config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true +config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600 config :pleroma, Pleroma.Plugs.RemoteIp, enabled: true diff --git a/config/description.exs b/config/description.exs index 1253944de..82c7bc6a7 100644 --- a/config/description.exs +++ b/config/description.exs @@ -2480,6 +2480,12 @@ key: :enabled, type: :boolean, description: "Enables expired activities addition & deletion" + }, + %{ + key: :min_lifetime, + type: :integer, + description: "Minimum lifetime for ephemeral activity (in seconds)", + suggestions: [600] } ] }, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index d0bebbd45..8f2425384 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -1091,3 +1091,16 @@ config :pleroma, :frontends, ``` This would serve the frontend from the the folder at `$instance_static/frontends/pleroma/stable`. You have to copy the frontend into this folder yourself. You can choose the name and ref any way you like, but they will be used by mix tasks to automate installation in the future, the name referring to the project and the ref referring to a commit. + +## Ephemeral activities + +Settings to enable and configure expiration for ephemeral activities + +* `:enabled` - enables ephemeral activities creation +* `:min_lifetime` - minimum lifetime for ephemeral activities (in seconds). Default: 10 minutes. + +Example: + +```elixir + config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600 +``` diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index f981eda8e..ffcb89dc3 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -77,6 +77,7 @@ def get_expiration(id) do def expires_late_enough?(scheduled_at) do now = DateTime.utc_now() diff = DateTime.diff(scheduled_at, now, :millisecond) - diff > :timer.hours(1) + min_lifetime = Pleroma.Config.get([__MODULE__, :min_lifetime], 600) + diff > :timer.seconds(min_lifetime) end end diff --git a/test/web/mastodon_api/controllers/status_controller_test.exs b/test/web/mastodon_api/controllers/status_controller_test.exs index 82ea73898..633a25e50 100644 --- a/test/web/mastodon_api/controllers/status_controller_test.exs +++ b/test/web/mastodon_api/controllers/status_controller_test.exs @@ -129,8 +129,8 @@ test "posting a status", %{conn: conn} do test "it fails to create a status if `expires_in` is less or equal than an hour", %{ conn: conn } do - # 1 hour - expires_in = 60 * 60 + # 1 minute + expires_in = 1 * 60 assert %{"error" => "Expiry date is too soon"} = conn @@ -141,8 +141,8 @@ test "it fails to create a status if `expires_in` is less or equal than an hour" }) |> json_response_and_validate_schema(422) - # 30 minutes - expires_in = 30 * 60 + # 5 minutes + expires_in = 5 * 60 assert %{"error" => "Expiry date is too soon"} = conn From a098e10fd6d9f3b6573e2fb6333335d40a9bf330 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Tue, 8 Sep 2020 12:07:33 +0300 Subject: [PATCH 108/141] Document ephemeral activity changes better Also remove the example from the cheatsheet, there is no need for it when the types are simple --- CHANGELOG.md | 3 +++ docs/configuration/cheatsheet.md | 8 +------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 79cf02c96..a58a18c8c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** Removed `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` config. - **Breaking:** Removed `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab`. +### Changed +- Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). + ## [2.1.1] - 2020-09-08 ### Security diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 8f2425384..7cf1d1ce7 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -1092,15 +1092,9 @@ config :pleroma, :frontends, This would serve the frontend from the the folder at `$instance_static/frontends/pleroma/stable`. You have to copy the frontend into this folder yourself. You can choose the name and ref any way you like, but they will be used by mix tasks to automate installation in the future, the name referring to the project and the ref referring to a commit. -## Ephemeral activities +## Ephemeral activities (Pleroma.Workers.PurgeExpiredActivity) Settings to enable and configure expiration for ephemeral activities * `:enabled` - enables ephemeral activities creation * `:min_lifetime` - minimum lifetime for ephemeral activities (in seconds). Default: 10 minutes. - -Example: - -```elixir - config :pleroma, Pleroma.Workers.PurgeExpiredActivity, enabled: true, min_lifetime: 600 -``` From 15aece72382fe1862a58728b9d02990147f91365 Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Tue, 8 Sep 2020 15:11:18 +0300 Subject: [PATCH 109/141] remove validate_expires_at from enqueue method --- lib/mix/tasks/pleroma/database.ex | 3 +- lib/pleroma/workers/purge_expired_activity.ex | 13 +----- ...1316_move_activity_expirations_to_oban.exs | 3 +- test/workers/purge_expired_activity_test.exs | 42 ++++++++++++------- 4 files changed, 30 insertions(+), 31 deletions(-) diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index aab4b5e9a..7f1108dcf 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -155,8 +155,7 @@ def run(["ensure_expiration"]) do Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ activity_id: activity.id, - expires_at: expires_at, - validate: false + expires_at: expires_at }) end) end) diff --git a/lib/pleroma/workers/purge_expired_activity.ex b/lib/pleroma/workers/purge_expired_activity.ex index ffcb89dc3..c168890a2 100644 --- a/lib/pleroma/workers/purge_expired_activity.ex +++ b/lib/pleroma/workers/purge_expired_activity.ex @@ -18,8 +18,7 @@ defmodule Pleroma.Workers.PurgeExpiredActivity do | {:error, :expired_activities_disabled} | {:error, :expiration_too_close} def enqueue(args) do - with true <- enabled?(), - args when is_map(args) <- validate_expires_at(args) do + with true <- enabled?() do {scheduled_at, args} = Map.pop(args, :expires_at) args @@ -42,16 +41,6 @@ defp enabled? do end end - defp validate_expires_at(%{validate: false} = args), do: Map.delete(args, :validate) - - defp validate_expires_at(args) do - if expires_late_enough?(args[:expires_at]) do - args - else - {:error, :expiration_too_close} - end - end - defp find_activity(id) do with nil <- Activity.get_by_id_with_object(id) do {:error, :activity_not_found} diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs index 137933368..cdc00d20b 100644 --- a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -17,8 +17,7 @@ def change do with {:ok, expires_at} <- DateTime.from_naive(expiration.scheduled_at, "Etc/UTC") do Pleroma.Workers.PurgeExpiredActivity.enqueue(%{ activity_id: FlakeId.to_string(expiration.activity_id), - expires_at: expires_at, - validate: false + expires_at: expires_at }) end end) diff --git a/test/workers/purge_expired_activity_test.exs b/test/workers/purge_expired_activity_test.exs index 8b5dc9fd2..b5938776d 100644 --- a/test/workers/purge_expired_activity_test.exs +++ b/test/workers/purge_expired_activity_test.exs @@ -10,21 +10,6 @@ defmodule Pleroma.Workers.PurgeExpiredActivityTest do alias Pleroma.Workers.PurgeExpiredActivity - test "denies expirations that don't live long enough" do - activity = insert(:note_activity) - - assert {:error, :expiration_too_close} = - PurgeExpiredActivity.enqueue(%{ - activity_id: activity.id, - expires_at: DateTime.utc_now() - }) - - refute_enqueued( - worker: Pleroma.Workers.PurgeExpiredActivity, - args: %{activity_id: activity.id} - ) - end - test "enqueue job" do activity = insert(:note_activity) @@ -44,4 +29,31 @@ test "enqueue job" do assert %Oban.Job{} = Pleroma.Workers.PurgeExpiredActivity.get_expiration(activity.id) end + + test "error if user was not found" do + activity = insert(:note_activity) + + assert {:ok, _} = + PurgeExpiredActivity.enqueue(%{ + activity_id: activity.id, + expires_at: DateTime.add(DateTime.utc_now(), 3601) + }) + + user = Pleroma.User.get_by_ap_id(activity.actor) + Pleroma.Repo.delete(user) + + assert {:error, :user_not_found} = + perform_job(Pleroma.Workers.PurgeExpiredActivity, %{activity_id: activity.id}) + end + + test "error if actiivity was not found" do + assert {:ok, _} = + PurgeExpiredActivity.enqueue(%{ + activity_id: "some_id", + expires_at: DateTime.add(DateTime.utc_now(), 3601) + }) + + assert {:error, :activity_not_found} = + perform_job(Pleroma.Workers.PurgeExpiredActivity, %{activity_id: "some_if"}) + end end From 82b56cdb9bc01dcf4dbd2ac0c06103af0900787d Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 21:53:58 +0300 Subject: [PATCH 110/141] CHANGELOG.md: clarify that the functionality is not removed, just the config options --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a58a18c8c..75357f05e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,9 +12,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Removed -- **Breaking:** Removed `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab`. -- **Breaking:** Removed `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` config. -- **Breaking:** Removed `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab`. +- **Breaking:** `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab` (moved to a simpler implementation). +- **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). +- **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). ### Changed - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). From b73e9ef68689a7094e80e2affa0af9b05e86effb Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Tue, 25 Aug 2020 09:19:53 +0200 Subject: [PATCH 111/141] transmogrifier: Call strip_internal_fields on pipeline ingestion --- lib/pleroma/web/activity_pub/transmogrifier.ex | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index af4384213..ec3b24206 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -550,6 +550,8 @@ def handle_incoming( _options ) when objtype in ~w{Question Answer ChatMessage Audio Event} do + data = Map.put(data, "object", strip_internal_fields(data["object"])) + with {:ok, %User{}} <- ObjectValidator.fetch_actor(data), {:ok, activity, _} <- Pipeline.common_pipeline(data, local: false) do {:ok, activity} From 846b59ccb09681bda0f54bed43f5b82883228e33 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 20 Aug 2020 02:00:04 +0200 Subject: [PATCH 112/141] Pipeline Ingestion: Video --- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- .../web/activity_pub/object_validator.ex | 16 +- ..._validator.ex => audio_video_validator.ex} | 43 ++++- .../object_validators/common_fixes.ex | 9 ++ .../create_generic_validator.ex | 8 +- lib/pleroma/web/activity_pub/side_effects.ex | 2 +- .../web/activity_pub/transmogrifier.ex | 37 +---- .../tesla_mock/framatube.org-video.json | 2 +- .../transmogrifier/video_handling_test.exs | 93 +++++++++++ test/web/activity_pub/transmogrifier_test.exs | 148 +----------------- 10 files changed, 158 insertions(+), 202 deletions(-) rename lib/pleroma/web/activity_pub/object_validators/{audio_validator.ex => audio_video_validator.ex} (75%) create mode 100644 test/web/activity_pub/transmogrifier/video_handling_test.exs diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 66a9f78a3..bceec8bd1 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -84,7 +84,7 @@ defp increase_replies_count_if_reply(%{ defp increase_replies_count_if_reply(_create_data), do: :noop - @object_types ~w[ChatMessage Question Answer Audio Event] + @object_types ~w[ChatMessage Question Answer Audio Video Event] @spec persist(map(), keyword()) :: {:ok, Activity.t() | Object.t()} def persist(%{"type" => type} = object, meta) when type in @object_types do with {:ok, object} <- Object.create(object) do diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex index b77c06395..081f96389 100644 --- a/lib/pleroma/web/activity_pub/object_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validator.ex @@ -12,11 +12,12 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do alias Pleroma.Activity alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object + alias Pleroma.Object.Containment alias Pleroma.User alias Pleroma.Web.ActivityPub.ObjectValidators.AcceptRejectValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AnswerValidator - alias Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator alias Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator alias Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator alias Pleroma.Web.ActivityPub.ObjectValidators.CreateChatMessageValidator @@ -149,10 +150,10 @@ def validate(%{"type" => "Question"} = object, meta) do end end - def validate(%{"type" => "Audio"} = object, meta) do + def validate(%{"type" => type} = object, meta) when type in ~w[Audio Video] do with {:ok, object} <- object - |> AudioValidator.cast_and_validate() + |> AudioVideoValidator.cast_and_validate() |> Ecto.Changeset.apply_action(:insert) do object = stringify_keys(object) {:ok, object, meta} @@ -198,7 +199,7 @@ def validate( %{"type" => "Create", "object" => %{"type" => objtype} = object} = create_activity, meta ) - when objtype in ~w[Question Answer Audio Event] do + when objtype in ~w[Question Answer Audio Video Event] do with {:ok, object_data} <- cast_and_apply(object), meta = Keyword.put(meta, :object_data, object_data |> stringify_keys), {:ok, create_activity} <- @@ -232,8 +233,8 @@ def cast_and_apply(%{"type" => "Answer"} = object) do AnswerValidator.cast_and_apply(object) end - def cast_and_apply(%{"type" => "Audio"} = object) do - AudioValidator.cast_and_apply(object) + def cast_and_apply(%{"type" => type} = object) when type in ~w[Audio Video] do + AudioVideoValidator.cast_and_apply(object) end def cast_and_apply(%{"type" => "Event"} = object) do @@ -262,7 +263,8 @@ def stringify_keys(object) when is_list(object) do def stringify_keys(object), do: object def fetch_actor(object) do - with {:ok, actor} <- ObjectValidators.ObjectID.cast(object["actor"]) do + with actor <- Containment.get_actor(object), + {:ok, actor} <- ObjectValidators.ObjectID.cast(actor) do User.get_or_fetch_by_ap_id(actor) end end diff --git a/lib/pleroma/web/activity_pub/object_validators/audio_validator.ex b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex similarity index 75% rename from lib/pleroma/web/activity_pub/object_validators/audio_validator.ex rename to lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex index 1a97c504a..a6119e627 100644 --- a/lib/pleroma/web/activity_pub/object_validators/audio_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex @@ -2,9 +2,10 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator do +defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do use Ecto.Schema + alias Pleroma.EarmarkRenderer alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes @@ -25,14 +26,19 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator do # TODO: Write type field(:tag, {:array, :map}, default: []) field(:type, :string) + + field(:name, :string) + field(:summary, :string) field(:content, :string) + field(:context, :string) + # short identifier for PleromaFE to group statuses by context + field(:context_id, :integer) # TODO: Remove actor on objects field(:actor, ObjectValidators.ObjectID) field(:attributedTo, ObjectValidators.ObjectID) - field(:summary, :string) field(:published, ObjectValidators.DateTime) field(:emoji, ObjectValidators.Emoji, default: %{}) field(:sensitive, :boolean, default: false) @@ -40,10 +46,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioValidator do field(:replies_count, :integer, default: 0) field(:like_count, :integer, default: 0) field(:announcement_count, :integer, default: 0) - field(:inReplyTo, :string) + field(:inReplyTo, ObjectValidators.ObjectID) field(:url, ObjectValidators.Uri) - # short identifier for PleromaFE to group statuses by context - field(:context_id, :integer) field(:likes, {:array, :string}, default: []) field(:announcements, {:array, :string}, default: []) @@ -68,9 +72,18 @@ def cast_data(data) do defp fix_url(%{"url" => url} = data) when is_list(url) do attachment = - Enum.find(url, fn x -> is_map(x) and String.starts_with?(x["mimeType"], "audio/") end) + Enum.find(url, fn x -> + mime_type = x["mimeType"] || x["mediaType"] || "" - link_element = Enum.find(url, fn x -> is_map(x) and x["mimeType"] == "text/html" end) + is_map(x) and String.starts_with?(mime_type, ["video/", "audio/"]) + end) + + link_element = + Enum.find(url, fn x -> + mime_type = x["mimeType"] || x["mediaType"] || "" + + is_map(x) and mime_type == "text/html" + end) data |> Map.put("attachment", [attachment]) @@ -79,12 +92,26 @@ defp fix_url(%{"url" => url} = data) when is_list(url) do defp fix_url(data), do: data + defp fix_content(%{"mediaType" => "text/markdown", "content" => content} = data) + when is_binary(content) do + content = + content + |> Earmark.as_html!(%Earmark.Options{renderer: EarmarkRenderer}) + |> Pleroma.HTML.filter_tags() + + Map.put(data, "content", content) + end + + defp fix_content(data), do: data + defp fix(data) do data |> CommonFixes.fix_defaults() |> CommonFixes.fix_attribution() + |> CommonFixes.fix_actor() |> Transmogrifier.fix_emoji() |> fix_url() + |> fix_content() end def changeset(struct, data) do @@ -97,7 +124,7 @@ def changeset(struct, data) do def validate_data(data_cng) do data_cng - |> validate_inclusion(:type, ["Audio"]) + |> validate_inclusion(:type, ["Audio", "Video"]) |> validate_required([:id, :actor, :attributedTo, :type, :context, :attachment]) |> CommonValidations.validate_any_presence([:cc, :to]) |> CommonValidations.validate_fields_match([:actor, :attributedTo]) diff --git a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex index 720213d73..b3638cfc7 100644 --- a/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex +++ b/lib/pleroma/web/activity_pub/object_validators/common_fixes.ex @@ -3,6 +3,7 @@ # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes do + alias Pleroma.Object.Containment alias Pleroma.Web.ActivityPub.Utils # based on Pleroma.Web.ActivityPub.Utils.lazy_put_objects_defaults @@ -19,4 +20,12 @@ def fix_attribution(data) do data |> Map.put_new("actor", data["attributedTo"]) end + + def fix_actor(data) do + actor = Containment.get_actor(data) + + data + |> Map.put("actor", actor) + |> Map.put("attributedTo", actor) + end end diff --git a/lib/pleroma/web/activity_pub/object_validators/create_generic_validator.ex b/lib/pleroma/web/activity_pub/object_validators/create_generic_validator.ex index b3dbeea57..422ee07be 100644 --- a/lib/pleroma/web/activity_pub/object_validators/create_generic_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/create_generic_validator.ex @@ -10,9 +10,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CreateGenericValidator do alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Object + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations import Ecto.Changeset - import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations @primary_key false @@ -75,14 +76,15 @@ defp fix(data, meta) do data |> fix_context(meta) |> fix_addressing(meta) + |> CommonFixes.fix_actor() end def validate_data(cng, meta \\ []) do cng |> validate_required([:actor, :type, :object]) |> validate_inclusion(:type, ["Create"]) - |> validate_actor_presence() - |> validate_any_presence([:to, :cc]) + |> CommonValidations.validate_actor_presence() + |> CommonValidations.validate_any_presence([:to, :cc]) |> validate_actors_match(meta) |> validate_context_match(meta) |> validate_object_nonexistence() diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index 46a8be767..b5c720c7a 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -336,7 +336,7 @@ def handle_object_creation(%{"type" => "Answer"} = object_map, meta) do end def handle_object_creation(%{"type" => objtype} = object, meta) - when objtype in ~w[Audio Question Event] do + when objtype in ~w[Audio Video Question Event] do with {:ok, object, meta} <- Pipeline.common_pipeline(object, meta) do {:ok, object, meta} end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index ec3b24206..e14936c10 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -7,7 +7,6 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do A module to handle coding from internal to wire ActivityPub and back. """ alias Pleroma.Activity - alias Pleroma.EarmarkRenderer alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Maps alias Pleroma.Object @@ -45,7 +44,6 @@ def fix_object(object, options \\ []) do |> fix_addressing |> fix_summary |> fix_type(options) - |> fix_content end def fix_summary(%{"summary" => nil} = object) do @@ -274,24 +272,7 @@ def fix_url(%{"url" => url} = object) when is_map(url) do Map.put(object, "url", url["href"]) end - def fix_url(%{"type" => "Video", "url" => url} = object) when is_list(url) do - attachment = - Enum.find(url, fn x -> - media_type = x["mediaType"] || x["mimeType"] || "" - - is_map(x) and String.starts_with?(media_type, "video/") - end) - - link_element = - Enum.find(url, fn x -> is_map(x) and (x["mediaType"] || x["mimeType"]) == "text/html" end) - - object - |> Map.put("attachment", [attachment]) - |> Map.put("url", link_element["href"]) - end - - def fix_url(%{"type" => object_type, "url" => url} = object) - when object_type != "Video" and is_list(url) do + def fix_url(%{"url" => url} = object) when is_list(url) do first_element = Enum.at(url, 0) url_string = @@ -371,18 +352,6 @@ def fix_type(%{"inReplyTo" => reply_id, "name" => _} = object, options) def fix_type(object, _), do: object - defp fix_content(%{"mediaType" => "text/markdown", "content" => content} = object) - when is_binary(content) do - html_content = - content - |> Earmark.as_html!(%Earmark.Options{renderer: EarmarkRenderer}) - |> Pleroma.HTML.filter_tags() - - Map.merge(object, %{"content" => html_content, "mediaType" => "text/html"}) - end - - defp fix_content(object), do: object - # Reduce the object list to find the reported user. defp get_reported(objects) do Enum.reduce_while(objects, nil, fn ap_id, _ -> @@ -455,7 +424,7 @@ def handle_incoming( %{"type" => "Create", "object" => %{"type" => objtype} = object} = data, options ) - when objtype in ~w{Article Note Video Page} do + when objtype in ~w{Article Note Page} do actor = Containment.get_actor(data) with nil <- Activity.get_create_by_object_ap_id(object["id"]), @@ -549,7 +518,7 @@ def handle_incoming( %{"type" => "Create", "object" => %{"type" => objtype}} = data, _options ) - when objtype in ~w{Question Answer ChatMessage Audio Event} do + when objtype in ~w{Question Answer ChatMessage Audio Video Event} do data = Map.put(data, "object", strip_internal_fields(data["object"])) with {:ok, %User{}} <- ObjectValidator.fetch_actor(data), diff --git a/test/fixtures/tesla_mock/framatube.org-video.json b/test/fixtures/tesla_mock/framatube.org-video.json index 3d53f0c97..1fa529886 100644 --- a/test/fixtures/tesla_mock/framatube.org-video.json +++ b/test/fixtures/tesla_mock/framatube.org-video.json @@ -1 +1 @@ -{"type":"Video","id":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206","name":"Déframasoftisons Internet [Framasoft]","duration":"PT3622S","uuid":"6050732a-8a7a-43d4-a6cd-809525a1d206","tag":[{"type":"Hashtag","name":"déframasoftisons"},{"type":"Hashtag","name":"EPN23"},{"type":"Hashtag","name":"framaconf"},{"type":"Hashtag","name":"Framasoft"},{"type":"Hashtag","name":"pyg"}],"category":{"identifier":"15","name":"Science & Technology"},"views":122,"sensitive":false,"waitTranscoding":false,"state":1,"commentsEnabled":true,"downloadEnabled":true,"published":"2020-05-24T18:34:31.569Z","originallyPublishedAt":"2019-11-30T23:00:00.000Z","updated":"2020-07-05T09:01:01.720Z","mediaType":"text/markdown","content":"Après avoir mené avec un certain succès la campagne « Dégooglisons Internet » en 2014, l’association Framasoft annonce fin 2019 arrêter progressivement un certain nombre de ses services alternatifs aux GAFAM. Pourquoi ?\r\n\r\nTranscription par @april...","support":null,"subtitleLanguage":[],"icon":{"type":"Image","url":"https://framatube.org/static/thumbnails/6050732a-8a7a-43d4-a6cd-809525a1d206.jpg","mediaType":"image/jpeg","width":223,"height":122},"url":[{"type":"Link","mediaType":"text/html","href":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206"},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4","height":1080,"size":1157359410,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309939","height":1080,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.torrent","height":1080},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.torrent&xt=urn:btih:381c9429900552e23a4eb506318f1fa01e4d63a8&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4","height":1080},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4","height":480,"size":250095131,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309941","height":480,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-480.torrent","height":480},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.torrent&xt=urn:btih:a181dcbb5368ab5c31cc9ff07634becb72c344ee&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4","height":480},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4","height":360,"size":171357733,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309942","height":360,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-360.torrent","height":360},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.torrent&xt=urn:btih:aedfa9479ea04a175eee0b0bd0bda64076308746&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4","height":360},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4","height":720,"size":497100839,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309943","height":720,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-720.torrent","height":720},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.torrent&xt=urn:btih:71971668f82a3b24ac71bc3a982848dd8dc5a5f5&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4","height":720},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4","height":240,"size":113038439,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309944","height":240,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-240.torrent","height":240},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.torrent&xt=urn:btih:c42aa6c95efb28d9f114ebd98537f7b00fa72246&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4","height":240},{"type":"Link","mediaType":"application/x-mpegURL","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/master.m3u8","tag":[{"type":"Infohash","name":"f7428214539626e062f300f2ca4cf9154575144e"},{"type":"Infohash","name":"46e236dffb1ea6b9123a5396cbe88e97dd94cc6c"},{"type":"Infohash","name":"11f1045830b5d786c788f2594d19f128764e7d87"},{"type":"Infohash","name":"4327ad3e0d84de100130a27e9ab6fe40c4284f0e"},{"type":"Infohash","name":"41e2eee8e7b23a63c23a77c40a46de11492a4831"},{"type":"Link","name":"sha256","mediaType":"application/json","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/segments-sha256.json"},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-1080-fragmented.mp4","height":1080,"size":1156777472,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309940","height":1080,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-1080-hls.torrent","height":1080},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080-hls.torrent&xt=urn:btih:0204d780ebfab0d5d9d3476a038e812ad792deeb&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080-fragmented.mp4","height":1080},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-480-fragmented.mp4","height":480,"size":249562889,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309945","height":480,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-480-hls.torrent","height":480},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480-hls.torrent&xt=urn:btih:5d14f38ded29de629668fe1cfc61a75f4cce2628&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480-fragmented.mp4","height":480},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-360-fragmented.mp4","height":360,"size":170836415,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309946","height":360,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-360-hls.torrent","height":360},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360-hls.torrent&xt=urn:btih:30125488789080ad405ebcee6c214945f31b8f30&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360-fragmented.mp4","height":360},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-720-fragmented.mp4","height":720,"size":496533741,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309947","height":720,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-720-hls.torrent","height":720},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720-hls.torrent&xt=urn:btih:8ed1e8bccde709901c26e315fc8f53bfd26d1ba6&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720-fragmented.mp4","height":720},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-240-fragmented.mp4","height":240,"size":112529249,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309948","height":240,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-240-hls.torrent","height":240},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240-hls.torrent&xt=urn:btih:8b452bf4e70b9078d4e74ca8b5523cc9dc70d10a&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240-fragmented.mp4","height":240}]}],"likes":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/likes","dislikes":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/dislikes","shares":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/announces","comments":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/comments","attributedTo":[{"type":"Person","id":"https://framatube.org/accounts/framasoft"},{"type":"Group","id":"https://framatube.org/video-channels/bf54d359-cfad-4935-9d45-9d6be93f63e8"}],"to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://framatube.org/accounts/framasoft/followers"],"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"RsaSignature2017":"https://w3id.org/security#RsaSignature2017"},{"pt":"https://joinpeertube.org/ns#","sc":"http://schema.org#","Hashtag":"as:Hashtag","uuid":"sc:identifier","category":"sc:category","licence":"sc:license","subtitleLanguage":"sc:subtitleLanguage","sensitive":"as:sensitive","language":"sc:inLanguage","Infohash":"pt:Infohash","Playlist":"pt:Playlist","PlaylistElement":"pt:PlaylistElement","originallyPublishedAt":"sc:datePublished","views":{"@type":"sc:Number","@id":"pt:views"},"state":{"@type":"sc:Number","@id":"pt:state"},"size":{"@type":"sc:Number","@id":"pt:size"},"fps":{"@type":"sc:Number","@id":"pt:fps"},"startTimestamp":{"@type":"sc:Number","@id":"pt:startTimestamp"},"stopTimestamp":{"@type":"sc:Number","@id":"pt:stopTimestamp"},"position":{"@type":"sc:Number","@id":"pt:position"},"commentsEnabled":{"@type":"sc:Boolean","@id":"pt:commentsEnabled"},"downloadEnabled":{"@type":"sc:Boolean","@id":"pt:downloadEnabled"},"waitTranscoding":{"@type":"sc:Boolean","@id":"pt:waitTranscoding"},"support":{"@type":"sc:Text","@id":"pt:support"},"likes":{"@id":"as:likes","@type":"@id"},"dislikes":{"@id":"as:dislikes","@type":"@id"},"playlists":{"@id":"pt:playlists","@type":"@id"},"shares":{"@id":"as:shares","@type":"@id"},"comments":{"@id":"as:comments","@type":"@id"}}]} \ No newline at end of file +{"type":"Create","id":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/activity","actor":"https://framatube.org/accounts/framasoft","object":{"type":"Video","id":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206","name":"Déframasoftisons Internet [Framasoft]","duration":"PT3622S","uuid":"6050732a-8a7a-43d4-a6cd-809525a1d206","tag":[{"type":"Hashtag","name":"déframasoftisons"},{"type":"Hashtag","name":"EPN23"},{"type":"Hashtag","name":"framaconf"},{"type":"Hashtag","name":"Framasoft"},{"type":"Hashtag","name":"pyg"}],"category":{"identifier":"15","name":"Science & Technology"},"views":154,"sensitive":false,"waitTranscoding":false,"state":1,"commentsEnabled":true,"downloadEnabled":true,"published":"2020-05-24T18:34:31.569Z","originallyPublishedAt":"2019-11-30T23:00:00.000Z","updated":"2020-08-17T11:01:02.994Z","mediaType":"text/markdown","content":"Après avoir mené avec un certain succès la campagne « Dégooglisons Internet » en 2014, l’association Framasoft annonce fin 2019 arrêter progressivement un certain nombre de ses services alternatifs aux GAFAM. Pourquoi ?\r\n\r\nTranscription par @aprilorg ici : https://www.april.org/deframasoftisons-internet-pierre-yves-gosset-framasoft","support":null,"subtitleLanguage":[],"icon":[{"type":"Image","url":"https://framatube.org/static/thumbnails/6050732a-8a7a-43d4-a6cd-809525a1d206.jpg","mediaType":"image/jpeg","width":223,"height":122},{"type":"Image","url":"https://framatube.org/static/previews/6050732a-8a7a-43d4-a6cd-809525a1d206.jpg","mediaType":"image/jpeg","width":850,"height":480}],"url":[{"type":"Link","mediaType":"text/html","href":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206"},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4","height":1080,"size":1157359410,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309939","height":1080,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.torrent","height":1080},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.torrent&xt=urn:btih:381c9429900552e23a4eb506318f1fa01e4d63a8&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4","height":1080},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4","height":720,"size":497100839,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309943","height":720,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-720.torrent","height":720},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.torrent&xt=urn:btih:71971668f82a3b24ac71bc3a982848dd8dc5a5f5&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720.mp4","height":720},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4","height":480,"size":250095131,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309941","height":480,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-480.torrent","height":480},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.torrent&xt=urn:btih:a181dcbb5368ab5c31cc9ff07634becb72c344ee&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480.mp4","height":480},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4","height":360,"size":171357733,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309942","height":360,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-360.torrent","height":360},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.torrent&xt=urn:btih:aedfa9479ea04a175eee0b0bd0bda64076308746&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4&ws=https%3A%2F%2Fpeertube.live%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360.mp4","height":360},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4","height":240,"size":113038439,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309944","height":240,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-240.torrent","height":240},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.torrent&xt=urn:btih:c42aa6c95efb28d9f114ebd98537f7b00fa72246&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fwebseed%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4&ws=https%3A%2F%2Fpeertube.iselfhost.com%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4&ws=https%3A%2F%2Ftube.privacytools.io%2Fstatic%2Fredundancy%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240.mp4","height":240},{"type":"Link","mediaType":"application/x-mpegURL","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/master.m3u8","tag":[{"type":"Infohash","name":"f7428214539626e062f300f2ca4cf9154575144e"},{"type":"Infohash","name":"46e236dffb1ea6b9123a5396cbe88e97dd94cc6c"},{"type":"Infohash","name":"11f1045830b5d786c788f2594d19f128764e7d87"},{"type":"Infohash","name":"4327ad3e0d84de100130a27e9ab6fe40c4284f0e"},{"type":"Infohash","name":"41e2eee8e7b23a63c23a77c40a46de11492a4831"},{"type":"Link","name":"sha256","mediaType":"application/json","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/segments-sha256.json"},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-1080-fragmented.mp4","height":1080,"size":1156777472,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309940","height":1080,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-1080-hls.torrent","height":1080},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080-hls.torrent&xt=urn:btih:0204d780ebfab0d5d9d3476a038e812ad792deeb&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-1080-fragmented.mp4","height":1080},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-720-fragmented.mp4","height":720,"size":496533741,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309947","height":720,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-720-hls.torrent","height":720},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720-hls.torrent&xt=urn:btih:8ed1e8bccde709901c26e315fc8f53bfd26d1ba6&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-720-fragmented.mp4","height":720},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-480-fragmented.mp4","height":480,"size":249562889,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309945","height":480,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-480-hls.torrent","height":480},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480-hls.torrent&xt=urn:btih:5d14f38ded29de629668fe1cfc61a75f4cce2628&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-480-fragmented.mp4","height":480},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-360-fragmented.mp4","height":360,"size":170836415,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309946","height":360,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-360-hls.torrent","height":360},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360-hls.torrent&xt=urn:btih:30125488789080ad405ebcee6c214945f31b8f30&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-360-fragmented.mp4","height":360},{"type":"Link","mediaType":"video/mp4","href":"https://framatube.org/static/streaming-playlists/hls/6050732a-8a7a-43d4-a6cd-809525a1d206/6050732a-8a7a-43d4-a6cd-809525a1d206-240-fragmented.mp4","height":240,"size":112529249,"fps":25},{"type":"Link","rel":["metadata","video/mp4"],"mediaType":"application/json","href":"https://framatube.org/api/v1/videos/6050732a-8a7a-43d4-a6cd-809525a1d206/metadata/1309948","height":240,"fps":25},{"type":"Link","mediaType":"application/x-bittorrent","href":"https://framatube.org/static/torrents/6050732a-8a7a-43d4-a6cd-809525a1d206-240-hls.torrent","height":240},{"type":"Link","mediaType":"application/x-bittorrent;x-scheme-handler/magnet","href":"magnet:?xs=https%3A%2F%2Fframatube.org%2Fstatic%2Ftorrents%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240-hls.torrent&xt=urn:btih:8b452bf4e70b9078d4e74ca8b5523cc9dc70d10a&dn=D%C3%A9framasoftisons+Internet+%5BFramasoft%5D&tr=wss%3A%2F%2Fframatube.org%3A443%2Ftracker%2Fsocket&tr=https%3A%2F%2Fframatube.org%2Ftracker%2Fannounce&ws=https%3A%2F%2Fframatube.org%2Fstatic%2Fstreaming-playlists%2Fhls%2F6050732a-8a7a-43d4-a6cd-809525a1d206%2F6050732a-8a7a-43d4-a6cd-809525a1d206-240-fragmented.mp4","height":240}]}],"likes":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/likes","dislikes":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/dislikes","shares":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/announces","comments":"https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206/comments","attributedTo":[{"type":"Person","id":"https://framatube.org/accounts/framasoft"},{"type":"Group","id":"https://framatube.org/video-channels/bf54d359-cfad-4935-9d45-9d6be93f63e8"}],"to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://framatube.org/accounts/framasoft/followers"]},"to":["https://www.w3.org/ns/activitystreams#Public"],"cc":["https://framatube.org/accounts/framasoft/followers"],"@context":["https://www.w3.org/ns/activitystreams","https://w3id.org/security/v1",{"RsaSignature2017":"https://w3id.org/security#RsaSignature2017"},{"pt":"https://joinpeertube.org/ns#","sc":"http://schema.org#","Hashtag":"as:Hashtag","uuid":"sc:identifier","category":"sc:category","licence":"sc:license","subtitleLanguage":"sc:subtitleLanguage","sensitive":"as:sensitive","language":"sc:inLanguage","Infohash":"pt:Infohash","Playlist":"pt:Playlist","PlaylistElement":"pt:PlaylistElement","originallyPublishedAt":"sc:datePublished","views":{"@type":"sc:Number","@id":"pt:views"},"state":{"@type":"sc:Number","@id":"pt:state"},"size":{"@type":"sc:Number","@id":"pt:size"},"fps":{"@type":"sc:Number","@id":"pt:fps"},"startTimestamp":{"@type":"sc:Number","@id":"pt:startTimestamp"},"stopTimestamp":{"@type":"sc:Number","@id":"pt:stopTimestamp"},"position":{"@type":"sc:Number","@id":"pt:position"},"commentsEnabled":{"@type":"sc:Boolean","@id":"pt:commentsEnabled"},"downloadEnabled":{"@type":"sc:Boolean","@id":"pt:downloadEnabled"},"waitTranscoding":{"@type":"sc:Boolean","@id":"pt:waitTranscoding"},"support":{"@type":"sc:Text","@id":"pt:support"},"likes":{"@id":"as:likes","@type":"@id"},"dislikes":{"@id":"as:dislikes","@type":"@id"},"playlists":{"@id":"pt:playlists","@type":"@id"},"shares":{"@id":"as:shares","@type":"@id"},"comments":{"@id":"as:comments","@type":"@id"}}]} \ No newline at end of file diff --git a/test/web/activity_pub/transmogrifier/video_handling_test.exs b/test/web/activity_pub/transmogrifier/video_handling_test.exs new file mode 100644 index 000000000..69c953a2e --- /dev/null +++ b/test/web/activity_pub/transmogrifier/video_handling_test.exs @@ -0,0 +1,93 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.Transmogrifier.VideoHandlingTest do + use Oban.Testing, repo: Pleroma.Repo + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.Object + alias Pleroma.Object.Fetcher + alias Pleroma.Web.ActivityPub.Transmogrifier + + setup_all do + Tesla.Mock.mock_global(fn env -> apply(HttpRequestMock, :request, [env]) end) + :ok + end + + test "skip converting the content when it is nil" do + data = + File.read!("test/fixtures/tesla_mock/framatube.org-video.json") + |> Jason.decode!() + |> Kernel.put_in(["object", "content"], nil) + + {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) + + assert object = Object.normalize(activity, false) + + assert object.data["content"] == nil + end + + test "it converts content of object to html" do + data = File.read!("test/fixtures/tesla_mock/framatube.org-video.json") |> Jason.decode!() + + {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) + + assert object = Object.normalize(activity, false) + + assert object.data["content"] == + "

    Après avoir mené avec un certain succès la campagne « Dégooglisons Internet » en 2014, l’association Framasoft annonce fin 2019 arrêter progressivement un certain nombre de ses services alternatifs aux GAFAM. Pourquoi ?

    Transcription par @aprilorg ici : https://www.april.org/deframasoftisons-internet-pierre-yves-gosset-framasoft

    " + end + + test "it remaps video URLs as attachments if necessary" do + {:ok, object} = + Fetcher.fetch_object_from_id( + "https://peertube.moe/videos/watch/df5f464b-be8d-46fb-ad81-2d4c2d1630e3" + ) + + assert object.data["url"] == + "https://peertube.moe/videos/watch/df5f464b-be8d-46fb-ad81-2d4c2d1630e3" + + assert object.data["attachment"] == [ + %{ + "type" => "Link", + "mediaType" => "video/mp4", + "name" => nil, + "url" => [ + %{ + "href" => + "https://peertube.moe/static/webseed/df5f464b-be8d-46fb-ad81-2d4c2d1630e3-480.mp4", + "mediaType" => "video/mp4", + "type" => "Link" + } + ] + } + ] + + data = File.read!("test/fixtures/tesla_mock/framatube.org-video.json") |> Jason.decode!() + + {:ok, %Activity{local: false} = activity} = Transmogrifier.handle_incoming(data) + + assert object = Object.normalize(activity, false) + + assert object.data["attachment"] == [ + %{ + "type" => "Link", + "mediaType" => "video/mp4", + "name" => nil, + "url" => [ + %{ + "href" => + "https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4", + "mediaType" => "video/mp4", + "type" => "Link" + } + ] + } + ] + + assert object.data["url"] == + "https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206" + end +end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index cc55a7be7..0a3291d49 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -8,7 +8,6 @@ defmodule Pleroma.Web.ActivityPub.TransmogrifierTest do alias Pleroma.Activity alias Pleroma.Object - alias Pleroma.Object.Fetcher alias Pleroma.Tests.ObanHelpers alias Pleroma.User alias Pleroma.Web.ActivityPub.Transmogrifier @@ -355,83 +354,6 @@ test "it works for incoming unfollows with an existing follow" do refute User.following?(User.get_cached_by_ap_id(data["actor"]), user) end - test "skip converting the content when it is nil" do - object_id = "https://peertube.social/videos/watch/278d2b7c-0f38-4aaa-afe6-9ecc0c4a34fe" - - {:ok, object} = Fetcher.fetch_and_contain_remote_object_from_id(object_id) - - result = - Pleroma.Web.ActivityPub.Transmogrifier.fix_object(Map.merge(object, %{"content" => nil})) - - assert result["content"] == nil - end - - test "it converts content of object to html" do - object_id = "https://peertube.social/videos/watch/278d2b7c-0f38-4aaa-afe6-9ecc0c4a34fe" - - {:ok, %{"content" => content_markdown}} = - Fetcher.fetch_and_contain_remote_object_from_id(object_id) - - {:ok, %Pleroma.Object{data: %{"content" => content}} = object} = - Fetcher.fetch_object_from_id(object_id) - - assert content_markdown == - "Support this and our other Michigan!/usr/group videos and meetings. Learn more at http://mug.org/membership\n\nTwenty Years in Jail: FreeBSD's Jails, Then and Now\n\nJails started as a limited virtualization system, but over the last two years they've..." - - assert content == - "

    Support this and our other Michigan!/usr/group videos and meetings. Learn more at http://mug.org/membership

    Twenty Years in Jail: FreeBSD’s Jails, Then and Now

    Jails started as a limited virtualization system, but over the last two years they’ve…

    " - - assert object.data["mediaType"] == "text/html" - end - - test "it remaps video URLs as attachments if necessary" do - {:ok, object} = - Fetcher.fetch_object_from_id( - "https://peertube.moe/videos/watch/df5f464b-be8d-46fb-ad81-2d4c2d1630e3" - ) - - assert object.data["url"] == - "https://peertube.moe/videos/watch/df5f464b-be8d-46fb-ad81-2d4c2d1630e3" - - assert object.data["attachment"] == [ - %{ - "type" => "Link", - "mediaType" => "video/mp4", - "url" => [ - %{ - "href" => - "https://peertube.moe/static/webseed/df5f464b-be8d-46fb-ad81-2d4c2d1630e3-480.mp4", - "mediaType" => "video/mp4", - "type" => "Link" - } - ] - } - ] - - {:ok, object} = - Fetcher.fetch_object_from_id( - "https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206" - ) - - assert object.data["attachment"] == [ - %{ - "type" => "Link", - "mediaType" => "video/mp4", - "url" => [ - %{ - "href" => - "https://framatube.org/static/webseed/6050732a-8a7a-43d4-a6cd-809525a1d206-1080.mp4", - "mediaType" => "video/mp4", - "type" => "Link" - } - ] - } - ] - - assert object.data["url"] == - "https://framatube.org/videos/watch/6050732a-8a7a-43d4-a6cd-809525a1d206" - end - test "it accepts Flag activities" do user = insert(:user) other_user = insert(:user) @@ -1133,75 +1055,7 @@ test "fixes data for object when url is map" do } end - test "fixes data for video object" do - object = %{ - "type" => "Video", - "url" => [ - %{ - "type" => "Link", - "mimeType" => "video/mp4", - "href" => "https://peede8d-46fb-ad81-2d4c2d1630e3-480.mp4" - }, - %{ - "type" => "Link", - "mimeType" => "video/mp4", - "href" => "https://peertube46fb-ad81-2d4c2d1630e3-240.mp4" - }, - %{ - "type" => "Link", - "mimeType" => "text/html", - "href" => "https://peertube.-2d4c2d1630e3" - }, - %{ - "type" => "Link", - "mimeType" => "text/html", - "href" => "https://peertube.-2d4c2d16377-42" - } - ] - } - - assert Transmogrifier.fix_url(object) == %{ - "attachment" => [ - %{ - "href" => "https://peede8d-46fb-ad81-2d4c2d1630e3-480.mp4", - "mimeType" => "video/mp4", - "type" => "Link" - } - ], - "type" => "Video", - "url" => "https://peertube.-2d4c2d1630e3" - } - end - - test "fixes url for not Video object" do - object = %{ - "type" => "Text", - "url" => [ - %{ - "type" => "Link", - "mimeType" => "text/html", - "href" => "https://peertube.-2d4c2d1630e3" - }, - %{ - "type" => "Link", - "mimeType" => "text/html", - "href" => "https://peertube.-2d4c2d16377-42" - } - ] - } - - assert Transmogrifier.fix_url(object) == %{ - "type" => "Text", - "url" => "https://peertube.-2d4c2d1630e3" - } - - assert Transmogrifier.fix_url(%{"type" => "Text", "url" => []}) == %{ - "type" => "Text", - "url" => "" - } - end - - test "retunrs not modified object" do + test "returns non-modified object" do assert Transmogrifier.fix_url(%{"type" => "Text"}) == %{"type" => "Text"} end end From 2132b24a9df8116e12abc8c458cff4c3850aeda0 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 20 Aug 2020 04:27:59 +0200 Subject: [PATCH 113/141] object_validators: likes & announcements as [ObjectID] --- .../activity_pub/object_validators/audio_video_validator.ex | 4 ++-- .../web/activity_pub/object_validators/note_validator.ex | 4 ++-- .../web/activity_pub/object_validators/question_validator.ex | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex index a6119e627..16973e5db 100644 --- a/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/audio_video_validator.ex @@ -49,8 +49,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator do field(:inReplyTo, ObjectValidators.ObjectID) field(:url, ObjectValidators.Uri) - field(:likes, {:array, :string}, default: []) - field(:announcements, {:array, :string}, default: []) + field(:likes, {:array, ObjectValidators.ObjectID}, default: []) + field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) end def cast_and_apply(data) do diff --git a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex index ab4469a59..e47cbaaea 100644 --- a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/note_validator.ex @@ -43,8 +43,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do field(:inReplyTo, ObjectValidators.ObjectID) field(:url, ObjectValidators.Uri) - field(:likes, {:array, :string}, default: []) - field(:announcements, {:array, :string}, default: []) + field(:likes, {:array, ObjectValidators.ObjectID}, default: []) + field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) end def cast_and_validate(data) do diff --git a/lib/pleroma/web/activity_pub/object_validators/question_validator.ex b/lib/pleroma/web/activity_pub/object_validators/question_validator.ex index 934d3c1ea..9310485dc 100644 --- a/lib/pleroma/web/activity_pub/object_validators/question_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/question_validator.ex @@ -47,8 +47,8 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do # short identifier for PleromaFE to group statuses by context field(:context_id, :integer) - field(:likes, {:array, :string}, default: []) - field(:announcements, {:array, :string}, default: []) + field(:likes, {:array, ObjectValidators.ObjectID}, default: []) + field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) field(:closed, ObjectValidators.DateTime) field(:voters, {:array, ObjectValidators.ObjectID}, default: []) From 1b3d5956b1be7faac4e1230d788307650acce991 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Thu, 20 Aug 2020 20:03:07 +0200 Subject: [PATCH 114/141] Pipeline Ingestion: Article --- lib/pleroma/web/activity_pub/activity_pub.ex | 2 +- .../web/activity_pub/object_validator.ex | 17 ++++- ...validator.ex => article_note_validator.ex} | 55 +++++++++++--- lib/pleroma/web/activity_pub/side_effects.ex | 2 +- .../web/activity_pub/transmogrifier.ex | 4 +- .../wedistribute-create-article.json | 1 + ...st.exs => article_note_validator_test.exs} | 6 +- .../transmogrifier/article_handling_test.exs | 75 +++++++++++++++++++ test/web/activity_pub/transmogrifier_test.exs | 9 --- 9 files changed, 143 insertions(+), 28 deletions(-) rename lib/pleroma/web/activity_pub/object_validators/{note_validator.ex => article_note_validator.ex} (59%) create mode 100644 test/fixtures/tesla_mock/wedistribute-create-article.json rename test/web/activity_pub/object_validators/{note_validator_test.exs => article_note_validator_test.exs} (76%) create mode 100644 test/web/activity_pub/transmogrifier/article_handling_test.exs diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index bceec8bd1..3ab045737 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -84,7 +84,7 @@ defp increase_replies_count_if_reply(%{ defp increase_replies_count_if_reply(_create_data), do: :noop - @object_types ~w[ChatMessage Question Answer Audio Video Event] + @object_types ~w[ChatMessage Question Answer Audio Video Event Article] @spec persist(map(), keyword()) :: {:ok, Activity.t() | Object.t()} def persist(%{"type" => type} = object, meta) when type in @object_types do with {:ok, object} <- Object.create(object) do diff --git a/lib/pleroma/web/activity_pub/object_validator.ex b/lib/pleroma/web/activity_pub/object_validator.ex index 081f96389..bd0a2a8dc 100644 --- a/lib/pleroma/web/activity_pub/object_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validator.ex @@ -17,6 +17,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidator do alias Pleroma.Web.ActivityPub.ObjectValidators.AcceptRejectValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AnswerValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidator alias Pleroma.Web.ActivityPub.ObjectValidators.AudioVideoValidator alias Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator alias Pleroma.Web.ActivityPub.ObjectValidators.ChatMessageValidator @@ -160,6 +161,16 @@ def validate(%{"type" => type} = object, meta) when type in ~w[Audio Video] do end end + def validate(%{"type" => "Article"} = object, meta) do + with {:ok, object} <- + object + |> ArticleNoteValidator.cast_and_validate() + |> Ecto.Changeset.apply_action(:insert) do + object = stringify_keys(object) + {:ok, object, meta} + end + end + def validate(%{"type" => "Answer"} = object, meta) do with {:ok, object} <- object @@ -199,7 +210,7 @@ def validate( %{"type" => "Create", "object" => %{"type" => objtype} = object} = create_activity, meta ) - when objtype in ~w[Question Answer Audio Video Event] do + when objtype in ~w[Question Answer Audio Video Event Article] do with {:ok, object_data} <- cast_and_apply(object), meta = Keyword.put(meta, :object_data, object_data |> stringify_keys), {:ok, create_activity} <- @@ -241,6 +252,10 @@ def cast_and_apply(%{"type" => "Event"} = object) do EventValidator.cast_and_apply(object) end + def cast_and_apply(%{"type" => "Article"} = object) do + ArticleNoteValidator.cast_and_apply(object) + end + def cast_and_apply(o), do: {:error, {:validator_not_set, o}} # is_struct/1 isn't present in Elixir 1.8.x diff --git a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex b/lib/pleroma/web/activity_pub/object_validators/article_note_validator.ex similarity index 59% rename from lib/pleroma/web/activity_pub/object_validators/note_validator.ex rename to lib/pleroma/web/activity_pub/object_validators/article_note_validator.ex index e47cbaaea..5b7dad517 100644 --- a/lib/pleroma/web/activity_pub/object_validators/note_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/article_note_validator.ex @@ -2,15 +2,19 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do +defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidator do use Ecto.Schema alias Pleroma.EctoType.ActivityPub.ObjectValidators + alias Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonFixes + alias Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations alias Pleroma.Web.ActivityPub.Transmogrifier import Ecto.Changeset @primary_key false + @derive Jason.Encoder embedded_schema do field(:id, ObjectValidators.ObjectID, primary_key: true) @@ -30,13 +34,14 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do # short identifier for PleromaFE to group statuses by context field(:context_id, :integer) + # TODO: Remove actor on objects field(:actor, ObjectValidators.ObjectID) + field(:attributedTo, ObjectValidators.ObjectID) field(:published, ObjectValidators.DateTime) field(:emoji, ObjectValidators.Emoji, default: %{}) field(:sensitive, :boolean, default: false) - # TODO: Write type - field(:attachment, {:array, :map}, default: []) + embeds_many(:attachment, AttachmentValidator) field(:replies_count, :integer, default: 0) field(:like_count, :integer, default: 0) field(:announcement_count, :integer, default: 0) @@ -47,27 +52,55 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator do field(:announcements, {:array, ObjectValidators.ObjectID}, default: []) end + def cast_and_apply(data) do + data + |> cast_data + |> apply_action(:insert) + end + def cast_and_validate(data) do data |> cast_data() |> validate_data() end - defp fix(data) do - data - |> Transmogrifier.fix_emoji() - end - def cast_data(data) do data = fix(data) %__MODULE__{} - |> cast(data, __schema__(:fields)) + |> changeset(data) + end + + defp fix_url(%{"url" => url} = data) when is_map(url) do + Map.put(data, "url", url["href"]) + end + + defp fix_url(data), do: data + + defp fix(data) do + data + |> CommonFixes.fix_defaults() + |> CommonFixes.fix_attribution() + |> CommonFixes.fix_actor() + |> fix_url() + |> Transmogrifier.fix_emoji() + end + + def changeset(struct, data) do + data = fix(data) + + struct + |> cast(data, __schema__(:fields) -- [:attachment]) + |> cast_embed(:attachment) end def validate_data(data_cng) do data_cng - |> validate_inclusion(:type, ["Note"]) - |> validate_required([:id, :actor, :to, :cc, :type, :content, :context]) + |> validate_inclusion(:type, ["Article", "Note"]) + |> validate_required([:id, :actor, :attributedTo, :type, :context, :context_id]) + |> CommonValidations.validate_any_presence([:cc, :to]) + |> CommonValidations.validate_fields_match([:actor, :attributedTo]) + |> CommonValidations.validate_actor_presence() + |> CommonValidations.validate_host_match() end end diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex index b5c720c7a..b9a83a544 100644 --- a/lib/pleroma/web/activity_pub/side_effects.ex +++ b/lib/pleroma/web/activity_pub/side_effects.ex @@ -336,7 +336,7 @@ def handle_object_creation(%{"type" => "Answer"} = object_map, meta) do end def handle_object_creation(%{"type" => objtype} = object, meta) - when objtype in ~w[Audio Video Question Event] do + when objtype in ~w[Audio Video Question Event Article] do with {:ok, object, meta} <- Pipeline.common_pipeline(object, meta) do {:ok, object, meta} end diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index e14936c10..80f529704 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -424,7 +424,7 @@ def handle_incoming( %{"type" => "Create", "object" => %{"type" => objtype} = object} = data, options ) - when objtype in ~w{Article Note Page} do + when objtype in ~w{Note Page} do actor = Containment.get_actor(data) with nil <- Activity.get_create_by_object_ap_id(object["id"]), @@ -518,7 +518,7 @@ def handle_incoming( %{"type" => "Create", "object" => %{"type" => objtype}} = data, _options ) - when objtype in ~w{Question Answer ChatMessage Audio Video Event} do + when objtype in ~w{Question Answer ChatMessage Audio Video Event Article} do data = Map.put(data, "object", strip_internal_fields(data["object"])) with {:ok, %User{}} <- ObjectValidator.fetch_actor(data), diff --git a/test/fixtures/tesla_mock/wedistribute-create-article.json b/test/fixtures/tesla_mock/wedistribute-create-article.json new file mode 100644 index 000000000..3cfef8b99 --- /dev/null +++ b/test/fixtures/tesla_mock/wedistribute-create-article.json @@ -0,0 +1 @@ +{"@context":["https:\/\/www.w3.org\/ns\/activitystreams"],"type":"Create","actor":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/actor\/-blog","object":{"@context":["https:\/\/www.w3.org\/ns\/activitystreams"],"type":"Article","name":"The end is near: Mastodon plans to drop OStatus support","content":"\n

    The days of OStatus are numbered. The venerable protocol has served as a glue between many different types of servers since the early days of the Fediverse, connecting StatusNet (now GNU Social) to Friendica, Hubzilla, Mastodon, and Pleroma.<\/p>\n\n\n\n

    Now that many fediverse platforms support ActivityPub as a successor protocol, Mastodon appears to be drawing a line in the sand. In a Patreon update<\/a>, Eugen Rochko writes:<\/p>\n\n\n\n

    ...OStatus...has overstayed its welcome in the code...and now that most of the network uses ActivityPub, it's time for it to go. <\/p>Eugen Rochko, Mastodon creator<\/cite><\/blockquote>\n\n\n\n

    The pull request<\/a> to remove Pubsubhubbub and Salmon, two of the main components of OStatus, has already been merged into Mastodon's master branch.<\/p>\n\n\n\n

    Some projects will be left in the dark as a side effect of this. GNU Social and PostActiv, for example, both only communicate using OStatus. While some discussion<\/a> exists regarding adopting ActivityPub for GNU Social, and a plugin is in development<\/a>, it hasn't been formally adopted yet. We just hope that the Free Software Foundation's instance<\/a> gets updated in time!<\/p>\n","summary":"One of the largest platforms in the federated social web is dropping the protocol that it started with.","attributedTo":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/actor\/-blog","url":"https:\/\/wedistribute.org\/2019\/07\/mastodon-drops-ostatus\/","to":["https:\/\/www.w3.org\/ns\/activitystreams#Public","https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/actor\/-blog\/followers"],"id":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/object\/85810","likes":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/object\/85810\/likes","shares":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/object\/85810\/shares"},"to":["https:\/\/www.w3.org\/ns\/activitystreams#Public","https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/actor\/-blog\/followers"],"id":"https:\/\/wedistribute.org\/wp-json\/pterotype\/v1\/object\/85809"} \ No newline at end of file diff --git a/test/web/activity_pub/object_validators/note_validator_test.exs b/test/web/activity_pub/object_validators/article_note_validator_test.exs similarity index 76% rename from test/web/activity_pub/object_validators/note_validator_test.exs rename to test/web/activity_pub/object_validators/article_note_validator_test.exs index 30c481ffb..cc6dab872 100644 --- a/test/web/activity_pub/object_validators/note_validator_test.exs +++ b/test/web/activity_pub/object_validators/article_note_validator_test.exs @@ -2,10 +2,10 @@ # Copyright © 2017-2020 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only -defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidatorTest do +defmodule Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidatorTest do use Pleroma.DataCase - alias Pleroma.Web.ActivityPub.ObjectValidators.NoteValidator + alias Pleroma.Web.ActivityPub.ObjectValidators.ArticleNoteValidator alias Pleroma.Web.ActivityPub.Utils import Pleroma.Factory @@ -29,7 +29,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.NoteValidatorTest do end test "a basic note validates", %{note: note} do - %{valid?: true} = NoteValidator.cast_and_validate(note) + %{valid?: true} = ArticleNoteValidator.cast_and_validate(note) end end end diff --git a/test/web/activity_pub/transmogrifier/article_handling_test.exs b/test/web/activity_pub/transmogrifier/article_handling_test.exs new file mode 100644 index 000000000..9b12a470a --- /dev/null +++ b/test/web/activity_pub/transmogrifier/article_handling_test.exs @@ -0,0 +1,75 @@ +# Pleroma: A lightweight social networking server +# Copyright © 2017-2020 Pleroma Authors +# SPDX-License-Identifier: AGPL-3.0-only + +defmodule Pleroma.Web.ActivityPub.Transmogrifier.ArticleHandlingTest do + use Oban.Testing, repo: Pleroma.Repo + use Pleroma.DataCase + + alias Pleroma.Activity + alias Pleroma.Object + alias Pleroma.Object.Fetcher + alias Pleroma.Web.ActivityPub.Transmogrifier + + test "Pterotype (Wordpress Plugin) Article" do + Tesla.Mock.mock(fn %{url: "https://wedistribute.org/wp-json/pterotype/v1/actor/-blog"} -> + %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/wedistribute-user.json")} + end) + + data = + File.read!("test/fixtures/tesla_mock/wedistribute-create-article.json") |> Jason.decode!() + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + + object = Object.normalize(data["object"]) + + assert object.data["name"] == "The end is near: Mastodon plans to drop OStatus support" + + assert object.data["summary"] == + "One of the largest platforms in the federated social web is dropping the protocol that it started with." + + assert object.data["url"] == "https://wedistribute.org/2019/07/mastodon-drops-ostatus/" + end + + test "Plume Article" do + Tesla.Mock.mock(fn + %{url: "https://baptiste.gelez.xyz/~/PlumeDevelopment/this-month-in-plume-june-2018/"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/baptiste.gelex.xyz-article.json") + } + + %{url: "https://baptiste.gelez.xyz/@/BaptisteGelez"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/baptiste.gelex.xyz-user.json") + } + end) + + {:ok, object} = + Fetcher.fetch_object_from_id( + "https://baptiste.gelez.xyz/~/PlumeDevelopment/this-month-in-plume-june-2018/" + ) + + assert object.data["name"] == "This Month in Plume: June 2018" + + assert object.data["url"] == + "https://baptiste.gelez.xyz/~/PlumeDevelopment/this-month-in-plume-june-2018/" + end + + test "Prismo Article" do + Tesla.Mock.mock(fn %{url: "https://prismo.news/@mxb"} -> + %Tesla.Env{ + status: 200, + body: File.read!("test/fixtures/tesla_mock/https___prismo.news__mxb.json") + } + end) + + data = File.read!("test/fixtures/prismo-url-map.json") |> Jason.decode!() + + {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) + object = Object.normalize(data["object"]) + + assert object.data["url"] == "https://prismo.news/posts/83" + end +end diff --git a/test/web/activity_pub/transmogrifier_test.exs b/test/web/activity_pub/transmogrifier_test.exs index 0a3291d49..561674f01 100644 --- a/test/web/activity_pub/transmogrifier_test.exs +++ b/test/web/activity_pub/transmogrifier_test.exs @@ -44,15 +44,6 @@ test "it works for incoming notices with tag not being an array (kroeg)" do assert "test" in object.data["tag"] end - test "it works for incoming notices with url not being a string (prismo)" do - data = File.read!("test/fixtures/prismo-url-map.json") |> Poison.decode!() - - {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data) - object = Object.normalize(data["object"]) - - assert object.data["url"] == "https://prismo.news/posts/83" - end - test "it cleans up incoming notices which are not really DMs" do user = insert(:user) other_user = insert(:user) From f18178cb096b9a00ed12ff0fe36893f118ec6649 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Sat, 22 Aug 2020 02:01:33 +0200 Subject: [PATCH 115/141] AttachmentValidator: directly embed url schema and pass it fix_media_type --- .../object_validators/attachment_validator.ex | 21 ++++++++++++++-- .../object_validators/url_object_validator.ex | 24 ------------------- 2 files changed, 19 insertions(+), 26 deletions(-) delete mode 100644 lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex diff --git a/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex b/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex index c8b148280..df102a134 100644 --- a/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/attachment_validator.ex @@ -5,6 +5,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do use Ecto.Schema + alias Pleroma.EctoType.ActivityPub.ObjectValidators alias Pleroma.Web.ActivityPub.ObjectValidators.UrlObjectValidator import Ecto.Changeset @@ -15,7 +16,11 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AttachmentValidator do field(:mediaType, :string, default: "application/octet-stream") field(:name, :string) - embeds_many(:url, UrlObjectValidator) + embeds_many :url, UrlObjectValidator, primary_key: false do + field(:type, :string) + field(:href, ObjectValidators.Uri) + field(:mediaType, :string, default: "application/octet-stream") + end end def cast_and_validate(data) do @@ -37,7 +42,18 @@ def changeset(struct, data) do struct |> cast(data, [:type, :mediaType, :name]) - |> cast_embed(:url, required: true) + |> cast_embed(:url, with: &url_changeset/2) + |> validate_inclusion(:type, ~w[Link Document Audio Image Video]) + |> validate_required([:type, :mediaType, :url]) + end + + def url_changeset(struct, data) do + data = fix_media_type(data) + + struct + |> cast(data, [:type, :href, :mediaType]) + |> validate_inclusion(:type, ["Link"]) + |> validate_required([:type, :href, :mediaType]) end def fix_media_type(data) do @@ -75,6 +91,7 @@ defp fix_url(data) do def validate_data(cng) do cng + |> validate_inclusion(:type, ~w[Document Audio Image Video]) |> validate_required([:mediaType, :url, :type]) end end diff --git a/lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex b/lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex deleted file mode 100644 index 881030f38..000000000 --- a/lib/pleroma/web/activity_pub/object_validators/url_object_validator.ex +++ /dev/null @@ -1,24 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.Web.ActivityPub.ObjectValidators.UrlObjectValidator do - use Ecto.Schema - - alias Pleroma.EctoType.ActivityPub.ObjectValidators - - import Ecto.Changeset - @primary_key false - - embedded_schema do - field(:type, :string) - field(:href, ObjectValidators.Uri) - field(:mediaType, :string, default: "application/octet-stream") - end - - def changeset(struct, data) do - struct - |> cast(data, __schema__(:fields)) - |> validate_required([:type, :href, :mediaType]) - end -end From e3ca0a7e2d18ca9b3c809282678456d4517d39bc Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Fri, 11 Sep 2020 09:09:28 +0300 Subject: [PATCH 116/141] migration to remove old cron jobs --- .../20200911055909_remove_cron_jobs.exs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 priv/repo/migrations/20200911055909_remove_cron_jobs.exs diff --git a/priv/repo/migrations/20200911055909_remove_cron_jobs.exs b/priv/repo/migrations/20200911055909_remove_cron_jobs.exs new file mode 100644 index 000000000..33897d128 --- /dev/null +++ b/priv/repo/migrations/20200911055909_remove_cron_jobs.exs @@ -0,0 +1,20 @@ +defmodule Pleroma.Repo.Migrations.RemoveCronJobs do + use Ecto.Migration + + import Ecto.Query, only: [from: 2] + + def up do + from(j in "oban_jobs", + where: + j.worker in ^[ + "Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker", + "Pleroma.Workers.Cron.StatsWorker", + "Pleroma.Workers.Cron.ClearOauthTokenWorker" + ], + select: [:id] + ) + |> Pleroma.Repo.delete_all() + end + + def down, do: :ok +end From dbc013f24c3885960714425f201e372335d22345 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 11 Sep 2020 11:22:50 +0200 Subject: [PATCH 117/141] instance: Handle not getting a favicon --- lib/pleroma/instances/instance.ex | 12 ++--- test/web/instances/instance_test.exs | 71 ++++++++++++++++++---------- 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/lib/pleroma/instances/instance.ex b/lib/pleroma/instances/instance.ex index 8bf53c090..6948651c7 100644 --- a/lib/pleroma/instances/instance.ex +++ b/lib/pleroma/instances/instance.ex @@ -159,13 +159,11 @@ defp scrape_favicon(%URI{} = instance_uri) do Pleroma.HTTP.get(to_string(instance_uri), [{"accept", "text/html"}], adapter: [pool: :media] ), - favicon_rel <- - html - |> Floki.parse_document!() - |> Floki.attribute("link[rel=icon]", "href") - |> List.first(), - favicon <- URI.merge(instance_uri, favicon_rel) |> to_string(), - true <- is_binary(favicon) do + {_, [favicon_rel | _]} when is_binary(favicon_rel) <- + {:parse, + html |> Floki.parse_document!() |> Floki.attribute("link[rel=icon]", "href")}, + {_, favicon} when is_binary(favicon) <- + {:merge, URI.merge(instance_uri, favicon_rel) |> to_string()} do favicon else _ -> nil diff --git a/test/web/instances/instance_test.exs b/test/web/instances/instance_test.exs index dc6ace843..4f0805100 100644 --- a/test/web/instances/instance_test.exs +++ b/test/web/instances/instance_test.exs @@ -99,35 +99,54 @@ test "does NOT modify `unreachable_since` value of existing record in case it's end end - test "Scrapes favicon URLs" do - Tesla.Mock.mock(fn %{url: "https://favicon.example.org/"} -> - %Tesla.Env{ - status: 200, - body: ~s[] - } - end) + describe "get_or_update_favicon/1" do + test "Scrapes favicon URLs" do + Tesla.Mock.mock(fn %{url: "https://favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[] + } + end) - assert "https://favicon.example.org/favicon.png" == - Instance.get_or_update_favicon(URI.parse("https://favicon.example.org/")) - end + assert "https://favicon.example.org/favicon.png" == + Instance.get_or_update_favicon(URI.parse("https://favicon.example.org/")) + end - test "Returns nil on too long favicon URLs" do - long_favicon_url = - "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" + test "Returns nil on too long favicon URLs" do + long_favicon_url = + "https://Lorem.ipsum.dolor.sit.amet/consecteturadipiscingelit/Praesentpharetrapurusutaliquamtempus/Mauriseulaoreetarcu/atfacilisisorci/Nullamporttitor/nequesedfeugiatmollis/dolormagnaefficiturlorem/nonpretiumsapienorcieurisus/Nullamveleratsem/Maecenassedaccumsanexnam/favicon.png" - Tesla.Mock.mock(fn %{url: "https://long-favicon.example.org/"} -> - %Tesla.Env{ - status: 200, - body: ~s[] - } - end) + Tesla.Mock.mock(fn %{url: "https://long-favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: + ~s[] + } + end) - assert capture_log(fn -> - assert nil == - Instance.get_or_update_favicon( - URI.parse("https://long-favicon.example.org/") - ) - end) =~ - "Instance.get_or_update_favicon(\"long-favicon.example.org\") error: %Postgrex.Error{" + assert capture_log(fn -> + assert nil == + Instance.get_or_update_favicon( + URI.parse("https://long-favicon.example.org/") + ) + end) =~ + "Instance.get_or_update_favicon(\"long-favicon.example.org\") error: %Postgrex.Error{" + end + + test "Handles not getting a favicon URL properly" do + Tesla.Mock.mock(fn %{url: "https://no-favicon.example.org/"} -> + %Tesla.Env{ + status: 200, + body: ~s[

    I wil look down and whisper "GNO.."

    ] + } + end) + + refute capture_log(fn -> + assert nil == + Instance.get_or_update_favicon( + URI.parse("https://no-favicon.example.org/") + ) + end) =~ "Instance.scrape_favicon(\"https://no-favicon.example.org/\") error: " + end end end From 89a7efab69d905cc3521388b1e1cf43851848627 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Fri, 11 Sep 2020 14:22:54 +0300 Subject: [PATCH 118/141] ConnectionPool: Log possible HTTP1 blocks --- lib/pleroma/gun/conn.ex | 12 ++++++------ lib/pleroma/gun/connection_pool/worker.ex | 22 ++++++++++++++++------ lib/pleroma/telemetry/logger.ex | 18 ++++++++++++++++-- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/lib/pleroma/gun/conn.ex b/lib/pleroma/gun/conn.ex index 75b1ffc0a..477e19c6e 100644 --- a/lib/pleroma/gun/conn.ex +++ b/lib/pleroma/gun/conn.ex @@ -50,10 +50,10 @@ defp do_open(uri, %{proxy: {proxy_host, proxy_port}} = opts) do with open_opts <- Map.delete(opts, :tls_opts), {:ok, conn} <- Gun.open(proxy_host, proxy_port, open_opts), - {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]), + {:ok, protocol} <- Gun.await_up(conn, opts[:connect_timeout]), stream <- Gun.connect(conn, connect_opts), {:response, :fin, 200, _} <- Gun.await(conn, stream) do - {:ok, conn} + {:ok, conn, protocol} else error -> Logger.warn( @@ -88,8 +88,8 @@ defp do_open(uri, %{proxy: {proxy_type, proxy_host, proxy_port}} = opts) do |> Map.put(:socks_opts, socks_opts) with {:ok, conn} <- Gun.open(proxy_host, proxy_port, opts), - {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]) do - {:ok, conn} + {:ok, protocol} <- Gun.await_up(conn, opts[:connect_timeout]) do + {:ok, conn, protocol} else error -> Logger.warn( @@ -106,8 +106,8 @@ defp do_open(%URI{host: host, port: port} = uri, opts) do host = Pleroma.HTTP.AdapterHelper.parse_host(host) with {:ok, conn} <- Gun.open(host, port, opts), - {:ok, _} <- Gun.await_up(conn, opts[:connect_timeout]) do - {:ok, conn} + {:ok, protocol} <- Gun.await_up(conn, opts[:connect_timeout]) do + {:ok, conn, protocol} else error -> Logger.warn( diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex index c36332817..49d41e4c7 100644 --- a/lib/pleroma/gun/connection_pool/worker.ex +++ b/lib/pleroma/gun/connection_pool/worker.ex @@ -15,7 +15,7 @@ def init([_key, _uri, _opts, _client_pid] = opts) do @impl true def handle_continue({:connect, [key, uri, opts, client_pid]}, _) do - with {:ok, conn_pid} <- Gun.Conn.open(uri, opts), + with {:ok, conn_pid, protocol} <- Gun.Conn.open(uri, opts), Process.link(conn_pid) do time = :erlang.monotonic_time(:millisecond) @@ -27,8 +27,12 @@ def handle_continue({:connect, [key, uri, opts, client_pid]}, _) do send(client_pid, {:conn_pid, conn_pid}) {:noreply, - %{key: key, timer: nil, client_monitors: %{client_pid => Process.monitor(client_pid)}}, - :hibernate} + %{ + key: key, + timer: nil, + client_monitors: %{client_pid => Process.monitor(client_pid)}, + protocol: protocol + }, :hibernate} else err -> {:stop, {:shutdown, err}, nil} @@ -53,14 +57,20 @@ def handle_cast({:remove_client, client_pid}, state) do end @impl true - def handle_call(:add_client, {client_pid, _}, %{key: key} = state) do + def handle_call(:add_client, {client_pid, _}, %{key: key, protocol: protocol} = state) do time = :erlang.monotonic_time(:millisecond) - {{conn_pid, _, _, _}, _} = + {{conn_pid, used_by, _, _}, _} = Registry.update_value(@registry, key, fn {conn_pid, used_by, crf, last_reference} -> {conn_pid, [client_pid | used_by], crf(time - last_reference, crf), time} end) + :telemetry.execute( + [:pleroma, :connection_pool, :client, :add], + %{client_pid: client_pid, clients: used_by}, + %{key: state.key, protocol: protocol} + ) + state = if state.timer != nil do Process.cancel_timer(state[:timer]) @@ -131,7 +141,7 @@ def handle_info({:gun_down, _pid, _protocol, _reason, _killed_streams}, state) d @impl true def handle_info({:DOWN, _ref, :process, pid, reason}, state) do :telemetry.execute( - [:pleroma, :connection_pool, :client_death], + [:pleroma, :connection_pool, :client, :dead], %{client_pid: pid, reason: reason}, %{key: state.key} ) diff --git a/lib/pleroma/telemetry/logger.ex b/lib/pleroma/telemetry/logger.ex index 4cacae02f..197b1d091 100644 --- a/lib/pleroma/telemetry/logger.ex +++ b/lib/pleroma/telemetry/logger.ex @@ -7,7 +7,8 @@ defmodule Pleroma.Telemetry.Logger do [:pleroma, :connection_pool, :reclaim, :start], [:pleroma, :connection_pool, :reclaim, :stop], [:pleroma, :connection_pool, :provision_failure], - [:pleroma, :connection_pool, :client_death] + [:pleroma, :connection_pool, :client, :dead], + [:pleroma, :connection_pool, :client, :add] ] def attach do :telemetry.attach_many("pleroma-logger", @events, &handle_event/4, []) @@ -62,7 +63,7 @@ def handle_event( end def handle_event( - [:pleroma, :connection_pool, :client_death], + [:pleroma, :connection_pool, :client, :dead], %{client_pid: client_pid, reason: reason}, %{key: key}, _ @@ -73,4 +74,17 @@ def handle_event( }" end) end + + def handle_event( + [:pleroma, :connection_pool, :client, :add], + %{clients: [_, _ | _] = clients}, + %{key: key, protocol: :http}, + _ + ) do + Logger.info(fn -> + "Pool worker for #{key}: #{length(clients)} clients are using an HTTP1 connection at the same time, head-of-line blocking might occur." + end) + end + + def handle_event([:pleroma, :connection_pool, :client, :add], _, _, _), do: :ok end From f1f44069ae525fd21127e5ceccc61016c12f4427 Mon Sep 17 00:00:00 2001 From: "Haelwenn (lanodan) Monnier" Date: Fri, 11 Sep 2020 19:58:58 +0200 Subject: [PATCH 119/141] Fetcher: Correctly return MRF reject reason --- lib/pleroma/object/fetcher.ex | 4 ++-- lib/pleroma/web/activity_pub/activity_pub.ex | 4 ++-- test/object/fetcher_test.exs | 25 +++++++++++++++----- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/pleroma/object/fetcher.ex b/lib/pleroma/object/fetcher.ex index 1de2ce6c3..24dc7cb95 100644 --- a/lib/pleroma/object/fetcher.ex +++ b/lib/pleroma/object/fetcher.ex @@ -98,8 +98,8 @@ def fetch_object_from_id(id, options \\ []) do {:containment, _} -> {:error, "Object containment failed."} - {:transmogrifier, {:error, {:reject, nil}}} -> - {:reject, nil} + {:transmogrifier, {:error, {:reject, e}}} -> + {:reject, e} {:transmogrifier, _} = e -> {:error, e} diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 66a9f78a3..b2205bff7 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -154,8 +154,8 @@ def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when {:remote_limit_pass, _} -> {:error, :remote_limit} - {:reject, reason} -> - {:error, reason} + {:reject, _} = e -> + {:error, e} end end diff --git a/test/object/fetcher_test.exs b/test/object/fetcher_test.exs index 16cfa7f5c..3173ee31c 100644 --- a/test/object/fetcher_test.exs +++ b/test/object/fetcher_test.exs @@ -6,10 +6,13 @@ defmodule Pleroma.Object.FetcherTest do use Pleroma.DataCase alias Pleroma.Activity + alias Pleroma.Config alias Pleroma.Object alias Pleroma.Object.Fetcher - import Tesla.Mock + + import ExUnit.CaptureLog import Mock + import Tesla.Mock setup do mock(fn @@ -71,20 +74,20 @@ test "it works when fetching the OP actor errors out" do setup do: clear_config([:instance, :federation_incoming_replies_max_depth]) test "it returns thread depth exceeded error if thread depth is exceeded" do - Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 0) + Config.put([:instance, :federation_incoming_replies_max_depth], 0) assert {:error, "Max thread distance exceeded."} = Fetcher.fetch_object_from_id(@ap_id, depth: 1) end test "it fetches object if max thread depth is restricted to 0 and depth is not specified" do - Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 0) + Config.put([:instance, :federation_incoming_replies_max_depth], 0) assert {:ok, _} = Fetcher.fetch_object_from_id(@ap_id) end test "it fetches object if requested depth does not exceed max thread depth" do - Pleroma.Config.put([:instance, :federation_incoming_replies_max_depth], 10) + Config.put([:instance, :federation_incoming_replies_max_depth], 10) assert {:ok, _} = Fetcher.fetch_object_from_id(@ap_id, depth: 10) end @@ -120,6 +123,16 @@ test "it fetches an object" do assert object == object_again end + + test "Return MRF reason when fetched status is rejected by one" do + clear_config([:mrf_keyword, :reject], ["yeah"]) + clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.KeywordPolicy]) + + assert {:reject, "[KeywordPolicy] Matches with rejected keyword"} == + Fetcher.fetch_object_from_id( + "http://mastodon.example.org/@admin/99541947525187367" + ) + end end describe "implementation quirks" do @@ -212,7 +225,7 @@ test "it can refetch pruned objects" do Pleroma.Signature, [:passthrough], [] do - Pleroma.Config.put([:activitypub, :sign_object_fetches], true) + Config.put([:activitypub, :sign_object_fetches], true) Fetcher.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367") @@ -223,7 +236,7 @@ test "it can refetch pruned objects" do Pleroma.Signature, [:passthrough], [] do - Pleroma.Config.put([:activitypub, :sign_object_fetches], false) + Config.put([:activitypub, :sign_object_fetches], false) Fetcher.fetch_object_from_id("http://mastodon.example.org/@admin/99541947525187367") From 40c847dc2a33bcd4bb6776d500cb73d6fa5ff052 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 11 Sep 2020 17:42:39 -0500 Subject: [PATCH 120/141] Spelling Reported by: trevoke --- docs/configuration/cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 7cf1d1ce7..0c5d17ce3 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -18,7 +18,7 @@ To add configuration to your config file, you can copy it from the base config. * `notify_email`: Email used for notifications. * `description`: The instance’s description, can be seen in nodeinfo and ``/api/v1/instance``. * `limit`: Posts character limit (CW/Subject included in the counter). -* `discription_limit`: The character limit for image descriptions. +* `description_limit`: The character limit for image descriptions. * `chat_limit`: Character limit of the instance chat messages. * `remote_limit`: Hard character limit beyond which remote posts will be dropped. * `upload_limit`: File size limit of uploads (except for avatar, background, banner). From 6877bad44cccff807cf8d1426c26ab80a6ea0244 Mon Sep 17 00:00:00 2001 From: tarteka Date: Fri, 11 Sep 2020 18:24:59 +0000 Subject: [PATCH 121/141] Translated using Weblate (Spanish) Currently translated at 20.7% (22 of 106 strings) Translation: Pleroma/Pleroma backend Translate-URL: https://translate.pleroma.social/projects/pleroma/pleroma/es/ --- priv/gettext/es/LC_MESSAGES/errors.po | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/priv/gettext/es/LC_MESSAGES/errors.po b/priv/gettext/es/LC_MESSAGES/errors.po index ba75936a9..0a6fceaad 100644 --- a/priv/gettext/es/LC_MESSAGES/errors.po +++ b/priv/gettext/es/LC_MESSAGES/errors.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2020-09-09 09:49+0000\n" -"PO-Revision-Date: 2020-09-09 10:52+0000\n" +"PO-Revision-Date: 2020-09-11 21:26+0000\n" "Last-Translator: tarteka \n" "Language-Team: Spanish \n" @@ -94,52 +94,52 @@ msgid "must be less than %{number}" msgstr "" msgid "must be greater than %{number}" -msgstr "" +msgstr "debe ser mayor que %{number}" msgid "must be less than or equal to %{number}" -msgstr "" +msgstr "debe ser menor o igual que %{number}" msgid "must be greater than or equal to %{number}" -msgstr "" +msgstr "deber ser mayor o igual que %{number}" msgid "must be equal to %{number}" -msgstr "" +msgstr "deber ser igual a %{number}" #: lib/pleroma/web/common_api/common_api.ex:505 #, elixir-format msgid "Account not found" -msgstr "" +msgstr "Cuenta no encontrada" #: lib/pleroma/web/common_api/common_api.ex:339 #, elixir-format msgid "Already voted" -msgstr "" +msgstr "Ya has votado" #: lib/pleroma/web/oauth/oauth_controller.ex:359 #, elixir-format msgid "Bad request" -msgstr "" +msgstr "Solicitud incorrecta" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:426 #, elixir-format msgid "Can't delete object" -msgstr "" +msgstr "No se puede eliminar el objeto" #: lib/pleroma/web/controller_helper.ex:105 #: lib/pleroma/web/controller_helper.ex:111 #, elixir-format msgid "Can't display this activity" -msgstr "" +msgstr "No se puede mostrar esta actividad" #: lib/pleroma/web/mastodon_api/controllers/account_controller.ex:285 #, elixir-format msgid "Can't find user" -msgstr "" +msgstr "No se puede encontrar al usuario" #: lib/pleroma/web/pleroma_api/controllers/account_controller.ex:61 #, elixir-format msgid "Can't get favorites" -msgstr "" +msgstr "No se puede obtener los favoritos" #: lib/pleroma/web/activity_pub/activity_pub_controller.ex:438 #, elixir-format @@ -149,7 +149,7 @@ msgstr "" #: lib/pleroma/web/common_api/utils.ex:563 #, elixir-format msgid "Cannot post an empty status without attachments" -msgstr "" +msgstr "No se puede publicar un estado vacío y sin archivos adjuntos" #: lib/pleroma/web/common_api/utils.ex:511 #, elixir-format From c0b36621f1149734e97f268e267202cc53700abb Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Fri, 11 Sep 2020 16:59:45 -0500 Subject: [PATCH 122/141] Ensure we only apply NSFW Simple policy on parsable objects --- lib/pleroma/web/activity_pub/mrf/simple_policy.ex | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index bb193475a..161177727 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -66,7 +66,8 @@ defp check_media_nsfw( "type" => "Create", "object" => child_object } = object - ) do + ) + when is_map(child_object) do media_nsfw = Config.get([:mrf_simple, :media_nsfw]) |> MRF.subdomains_regex() From 65f4e37ee1f47ff2f160eb56facef4c783a6828c Mon Sep 17 00:00:00 2001 From: Alexander Strizhakov Date: Sun, 13 Sep 2020 10:04:50 +0300 Subject: [PATCH 123/141] remove old workers in oban migrations --- .../20200825061316_move_activity_expirations_to_oban.exs | 2 ++ .../20200907092050_move_tokens_expiration_into_oban.exs | 2 ++ 2 files changed, 4 insertions(+) diff --git a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs index cdc00d20b..a703af83f 100644 --- a/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs +++ b/priv/repo/migrations/20200825061316_move_activity_expirations_to_oban.exs @@ -4,6 +4,8 @@ defmodule Pleroma.Repo.Migrations.MoveActivityExpirationsToOban do import Ecto.Query, only: [from: 2] def change do + Pleroma.Config.Oban.warn() + Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}], strategy: :one_for_one, name: Pleroma.Supervisor diff --git a/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs index 832bd02a7..9e49ddacb 100644 --- a/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs +++ b/priv/repo/migrations/20200907092050_move_tokens_expiration_into_oban.exs @@ -4,6 +4,8 @@ defmodule Pleroma.Repo.Migrations.MoveTokensExpirationIntoOban do import Ecto.Query, only: [from: 2] def change do + Pleroma.Config.Oban.warn() + Supervisor.start_link([{Oban, Pleroma.Config.get(Oban)}], strategy: :one_for_one, name: Pleroma.Supervisor From 3e53ab4e98e6294f593f2185998f555ccd6fee73 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Mon, 14 Sep 2020 14:08:12 +0300 Subject: [PATCH 124/141] added notification constraints --- .../migration_helper/notification_backfill.ex | 15 +++++----- lib/pleroma/repo.ex | 9 ++++-- ...8_delete_notification_without_activity.exs | 30 +++++++++++++++++++ ...914105800_add_notification_constraints.exs | 23 ++++++++++++++ 4 files changed, 67 insertions(+), 10 deletions(-) create mode 100644 priv/repo/migrations/20200914105638_delete_notification_without_activity.exs create mode 100644 priv/repo/migrations/20200914105800_add_notification_constraints.exs diff --git a/lib/pleroma/migration_helper/notification_backfill.ex b/lib/pleroma/migration_helper/notification_backfill.ex index d260e62ca..24f4733fe 100644 --- a/lib/pleroma/migration_helper/notification_backfill.ex +++ b/lib/pleroma/migration_helper/notification_backfill.ex @@ -19,13 +19,13 @@ def fill_in_notification_types do query |> Repo.chunk_stream(100) |> Enum.each(fn notification -> - type = - notification.activity - |> type_from_activity() + if notification.activity do + type = type_from_activity(notification.activity) - notification - |> Ecto.Changeset.change(%{type: type}) - |> Repo.update() + notification + |> Ecto.Changeset.change(%{type: type}) + |> Repo.update() + end end) end @@ -72,8 +72,7 @@ defp type_from_activity(%{data: %{"type" => type}} = activity) do "pleroma:emoji_reaction" "Create" -> - activity - |> type_from_activity_object() + type_from_activity_object(activity) t -> raise "No notification type for activity type #{t}" diff --git a/lib/pleroma/repo.ex b/lib/pleroma/repo.ex index f317e4d58..a75610879 100644 --- a/lib/pleroma/repo.ex +++ b/lib/pleroma/repo.ex @@ -49,7 +49,7 @@ def get_assoc(resource, association) do end end - def chunk_stream(query, chunk_size) do + def chunk_stream(query, chunk_size, returns_as \\ :one) do # We don't actually need start and end funcitons of resource streaming, # but it seems to be the only way to not fetch records one-by-one and # have individual records be the elements of the stream, instead of @@ -69,7 +69,12 @@ def chunk_stream(query, chunk_size) do records -> last_id = List.last(records).id - {records, last_id} + + if returns_as == :one do + {records, last_id} + else + {[records], last_id} + end end end, fn _ -> :ok end diff --git a/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs new file mode 100644 index 000000000..f5b339101 --- /dev/null +++ b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs @@ -0,0 +1,30 @@ +defmodule Pleroma.Repo.Migrations.DeleteNotificationWithoutActivity do + use Ecto.Migration + + import Ecto.Query + alias Pleroma.Repo + + def up do + from( + q in Pleroma.Notification, + left_join: c in assoc(q, :activity), + select: %{id: type(q.id, :integer)}, + where: is_nil(c.id) + ) + |> Repo.chunk_stream(1_000, :bacthes) + |> Stream.each(fn records -> + notification_ids = Enum.map(records, fn %{id: id} -> id end) + + Repo.delete_all( + from(n in "notifications", + where: n.id in ^notification_ids + ) + ) + end) + |> Stream.run() + end + + def down do + :ok + end +end diff --git a/priv/repo/migrations/20200914105800_add_notification_constraints.exs b/priv/repo/migrations/20200914105800_add_notification_constraints.exs new file mode 100644 index 000000000..a65c35fd0 --- /dev/null +++ b/priv/repo/migrations/20200914105800_add_notification_constraints.exs @@ -0,0 +1,23 @@ +defmodule Pleroma.Repo.Migrations.AddNotificationConstraints do + use Ecto.Migration + + def up do + drop(constraint(:notifications, "notifications_activity_id_fkey")) + + alter table(:notifications) do + modify(:activity_id, references(:activities, type: :uuid, on_delete: :delete_all), + null: false + ) + end + end + + def down do + drop(constraint(:notifications, "notifications_activity_id_fkey")) + + alter table(:notifications) do + modify(:activity_id, references(:activities, type: :uuid, on_delete: :delete_all), + null: true + ) + end + end +end From f66a15c4a51e1c8f614b4c1609b2385a29762931 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 14 Sep 2020 14:44:25 +0300 Subject: [PATCH 125/141] RichMedia parser: do not set a cache TTL for unchanging errors --- lib/pleroma/web/rich_media/parser.ex | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index 5727fda18..ab8f35922 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -36,6 +36,14 @@ defp get_cached_or_parse(url) do {:ok, _data} = res -> res + {:error, :body_too_large} = e -> + e + + {:error, {:content_type, _}} -> + e + + # The TTL is not set for the errors above, since they are unlikely to change + # with time {:error, _} = e -> ttl = Pleroma.Config.get([:rich_media, :failure_backoff], 60_000) Cachex.expire(:rich_media_cache, url, ttl) From f70335002df9b2b3f47f0ccaed6aaeebfb14435f Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 14 Sep 2020 14:45:58 +0300 Subject: [PATCH 126/141] RichMedia: Do a HEAD request to check content type/length This shouldn't be too expensive, since the connections are pooled, but it should save us some bandwidth since we won't fetch non-html files and files that are too large for us to process (especially since you can't cancel a request without closing the connection with HTTP1). --- lib/pleroma/web/rich_media/helpers.ex | 46 ++++++++++++++++++++++++++- test/support/http_request_mock.ex | 17 ++++++++++ test/web/rich_media/parser_test.exs | 29 +++++++++++++++++ 3 files changed, 91 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/rich_media/helpers.ex b/lib/pleroma/web/rich_media/helpers.ex index bd7f03cbe..d7a19df4a 100644 --- a/lib/pleroma/web/rich_media/helpers.ex +++ b/lib/pleroma/web/rich_media/helpers.ex @@ -87,6 +87,50 @@ def perform(:fetch, %Activity{} = activity) do def rich_media_get(url) do headers = [{"user-agent", Pleroma.Application.user_agent() <> "; Bot"}] - Pleroma.HTTP.get(url, headers, @options) + head_check = + case Pleroma.HTTP.head(url, headers, @options) do + # If the HEAD request didn't reach the server for whatever reason, + # we assume the GET that comes right after won't either + {:error, _} = e -> + e + + {:ok, %Tesla.Env{status: 200, headers: headers}} -> + with :ok <- check_content_type(headers), + :ok <- check_content_length(headers), + do: :ok + + _ -> + :ok + end + + with :ok <- head_check, do: Pleroma.HTTP.get(url, headers, @options) + end + + defp check_content_type(headers) do + case List.keyfind(headers, "content-type", 0) do + {_, content_type} -> + case Plug.Conn.Utils.media_type(content_type) do + {:ok, "text", "html", _} -> :ok + _ -> {:error, {:content_type, content_type}} + end + + _ -> + :ok + end + end + + @max_body @options[:max_body] + defp check_content_length(headers) do + case List.keyfind(headers, "content-length", 0) do + {_, maybe_content_length} -> + case Integer.parse(maybe_content_length) do + {content_length, ""} when content_length <= @max_body -> :ok + {_, ""} -> {:error, :body_too_large} + _ -> :ok + end + + _ -> + :ok + end end end diff --git a/test/support/http_request_mock.ex b/test/support/http_request_mock.ex index 344e27f13..cb022333f 100644 --- a/test/support/http_request_mock.ex +++ b/test/support/http_request_mock.ex @@ -1262,4 +1262,21 @@ def post(url, query, body, headers) do inspect(headers) }"} end + + # Most of the rich media mocks are missing HEAD requests, so we just return 404. + @rich_media_mocks [ + "https://example.com/ogp", + "https://example.com/ogp-missing-data", + "https://example.com/twitter-card" + ] + def head(url, _query, _body, _headers) when url in @rich_media_mocks do + {:ok, %Tesla.Env{status: 404, body: ""}} + end + + def head(url, query, body, headers) do + {:error, + "Mock response not implemented for HEAD #{inspect(url)}, #{query}, #{inspect(body)}, #{ + inspect(headers) + }"} + end end diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index 21ae35f8b..d65a63121 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -56,6 +56,27 @@ defmodule Pleroma.Web.RichMedia.ParserTest do %{method: :get, url: "http://example.com/error"} -> {:error, :overload} + + %{ + method: :head, + url: "http://example.com/huge-page" + } -> + %Tesla.Env{ + status: 200, + headers: [{"content-length", "2000001"}, {"content-type", "text/html"}] + } + + %{ + method: :head, + url: "http://example.com/pdf-file" + } -> + %Tesla.Env{ + status: 200, + headers: [{"content-length", "1000000"}, {"content-type", "application/pdf"}] + } + + %{method: :head} -> + %Tesla.Env{status: 404, body: "", headers: []} end) :ok @@ -144,4 +165,12 @@ test "rejects invalid OGP data" do test "returns error if getting page was not successful" do assert {:error, :overload} = Parser.parse("http://example.com/error") end + + test "does a HEAD request to check if the body is too large" do + assert {:error, body_too_large} = Parser.parse("http://example.com/huge-page") + end + + test "does a HEAD request to check if the body is html" do + assert {:error, {:content_type, _}} = Parser.parse("http://example.com/pdf-file") + end end From 738685a6298d7bd883fe81477b2e25ec94822e02 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 14 Sep 2020 11:56:00 +0000 Subject: [PATCH 127/141] Apply 1 suggestion(s) to 1 file(s) --- test/web/rich_media/parser_test.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/web/rich_media/parser_test.exs b/test/web/rich_media/parser_test.exs index d65a63121..6d00c2af5 100644 --- a/test/web/rich_media/parser_test.exs +++ b/test/web/rich_media/parser_test.exs @@ -167,7 +167,7 @@ test "returns error if getting page was not successful" do end test "does a HEAD request to check if the body is too large" do - assert {:error, body_too_large} = Parser.parse("http://example.com/huge-page") + assert {:error, :body_too_large} = Parser.parse("http://example.com/huge-page") end test "does a HEAD request to check if the body is html" do From bb407edce4b512aae74c12ea0c1abcc92bc18ddb Mon Sep 17 00:00:00 2001 From: rinpatch Date: Mon, 14 Sep 2020 15:46:00 +0300 Subject: [PATCH 128/141] RichMedia: fix a compilation error due to nonexistent variable No idea why this passed Gitlab CI --- lib/pleroma/web/rich_media/parser.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/rich_media/parser.ex b/lib/pleroma/web/rich_media/parser.ex index ab8f35922..33f6f1fa1 100644 --- a/lib/pleroma/web/rich_media/parser.ex +++ b/lib/pleroma/web/rich_media/parser.ex @@ -39,7 +39,7 @@ defp get_cached_or_parse(url) do {:error, :body_too_large} = e -> e - {:error, {:content_type, _}} -> + {:error, {:content_type, _}} = e -> e # The TTL is not set for the errors above, since they are unlikely to change From 0b5e72ecf033ff78c67eb4e5a68277e5d83f5611 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Thu, 10 Sep 2020 15:00:19 +0300 Subject: [PATCH 129/141] Remove `:managed_config` option. In practice, it was already removed half a year ago, but the description and cheatsheet entries were still there. The migration intentionally does not use ConfigDB.get_by_params, since this will break migration code as soon as we add a new field is added to ConfigDB. Closes #2086 --- CHANGELOG.md | 2 ++ config/config.exs | 1 - config/description.exs | 6 ----- docs/configuration/cheatsheet.md | 1 - ...10113106_remove_managed_config_from_db.exs | 27 +++++++++++++++++++ 5 files changed, 29 insertions(+), 8 deletions(-) create mode 100644 priv/repo/migrations/20200910113106_remove_managed_config_from_db.exs diff --git a/CHANGELOG.md b/CHANGELOG.md index 75357f05e..88c489895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** `Pleroma.Workers.Cron.StatsWorker` setting from Oban `:crontab` (moved to a simpler implementation). - **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). - **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). +- Removed `:managed_config` option. In practice, it was accidentally removed with 2.0.0 release when frontends were +switched to a new configuration mechanism, however it was not officially removed until now. ### Changed - Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). diff --git a/config/config.exs b/config/config.exs index 88c47fd03..c204814d0 100644 --- a/config/config.exs +++ b/config/config.exs @@ -216,7 +216,6 @@ allow_relay: true, public: true, quarantined_instances: [], - managed_config: true, static_dir: "instance/static/", allowed_post_formats: [ "text/plain", diff --git a/config/description.exs b/config/description.exs index 82c7bc6a7..2b30f8148 100644 --- a/config/description.exs +++ b/config/description.exs @@ -764,12 +764,6 @@ "*.quarantined.com" ] }, - %{ - key: :managed_config, - type: :boolean, - description: - "Whenether the config for pleroma-fe is configured in this config or in static/config.json" - }, %{ key: :static_dir, type: :string, diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md index 0c5d17ce3..054b8fe43 100644 --- a/docs/configuration/cheatsheet.md +++ b/docs/configuration/cheatsheet.md @@ -40,7 +40,6 @@ To add configuration to your config file, you can copy it from the base config. * `allow_relay`: Enable Pleroma’s Relay, which makes it possible to follow a whole instance. * `public`: Makes the client API in authenticated mode-only except for user-profiles. Useful for disabling the Local Timeline and The Whole Known Network. Note that there is a dependent setting restricting or allowing unauthenticated access to specific resources, see `restrict_unauthenticated` for more details. * `quarantined_instances`: List of ActivityPub instances where private (DMs, followers-only) activities will not be send. -* `managed_config`: Whenether the config for pleroma-fe is configured in [:frontend_configurations](#frontend_configurations) or in ``static/config.json``. * `allowed_post_formats`: MIME-type list of formats allowed to be posted (transformed into HTML). * `extended_nickname_format`: Set to `true` to use extended local nicknames format (allows underscores/dashes). This will break federation with older software for theses nicknames. diff --git a/priv/repo/migrations/20200910113106_remove_managed_config_from_db.exs b/priv/repo/migrations/20200910113106_remove_managed_config_from_db.exs new file mode 100644 index 000000000..e27a9ae48 --- /dev/null +++ b/priv/repo/migrations/20200910113106_remove_managed_config_from_db.exs @@ -0,0 +1,27 @@ +defmodule Pleroma.Repo.Migrations.RemoveManagedConfigFromDb do + use Ecto.Migration + import Ecto.Query + alias Pleroma.ConfigDB + alias Pleroma.Repo + + def up do + config_entry = + from(c in ConfigDB, + select: [:id, :value], + where: c.group == ^:pleroma and c.key == ^:instance + ) + |> Repo.one() + + if config_entry do + {_, value} = Keyword.pop(config_entry.value, :managed_config) + + config_entry + |> Ecto.Changeset.change(value: value) + |> Repo.update() + end + end + + def down do + :ok + end +end From d31f0393bfaa733cf68058c21294874daa286e0a Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 12:06:08 -0500 Subject: [PATCH 130/141] Validate Welcome Chat message works with Simple policy applied to local instance --- test/user_test.exs | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/test/user_test.exs b/test/user_test.exs index 50f72549e..a910226b2 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -440,6 +440,45 @@ test "it sends a welcome chat message if it is set" do assert activity.actor == welcome_user.ap_id end + setup do: + clear_config(:mrf_simple, + media_removal: [], + media_nsfw: [], + federated_timeline_removal: [], + report_removal: [], + reject: [], + followers_only: [], + accept: [], + avatar_removal: [], + banner_removal: [], + reject_deletes: [] + ) + + setup do: + clear_config(:mrf, + policies: [ + Pleroma.Web.ActivityPub.MRF.SimplePolicy + ] + ) + + test "it sends a welcome chat message when Simple policy applied to local instance" do + Pleroma.Config.put([:mrf_simple, :media_nsfw], ["localhost"]) + + welcome_user = insert(:user) + Pleroma.Config.put([:welcome, :chat_message, :enabled], true) + Pleroma.Config.put([:welcome, :chat_message, :sender_nickname], welcome_user.nickname) + Pleroma.Config.put([:welcome, :chat_message, :message], "Hello, this is a chat message") + + cng = User.register_changeset(%User{}, @full_user_data) + {:ok, registered_user} = User.register(cng) + ObanHelpers.perform_all() + + activity = Repo.one(Pleroma.Activity) + assert registered_user.ap_id in activity.recipients + assert Object.normalize(activity).data["content"] =~ "chat message" + assert activity.actor == welcome_user.ap_id + end + test "it sends a welcome email message if it is set" do welcome_user = insert(:user) Pleroma.Config.put([:welcome, :email, :enabled], true) From 25d1caf1ddae3730f2554d35d89a0c2692927d99 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 12:07:31 -0500 Subject: [PATCH 131/141] Merge duplicate Changed sections --- CHANGELOG.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75357f05e..e94f2eda2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Renamed `:await_up_timeout` in `:connections_pool` namespace to `:connect_timeout`, old name is deprecated. - Renamed `:timeout` in `pools` namespace to `:recv_timeout`, old name is deprecated. +- Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). ### Removed @@ -16,9 +17,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). - **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). -### Changed -- Minimum lifetime for ephmeral activities changed to 10 minutes and made configurable (`:min_lifetime` option). - ## [2.1.1] - 2020-09-08 ### Security From 118bf6e92bc112b20ba1ce2f7d0bd3bb5db7ebfe Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 12:08:32 -0500 Subject: [PATCH 132/141] Fixed Welcome chats with MRF Simple applied locally --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e94f2eda2..685d59873 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). - **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). +### Fixed + +- Welcome Chat messages preventing user registration with MRF Simple Policy applied to the local instance + ## [2.1.1] - 2020-09-08 ### Security From 709723182d69e1bb41a23c8abeb5d7c2c67b8c49 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 17:06:42 -0500 Subject: [PATCH 133/141] Ensure SimplePolicy's tags in string representation don't trip up the object validator --- lib/pleroma/web/activity_pub/transmogrifier.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pleroma/web/activity_pub/transmogrifier.ex b/lib/pleroma/web/activity_pub/transmogrifier.ex index af4384213..8fe430644 100644 --- a/lib/pleroma/web/activity_pub/transmogrifier.ex +++ b/lib/pleroma/web/activity_pub/transmogrifier.ex @@ -309,7 +309,7 @@ def fix_url(object), do: object def fix_emoji(%{"tag" => tags} = object) when is_list(tags) do emoji = tags - |> Enum.filter(fn data -> data["type"] == "Emoji" and data["icon"] end) + |> Enum.filter(fn data -> is_map(data) and data["type"] == "Emoji" and data["icon"] end) |> Enum.reduce(%{}, fn data, mapping -> name = String.trim(data["name"], ":") From 0b66e806e32055b625560eb06b9300cc856f9789 Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Mon, 14 Sep 2020 17:11:08 -0500 Subject: [PATCH 134/141] Move changelog entry to next patch --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 685d59873..ac4a6f7f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - **Breaking:** `Pleroma.Workers.Cron.ClearOauthTokenWorker` setting from Oban `:crontab` (moved to scheduled jobs). - **Breaking:** `Pleroma.Workers.Cron.PurgeExpiredActivitiesWorker` setting from Oban `:crontab` (moved to scheduled jobs). +## unreleased-patch - ??? + ### Fixed - Welcome Chat messages preventing user registration with MRF Simple Policy applied to the local instance From 3ab59a6f3c7b7bae2e69d1a8d1bf484d039a5420 Mon Sep 17 00:00:00 2001 From: eugenijm Date: Tue, 15 Sep 2020 13:00:07 +0300 Subject: [PATCH 135/141] Mastodon API: fix the public timeline returning an error when the `reply_visibility` parameter is set to `self` for an unauthenticated user --- CHANGELOG.md | 1 + lib/pleroma/web/activity_pub/activity_pub.ex | 4 ++-- test/web/activity_pub/activity_pub_test.exs | 8 ++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82f64d441..f7a372e11 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,7 @@ switched to a new configuration mechanism, however it was not officially removed ### Fixed - Welcome Chat messages preventing user registration with MRF Simple Policy applied to the local instance +- Mastodon API: the public timeline returning an error when the `reply_visibility` parameter is set to `self` for an unauthenticated user ## [2.1.1] - 2020-09-08 diff --git a/lib/pleroma/web/activity_pub/activity_pub.ex b/lib/pleroma/web/activity_pub/activity_pub.ex index 66a9f78a3..5aac3f53b 100644 --- a/lib/pleroma/web/activity_pub/activity_pub.ex +++ b/lib/pleroma/web/activity_pub/activity_pub.ex @@ -767,7 +767,7 @@ defp restrict_replies(query, %{exclude_replies: true}) do end defp restrict_replies(query, %{ - reply_filtering_user: user, + reply_filtering_user: %User{} = user, reply_visibility: "self" }) do from( @@ -783,7 +783,7 @@ defp restrict_replies(query, %{ end defp restrict_replies(query, %{ - reply_filtering_user: user, + reply_filtering_user: %User{} = user, reply_visibility: "following" }) do from( diff --git a/test/web/activity_pub/activity_pub_test.exs b/test/web/activity_pub/activity_pub_test.exs index d8caa0b00..7bdad3810 100644 --- a/test/web/activity_pub/activity_pub_test.exs +++ b/test/web/activity_pub/activity_pub_test.exs @@ -1810,6 +1810,14 @@ test "public timeline with default reply_visibility `self`", %{users: %{u1: user |> Enum.map(& &1.id) assert activities_ids == [] + + activities_ids = + %{} + |> Map.put(:reply_visibility, "self") + |> Map.put(:reply_filtering_user, nil) + |> ActivityPub.fetch_public_activities() + + assert activities_ids == [] end test "home timeline", %{users: %{u1: user}} do From f879d07fa1a046b5aa33de8e445b1ca803fa1d04 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Tue, 15 Sep 2020 15:32:49 +0300 Subject: [PATCH 136/141] fixed tests --- test/marker_test.exs | 4 ++-- test/repo_test.exs | 4 +++- .../web/mastodon_api/controllers/account_controller_test.exs | 5 ++++- test/web/mastodon_api/controllers/marker_controller_test.exs | 2 +- test/web/mastodon_api/views/account_view_test.exs | 2 +- 5 files changed, 11 insertions(+), 6 deletions(-) diff --git a/test/marker_test.exs b/test/marker_test.exs index 5b6d0b4a4..7b3943c7b 100644 --- a/test/marker_test.exs +++ b/test/marker_test.exs @@ -33,8 +33,8 @@ test "return empty multi" do test "returns user markers" do user = insert(:user) marker = insert(:marker, user: user) - insert(:notification, user: user) - insert(:notification, user: user) + insert(:notification, user: user, activity: insert(:note_activity)) + insert(:notification, user: user, activity: insert(:note_activity)) insert(:marker, timeline: "home", user: user) assert Marker.get_markers( diff --git a/test/repo_test.exs b/test/repo_test.exs index 92e827c95..72c0b5071 100644 --- a/test/repo_test.exs +++ b/test/repo_test.exs @@ -37,7 +37,9 @@ test "get one-to-one assoc from repo" do test "get one-to-many assoc from repo" do user = insert(:user) - notification = refresh_record(insert(:notification, user: user)) + + notification = + refresh_record(insert(:notification, user: user, activity: insert(:note_activity))) assert Repo.get_assoc(user, :notifications) == {:ok, [notification]} end diff --git a/test/web/mastodon_api/controllers/account_controller_test.exs b/test/web/mastodon_api/controllers/account_controller_test.exs index 17a1e7d66..f7f1369e4 100644 --- a/test/web/mastodon_api/controllers/account_controller_test.exs +++ b/test/web/mastodon_api/controllers/account_controller_test.exs @@ -1442,7 +1442,10 @@ test "returns lists to which the account belongs" do describe "verify_credentials" do test "verify_credentials" do %{user: user, conn: conn} = oauth_access(["read:accounts"]) - [notification | _] = insert_list(7, :notification, user: user) + + [notification | _] = + insert_list(7, :notification, user: user, activity: insert(:note_activity)) + Pleroma.Notification.set_read_up_to(user, notification.id) conn = get(conn, "/api/v1/accounts/verify_credentials") diff --git a/test/web/mastodon_api/controllers/marker_controller_test.exs b/test/web/mastodon_api/controllers/marker_controller_test.exs index 6dd40fb4a..9f0481120 100644 --- a/test/web/mastodon_api/controllers/marker_controller_test.exs +++ b/test/web/mastodon_api/controllers/marker_controller_test.exs @@ -11,7 +11,7 @@ defmodule Pleroma.Web.MastodonAPI.MarkerControllerTest do test "gets markers with correct scopes", %{conn: conn} do user = insert(:user) token = insert(:oauth_token, user: user, scopes: ["read:statuses"]) - insert_list(7, :notification, user: user) + insert_list(7, :notification, user: user, activity: insert(:note_activity)) {:ok, %{"notifications" => marker}} = Pleroma.Marker.upsert( diff --git a/test/web/mastodon_api/views/account_view_test.exs b/test/web/mastodon_api/views/account_view_test.exs index 9f22f9dcf..c5f491d6b 100644 --- a/test/web/mastodon_api/views/account_view_test.exs +++ b/test/web/mastodon_api/views/account_view_test.exs @@ -448,7 +448,7 @@ test "shows unread_conversation_count only to the account owner" do test "shows unread_count only to the account owner" do user = insert(:user) - insert_list(7, :notification, user: user) + insert_list(7, :notification, user: user, activity: insert(:note_activity)) other_user = insert(:user) user = User.get_cached_by_ap_id(user.ap_id) From c74fad9e06cdb272a1378082908448f7f0b592ac Mon Sep 17 00:00:00 2001 From: Maksim Date: Wed, 16 Sep 2020 03:18:50 +0000 Subject: [PATCH 137/141] Apply 1 suggestion(s) to 1 file(s) --- .../20200914105638_delete_notification_without_activity.exs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs index f5b339101..9333fc5a1 100644 --- a/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs +++ b/priv/repo/migrations/20200914105638_delete_notification_without_activity.exs @@ -11,7 +11,7 @@ def up do select: %{id: type(q.id, :integer)}, where: is_nil(c.id) ) - |> Repo.chunk_stream(1_000, :bacthes) + |> Repo.chunk_stream(1_000, :batches) |> Stream.each(fn records -> notification_ids = Enum.map(records, fn %{id: id} -> id end) From 599f8bb152ca0669d17baa5f313f00f0791209b6 Mon Sep 17 00:00:00 2001 From: Maksim Pechnikov Date: Wed, 16 Sep 2020 09:47:18 +0300 Subject: [PATCH 138/141] RepoStreamer.chunk_stream -> Repo.chunk_stream --- lib/mix/tasks/pleroma/database.ex | 4 ++-- lib/mix/tasks/pleroma/user.ex | 4 ++-- lib/pleroma/repo.ex | 14 +++++++++++++ lib/pleroma/repo_streamer.ex | 34 ------------------------------- lib/pleroma/user.ex | 3 +-- test/repo_test.exs | 28 +++++++++++++++++++++++++ 6 files changed, 47 insertions(+), 40 deletions(-) delete mode 100644 lib/pleroma/repo_streamer.ex diff --git a/lib/mix/tasks/pleroma/database.ex b/lib/mix/tasks/pleroma/database.ex index 7f1108dcf..a01c36ece 100644 --- a/lib/mix/tasks/pleroma/database.ex +++ b/lib/mix/tasks/pleroma/database.ex @@ -99,7 +99,7 @@ def run(["fix_likes_collections"]) do where: fragment("(?)->>'likes' is not null", object.data), select: %{id: object.id, likes: fragment("(?)->>'likes'", object.data)} ) - |> Pleroma.RepoStreamer.chunk_stream(100) + |> Pleroma.Repo.chunk_stream(100, :batches) |> Stream.each(fn objects -> ids = objects @@ -145,7 +145,7 @@ def run(["ensure_expiration"]) do |> where(local: true) |> where([a], fragment("(? ->> 'type'::text) = 'Create'", a.data)) |> where([_a, o], fragment("?->>'type' = 'Note'", o.data)) - |> Pleroma.RepoStreamer.chunk_stream(100) + |> Pleroma.Repo.chunk_stream(100, :batches) |> Stream.each(fn activities -> Enum.each(activities, fn activity -> expires_at = diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index 01824aa18..b20c49d89 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -179,7 +179,7 @@ def run(["deactivate_all_from_instance", instance]) do start_pleroma() Pleroma.User.Query.build(%{nickname: "@#{instance}"}) - |> Pleroma.RepoStreamer.chunk_stream(500) + |> Pleroma.Repo.chunk_stream(500, :batches) |> Stream.each(fn users -> users |> Enum.each(fn user -> @@ -370,7 +370,7 @@ def run(["list"]) do start_pleroma() Pleroma.User.Query.build(%{local: true}) - |> Pleroma.RepoStreamer.chunk_stream(500) + |> Pleroma.Repo.chunk_stream(500, :batches) |> Stream.each(fn users -> users |> Enum.each(fn user -> diff --git a/lib/pleroma/repo.ex b/lib/pleroma/repo.ex index a75610879..4524bd5e2 100644 --- a/lib/pleroma/repo.ex +++ b/lib/pleroma/repo.ex @@ -49,6 +49,20 @@ def get_assoc(resource, association) do end end + @doc """ + Returns a lazy enumerable that emits all entries from the data store matching the given query. + + `returns_as` use to group records. use the `batches` option to fetch records in bulk. + + ## Examples + + # fetch records one-by-one + iex> Pleroma.Repo.chunk_stream(Pleroma.Activity.Queries.by_actor(ap_id), 500) + + # fetch records in bulk + iex> Pleroma.Repo.chunk_stream(Pleroma.Activity.Queries.by_actor(ap_id), 500, :batches) + """ + @spec chunk_stream(Ecto.Query.t(), integer(), atom()) :: Enumerable.t() def chunk_stream(query, chunk_size, returns_as \\ :one) do # We don't actually need start and end funcitons of resource streaming, # but it seems to be the only way to not fetch records one-by-one and diff --git a/lib/pleroma/repo_streamer.ex b/lib/pleroma/repo_streamer.ex deleted file mode 100644 index cb4d7bb7a..000000000 --- a/lib/pleroma/repo_streamer.ex +++ /dev/null @@ -1,34 +0,0 @@ -# Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors -# SPDX-License-Identifier: AGPL-3.0-only - -defmodule Pleroma.RepoStreamer do - alias Pleroma.Repo - import Ecto.Query - - def chunk_stream(query, chunk_size) do - Stream.unfold(0, fn - :halt -> - {[], :halt} - - last_id -> - query - |> order_by(asc: :id) - |> where([r], r.id > ^last_id) - |> limit(^chunk_size) - |> Repo.all() - |> case do - [] -> - {[], :halt} - - records -> - last_id = List.last(records).id - {records, last_id} - end - end) - |> Stream.take_while(fn - [] -> false - _ -> true - end) - end -end diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index e73d19964..57497eb83 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -25,7 +25,6 @@ defmodule Pleroma.User do alias Pleroma.Object alias Pleroma.Registration alias Pleroma.Repo - alias Pleroma.RepoStreamer alias Pleroma.User alias Pleroma.UserRelationship alias Pleroma.Web @@ -1775,7 +1774,7 @@ def delete_notifications_from_user_activities(%User{ap_id: ap_id}) do def delete_user_activities(%User{ap_id: ap_id} = user) do ap_id |> Activity.Queries.by_actor() - |> RepoStreamer.chunk_stream(50) + |> Repo.chunk_stream(50, :batches) |> Stream.each(fn activities -> Enum.each(activities, fn activity -> delete_activity(activity, user) end) end) diff --git a/test/repo_test.exs b/test/repo_test.exs index 72c0b5071..155791be2 100644 --- a/test/repo_test.exs +++ b/test/repo_test.exs @@ -49,4 +49,32 @@ test "return error if has not assoc " do assert Repo.get_assoc(token, :user) == {:error, :not_found} end end + + describe "chunk_stream/3" do + test "fetch records one-by-one" do + users = insert_list(50, :user) + + {fetch_users, 50} = + from(t in User) + |> Repo.chunk_stream(5) + |> Enum.reduce({[], 0}, fn %User{} = user, {acc, count} -> + {acc ++ [user], count + 1} + end) + + assert users == fetch_users + end + + test "fetch records in bulk" do + users = insert_list(50, :user) + + {fetch_users, 10} = + from(t in User) + |> Repo.chunk_stream(5, :batches) + |> Enum.reduce({[], 0}, fn users, {acc, count} -> + {acc ++ users, count + 1} + end) + + assert users == fetch_users + end + end end From adb1b0282dfbced2b2986c90cff765be37dd5151 Mon Sep 17 00:00:00 2001 From: rinpatch Date: Wed, 16 Sep 2020 17:23:05 +0300 Subject: [PATCH 139/141] ConnectionPool Worker: use monitor flush instead of checking ref `:flush` removes the DOWN message if one had arrived, so this check should no longer be necessary. --- lib/pleroma/gun/connection_pool/worker.ex | 25 ++++++++--------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/lib/pleroma/gun/connection_pool/worker.ex b/lib/pleroma/gun/connection_pool/worker.ex index 49d41e4c7..bf57e9e5f 100644 --- a/lib/pleroma/gun/connection_pool/worker.ex +++ b/lib/pleroma/gun/connection_pool/worker.ex @@ -93,25 +93,18 @@ def handle_call(:remove_client, {client_pid, _}, %{key: key} = state) do end) {ref, state} = pop_in(state.client_monitors[client_pid]) - # DOWN message can receive right after `remove_client` call and cause worker to terminate - state = - if is_nil(ref) do - state + + Process.demonitor(ref, [:flush]) + + timer = + if used_by == [] do + max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) + Process.send_after(self(), :idle_close, max_idle) else - Process.demonitor(ref) - - timer = - if used_by == [] do - max_idle = Pleroma.Config.get([:connections_pool, :max_idle_time], 30_000) - Process.send_after(self(), :idle_close, max_idle) - else - nil - end - - %{state | timer: timer} + nil end - {:reply, :ok, state, :hibernate} + {:reply, :ok, %{state | timer: timer}, :hibernate} end @impl true From 7a88b726bf81e1610ade2b07ffd6af672b701600 Mon Sep 17 00:00:00 2001 From: lain Date: Wed, 16 Sep 2020 17:29:16 +0200 Subject: [PATCH 140/141] User: Remote users don't need to be confirmed or approved --- lib/pleroma/user.ex | 4 ++-- test/user_test.exs | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 57497eb83..1ffe60dfc 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -275,9 +275,9 @@ def binary_id(%User{} = user), do: binary_id(user.id) @spec account_status(User.t()) :: account_status() def account_status(%User{deactivated: true}), do: :deactivated def account_status(%User{password_reset_pending: true}), do: :password_reset_pending - def account_status(%User{approval_pending: true}), do: :approval_pending + def account_status(%User{local: true, approval_pending: true}), do: :approval_pending - def account_status(%User{confirmation_pending: true}) do + def account_status(%User{local: true, confirmation_pending: true}) do if Config.get([:instance, :account_activation_required]) do :confirmation_pending else diff --git a/test/user_test.exs b/test/user_test.exs index a910226b2..060918d71 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -1676,7 +1676,7 @@ test "returns true when the account is itself" do assert User.visible_for(user, user) == :visible end - test "returns false when the account is unauthenticated and auth is required" do + test "returns false when the account is unconfirmed and confirmation is required" do Pleroma.Config.put([:instance, :account_activation_required], true) user = insert(:user, local: true, confirmation_pending: true) @@ -1685,14 +1685,23 @@ test "returns false when the account is unauthenticated and auth is required" do refute User.visible_for(user, other_user) == :visible end - test "returns true when the account is unauthenticated and auth is not required" do + test "returns true when the account is unconfirmed and confirmation is required but the account is remote" do + Pleroma.Config.put([:instance, :account_activation_required], true) + + user = insert(:user, local: false, confirmation_pending: true) + other_user = insert(:user, local: true) + + assert User.visible_for(user, other_user) == :visible + end + + test "returns true when the account is unconfirmed and confirmation is not required" do user = insert(:user, local: true, confirmation_pending: true) other_user = insert(:user, local: true) assert User.visible_for(user, other_user) == :visible end - test "returns true when the account is unauthenticated and being viewed by a privileged account (auth required)" do + test "returns true when the account is unconfirmed and being viewed by a privileged account (confirmation required)" do Pleroma.Config.put([:instance, :account_activation_required], true) user = insert(:user, local: true, confirmation_pending: true) From 73e0e6a8a2efaac513077317229f72b128f3a3ea Mon Sep 17 00:00:00 2001 From: Mark Felder Date: Wed, 16 Sep 2020 10:56:42 -0500 Subject: [PATCH 141/141] Remove unused import --- test/object/fetcher_test.exs | 1 - 1 file changed, 1 deletion(-) diff --git a/test/object/fetcher_test.exs b/test/object/fetcher_test.exs index 3173ee31c..14d2c645f 100644 --- a/test/object/fetcher_test.exs +++ b/test/object/fetcher_test.exs @@ -10,7 +10,6 @@ defmodule Pleroma.Object.FetcherTest do alias Pleroma.Object alias Pleroma.Object.Fetcher - import ExUnit.CaptureLog import Mock import Tesla.Mock
  • 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