Browse Source

MRF: ensure that subdomain_match calls are case-insensitive

tags/v1.0.90
Ariadne Conill 6 months ago
parent
commit
9cfc289594
3 changed files with 21 additions and 6 deletions
  1. +1
    -0
      CHANGELOG.md
  2. +1
    -1
      lib/pleroma/web/activity_pub/mrf.ex
  3. +19
    -5
      test/web/activity_pub/mrf/mrf_test.exs

+ 1
- 0
CHANGELOG.md View File

@@ -40,6 +40,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Invalid SemVer version generation, when the current branch does not have commits ahead of tag/checked out on a tag
- Pleroma.Upload base_url was not automatically whitelisted by MediaProxy. Now your custom CDN or file hosting will be accessed directly as expected.
- Report email not being sent to admins when the reporter is a remote user
- MRF: ensure that subdomain_match calls are case-insensitive

### Added
- MRF: Support for priming the mediaproxy cache (`Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy`)


+ 1
- 1
lib/pleroma/web/activity_pub/mrf.ex View File

@@ -28,7 +28,7 @@ defmodule Pleroma.Web.ActivityPub.MRF do

@spec subdomains_regex([String.t()]) :: [Regex.t()]
def subdomains_regex(domains) when is_list(domains) do
for domain <- domains, do: ~r(^#{String.replace(domain, "*.", "(.*\\.)*")}$)
for domain <- domains, do: ~r(^#{String.replace(domain, "*.", "(.*\\.)*")}$)i
end

@spec subdomain_match?([Regex.t()], String.t()) :: boolean()


+ 19
- 5
test/web/activity_pub/mrf/mrf_test.exs View File

@@ -4,8 +4,8 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do

test "subdomains_regex/1" do
assert MRF.subdomains_regex(["unsafe.tld", "*.unsafe.tld"]) == [
~r/^unsafe.tld$/,
~r/^(.*\.)*unsafe.tld$/
~r/^unsafe.tld$/i,
~r/^(.*\.)*unsafe.tld$/i
]
end

@@ -13,7 +13,7 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
test "common domains" do
regexes = MRF.subdomains_regex(["unsafe.tld", "unsafe2.tld"])

assert regexes == [~r/^unsafe.tld$/, ~r/^unsafe2.tld$/]
assert regexes == [~r/^unsafe.tld$/i, ~r/^unsafe2.tld$/i]

assert MRF.subdomain_match?(regexes, "unsafe.tld")
assert MRF.subdomain_match?(regexes, "unsafe2.tld")
@@ -24,7 +24,7 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
test "wildcard domains with one subdomain" do
regexes = MRF.subdomains_regex(["*.unsafe.tld"])

assert regexes == [~r/^(.*\.)*unsafe.tld$/]
assert regexes == [~r/^(.*\.)*unsafe.tld$/i]

assert MRF.subdomain_match?(regexes, "unsafe.tld")
assert MRF.subdomain_match?(regexes, "sub.unsafe.tld")
@@ -35,12 +35,26 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
test "wildcard domains with two subdomains" do
regexes = MRF.subdomains_regex(["*.unsafe.tld"])

assert regexes == [~r/^(.*\.)*unsafe.tld$/]
assert regexes == [~r/^(.*\.)*unsafe.tld$/i]

assert MRF.subdomain_match?(regexes, "unsafe.tld")
assert MRF.subdomain_match?(regexes, "sub.sub.unsafe.tld")
refute MRF.subdomain_match?(regexes, "sub.anotherunsafe.tld")
refute MRF.subdomain_match?(regexes, "sub.unsafe.tldanother")
end

test "matches are case-insensitive" do
regexes = MRF.subdomains_regex(["UnSafe.TLD", "UnSAFE2.Tld"])

assert regexes == [~r/^UnSafe.TLD$/i, ~r/^UnSAFE2.Tld$/i]

assert MRF.subdomain_match?(regexes, "UNSAFE.TLD")
assert MRF.subdomain_match?(regexes, "UNSAFE2.TLD")
assert MRF.subdomain_match?(regexes, "unsafe.tld")
assert MRF.subdomain_match?(regexes, "unsafe2.tld")

refute MRF.subdomain_match?(regexes, "EXAMPLE.COM")
refute MRF.subdomain_match?(regexes, "example.com")
end
end
end

Loading…
Cancel
Save