Skip to main content

ovh-voip-spam-filter

🇬🇧 English · 🇫🇷 Français

Reconcile your OVH SIP incoming blacklist with Saracroche, the community-driven blocklist of ~16 million French telemarketing numbers.

CI Release GHCR PyPI Python License

📖 Full documentation: raedkit.github.io/ovh-voip-spam-filter


[!WARNING] Use the API (sync), not the CSV. The OVH Manager's CSV import fails past ~80 entries (empirically confirmed). This project exists to push the same data through the OVH API one prefix at a time, throttled and idempotent. The CSV mode is kept for completeness but is not the recommended path.

Quickstart

docker run --rm \
  -e OVH_APPLICATION_KEY=... \
  -e OVH_APPLICATION_SECRET=... \
  -e OVH_CONSUMER_KEY=... \
  -e OVH_BILLING_ACCOUNT=... \
  -e OVH_SERVICE_NAME=... \
  ghcr.io/raedkit/ovh-voip-spam-filter:latest sync

Or via PyPI:

pip install ovh-voip-spam-filter
ovh-voip-spam-filter sync

Generate an OVH token with this pre-filled URL (minimum scopes pre-checked).

Full setup walkthrough: docs/quickstart.

Why this exists

OVH's Manager UI offers a CSV import for the incoming blacklist, but it POSTs each row internally without rate-limiting. The Saracroche list is 643 prefixes — the import returns HTTP 429 after ~80. This tool does the same job correctly: signed API requests, client-side throttle, exponential backoff on 429, auto-adaptation if OVH tightens the quota. One bootstrap run takes ~13 minutes; subsequent runs are idempotent and take seconds.

How it works

            ┌────────────────────────────┐
            │  Saracroche live API       │
            │  (~643 block-only prefixes)│
            └─────────────┬──────────────┘
                          │  fallback when down
                          ▼
            ┌────────────────────────────┐
            │  Hard-coded ARCEP fallback │
            │  (23 prefixes, additive)   │
            └─────────────┬──────────────┘
                          ▼
            ┌────────────────────────────┐
            │  Diff vs current OVH state │
            │  (GET-first reconciliation)│
            └─────────────┬──────────────┘
                          ▼
            ┌────────────────────────────┐
            │  Signed OVH API push       │
            │  (throttled, 429-aware)    │
            └────────────────────────────┘
  • Normal mode (Saracroche reachable) — strict sync: adds missing prefixes, removes the ones Saracroche removed.
  • Degraded mode (Saracroche unreachable) — uses the hard-coded ARCEP fallback, additive only, never deletes. Anti-regression guarantee.

Details: reconciliation semantics.

Acknowledgments

🙏 This project would not exist without Saracroche by Camille Bouvat.

Saracroche is an open-source community blocklist of ~16 million French telemarketing and spam numbers, maintained solo and pro bono since 2020. We consume the french-list-arcep-operators endpoint as our primary source of truth, with no caching on the redistribution side — the freshness you get is whatever Saracroche has right now.

If this tool saved you from a spam call, please support Camille:

Saracroche source:

Documentation

Full docs at raedkit.github.io/ovh-voip-spam-filter:

Contributing

PRs welcome. See CONTRIBUTING.md for setup and the PR checklist. By participating you agree to the Code of Conduct.

Security issues: see SECURITY.md. Please don't open public issues for credential-handling bugs.

License

GPL-3.0-or-later — matches Saracroche.

Metadata

Release files for ovh-voip-spam-filter 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ovh-voip-spam-filter 0.2.0
File Size Uploaded
ovh_voip_spam_filter-0.2.0.tar.gz 41.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ovh-voip-spam-filter 0.2.0
File Interpreter ABI Platform
ovh_voip_spam_filter-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 75.2 kB

Release files / ovh_voip_spam_filter-0.2.0.tar.gz

Download URL ovh_voip_spam_filter-0.2.0.tar.gz
Size 41.1 kB
Tags Source
SHA-256 checksum
How to use checksums
395a9169003d73f1d079fd5307dacbf37fba4750cf23d27faf6d377208b75e60
BLAKE2b-256 checksum
How to use checksums
d0d90868e5f729df6f020c5323768c0f59fd75c1c9b3e0517b6761518cac244f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 20, 2026.

Transparency log

Release files / ovh_voip_spam_filter-0.2.0-py3-none-any.whl

Download URL ovh_voip_spam_filter-0.2.0-py3-none-any.whl
Size 34.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d20b8bfdf60f579cb74b1a671a1c74613574fd672595374c5c505032c362837a
BLAKE2b-256 checksum
How to use checksums
830253dbabd4549f0f5fce8c357638c89723a796291455c7d6d5cb3ec6250b4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page