#3288

Cross-seed: smart filtering never excludes TorrentLeech, and static domain mappings never match Jackett/Prowlarr indexers

Opengithub-actions[bot]opened 12d ago

This was generated by AI during triage.

Agent Brief

Category: bug Summary: Cross-seed indexer filtering never matches a tracker announce domain to an indexer through the static domain mappings when the indexer comes from Jackett or Prowlarr, and TorrentLeech (tracker.tleechreload.org) has no mapping at all.

Current behavior: Service.trackerDomainsMatchIndexerDomain decides whether an indexer serves a tracker that the torrent already seeds from. Smart filtering uses it to exclude those indexers ("You already seed this release from these trackers..."). Two faults:

  1. initializeDomainMappings has no entry for tracker.tleechreload.org, the TorrentLeech announce host. That host shares nothing with the indexer name TorrentLeech or with a Jackett/Prowlarr host, so the TorrentLeech indexer is never excluded. Each search queries it again and returns the copy that the user already seeds as a match.
  2. A mapped domain matches only when it equals the normalized indexer name or the indexer domain exactly. normalizeIndexerName strips dots, but the mapped domain keeps them (broadcasthe.net vs broadcasthenet). For a Jackett or Prowlarr indexer, EnabledIndexerInfo.Domain is the proxy host. So the existing mappings (landof.tv, flacsfor.me, home.opsfet.ch) never match a proxied indexer either. Example: landof.tv against an indexer named BroadcasTheNet with a Jackett host domain returns false.

Desired behavior:

  • A torrent whose announce domain is tracker.tleechreload.org matches the TorrentLeech indexer, whether it was added through Jackett, through Prowlarr, or natively (domain torrentleech.org), and also with no domain.
  • Mapped indexer domains get the same name and domain comparison as the tracker domains themselves: name match after normalization, TLD strip, and partial match. Then landof.tv matches a Jackett BroadcasTheNet, flacsfor.me matches Redacted, and home.opsfet.ch matches Orpheus.
  • A mapped domain must not make a tracker match an unrelated indexer.

Key interfaces:

  • initializeDomainMappings(): add tracker.tleechreload.org -> torrentleech.org.
  • Service.trackerDomainsMatchIndexerDomain(): returns false today for a mapped tracker domain against a proxied indexer. It must return true, by running the mapped domains through the same fuzzy checks as the tracker domains.

Acceptance criteria:

  • tracker.tleechreload.org matches indexer name TorrentLeech with a Jackett/Prowlarr host domain.
  • tracker.tleechreload.org matches indexer name TorrentLeech with an empty domain.
  • tracker.tleechreload.org matches a native indexer whose domain is torrentleech.org.
  • landof.tv matches indexer name BroadcasTheNet with a Jackett host domain.
  • tracker.tleechreload.org and landof.tv do not match an unrelated indexer, for example Redacted with a Jackett host domain.
  • The existing duplicate-filtering tests in the crossseed package still pass.

Out of scope:

  • A user-editable mapping table or a settings UI.
  • Changes to how EnabledIndexerInfo.Domain is derived from the indexer base URL.

Domain:

  • Glossary terms: none of the terms in this brief are in GLOSSARY.md. Gap: "smart filtering" (indexer exclusion by tracker already seeded) and "domain mapping".
  • ADRs: None.
  • Owner: crossseed.Service tracker-to-indexer matching (trackerDomainsMatchIndexerDomain). Every caller (content filtering, prefilter rejection scoping, torrentMatchesIndexerDomain) gets the fix.

Logs:

  • None

From discussion #3287

Activity

1
illutr0n12d ago

Addition from the reporter: Superbits has the same gap. Some of its torrents announce to sptracker.cc, which shares nothing with the indexer name Superbits (its superbits.org / tracker.superbits.org hosts already match by name). Please add "sptracker.cc": {"superbits.org"} to initializeDomainMappings() alongside tracker.tleechreload.org.

Suggested extra acceptance rows:

  • sptracker.cc (announce URL https://sptracker.cc:2086/<passkey>/announce) matches indexer name Superbits with a Jackett/Prowlarr host domain.
  • sptracker.cc does not match TorrentLeech.