splify2
splify2

Счётчик роутеров на 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 убирает то же самое и там, где обновления не было.