- Python 100%
| .github/workflows | ||
| LICENSES | ||
| providers/v2 | ||
| scripts | ||
| README.md | ||
DinoX XMPP Provider Data Mirror
This repository contains the validated provider-directory artifacts mirrored for DinoX account onboarding.
The upstream data authority is the XMPP Providers project. This repository does not define provider policy, alter provider ratings, or maintain an independent provider list.
Artifact contract
The version 2 category-B mirror consists of:
providers/v2/providers-B.json: unchanged upstream provider-list payload;providers/v2/providers-B.json.sha256: SHA-256 checksum for the payload;providers/v2/source.json: source URL, retrieval time, provider count, API version, and payload checksum.
The intended public deployment URL is:
https://dinox.im/data/providers/v2/providers-B.json
The desktop client must keep a bundled last-known-good list. Failure to update this mirror must never make DinoX account creation unavailable.
Publication policy
Only a completely downloaded and validated payload may replace the previous artifact. An empty, malformed, oversized, truncated, or structurally invalid response must leave the last-known-good mirror unchanged.
Automated validation and publication are added in separate, reviewable slices. Until those slices are complete, updates are maintainer-controlled.
Validation and updates
Use the mirror updater from the repository root:
python3 scripts/update_provider_mirror.py --self-test
python3 scripts/update_provider_mirror.py --check
python3 scripts/update_provider_mirror.py --freshness-check --max-age-hours 72
python3 scripts/update_provider_mirror.py --update
The updater uses only the Python standard library. It validates the v2 category-B payload before publishing local artifacts, rejects unsafe structural changes, and updates the SHA-256 and source metadata only after validation.
Scheduled refresh
Forgejo Actions refresh the mirror daily and can also be started manually. The workflow runs validator self-tests before fetching upstream data and commits only when the validated provider artifact changes.
If the default Forgejo Actions checkout token cannot push to this repository,
configure a repository secret named DINOX_PROVIDER_DATA_TOKEN with write
access to this repository.
When an upstream fetch fails, the workflow keeps the last-good artifacts and checks their freshness. If the last published source metadata is older than 72 hours, the workflow fails so the stale mirror becomes visible.
Rollback is a normal Git rollback: revert or reset the data repository to the
previous known-good data commit, validate it with
python3 scripts/update_provider_mirror.py --check, and redeploy the
providers/v2/ directory to the static web origin.
Licensing
The mirrored provider data is published under CC0-1.0 by the XMPP Providers
contributors. Repository metadata created by the DinoX Team is also dedicated
under CC0-1.0. License texts and per-file SPDX metadata are included in this
repository.