Конфиденциальность и cookie
Это уведомление охватывает две отдельные вещи: приложение FoxSDR, которое вы устанавливаете, и этот сайт. Они собирают разные данные по разным причинам и описаны ниже по отдельности — сначала приложение, потому что именно оно работает на вашем собственном компьютере. Уведомление написано так, чтобы быть полным, а не кратким: перечислено каждое поле, которое хранит любое из них, включая те, которые большинство уведомлений опускает.
Приложение: что оно отправляет
Нет ни учётной записи, ни лицензионного ключа, ни активации, и FoxSDR никогда не сообщает ничего о том, что вы слушаете. По собственной инициативе приложение выполняет ровно четыре вида сетевых запросов: проверку обновлений; анонимный отчёт об использовании с небольшой отметкой «всё ещё работает», пока приложение открыто; отчёт о сбое или зависании после неполадки; и — только когда вы открываете магазин плагинов или нажимаете в нём ПРОВЕРИТЬ — запрос к каталогу плагинов. Каждый из них описан ниже поле за полем, и каждый можно отключить. Ими управляют три переключателя: СИСТЕМА → Обновления, СИСТЕМА → Отчёты об использовании и СИСТЕМА → Диагностика. Ни одна функция не зависит от того, включён ли какой-либо из них, и ничто не будет донимать вас за то, что вы его выключили.
Что остаётся на вашем компьютере
Ваши записи — и звук, и сырые I/Q, — изображения, которые строят декодеры SSTV и метеоспутников, всё, что декодируют декодеры, ваши закладки, планы диапазонов, настройки, местоположение приёмника и установленные плагины — это файлы на вашем собственном диске. Ничто их не выгружает, и ни одна частота, на которую вы настраиваетесь, не покидает ваш компьютер.
Проверка обновлений
При каждом запуске приложение один раз спрашивает этот сайт, есть ли новая версия. Весь запрос — это GET /api/update?v=, за которым следует номер вашей версии: ни идентификатора, ни идентификатора установки, ни cookie, ничего, что можно было бы связать с более поздним запросом. Сервер не создаёт для него никакой аналитической записи: записываются только просмотры страниц и загрузки файлов, а адрес проверки обновлений не относится ни к тем, ни к другим. Отключите её в разделе СИСТЕМА → Обновления, и приложение больше никогда не обратится к этой службе.
Ответ может также содержать короткое сообщение от нас для тех, кто использует более старую версию, например о том, что в новом выпуске исправлено нечто, ради чего стоит обновиться; оно показывается в том же баннере обновления, что и заметки о версии. Для этого ничего дополнительно не отправляется и не записывается: сообщение приходит в том же запросе, что описан выше, по тому же расписанию и под тем же переключателем.
Ничего не скачивается и не устанавливается, пока вы не нажмёте кнопку. Если нажмёте, установщик загружается с этого сайта по HTTPS, и его SHA-256 сверяется с хешем, опубликованным сервером, прежде чем файл получит имя, под которым его что-либо может запустить, — а эта загрузка является обычной загрузкой с этого сайта, поэтому записывается так же, как любая другая, с IP-адресом, приблизительным местоположением, браузером и операционной системой, как описано в части этого уведомления, посвящённой сайту.
Копия, установленная из Microsoft Store, обращается вместо этого к Microsoft Store, а не к этому сайту (начиная с FoxSDR 0.99.53). Один раз при запуске, если включён пункт СИСТЕМА → Обновления → Запрашивать обновления у Microsoft Store при запуске, FoxSDR спрашивает у встроенной службы Store в Windows, есть ли более новый пакет для этой копии. В этом запросе не отправляется ничего от FoxSDR — ни версии, ни идентификатора: Windows сообщает Microsoft о приложении по уже имеющейся у него идентификации пакета, как и при собственных фоновых обновлениях Store. Ответ остаётся в приложении. Ничего не загружается и не устанавливается, пока вы не нажмёте Установить из Microsoft Store и не подтвердите показанное Windows диалоговое окно; дальнейшие загрузка и установка выполняются Microsoft в соответствии с её заявлением о конфиденциальности. Снимите флажок, и Store запрашиваться не будет.
Отчёты об использовании
Начиная с версии 0.53.0 есть анонимный отчёт об использовании в разделе СИСТЕМА → Отчёты об использовании. Он включён по умолчанию, и вы можете его выключить — снимите этот флажок, и отправка отчётов немедленно прекратится. За каждый запуск отправляется один отчёт, описывающий только что завершившийся сеанс, и вот он целиком:
| Отправляется | Пример | Зачем |
|---|---|---|
| Идентификатор установки | строка из 32 случайных шестнадцатеричных символов | Позволяет отличить 100 пользователей от одного пользователя, запустившего программу 100 раз. Генерируется случайным образом на вашем компьютере при первом запуске, удаляется, когда вы отключаете отчёты, и никогда не выводится из вашего оборудования, сети или имени. |
| Версия приложения | 0.99.42 | Обновляются ли люди. Альфа-версия для Android сообщает свою сборку как 0.98.1-android.4 — суффикс -android.N к номеру выпуска, из которого она собрана, чтобы её отчёты никогда не путались с отчётами установщика для Windows. |
| Операционная система | Windows 10.0.22631, Linux 6.8.0 или Android 14 | Какие платформы действительно используются. Операционная система и номер её сборки, ядра или выпуска, но никогда не имя вашего компьютера или учётной записи. Сборка для Linux (0.99.42) и альфа-версия для Android (0.98.1-android.4) отправляют те же поля под тем же переключателем. |
| Архитектура | x64 или arm64 | То же, что выше. |
| Как это было установлено | installer | Одно из store (Microsoft Store), installer (установщик Windows), appimage или tarball (загрузки для Linux и Raspberry Pi), или android. Считывается из запущенной программы, никогда не фиксируется при установке. Не может отличить foxsdr.com от GitHub, потому что оба отдают одни и те же файлы. |
| Первый запуск | 2026-09-29 | День — никогда время — когда был создан ваш идентификатор установки, по UTC. Удаляется вместе с идентификатором, когда вы отключаете отправку отчётов. Отличает новых пользователей от давних. Пусто для копий, чей идентификатор старше FoxSDR 0.99.47. |
| Первая версия | 0.99.47 | Версия, создавшая идентификатор — с какой загрузки вы начали. Удаляется вместе с ним, как и первый запуск. |
| Число запусков | 12 | Пользуются ли программой больше одного раза. |
| Число сбоев | 1 | Как часто программа даёт сбой. |
| Некорректные завершения по причинам, начиная с FoxSDR 0.99.69 | 1, 0, 0, 0 | Счётчик сбоев выше учитывает каждый сеанс, завершившийся не штатно: это сбой, но также окно, закрытое из Диспетчера задач, или отключение питания. Эти четыре числа показывают, что именно произошло: аварийно (сбой FoxSDR: он упал, либо его окно перестало отрисовываться и затем было завершено), принудительно (завершено извне во время нормальной работы — Диспетчер задач, taskkill, установщик, закрытое окно консоли), завершено системой (выход из учётной записи или выключение) и неизвестно (ничего не записано: Диагностика отключена или пропало питание). Каждое некорректное завершение попадает ровно в одну из этих категорий. Это просто числа, которые никогда не сбрасываются, как и счётчик сбоев: текст отчёта, код завершения, имя модуля и время суток не добавляются. FoxSDR определяет причину на вашем компьютере при следующем запуске по отчётам, которые Диагностика уже записывает там; при выключенной Диагностике ничего не читается, и каждое некорректное завершение считается неизвестным. Время начала предыдущего сеанса хранится в файле ваших настроек, чтобы просматривались только отчёты, записанные с тех пор; оно никогда не отправляется. |
| Простои отображения, начиная с FoxSDR 0.99.62 | 0 | Сколько раз окно зависало из-за того, что ждал драйвер дисплея, а не FoxSDR, — выключение монитора, сброс графического драйвера, повторное подключение сеанса удалённого рабочего стола. Это просто число, без стека, без имени драйвера и без времени суток: отчёт о таком зависании остаётся на вашем компьютере и никогда не отправляется. Подсчёт ведётся, только пока включены и Отчёты об использовании, и Диагностика. Чтобы зависание, которое вы завершаете через панель задач, всё равно было учтено, число хранится в небольшом файле с именем telemetry-stalls рядом с файлом ваших настроек вместе с вашим идентификатором установки, пока сервер не примет отчёт, содержащий его; выключение отчётов об использовании удаляет файл. |
| Счётчики сбоев, начиная с FoxSDR 0.99.64 | radio_fail.rtlsdr.busy=2 | Сколько раз что-то тихо не сработало, в виде счётчиков из фиксированного списка видов: радио, которое не открылось (драйвер и одна из восьми причин), нет вывода звука, неудавшееся обновление или установка плагина, плагин, отклонённый при загрузке, запись, которую не удалось начать, — а также сколько радио и звуковых выходов всё же открылось, чтобы у сбоя было с чем сравнивать. Слова из этого списка и числа, никогда не название устройства, серийный номер, путь, частота или текст сообщения. Они считаются, только пока включены и Отчёты об использовании, и Диагностика, а у большинства людей это поле пустое. |
| Медленные кадры и восстановления, начиная с FoxSDR 0.99.65 | slow.rail.250ms=3,recovered.audio=1 | В том же поле указано также, сколько раз окно медленно отрисовывало кадр, в какой части отрисовки (одной из восемнадцати частей фиксированного списка) и насколько медленно (одна из трёх длительностей: четверть секунды, секунда или пять секунд), а также сколько раз FoxSDR столкнулся со сбоем и продолжил работу сам, в одном из тринадцати мест фиксированного списка: вывод звука перезапущен, радио открыто заново после сбоя драйвера, не удалось сохранить настройки и так далее. Слова из этих списков и числа, никогда не название устройства, серийный номер, путь, частота или текст сообщения. Они считаются, только пока включены и Отчёты об использовании, и Диагностика, а у большинства людей это поле пустое. |
| Длительность сеанса | 3600 с | Длятся ли сеансы минуты или часы. |
| Модель SDR | uhd b200 | Каким SDR уделять приоритетное внимание. Серийные номера удаляются перед отправкой. |
| Какие демодуляторы использовались и как долго | WFM: 3000s | Какие виды модуляции оправдывают дальнейшую работу. |
| Открытые панели | map, decoded | Какие функции используются. |
| Установленные плагины | ADS-B 1.0.0 | Какие декодеры оправдывают дальнейшую работу. Плагин, который вы установили с добавленного вами сайта плагинов (начиная с FoxSDR 0.99.74), — такой же установленный плагин, как любой другой: его имя и версия указываются здесь, а адрес сайта — нет. |
Это полный список. Он поставляется вместе с приложением в виде PRIVACY.md, и автоматический тест проверяет содержимое отчёта поле за полем, так что новое поле невозможно добавить без того, чтобы этот тест не провалился и оба документа не были обновлены. Отключение отчётов удаляет идентификатор установки, поэтому, если вы когда-нибудь включите их снова, вы получите новый, который невозможно связать со старым.
Отчёт отправляется при запуске и описывает уже завершившийся сеанс, и никогда — при выходе: сетевой запрос на выходе может подвесить приложение, которое кто-то пытается закрыть, а отчёт, записанный при выходе, был бы потерян именно при том событии, которое важнее всего посчитать. Ничего из ответа не читается и не используется.
Счётчики сбоев подробно (начиная с FoxSDR 0.99.64). Поле — это короткий текст из пар kind=count, например radio_fail.rtlsdr.busy=2 — RTL-SDR, который дважды не открылся, потому что его занимала другая программа. FoxSDR строит каждый вид из фиксированной таблицы и не отправляет ничего, чего в ней нет, а принимающий сервер отбрасывает всё, чего нет в той же таблице. Когда причина считывается с того, что сообщил драйвер, FoxSDR выбирает одно слово из фиксированного списка, а фразу выбрасывает. Чтобы сбой в сеансе, который потом завершится аварийно, всё равно был сообщён, счётчики ждут в небольшом файле с именем telemetry-health рядом с файлом ваших настроек вместе с вашим идентификатором установки, пока сервер не примет отчёт, содержащий их; выключение отчётов об использовании удаляет файл.
Медленные кадры и восстановления подробно (начиная с FoxSDR 0.99.65). Они находятся в том же поле и в той же форме kind=count. slow.rail.250ms=3 — это три кадра окна, на каждый из которых ушла четверть секунды или больше, в той части отрисовки, которая относится к колонке меню. Часть — одно из восемнадцати слов, events, frame-start, pre-draw, plugin-panels, toolbar, rail, spectrum, patch, status, dialogs, polls, saves, render, present, recorder, plugins-reload, startup, other, а насколько медленно, — одно из трёх: 250ms для времени от четверти секунды до менее секунды, 1s для времени от секунды до менее пяти секунд и 5s для пяти секунд и более. Время, которое вы потратили на ответ на запрос Windows, на перетаскивание окна или изменение его размера, исключается и никогда не считается. recovered.audio=1 — это один случай, когда FoxSDR столкнулся со сбоем и продолжил работу сам. Слово — одно из тринадцати мест, audio, reopen, srcthread, vendorcall, ringdrop, dspexc, cfgsave, enumchild, pluginapi, webroute, patchload, sdrenum, sdrlost, в таком порядке: вывод звука остановился, и сторож перезапустил его; драйвер радио SoapySDR дал сбой, и FoxSDR сам заново открыл радио; драйвер радио так и не вернулся из чтения, когда приёмник был остановлен, и FoxSDR отпустил поток; вызов модуля производителя SoapySDR не вернулся вовремя, и его отпустили; радио выдавало отсчёты быстрее, чем их забирали, и часть из них была отброшена; поток обработки сигнала выдал ошибку, которая была перехвачена, и приёмник остановился; файл настроек не удалось записать; вспомогательная программа, перечисляющая радио SoapySDR, аварийно завершилась, и сбой был изолирован; вызов плагина в FoxSDR выдал ошибку, и в ответ было возвращено значение по умолчанию; обработчик веб-интерфейса выдал ошибку, и сервер ответил отказом; сохранённый патч загрузился с пропущенными соединениями; служба SDRplay не ответила на сканирование, и от сканирования отказались; сеанс SDRplay был потерян, и SDRplay закрыт до конца сеанса. FoxSDR строит каждый из них из фиксированной таблицы и не отправляет ничего, чего в ней нет, а принимающий сервер отбрасывает всё, чего нет в той же таблице, поэтому там никогда не бывает названия устройства, серийного номера, пути, частоты или текста сообщения; в отчёте не более восьми худших видов медленных кадров и восьми видов восстановления. Они считаются при тех же двух переключателях, что и счётчики сбоев, только пока включены и Отчёты об использовании, и Диагностика, ждут в том же небольшом файле с именем telemetry-health рядом с файлом ваших настроек, пока сервер не примет отчёт, содержащий их, а выключение отчётов об использовании удаляет файл.
Отметка «всё ещё работает»
Отчёт, который приходит при запуске приложения, может сказать, кто его запустил, но никогда — у кого оно всё ещё открыто. Поэтому, пока FoxSDR работает — и только пока включены отчёты об использовании, — она также раз в пять минут отправляет одно очень маленькое сообщение, содержащее три поля и больше ничего:
| Отправляется | Пример | Зачем |
|---|---|---|
| Идентификатор установки | та же строка из 32 шестнадцатеричных символов, что и выше | Чтобы двенадцать отметок от одной копии считались одной работающей копией, а не двенадцатью. |
| Версия приложения | 0.99.42 | Чтобы «работает сейчас» можно было разбить по версиям. |
| Признак отметки | 1 | Сообщает принимающей стороне, что это отметка, а не отчёт о сеансе. |
Ничего из сеанса вместе с ней не передаётся: ни видов модуляции, ни панелей, ни модели SDR, ни длительностей, ни счётчиков. Отметки записываются в отдельный набор данных, хранящийся отдельно от отчётов о сеансах, так что смысл ни одного показателя использования не меняется. Один и тот же переключатель отключает и то и другое: отправитель отказывается запускаться без действительного идентификатора установки, а отключение отчётов об использовании удаляет его, так что «выключено» означает, что отметок нет вообще. Отметка, которая ещё не доставлена к моменту следующей, пропускается, а не ставится в очередь.
Куда уходят отчёты об использовании
В Cloudflare Worker, которым управляет этот проект, по адресу https://telemetry.foxsdr.com; он записывает перечисленные выше счётчики в набор данных Cloudflare Workers Analytics Engine. Cloudflare обрабатывает их от нашего имени и хранит три месяца, после чего они удаляются. Больше их никто не получает, они не продаются, не сдаются в аренду и никому не передаются, а единственное, что из них считывается, — это агрегированные числа, через ту же защищённую паролем панель, которая описана ниже. Исходный код Worker опубликован вместе с приложением, так что вы можете прочитать, что делает принимающая сторона. Отчёты о сбоях сюда не попадают — они уходят на собственный сервер этого сайта, описанный далее.
Отчёты о сбоях и зависаниях
Если FoxSDR даёт сбой или перестаёт отвечать, она записывает отчёт с описанием неполадки в %LOCALAPPDATA%\FoxSDR\crashes\ на вашем собственном компьютере и отправляет текст отчёта при следующем запуске — никогда изнутри самого сбоя, потому что программа, в которой только что произошла ошибка, не может безопасно открыть сетевое соединение. Отчёт уходит на POST /api/crash на этом сайте — не в Cloudflare и не третьим лицам — и он анонимен: нет ни учётной записи, ни лицензионного ключа, ничего, с чем можно было бы войти.
Переключатель находится в разделе СИСТЕМА → Диагностика, и он в равной мере управляет записью и отправкой: когда он выключен, отчёт не записывается, каталог не создаётся и соединение никогда не устанавливается. Это другой переключатель, не тот, что управляет отчётами об использовании. Отключение отчётов об использовании не останавливает отчёт о сбое — оно оставляет в нём пустым поле идентификатора установки, потому что тогда идентификатора не существует, а отчёт о сбое никогда его не создаёт (см. последнюю строку таблицы ниже). До этого выпуска уведомление выше называло не тот переключатель; программа всегда использовала «Диагностику», и теперь оба говорят одно и то же.
Вот всё, что содержит отчёт:
| Отправляется | Пример | Зачем |
|---|---|---|
| Что произошло | crash или hang | Зависание и сбой — разные неполадки. |
| Сигнатура неполадки | cascade.exe+0x1a2b/adsb.dll | Объединяет одну и ту же неполадку, о которой сообщили многие, в одну запись, так что сотня отчётов об одной ошибке — это одна вещь, которую нужно исправить, а не сотня. |
| Версия приложения, коммит и идентификатор сборки | 0.61.0, 28fa1c2 | В какой сборке это произошло и какие символы ей соответствуют. |
| Модуль и смещение, где произошла ошибка | cascade.exe, 0x1a2b | В каком месте программы что-то пошло не так. |
| Операционная система и архитектура | Windows 11, Linux или Android 14, x64 или arm64 | Неполадки часто характерны для одной платформы. Отчёт из Linux или Android содержит те же поля; в кадрах стека вместо идентификатора PDB указывается GNU build id библиотеки, в которой произошла ошибка, поскольку ни одна из этих платформ не собирается с помощью MSVC. |
| Какого рода был отказ | access violation, 0xC0000005 | Собственная строка причины из отчёта и код исключения Windows. В частности, именно это говорит, что неполадка была поглощена — приложение её пережило, — а не привела к сбою; без этого они выглядят одинаково. Код и фиксированная фраза, никогда не содержимое. |
| В какой части отрисовки окна было зависание, начиная с FoxSDR 0.99.64 | rail | Только в отчёте о зависании: какая часть отрисовки окна выполнялась, когда оно остановилось, в виде одного слова из фиксированного списка из девятнадцати: events, frame-start, pre-draw, plugin-panels, toolbar, rail, spectrum, patch, status, dialogs, polls, saves, render, present, recorder, plugins-reload, startup, user-wait, other. Оно называет часть программы, но никогда не плагин, файл, радио или частоту. То же слово отправляется в причине отчёта, как фиксированная фраза freeze: the frame was in rail; слово, которого нет в списке, отбрасывается и не отправляется. Раньше отчёт о зависании не отправлял никакой причины. |
| Загруженные плагины и их версии | ADS-B 1.1.0 | «Падает только с загруженным плагином ADS-B» — это описание неполадки; «иногда падает» — нет. |
| Стеки потоков | cascade.exe+0x1a2b на кадр | Стек и есть неполадка. Это только имена модулей, идентификаторы сборок и числовые смещения — никаких путей к исходникам, переменных или содержимого памяти. Начиная с FoxSDR 0.99.63 кадр отчёта о зависании, находящийся внутри модуля, загруженного после запуска FoxSDR (графический драйвер, который система загрузила заново, DLL от производителя, расширение оболочки), отправляется как имя этого файла (но никогда не путь к папке) и смещение, тогда как раньше он отправлялся как простой адрес. Имя файла может показать, какое программное обеспечение установлено на вашем компьютере; это тот же вид имени, который такие отчёты уже содержали для драйвера, загруженного при запуске. |
| Конец журнала сеанса | opened rtlsdr | Последние строки, записанные приложением в журнал, — обычно это то, что оно делало в момент отказа. Это собственный журнал приложения: он фиксирует изменения состояния — источник открыт, частота дискретизации задана, плагин запущен — и никогда не содержание сигнала и никогда не имя или путь открытого вами файла. Он также содержит то, что сообщил драйвер SDR и что его библиотеки вывели в стандартный поток ошибок. Прежде чем любая его строка покинет ваш компьютер — как собственные строки приложения, так и строки драйвера, — журнал очищается: серийные номера и зависящая от устройства часть идентификаторов USB-устройств заменяются на <stripped>, имя учётной записи в пути к файлу — на <user>, а всё, что заключено в одинарные кавычки, например имена, которые вы даёте узлам патча и динамикам, — на '<name>'; начиная с FoxSDR 0.99.59 каждый сетевой адрес и каждое имя компьютера или хоста заменяется на <host> с сохранением номера порта после него, а номер последовательного порта — на # (COM#, /dev/ttyUSB#); в любой строке, где упоминаются герцы, частота, настройка, центр, диапазон, смещение, несущая, пресет или передача, каждое число заменяется на #, если только оно не помечено как частота дискретизации, время, уровень, размер или количество, не является версией, идентификатором или кодом ошибки и не входит в состав имени, например R820T; а строки, в которых драйвер USB перечисляет устройства, подключённые к вашему компьютеру, опускаются, вместо них остаётся одна строка с их количеством. Начиная с 0.99.59 приложение вообще не записывает в журнал название звуковой карты, потому что это название часто выбирает сам человек. Начиная с 0.99.61 приложение записывает в журнал также, когда звуковой выход открывается или отклоняется: модель аудиодрайвера, раскладку каналов и частоту дискретизации, но никогда не название звукового устройства. |
| Контекстные заметки | mode: WFM, sampleRate: 2400000 | Несколько заметок вида ключ/значение, которые прикрепляет приложение: вид модуляции, источник (генератор, файл I/Q или реальный SDR), частота дискретизации, было ли открыто устройство, модель SDR без серийных номеров, сколько секунд работало приложение и выполнял ли поток, в котором произошла ошибка, собственный код FoxSDR или код драйвера SDR. sampleRate — это частота дискретизации, а не частота настройки. |
| Коррекция частоты, начиная с FoxSDR 0.99.56 | ppm: +1.5 by retuning | Включена ли коррекция кварца SDR, её значение в миллионных долях и способ применения (in the radio или by retuning), либо off. Это описывает кварцевый генератор приёмника, а не частоту: о том, что вы слушали, здесь ничего не сказано. |
| DLL стороннего ПО в процессе, начиная с FoxSDR 0.99.69 | foreignModules: NahimicOSD.dll, RTSSHooks64.dll | Имена файлов (но не папка, версия или что-либо ещё о файле) компонентов других программ, загруженных в FoxSDR: любой загруженный модуль, который не принадлежит Windows, не является частью FoxSDR (его папка программы, плагины, среда выполнения C++) и не входит в файлы драйверов производителя SDR, которые FoxSDR загружает намеренно. Это раскрывает имена DLL стороннего ПО — экранного оверлея аудиодрайвера, счётчика частоты кадров, перехватчика антивируса или средства ввода — а по имени файла можно судить, какое ПО установлено на вашем компьютере, поэтому об этом сказано здесь. Файлы из папки Windows исключены, чтобы список был коротким и осмысленным. Он нужен потому, что в отчётах о завершении FoxSDR внутри передачи управления драйвером графики, куда встраиваются программы, внедряющиеся в каждый процесс, не было способа узнать, что ещё находилось в процессе. Те же имена записываются в журнал приложения (modules: 2 foreign - ... один раз при запуске, module arrived: ... при более поздней загрузке), поэтому эти строки могут появляться в конце журнала сеанса выше. Если в отчёте этого нет, значение пустое; здесь хранится не более 520 символов. |
| The window’s start-up and the graphics adapter, from FoxSDR 0.99.78 | window: GL vendor NVIDIA Corporation; renderer NVIDIA GeForce RTX 4090/PCIe/SSE2; version 4.6.0 NVIDIA 610.88 | Lines the application writes to its log while its window is being created, each beginning window:, which therefore ride in the tail of the session log above: which window systems this build of the window library supports; on Linux, whether DISPLAY and WAYLAND_DISPLAY are set (set or not set — never their values, which can name a computer or a session), the session type when it is one of a fixed list of words, and which window system was chosen; the window library’s own error messages, with the display’s name left out; and the graphics driver’s own vendor, renderer and version strings, which name the make and model of your graphics adapter and its driver — a graphics fault cannot be told apart without them, and they say nothing about you. On Linux, a report of a process that ended before its window appeared now also says how it ended: an exit status, or a signal number whose name comes from a list of twelve (exit code 3 (the process ended itself), killed by signal 11 (SIGSEGV)), written down by FoxSDR itself as it ends, as a number behind a fixed tag; unknown when nothing was written, which is what an ending by SIGKILL leaves. |
| Идентификатор установки | строка из 32 случайных шестнадцатеричных символов, или пусто | Используется для ограничения частоты запросов, а затем отбрасывается: идентификатор установки не сохраняется. Компьютер, застрявший в цикле сбоев, не должен иметь возможности завалить сервер, и отличить один компьютер от сотни — единственное, для чего это поле когда-либо читается. Здесь оно никогда не записывается на диск. Если отчёты об использовании выключены, оно отправляется пустым — идентификатора тогда нет, а отчёт о сбое никогда его не создаёт. |
Исправлено в FoxSDR 0.99.33. До 0.99.33 описанная выше очистка применялась только к строкам драйвера SDR, но не к собственным строкам приложения, и поэтому некоторые из них могли попасть в отчёт о сбое или зависании вместе с частотой, на которую вы настроились или на которой передавали, меткой патч-радио (в ней мог быть серийный номер), названиями, которые вы дали элементам патча, первой строкой текста, выданной декодером на странице патча, и списком USB-устройств, выведенным USB-драйвером, включая их серийные номера. Это противоречило данному уведомлению. Начиная с 0.99.33 каждая строка очищается до того, как покинет ваш компьютер, и эти строки журнала изначально больше не содержат таких значений.
Исправлено в FoxSDR 0.99.59. В этом уведомлении всегда говорилось, что отчёт о сбое не содержит имени компьютера и что приложение никогда не отправляет ваш IP-адрес, но до 0.99.59 при очистке не искались сетевые адреса и имена хостов. Поэтому несколько строк журнала могли попасть в отчёт о сбое или зависании либо в диагностический журнал сообщения об ошибке, содержа адрес или имя хоста, которые вы ввели для сетевого SDR, например ADALM-Pluto, либо адрес или веб-адрес, записанный драйвером сетевого SDR; они могли также содержать номер последовательного порта и, в нескольких строках с ошибками, название звуковой карты. Это противоречило данному уведомлению. Начиная с 0.99.59 адреса и имена хостов заменяются, а номера последовательных портов маскируются, как описано выше, собственные строки ADALM-Pluto больше не выводят его адрес, и ни одна строка журнала не называет звуковую карту.
Отчёт о сбое не содержит ни частоты, ни декодированных данных, ни пути к файлу, ни имени пользователя, ни имени компьютера, ни сетевого адреса, ни местоположения. Отчёты хранятся на собственном сервере этого сайта, за той же защищённой паролем панелью, что и всё остальное, и хранятся 90 дней после того, как неполадка была замечена в последний раз, а затем удаляются — те же три месяца, что и отчёты об использовании. Первый отчёт о любой неполадке хранится полностью, а также ещё по одному отчёту на каждую сборку, в которой неполадка сохранилась, но не более трёх; все остальные отчёты о той же неполадке подсчитываются, а не сохраняются. Автоматический тест сверяет с таблицей выше и то, что принимает адрес приёма, и то, что он записывает на диск, в обе стороны, так что ни в то, ни в другое невозможно добавить поле без изменения этой таблицы.
Полный дамп памяти никогда не отправляется, ни при каких настройках. Дамп памяти — это копия памяти программы, и он может содержать имена файлов, заголовки окон и данные принятого сигнала. По умолчанию он выключен; если вы включите его в разделе СИСТЕМА → Диагностика, файл .dmp записывается рядом с текстовым отчётом, только локально, а программа отправки открывает файлы с именами crash-*.txt и hang-*.txt и ничего больше.
Отчёт часового, начиная с FoxSDR 0.99.64. О некоторых завершениях ничто внутри FoxSDR сообщить не может: о сбое, который обходит все обработчики, о переполнении стека, об окне, зависшем так сильно, что завис и сторож зависаний. Поэтому в интерактивном сеансе при включённой Диагностике FoxSDR запускает вторую копию собственной программы, без окна, которая лишь ждёт, пока завершится первая, — часового. Он может прочитать, как завершился FoxSDR (код завершения, а также когда он запустился и остановился), небольшую общую страницу с числами, которую FoxSDR поддерживает в актуальном состоянии (на каком этапе он находится, сколько кадров нарисовал и когда нарисовал последний, какая часть отрисовки окна выполняется, открыто ли меню или перетаскивается ли окно), и конец журнала сеанса, очищенный так же, как в любом другом отчёте. Он ничего не читает из памяти FoxSDR и не создаёт дамп, а на странице с числами нет места для текста, поэтому в ней не может быть ни имени, ни пути, ни частоты, ни адреса. Когда FoxSDR завершается, часовой записывает один отчёт в ту же папку и в том же формате, что и остальные, — ни одного, если FoxSDR завершился нормально или уже записал такой сам, — причина которого состоит только из фиксированных слов и целых секунд, а строки о приёмнике заменены фиксированной фразой о том, что он не может их прочитать. Сам он ничего не отправляет: его отчёт уходит при следующем запуске, под тем же переключателем и с теми же ограничениями, что и любой другой, и только если FoxSDR аварийно завершился, его окно перестало отрисовываться или он завершился до первого кадра. Завершение извне (Диспетчер задач или скрипт) и завершение из-за того, что Windows закрыла ваш сеанс, остаются на вашем компьютере и никогда не отправляются. При выключенной Диагностике часовой не запускается.
Как часто. Не более пяти отчётов в день с одного компьютера, и одна и та же неполадка — только один раз в день, сколько бы раз она ни происходила; оба ограничения хранятся в вашем собственном файле настроек, поэтому компьютер в цикле сбоев прекращает отправку сам, а не по команде, а отчёт, который не удалось отправить, повторяется при последующих запусках не более трёх раз, после чего его оставляют в покое. Чтобы превратить смещение из отчёта обратно в имя функции, нужна отладочная база данных именно этой сборки, которая остаётся на наших собственных компьютерах и никуда не выгружается: сопоставление выполняется локально, а не на сервере.
Чего приложение никогда не отправляет
- Частоты, на которые вы настраиваетесь. То, что человек слушает, — самые чувствительные сведения, которые известны этой программе, и они никогда не собираются. В Соединённом Королевстве перехват сообщения, на получение которого у вас нет разрешения, или разглашение его содержания является правонарушением согласно разделу 48 Закона о беспроводной телеграфии 2006 года (Wireless Telegraphy Act).
- Имена или пути файлов, которые вы открываете. Имя файла записи — это ваши собственные данные: в нём может быть название службы, места или частота. Когда файл I/Q не удаётся открыть повторно, журнал фиксирует, что он не открылся; имя остаётся на экране, где вы его и так знаете.
- Ничего декодированного — сообщения пейджеров, воздушные суда, корабли, изображения, спутниковый трафик.
- Ваше местоположение или местоположение чего-либо, что вы принимаете, — включая заданное вами местоположение приёмника, которое никогда не передаётся ни в каком отчёте. См. ниже.
- Ваш IP-адрес или любое местоположение, выведенное из него. Запрос неизбежно приходит на сервер с какого-то адреса, потому что так устроен интернет; адрес приёма отчётов об использовании не читает никакой информации о соединении и не ведёт журналов запросов. Начиная с FoxSDR 0.99.59 сетевой адрес или имя хоста в строках журнала, которые содержит отчёт, также заменяется на
<host>. - Серийные номера оборудования. Модель SDR полезна; серийный номер идентифицирует ваш конкретный SDR и удаляется перед отправкой.
- Ваше имя, имя вашего компьютера, вашу учётную запись пользователя, любой путь к файлу или название звуковой карты.
- Полный дамп памяти.
Местоположение приёмника и GPS
FoxSDR нужно знать, где находится приёмник, потому что от него отсчитываются все дальности и пеленги на карте и на экране радара. Его можно ввести вручную, щёлкнуть на карте или считать с GPS-приёмника через последовательный порт.
Местоположение остаётся на вашем компьютере. Оно хранится в вашем собственном файле настроек и никогда не передаётся — ни в отчёте об использовании, ни в отметке, ни в отчёте о сбое, нигде. Считывание его с GPS запускаете вы: вы указываете порт и нажимаете «Взять позицию из GPS». Порт удерживается только до получения первой фиксации координат, и не более 60 с. Диагностический журнал записывает имя порта, скорость передачи, число предложений и спутников и любую ошибку — никогда не местоположение и никогда не текст предложения NMEA. Если в поле порта указано что-то, не похожее на порт, в журнал записываются только его вид и длина («введённый путь к устройству, 27 симв.»), так что путь к файлу с вашим именем пользователя не может попасть в отчёт. Это обеспечивают два автоматических теста: один проверяет кольцевой буфер журнала, другой — файл журнала, записанный настоящим приложением.
Каталог плагинов
К каталогу программа обращается, когда вы открываете окно магазина плагинов (в первый раз за сеанс, начиная с FoxSDR 0.99.16), каждый раз, когда вы нажимаете в нём ПРОВЕРИТЬ, и когда вы решаете что-то установить. При запуске ничего не загружается, окно само не открывается повторно, и ни один плагин никогда не обновляет себя сам. Каталог — это файл, опубликованный на GitHub (raw.githubusercontent.com), поэтому запрос попадает на серверы GitHub, которые — как и при любом веб-запросе — видят адрес, с которого он пришёл. Никакого вашего идентификатора с ним не отправляется: ни идентификатора установки, ни cookie, ничего, что можно было бы связать с отчётом об использовании. Каждая загрузка идёт по HTTPS, ограничена по размеру, отклоняется при перенаправлении на другой хост и сверяется с sha256, опубликованным в каталоге, прежде чем ей будет позволено стать файлом. Источник задаётся в настройках: вы можете указать другой каталог или index.json на вашем собственном диске, и тогда сетевой запрос не выполняется вообще.
Сайты плагинов, которые вы добавляете
Начиная с FoxSDR 0.99.74 вы можете добавлять каталоги плагинов других людей, называемые сайтами плагинов, и каждый добавленный вами сайт — это ещё один адрес, к которому обращается приложение. Добавить сайт можете только вы: нажмите САЙТЫ на верхней панели магазина плагинов, вставьте адрес и отметьте флажок, в котором сказано, что FoxSDR этот сайт не проверял. FoxSDR сам ничего не добавляет и ни к чему не обращается. Сайт читается в те же два момента, что и общедоступный каталог, — при первом за сеанс открытии магазина и каждый раз, когда вы нажимаете ПРОВЕРИТЬ, — и на ответ ему даётся несколько секунд. Запрос несёт указанный вами адрес и ничего больше от FoxSDR: ни идентификатора, ни cookie, а имя клиента (cascade-plugin-repo/1.0) одинаково у всех копий. Поэтому сайт видит ваш IP-адрес, как и любой веб-сервер.
Файлы и изображения плагина с сайта загружаются только с того же хоста, что и его каталог, и только когда вы нажимаете СКАЧАТЬ или ОБНОВИТЬ у одного из его плагинов или открываете его страницу. Каталог каждого сайта хранится без изменений в папке плагинов на вашем собственном диске, перечитывается при запуске и удаляется, когда вы нажимаете УДАЛИТЬ у сайта; сами адреса находятся в вашем файле настроек. Счётчики сбоев каталога плагинов и установки плагинов (см. выше раздел об отчётах об использовании) относятся к общедоступному каталогу: недоступный сайт или его плагин, который не удалось установить, не учитывается.
Плагины, предлагаемые только в некоторых странах
Некоторые плагины предлагаются только подключениям из определённых стран. Когда приложение загружает каталог плагинов, оно также запрашивает у этого сайта короткий региональный список, и плагин из этого списка скачивается с этого сайта, а не с GitHub. Чтобы решить, что ответить, сайт читает двухбуквенный код страны, который Cloudflare передаёт вместе с запросом (CF-IPCountry) и который Cloudflare определяет по адресу, с которого пришёл запрос. Код страны и адрес используются только для этого одного ответа и не сохраняются, никакой ваш идентификатор не отправляется, и эти запросы не записываются в статистику этого сайта. Подключение, страну которого определить нельзя, или подключение через Tor получает пустой список. VPN меняет страну, которую видит сайт. Региональный список не запрашивается, если вы указали магазину другой каталог.
Плагин, который может передавать
Начиная с FoxSDR 0.99.74 плагин может запросить отправку звука через ваш передатчик; магазин плагинов и окно «Установленные модули» показывают его тогда как «Может передавать через FoxSDR». Включить передатчик он может, только если вы нажали РАЗРЕШИТЬ ПЕРЕДАЧУ на его странице и взвели страницу ПЕРЕДАЧА на 5, 15 или 60 минут. Разрешение хранится в вашем собственном файле настроек по имени файла плагина и никуда не отправляется; окно взвода не хранится вообще. Диагностический журнал на вашем компьютере записывает включение — tx: armed 15 min, tx: plugin <name> keyed, tx: plugin <name> unkeyed (<why>) и tx: disarmed (<why>) — как объявленное имя плагина, причину из фиксированного списка и число минут, никогда не частоту, а эти строки очищаются, как и любая другая строка журнала, когда составляется отчёт или диагностический пакет. В собственных отчётах FoxSDR нет поля ни для чего из этого.
Наборы элементов орбит спутников
Плагин спутников поддерживает свои наборы элементов орбит в актуальном состоянии, загружая их из источников, указанных в его satellite.cfg, каждые двенадцать часов, пока он загружен. Этот сайт хранит копию этих наборов элементов по адресу GET /tle/all.tle — группы CelesTrak «станции», «любительские» и «метеорологические», а также NOAA 15, 18 и 19, обновляемые здесь каждые двенадцать часов, — и плагин «Спутники» версии 1.0.4 и новее сам переключается на этот файл, когда все источники в satellite.cfg недоступны, чтобы компьютер, которому CelesTrak отказывает, всё равно мог их отслеживать. Для этого файлу не нужно указывать этот сайт; строка fallback-url none в нём отключает резервный вариант, а refresh-hours 0 отключает любые загрузки. Запрос не содержит ни идентификатора, ни идентификатора установки, ни cookie, и этот сервер не создаёт для него никакой аналитической записи — как и в случае проверки обновлений, записываются только просмотры страниц и загрузки файлов, а зеркало не относится ни к тем, ни к другим. Сами наборы элементов принадлежат CelesTrak (celestrak.org), и каждый ответ об этом сообщает.
Поиск воздушных судов в реестре
Необязательный плагин Aircraft Info показывает, кем является каждое воздушное судно на карте, — его регистрационный номер, тип и эксплуатанта. Само приложение этот запрос никогда не выполняет; его включает установка этого плагина. Начиная с версии 1.1.0 плагин сначала спрашивает этот сайт по адресу GET /api/aircraft/<address> и отправляет только шестизначный шестнадцатеричный адрес ICAO воздушного судна — число, которое передаёт само воздушное судно, — без идентификатора, без идентификатора установки и без cookie. О каждом воздушном судне спрашивают один раз, а ответ хранится на вашем собственном компьютере, так что повторно его не запрашивают. Только если этот сайт не знает воздушное судно или недоступен, плагин спрашивает api.adsbdb.com, бесплатный сторонний сервис, как всегда делали прежние версии. Набор воздушных судов, которые слышит приёмник, примерно указывает, где он находится, поэтому плагин необязателен и сообщает об этом перед установкой.
Что этот сервер хранит о поиске: ничего на уровне отдельного запроса. Аналитическая запись не создаётся, и в журнал не записываются ни адрес воздушного судна, ни адрес, с которого пришёл запрос. Единственная запись — пять накопительных итогов с момента последнего запуска сервера: запросы, найдено, не найдено, некорректные и ограниченные по частоте, — которые показывает панель. Чтобы никто не мог скопировать таблицу целиком, для каждого подключающегося адреса в памяти хранится лимит запросов, точно так же, как для других адресов приёма здесь, и никогда не записывается на диск; он забывается при перезапуске сервера или когда отслеживается более десяти тысяч адресов — смотря что наступит раньше.
Ответы берутся из базы данных воздушных судов OpenSky Network (opensky-network.org): для каждого воздушного судна — его регистрационный номер, обозначение типа, производитель, модель и, если записан, эксплуатант. OpenSky предоставляет эту базу данных «как есть» и просит пользователей ссылаться на неё: Matthias Schäfer, Martin Strohmeier, Vincent Lenders, Ivan Martinovic и Matthias Wilhelm, «Bringing Up OpenSky: A Large-scale ADS-B Sensor Network for Research», в Proceedings of the 13th IEEE/ACM International Symposium on Information Processing in Sensor Networks (IPSN), апрель 2014. Записанный там зарегистрированный владелец не копируется на этот сайт и не выдаётся им, потому что для частного воздушного судна это имя человека; выдаётся только эксплуатант — авиакомпания, военно-воздушные силы или компания.
Интерфейс в браузере
FoxSDR может раздавать свой интерфейс по HTTP другим компьютерам в вашей собственной сети. По умолчанию это выключено и привязано к вашему собственному компьютеру, пока вы это не измените; для любой более широкой привязки требуется пароль, а без него такая привязка отклоняется, а не открывается. Пароли хранятся в виде хешей (PBKDF2-HMAC-SHA256), а сеансы отзываются при каждом изменении настроек. TLS намеренно нет, потому что приложение не использует криптографических библиотек и не будет заявлять о защите транспорта, которую не может обеспечить, — поставьте перед ним обратный прокси или частный туннель и никогда не пробрасывайте на него порт напрямую. Любой, кому вы дадите доступ, может видеть, что делает приёмник, и управлять им.
Предложения функций, отправленные из приложения
В приложении на главной странице есть поле «ПРЕДЛОЖИТЬ ФУНКЦИЮ», где можно написать, что вы хотели бы, чтобы оно умело, и нажать ОТПРАВИТЬ. Ничего не отправляется, пока вы не нажмёте эту кнопку, это никогда не происходит автоматически, а запрос, который не дошёл до нас, не ставится в очередь и не повторяется в фоне — написанное остаётся в поле, только в памяти, чтобы вы могли снова нажать ОТПРАВИТЬ, и никогда не записывается в файл конфигурации или журнал. Вот всё, что содержит одно предложение:
| Отправляется | Пример | Зачем |
|---|---|---|
| Что вы написали | Please add a squelch control to the FLEX decoder | Само предложение: от 10 до 100000 символов. Перед сохранением управляющие символы удаляются; переводы строк сохраняются. |
| Контакт, если вы его указали | [email protected] или позывной | Необязательно, до 120 символов, чтобы мы могли задать уточняющий вопрос. Оставьте поле пустым, и предложение не будет содержать ничего, что могло бы вас идентифицировать. |
| Версия приложения | 0.99.42 | Из какой сборки пришло предложение. |
| Операционная система | windows, linux или android | С какой платформы оно отправлено. |
| Архитектура | x64 или arm64 | То же, что выше. |
| Номер схемы | 1 | Версия формата передачи, чтобы будущее изменение формата нельзя было принять за одно из полей выше. |
Оно уходит на POST /api/feature-request на этом сайте. Ваш IP-адрес используется только для того, чтобы удерживать частоту отправки в разумных пределах, и никогда не записывается на диск — на самом деле сохраняются ваше сообщение, ваш контактный адрес, если вы его указали, версия приложения, платформа, архитектура и ваша приблизительная страна, если наш поиск может определить её по соединению, и больше ничего. Его читает сопровождающий проекта на панели администратора за тем же паролем, что и всё остальное здесь, и оно хранится до тех пор, пока его не удалят с этой панели или пока вы об этом не попросите. Предложение, которое уже рассмотрено — добавлено в FoxSDR или получило ответ иным образом, — может быть там заархивировано, а не удалено, чтобы проект мог отслеживать, о чём просили и что было сделано; заархивированное предложение по-прежнему хранится со всем перечисленным выше. Если вы указали контактный адрес и хотите удалить предложение, напишите на адрес ниже и процитируйте достаточно из отправленного, чтобы его можно было найти.
Сообщения об ошибках и о том, что не нравится, отправленные из приложения
Сразу под «ПРЕДЛОЖИТЬ ФУНКЦИЮ» в приложении есть поле «ОШИБКА / НЕ НРАВИТСЯ», где вы сообщаете либо о том, что что-то сломано, либо о том, что есть что-то, что вам не нравится, и нажимаете ОТПРАВИТЬ. Оно работает точно так же, как поле предложений: ничего не отправляется, пока вы не нажмёте эту кнопку, ничего не ставится в очередь и не повторяется в фоне, а написанное остаётся только в памяти — никогда в файле конфигурации, никогда в журнале. Это не отчёт о сбое, хотя описанный ниже диагностический журнал проходит через тот же фильтр и может содержать часть того, что содержит отчёт о сбое. Вот всё, что содержит одно сообщение:
| Отправляется | Пример | Зачем |
|---|---|---|
| Ошибка это или то, что не нравится | bug или dislike | Выбор, сделанный вами вверху поля: что-то не работает или что-то работает так, как задумано, но вы предпочли бы, чтобы этого не было. |
| Что вы написали | The waterfall freezes when I change the sample rate | Само сообщение: от 10 до 100000 символов. Перед сохранением управляющие символы удаляются; переводы строк сохраняются. |
| Контакт, если вы его указали | [email protected] или позывной | Необязательно, до 120 символов, чтобы мы могли задать уточняющий вопрос. Оставьте поле пустым, и сообщение не будет содержать ничего, что могло бы вас идентифицировать. |
| Версия приложения | 0.99.42 | Из какой сборки пришло сообщение, чтобы не гоняться повторно за уже исправленной ошибкой. |
| Операционная система | windows, linux или android | С какой платформы оно отправлено. |
| Архитектура | x64 или arm64 | То же, что выше. |
| Номер схемы | 1 | Версия формата передачи, чтобы будущее изменение формата нельзя было принять за одно из полей выше. |
| Диагностический журнал, начиная с FoxSDR 0.99.43 | 0.99.43 windows x64, Ettus B200 — recent log lines, serials/frequencies/paths scrubbed | Отмечено по умолчанию, когда вы сообщаете об ошибке, и не отмечено по умолчанию для неодобрения — вы можете изменить любой из вариантов перед нажатием Отправить. Он содержит версию приложения, вашу операционную систему, какой приёмник использовался, краткую сводку ваших настроек и самые последние строки собственного журнала приложения, пропущенные через тот же фильтр, что и хвост журнала отчёта о сбое: серийные номера и идентификаторы USB заменяются, любое число, связанное с частотой, заменяется, всё в одинарных кавычках заменяется, сетевые адреса и имена хостов заменяются, а номера последовательных портов маскируются (начиная с FoxSDR 0.99.59), а имя учётной записи в пути к файлу удаляется. Этот сервер повторяет последнюю из этих проверок на случай, если что-то всё же было упущено. Он хранится и удаляется вместе с остальной частью сообщения, на тех же условиях, что и всё вышеперечисленное. Начиная с FoxSDR 0.99.61 сводка ваших настроек также сообщает, открыт ли звуковой выход и через какую модель аудиодрайвера, громкость, отключён ли звук и кем (вами, плагином-декодером или клавишей передачи; плагин описывается, но никогда не называется), а также уровень шумоподавителя, открыт ли он и какой уровень сигнала он оценивает; это уровень, а не частота. Она никогда не содержит название вашего звукового устройства или частоту, на которую вы настроены. Начиная с FoxSDR 0.99.62 он содержит также три дополнительных элемента: последние строки (не более 80) журнала предыдущего сеанса или слова о том, что читать там нечего; по одной строке для каждого из десяти самых новых отчётов о сбоях или зависаниях на вашем компьютере, где указано, был ли это сбой, зависание или простой отображения, как давно он был записан, какая версия его записала, как долго шёл тот сеанс, как долго окно простаивало или какие были причина и код сбоя, какова его сигнатура неполадки и что стало с его отправкой, — без стека, без строк журнала, без списка модулей и без имён файлов или путей, взятых из этих отчётов; и строку о том, сколько SDR запущено на странице патча и какого вида драйвер у каждого, но никогда не имя SDR, не его серийный номер или адрес, не название записи и не частота. Каждая строка предыдущего журнала и списка отчётов проходит через тот же фильтр. При выключенной Диагностике в диагностическом журнале нет ни журнала предыдущего сеанса, ни списка отчётов, и ничто из этого не входит в отчёт о сбое или зависании, который FoxSDR отправляет сам. |
| Вставленный вами отчёт, начиная с FoxSDR 0.99.69 | sentinel:outside, written by 0.99.66, and the report | Только если это применимо. Если набранное или вставленное вами сообщение содержит отчёт FoxSDR о сбое, зависании или отчёт-«страж» (текст файла отчёта из папки отчётов, который люди иногда вставляют вручную), приложение распознаёт его, сообщает об этом на странице до нажатия «Отправить» («Отчёт распознан и прикреплён как …») и отправляет его ещё раз вместе с сообщением, добавляя три сведения: тип отчёта (сбой, зависание, остановка отображения или одно из пяти завершений, которые фиксирует «страж»), сборку, которая его записала (строка версии в собственном блоке контекста отчёта, которая может отличаться от вашей текущей), и сам отчёт. Это не то, чего вы уже не отправляете: это слова вашего сообщения, отнесённые к своему типу, чтобы страница администратора могла его назвать. Просматривается только текст в поле; никакие файлы не читаются. Он очищается так же, как журнал диагностики (имя учётной записи в пути к файлу и любые адреса электронной почты удаляются), ограничен 64 КиБ и хранится вместе с остальным отчётом на тех же условиях, что и всё перечисленное выше. |
Начиная с FoxSDR 0.99.69 журнал диагностики содержит ещё одну строку, где только по именам файлов (но не папка или версия) названы компоненты других программ, загруженные в FoxSDR — оверлей или перехватчик, внедрённый другой программой; это тот же список, что описан в таблице отчёта о сбое выше, и он входит также в отчёт о сбое или зависании, который FoxSDR отправляет самостоятельно.
Оно отправляется на POST /api/problem-report на этом сайте. Ваш IP-адрес используется только для ограничения частоты отправки до разумной и никогда не записывается на диск — на самом деле сохраняется следующее: ошибка это или недовольство, ваше сообщение, ваш контактный адрес, если вы его указали, версия приложения, платформа, архитектура, ваша примерная страна, если наш поиск может определить её по соединению, а также журнал диагностики, если вы оставили его прикреплённым, тип любого отчёта, распознанного в вашем сообщении (см. выше), и больше ничего. Сообщение читает сопровождающий проекта на панели администратора, защищённой тем же паролем, что и всё остальное здесь, и отчёт хранится, пока его не удалят с этой панели или пока вы не попросите. Отчёт, который обработан — исправлен в FoxSDR или получил ответ иным способом — может быть заархивирован, а не удалён; архивный отчёт по-прежнему хранится со всем перечисленным выше. Если вы указали контактный адрес и хотите удалить отчёт, напишите на адрес ниже и приведите достаточно из отправленного, чтобы его можно было найти.
Сайт: что записывается при посещении
Запись создаётся для каждого просмотра страницы и каждой загрузки независимо от того, принимаете ли вы cookie. Это собственная аналитика сайта: данные остаются на сервере, который обслуживает этот сайт, не передаются рекламным сетям, и на странице нет сторонних скриптов.
| Записывается | Откуда берётся | Нужно согласие |
|---|---|---|
| Дата и время, запрошенная страница, метод и протокол HTTP | Запрос | Нет |
| Ваш IP-адрес и его хеш с солью | Соединение | Нет |
| Приблизительное местоположение: страна, регион, город, почтовый район, часовой пояс и координаты этого города — не ваши | IP-адрес, определяемое через ip-api.com | Нет |
| Ваша сеть: интернет-провайдер, организация, номер AS и является ли адрес известным VPN, центром обработки данных или мобильной сетью | Тот же поиск | Нет |
| Браузер и его версия, операционная система и её версия, тип устройства и похож ли запрос на запрос бота | Заголовок User-Agent | Нет |
Какая страница привела вас сюда и любые метки кампании в ссылке (utm_source и подобные) | Заголовок Referer и URL | Нет |
| Предпочитаемые языки | Заголовок Accept-Language | Нет |
| Какой файл вы скачали, его версия, сколько байт было отправлено и завершилась ли передача | Сама загрузка | Нет |
| Размер экрана и окна, соотношение пикселей, глубина цвета | Ваш браузер, по сообщению скрипта этой страницы | Да |
| Число ядер процессора и приблизительный объём памяти устройства | Тот же скрипт | Да |
| Часовой пояс, список языков, предпочтение тёмной темы, поддержка сенсорного ввода, платформа | Тот же скрипт | Да |
| Тип подключения, оценка скорости загрузки и время приёма-передачи | Тот же скрипт | Да |
| Сколько времени страница была видна, как далеко вы её прокрутили, сколько было щелчков и какие кнопки вы нажимали | Тот же скрипт | Да |
Что намеренно не делается
- Никакого снятия отпечатков браузера: никаких проб canvas, аудио, шрифтов или WebGL и ничего, что пытается повторно вас опознать после того, как вы отказались.
- Никаких сторонних трекеров, рекламных пикселей, виджетов соцсетей или аналитических сервисов. Ничто на этой странице не загружается с другого домена.
- Никаких попыток прочитать ваш буфер обмена, состояние батареи, камеру, микрофон, сохранённые пароли или историю браузера — ко всему этому страница загрузки не имеет никакого отношения.
- Ваши данные не продаются, не сдаются в аренду и никому не передаются. Единственный внешний запрос, который сервер делает о вас, — это определение местоположения по IP, описанное выше.
Дизайны интерфейса, которые вы публикуете
Этот сайт может хранить дизайн интерфейса FoxSDR — пакет .foxui, — который вы решили опубликовать. Ничего не отправляется, пока вы не нажмёте Publish, и отправка идёт на POST /api/gui/publish. Хранится то, что содержит пакет: сам дизайн, введённые вами название, версия и описание, имя автора, если вы его ввели, время публикации и случайный идентификатор. Ваш IP-адрес используется только для того, чтобы держать частоту публикаций в разумных пределах, и никогда не записывается на диск. Опубликованный пакет нигде не перечислен; скачать его может любой, у кого есть ссылка. Он хранится, пока его не удалят из панели администратора или пока вы об этом не попросите — напишите по адресу ниже и укажите его ссылку.
Если вы записываетесь в бета-тестеры
Форма бета-тестирования и подписка на новости — единственные места, где этот сайт у вас что-либо просит, не считая публикации дизайна интерфейса (см. выше). При отправке формы сохраняются ваш адрес электронной почты и то из следующего, что вы решили указать: имя или позывной, ваша платформа, SDR, который вы собираетесь использовать, ваши заметки и список функций, которые вы вызвались протестировать. Вместе с этим мы храним тот же контекст посещения, что описан выше, — приблизительное местоположение, сеть, браузер и операционную систему, — потому что сообщение об ошибке читается совершенно по-разному в зависимости от того, в какой конфигурации оно возникло.
- Адрес используется для одной цели: чтобы связываться с вами по поводу бета-сборок и того, что тестировать. Никаких рассылок, никакого маркетинга, и он никогда никому не передаётся.
- Ничего не происходит, пока вы не подтвердите. При записи отправляется одно письмо с шестизначным кодом, который вы вводите на странице, чтобы подтвердить, что адрес ваш. Код действует 30 мин и отклоняется после пяти неверных попыток. Пока он не введён, запись неактивна: вас нет в списке тестеров, вы не учитываетесь, и больше ничего не отправляется. Если ваш адрес ввёл кто-то другой, просто проигнорируйте это письмо, и запись так и не станет настоящей — отписываться не от чего, и ничего делать не нужно. Это единственное письмо — всё, что запись может отправить автоматически.
- Если вы нам писали, мы можем вас пригласить. Тот, кто написал нам и оставил адрес — например, через поле предложений в приложении, — может получить от нас одно личное приглашение с одноразовой ссылкой, открывающей на этом сайте клавишу «Подтвердить». Такое приглашение хранится как ожидающая запись — точно так же, как неподтверждённая запись: вы не становитесь тестером и не учитываетесь, пока не нажмёте «Подтвердить», а если вы его проигнорируете, мы больше не будем вам писать. Ожидающая запись сама по себе не истекает; она удаляется, когда мы убираем её из списка или когда вы об этом просите, одним письмом на адрес ниже.
- После подтверждения вы получаете свою личную ссылку для управления, а мы пишем вам, когда выходит сборка, которой нужно то, что вы вызвались тестировать. Вам пишет человек, а не рассылка. Если вы потеряете ссылку, мы можем выдать новую: старая сразу перестаёт работать, новая приходит вам письмом, а мы храним время, когда это сделано, и было ли письмо отправлено.
- Это письмо проходит через Apple. Почту для
foxsdr.comдоставляет служба iCloud Mail компании Apple, поэтому ваш адрес и сообщение проходят через её серверы на пути к вам на условиях Apple как нашего почтового провайдера. Больше ничего о вас ей не передаётся. - Это хранится отдельно от аналитики. Записи хранятся в собственном файле, доступном для чтения только учётной записи, под которой работает сервер; журнал аналитики фиксирует лишь то, что некая запись произошла и сколько функций было выбрано, но никогда не кто. Автоматический тест проваливает сборку, если адрес когда-либо попадает в журнал аналитики.
- Повторная запись с адресом, который уже есть в списке, эту запись не меняет. Изменения вносятся на вашей собственной странице тестировщика. Вместо этого на адрес отправляется одно письмо: его личная ссылка, если адрес подтверждён, или новый код, если нет, и не чаще одного раза в 15 минут.
- Мы храним копию того, что вам отправили. Каждое сообщение, которое этот сайт отправляет тестеру, — подтверждение и каждое сообщение о сборке — хранится вместе с текстом, чтобы мы могли видеть, что было сказано и дошло ли оно. Копия хранится под вашим внутренним идентификатором, а не под адресом, а личные части (код или ссылка подтверждения и ваша собственная ссылка для управления) удаляются перед сохранением, так что сохранённое сообщение никогда нельзя использовать, чтобы действовать от вашего имени. Эти копии удаляются вместе с остальной вашей записью, когда вы уходите.
- Сообщения между вами и нами хранятся. Поле «Сообщения» в вашем кабинете тестера — это переписка с человеком, который делает FoxSDR: что мы пишем вам и что вы отвечаете, каждое сообщение со временем написания и, если вы его выбрали, отчётом, к которому оно относится. Она хранится под вашим внутренним идентификатором, а не под адресом, и читать её можете только вы (по своей личной ссылке) и мы. Мы также отмечаем, когда наши сообщения побывали у вас на экране, чтобы знать, что они до вас дошли. Пока ваша страница открыта, она каждые несколько секунд запрашивает новые сообщения, поэтому они появляются сразу, как только написаны, и сообщает, как давно вы ею пользовались; пока она продолжает запрашивать, и ещё полминуты после, и только если вы пользовались ею в последние пять минут, сервер знает, что вы на месте. Это хранится только в его памяти и никуда не записывается. Мы не пишем вам письмо о каждом сообщении: когда мы пишем, пока вас нет, вы получаете одно короткое письмо о том, что вас ждёт сообщение, с вашей ссылкой и без самого сообщения. Пока это сообщение не прочитано, другое такое письмо не приходит до 12 часов и не раньше чем через полчаса после предыдущего; а если вы были на странице, когда мы писали, но через десять минут так и не увидели сообщение, письмо уходит тогда. Копия этого письма хранится, как описано выше; когда пишете вы, никакие письма не отправляются. Переписка хранится, пока вы не выйдете из программы или не попросите нас её удалить, а выход удаляет её полностью.
- Хранится до окончания программы бета-тестирования или до вашей просьбы. Одного письма на адрес ниже достаточно, чтобы вас удалили и стёрли запись, — объяснять причину не нужно.
- Правовым основанием здесь является ваше согласие, выраженное отметкой в поле; без неё форма не отправляется.
Если вы бета-тестер и вводите свой код тестера в FoxSDR
Ваша страница тестера (выше) даёт вам личную ссылку управления и, из неё, код тестера, который можно ввести непосредственно в FoxSDR, в разделе СИСТЕМА → Код тестера. Это отличается от описанного выше анонимного отчёта об использовании: отчёт об использовании нарочно нельзя отследить до вас, тогда как сеанс, о котором сообщается с вашим кодом тестера, будет намеренно связан с вашей записью тестера — именно в этом весь смысл, чтобы мы видели, какие функции и плагины действительно пробовали те, кто их действительно тестирует. Это отключено, пока вы не введёте код, и поле по умолчанию пусто.
Привязать FoxSDR на вашей странице тестировщика выдаёт FoxSDR отдельный код приложения, так что вашу личную ссылку никогда не нужно вводить в приложение. Код приложения умеет только две вещи: отправлять описанные ниже отчёты о сеансах и отправлять и читать сообщения в вашем окне «Сообщения». Он не видит ваш адрес, не может изменить вашу запись или удалить вас. Он хранится вместе с вашей записью тестировщика; нажатие Новая ссылка отменяет его, после чего FoxSDR нужно привязать заново, а выход из программы удаляет его вместе с остальной вашей записью.
Пока код введён, примерно раз за сеанс FoxSDR отправляет это, и больше ничего:
| Отправляется | Пример | Зачем |
|---|---|---|
| Ваш код тестировщика | код приложения из «Привязать FoxSDR» или токен с вашей страницы тестировщика | Указывает, какой записи тестировщика принадлежит этот сеанс. Он сопоставляется с вашим внутренним идентификатором тестировщика и сам никогда не сохраняется — по тому же правилу, которое этот сайт применяет к идентификатору установки в отчёте о сбое. |
| Версия приложения | 0.99.42 | Какую сборку вы тестируете. |
| Платформа и архитектура | windows, x64 | То же, что выше. |
| Когда началась сессия | 2026-09-25T14:32:00Z | Показывает, насколько недавно функция или плагин действительно использовались и как долго хранится отчёт — а не когда отчёт поступил на этот сервер, что может произойти позже, если FoxSDR ждёт следующего запуска, чтобы его отправить. Отклоняется сразу, если заявлено, что это более чем на несколько минут в будущем, или старше указанного ниже годичного срока хранения. |
| Длительность сеанса | Минут: 42 | Сколько длился сеанс, не более суток. |
| Использованные возможности | spectrum, adsb | Какие из областей на плиточной панели вашей страницы тестировщика вы реально задействовали в этом сеансе — только идентификаторы, которые этот сайт уже публикует; всё остальное сразу отклоняется. |
| Использованные плагины, их версии и время использования | adsb-decoder 1.8.0, 30 min | Какие плагины из каталога и какие их версии реально используются. Плагин, установленный с добавленного вами сайта плагинов (начиная с FoxSDR 0.99.74), передаётся по идентификатору и версии, как и любой другой установленный плагин; адрес сайта не передаётся. |
| Использованные SDR | rtlsdr | Какие типы драйверов, без серийных номеров и любых других идентифицирующих сведений. |
- Что сохраняется — это ваш ID тестировщика (никогда не код и не адрес), время принятия отчёта, начало сессии, указанное выше, версия, платформа, длительность сессии, а также функции, плагины и радиоприёмники, указанные выше — по одной строке на каждую принятую сессию, хранится до года, после чего автоматически удаляется, отсчитывая от фактического начала сессии, а не от момента поступления отчёта на этот сервер.
- Что показывается публично — это число, никогда не имя. Карточка плагина на главной странице получает небольшую пометку «протестировано N бета-тестерами», как только её текущую опубликованную версию использовали как минимум два разных тестера в сумме не менее десяти минут — ниже этого порога ничего не показывается, и ни одна страница не указывает, кто эти тестеры. Цифры на вашей собственной странице тестера и в админ-панели — те же данные, показанные подробнее; тестеры никогда не называются друг другу по имени.
- Ваш IP-адрес используется только для ограничения скорости отправки до разумного уровня и никогда не записывается на диск.
- Как это остановить: удалите код тестера из настроек FoxSDR, и больше ничего не будет отправлено. Для этого не нужно покидать бета-программу.
- Выход из программы удаляет это. Удаление вашей записи, с вашей страницы тестера или по вашей просьбе, удаляет все уже записанные отчёты о сеансах вместе с остальной частью вашей записи — то же удаление, которое описано в остальной части этого раздела, применённое и к этим данным.
- Правовое основание — то же самое согласие, которое охватывает остальную часть вашей записи тестера: ввод кода — это действие, которое вы совершаете сами, и без него ничего не отправляется.
Если вы подписываетесь на новости по email
Страница новостей просит только одно: ваш адрес электронной почты. Он хранится, чтобы мы могли написать вам, когда выходит новая версия FoxSDR, а иногда — о том, что сейчас разрабатывается. Он не используется ни для чего другого и никогда никому не передаётся.
- Ничего не происходит, пока вы не подтвердите. При подписке отправляется одно письмо с шестизначным кодом, который нужно ввести на странице. Пока он не введён, больше ничего не отправляется, а адрес, не подтверждённый в течение недели, удаляется — это делает код, который ежедневно запускается на сервере. Если ваш адрес ввёл кто-то другой, просто проигнорируйте это письмо.
- В каждом письме есть ссылка, которая удаляет вас из списка одним нажатием. При отписке адрес удаляется из файла на сервере вместе с сохранёнными у нас копиями отправленных на него писем; ничего о нём не сохраняется.
- Это отдельный список. Подписчик новостей — не бета-тестер: адрес хранится в отдельном файле, доступном для чтения только учётной записи, под которой работает сервер, и не учитывается и не показывается как тестер. Если вы ещё и тестер, каждое сообщение вы получите один раз.
- Мы храним копию того, что вам отправили, под внутренним идентификатором, а не под вашим адресом, с удалёнными кодом подтверждения и ссылкой для отписки — точно так же, как для тестеров.
- Это письмо проходит через Apple, как описано выше для тестеров.
- Журнал аналитики фиксирует лишь то, что некая подписка произошла, но никогда не кто.
- Правовым основанием является ваше согласие, выраженное отметкой в поле; без неё форма не отправляется.
Cookie
| Cookie | Назначение | Срок |
|---|---|---|
fox_consent | Запоминает, приняли вы или отклонили cookie, чтобы спрашивать один раз | 1 год (принято) / 6 мес. (отклонено) |
fox_vid | Случайный идентификатор, чтобы повторное посещение распознавалось как тот же браузер. Устанавливается, только если вы согласились. | Дней: 400 |
fox_sid | Объединяет одно посещение в сеанс. Устанавливается, только если вы согласились. | 30 мин. бездействия |
fox_beta | Хранит вашу ссылку бета-тестера, чтобы вы могли вернуться к своей записи. Устанавливается, только если вы записались в тестеры, и только потому, что вы сами об этом попросили, — он ничего не измеряет, поэтому не относится к выбору об аналитике выше. Удаление себя из списка стирает его. | Дней: 400 |
foxsdr_lang | Запоминает язык, выбранный вами для этого сайта, чтобы и следующая страница была на нём. Устанавливается, только когда вы сами выбираете язык — переключателем языков или по ссылке с ?lang=, — и не хранит ничего, кроме кода этого языка, например es. Он ничего не измеряет, поэтому не относится к выбору об аналитике выше. | 1 год |
fox_news_joined | Не cookie, а отметка в собственном хранилище вашего браузера, которая нам никогда не отправляется. После загрузки сайт спрашивает, не хотите ли вы получать новости по email; как только вы подписались и подтвердили подписку из этого браузера, он перестаёт спрашивать. Она не хранит ничего, кроме 1, и только если вы подписались. | Пока вы не очистите данные этого сайта |
Если вы отказываетесь, идентифицирующий cookie не устанавливается. Тогда посещения группируются по ежедневно меняющемуся хешу вашего адреса и браузера, который различает посетителей для подсчёта и непригоден для того, чтобы следить за вами от одного дня к другому или между сайтами. Вы можете передумать, очистив cookie этого сайта и перезагрузив страницу.
Какой язык вы видите
Страницы могут показываться не только на английском. Какой язык вы получите, решает сервер для каждой запрошенной страницы в таком порядке: язык, который вы выбрали сами (cookie foxsdr_lang выше или ?lang= в ссылке); иначе языки, которые ваш браузер указывает как предпочтительные, из его заголовка Accept-Language; иначе основной язык страны, из которой идёт ваше подключение, — её Cloudflare, сеть перед этим сайтом, передаёт вместе с запросом в виде двухбуквенного кода страны (CF-IPCountry); иначе английский. Для этого выбора ничего не сохраняется: заголовок и код страны читаются для одного этого ответа и ради него не хранятся. Это те же две вещи, которые в таблице выше уже указаны как записываемые при каждом просмотре страницы, где код страны используется, когда наш собственный поиск по адресу не дал ответа. Переводы выполнены машиной, и для этого уведомления и лицензий обязательную силу имеет английский текст.
Зачем и на каком основании
Цель узкая: знать, сколько людей находят этот проект, примерно где они находятся, на чём его запускают и сколько из них в итоге его скачивают. Именно это решает, продолжится ли работа и что будет сделано дальше.
Записи на стороне сервера хранятся на основании законного интереса в понимании и защите сайта. Подробности, сообщаемые браузером, и идентифицирующие cookie хранятся на основании вашего согласия — поэтому они скрыты за баннером и поэтому отказ ничего не стоит вам на этом сайте.
Как долго это хранится и кто это видит
Записи хранятся 24 мес., а затем удаляются. Они находятся в файле на сервере за защищённой паролем панелью, которую может открыть только сопровождающий проекта. Других получателей нет, и нет никакой передачи в третью страну, кроме уже описанного поиска по IP.
Две вещи хранятся меньше. Отчёты о сбоях и зависаниях удаляются через 90 дней после того, как описанная в них неполадка была замечена в последний раз, а отчёты об использовании, которые обрабатывает Cloudflare, удаляются через три месяца. Каждый из этих сроков обеспечивается кодом, который ежедневно запускается на сервере, а не тем, что кто-то об этом помнит.
Ваши права
Если вы находитесь в Великобритании или ЕС, вы можете запросить копию того, что о вас хранится, попросить исправить или стереть это или возразить против сбора вообще — включая записи на стороне сервера, которые не зависят от согласия. Практический идентификатор для поиска ваших записей — ваш IP-адрес на момент посещения, поэтому, пожалуйста, укажите его и примерное время посещения.
Для приложения средства управления находятся в самой программе, и их три:
- СИСТЕМА → Отчёты об использовании останавливает отчёт об использовании и пятиминутную отметку и удаляет идентификатор установки. Включите снова позже — и получите новый идентификатор, который невозможно связать со старым.
- СИСТЕМА → Диагностика прекращает запись и отправку отчётов о сбоях и зависаниях.
- СИСТЕМА → Обновления прекращает проверку обновлений (в копии из Microsoft Store — запрос к Microsoft Store).
Отчёты не содержат ничего, что можно связать с вами, поэтому запрашивать доступ не к чему; если вы хотите удалить идентификатор установки из уже отправленных отчётов, напишите на адрес ниже и укажите его, и он будет удалён.
Дети. FoxSDR — технический прибор для радиолюбителей. Он не предназначен для детей, не собирает персональную информацию ни у кого и, следовательно, не собирает её и у детей.
Пишите на [email protected]. Вы также можете подать жалобу в Управление комиссара по информации (Information Commissioner's Office, ico.org.uk), если считаете, что с этим обошлись ненадлежащим образом.
Последнее обновление: 28 сентября 2026 г., для FoxSDR 0.99.42 — сборки, которую сейчас предлагает этот сайт и с исходным кодом которой было сверено каждое утверждение выше. FoxSDR публикует Steven Fox; пишите на адрес выше с любыми вопросами об этом уведомлении или чтобы удалить идентификатор установки из уже отправленных отчётов. Если это уведомление когда-либо перестанет соответствовать тому, что делает программа, неправа программа: сбор данных сайтом реализован в store.go и app.js, которые можно прочитать в собственном исходном коде сайта, а собственный список приложения поставляется вместе с ним в виде PRIVACY.md вместе с тестом, сверяющим с ним содержимое отчёта.