Right now the Observatory probes a fixed set of targets: the five DCs plus a single proxy wired in through repo secrets and a hardcoded matrix in probe.yml. There's steady demand for people to get their own instance monitored (we regularly get unsolicited "here's my proxy" posts), so let's give that a real, structured channel instead of leaving it to drive-by issues.
Proposal:
- Issue Form (
.github/ISSUE_TEMPLATE/submit-proxy.yml) collecting host, port, secret, optional fake-TLS domain, a region/label, and a contact. New submissions get a proxy-submission label.
- A workflow validates the entry: secret hex format, basic reachability, and a guard against private/internal IPs so the probes can't be turned into an SSRF tool. Once a maintainer adds an
approved label, the entry is appended to a registry (probes/community_targets.py or data/community/registry.json).
runner.py iterates the registry, writes results to data/latest/community-<id>.json and indexes them in data/index.json. The dashboard gets a "Community proxies" section.
Safeguards:
- Maintainer approval gate before anything goes live.
- Cap on active community entries.
- Lightweight probe for community targets (TCP / handshake rather than the full Telethon E2E) to bound cost and abuse.
- TTL / auto-expiry so dead proxies drop off instead of piling up.
Open questions:
- Secrets are public once posted in an issue. Fine for a free public proxy, but worth stating explicitly in the form.
- How aggressively to prune proxies that go dark.
- Dashboard layout once there are more than a handful of entries.
Right now the Observatory probes a fixed set of targets: the five DCs plus a single proxy wired in through repo secrets and a hardcoded matrix in
probe.yml. There's steady demand for people to get their own instance monitored (we regularly get unsolicited "here's my proxy" posts), so let's give that a real, structured channel instead of leaving it to drive-by issues.Proposal:
.github/ISSUE_TEMPLATE/submit-proxy.yml) collecting host, port, secret, optional fake-TLS domain, a region/label, and a contact. New submissions get aproxy-submissionlabel.approvedlabel, the entry is appended to a registry (probes/community_targets.pyordata/community/registry.json).runner.pyiterates the registry, writes results todata/latest/community-<id>.jsonand indexes them indata/index.json. The dashboard gets a "Community proxies" section.Safeguards:
Open questions: