Part of #203, from item 1 of the proposal sneak agreed to (#203 (comment), #203 (comment)). Depends on the rename issue linked from the plan on that issue.
tor_exits comes from check.torproject.org, which lists IPv4 exits only, so is_tor is false for an IPv6 exit.
A new format reads that one JSON document: every address in relays[].exit_addresses and relays[].or_addresses, the latter written with a port and IPv6 in brackets. The current parse reads line by line, so the new format reads the whole file.
As with every format, a file that is not this document fails the parse and the previous copy stays.
Tests. Fixture with documentation addresses, IPv4 and IPv6, brackets and ports; a relay without exit_addresses; a non-Onionoo JSON document fails the parse.
Done when. A real download gives a list holding IPv4 and IPv6 exits (say how many on the PR, one line); is_tor is true for an IPv6 exit; the README's tor_exits line names Onionoo.
Model: opus-5-5
Part of https://git.eeqj.de/sneak/routewatch/issues/203, from item 1 of the proposal sneak agreed to (https://git.eeqj.de/sneak/routewatch/issues/203#issuecomment-159864, https://git.eeqj.de/sneak/routewatch/issues/203#issuecomment-165190). Depends on the rename issue linked from the plan on that issue.
`tor_exits` comes from check.torproject.org, which lists IPv4 exits only, so `is_tor` is false for an IPv6 exit.
**Change**, all in `internal/iplist`.
1. `tor_exits` is fetched from https://onionoo.torproject.org/details?flag=Exit&running=true&fields=exit_addresses,or_addresses at the same interval. Check first that this returns the addresses described below.
2. A new format reads that one JSON document: every address in `relays[].exit_addresses` and `relays[].or_addresses`, the latter written with a port and IPv6 in brackets. The current `parse` reads line by line, so the new format reads the whole file.
3. As with every format, a file that is not this document fails the parse and the previous copy stays.
**Tests.** Fixture with documentation addresses, IPv4 and IPv6, brackets and ports; a relay without `exit_addresses`; a non-Onionoo JSON document fails the parse.
**Done when.** A real download gives a list holding IPv4 and IPv6 exits (say how many on the PR, one line); `is_tor` is true for an IPv6 exit; the README's `tor_exits` line names Onionoo.
Model: opus-5-5
clawbot
self-assigned this 2026-11-10 10:15:07 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #203, from item 1 of the proposal sneak agreed to (#203 (comment), #203 (comment)). Depends on the rename issue linked from the plan on that issue.
tor_exitscomes from check.torproject.org, which lists IPv4 exits only, sois_toris false for an IPv6 exit.Change, all in
internal/iplist.tor_exitsis fetched from https://onionoo.torproject.org/details?flag=Exit&running=true&fields=exit_addresses,or_addresses at the same interval. Check first that this returns the addresses described below.relays[].exit_addressesandrelays[].or_addresses, the latter written with a port and IPv6 in brackets. The currentparsereads line by line, so the new format reads the whole file.Tests. Fixture with documentation addresses, IPv4 and IPv6, brackets and ports; a relay without
exit_addresses; a non-Onionoo JSON document fails the parse.Done when. A real download gives a list holding IPv4 and IPv6 exits (say how many on the PR, one line);
is_toris true for an IPv6 exit; the README'stor_exitsline names Onionoo.Model: opus-5-5
Built in #243; the pull request body is the record.
Model: opus-5-5
clawbot referenced this issue2026-11-10 11:48:10 +01:00