Счётчик роутеров на splify2.github.io#
splify2 раз в 23 часа отзывается сайту splify2.github.io, чтобы на нём было видно, на скольких роутерах он работает. Это включено по умолчанию; выключить — Настройки → Интерфейс, карточка «Счётчик на сайте».
Что уходит#
Один запрос POST https://dns.yo1nk.app/api/ping с телом ровно такого вида:
{"v":1,"id":"sp-0123456789abcdef0123456789abcdef"}
Больше ничего: ни модели роутера, ни версий, ни настроек, ни ключей. v — номер формата, id —
идентификатор роутера.
Идентификатор печатает ядро (steer dev-id): sp- и 32 шестнадцатеричных знака. Он
выводится из MAC-адреса медленным хешем (PBKDF2-HMAC-SHA256, 600 000 проходов), поэтому
переживает сброс к заводским настройкам, а восстановить из него MAC перебором дорого. Это не
тот HWID, который роутер отправляет панели подписки. Считается один раз и запоминается в
splify2.main.telemetry_id.
Что сервер узнаёт сам#
По адресу соединения, как любой сайт: страну, город и координаты города (геобаза DB-IP Lite на самом сервере, в момент отклика). Адрес роутера сервер не хранит и в журнал не пишет. Хранится только последняя отметка каждого роутера, в памяти сервера, и живёт она 24 часа.
Что показывает сайт#
Число роутеров, отозвавшихся за последние 24 часа: «работает более чем на N роутерах», и карта России с кружками по городам — размер кружка вместо числа.
Как часто#
Крон зовёт /usr/sbin/splify2-ping раз в час, в минуту, выбранную при установке пакета, чтобы
роутеры не стучались в одну секунду. Отклик уходит, только если с прошлого прошло 23 часа (с
запасом в 10 минут на то, что такт крона плывёт): так роутер не выпадает из счёта за сутки.
Отметка лежит в /tmp/splify2-ping, флеш не трогается; после перезагрузки отклик уходит на
ближайшем такте.
Отправляет curl, если он стоит, иначе uclient-fetch из базовой системы.
| Ответ сайта | Что делает роутер |
|---|---|
| 2xx (обычно 204) | принято; следующий отклик через 23 часа |
| 400 — тело не по формату | следующий через 23 часа; на карточке «Сайт не принял отклик» |
| 429 — слишком часто | следующий через 23 часа; на карточке «Сайт попросил реже» |
| 503, другой ответ, нет связи | повтор на следующем такте, через час |
Адрес для стендов переопределяется ключом splify2.main.ping_url.
Как выключить#
Переключатель в Настройки → Интерфейс или из консоли:
uci set splify2.main.telemetry=0 && uci commit splify2
Ключа нет или 1 — включено, 0 — выключено. Выключение из интерфейса заодно стирает
идентификатор из настройки и отметку из /tmp. splify2-purge идентификатор снимает, а выбор
человека (telemetry) оставляет как есть.
Прежний отчёт о работе#
До 26.10 splify2 раз в час отправлял подробный отчёт (модель, версии, выходы, город по ipinfo.io,
счётчики событий). Он убран целиком. При обновлении пакета снимаются его задание крона, ключи
telemetry_url, telemetry_key, telemetry_at, telemetry_error, geo_city_url и его файлы в
памяти роутера (город и сеть провайдера в /var/lib/splify2/net, счётчики и отметки в
/var/run/splify2-*); согласие и идентификатор остаются и служат счётчику. splify2-purge
убирает то же самое и там, где обновления не было.