FoxSDR 0.99.39 · ОТКРЫТАЯ БЕТА
Машинный перевод

Это машинный перевод; обязательную силу имеет английская версия. Читать английскую версию

← Назад к FoxSDR

Конфиденциальность и cookie

Это уведомление охватывает две отдельные вещи: приложение FoxSDR, которое вы устанавливаете, и этот сайт. Они собирают разные данные по разным причинам и описаны ниже по отдельности — сначала приложение, потому что именно оно работает на вашем собственном компьютере. Уведомление написано так, чтобы быть полным, а не кратким: перечислено каждое поле, которое хранит любое из них, включая те, которые большинство уведомлений опускает.

Приложение: что оно отправляет

Нет ни учётной записи, ни лицензионного ключа, ни активации, и FoxSDR никогда не сообщает ничего о том, что вы слушаете. По собственной инициативе приложение выполняет ровно четыре вида сетевых запросов: проверку обновлений; анонимный отчёт об использовании с небольшой отметкой «всё ещё работает», пока приложение открыто; отчёт о сбое или зависании после неполадки; и — только когда вы открываете магазин плагинов или нажимаете в нём ПРОВЕРИТЬ — запрос к каталогу плагинов. Каждый из них описан ниже поле за полем, и каждый можно отключить. Ими управляют три переключателя: СИСТЕМА → Обновления, СИСТЕМА → Отчёты об использовании и СИСТЕМА → Диагностика. Ни одна функция не зависит от того, включён ли какой-либо из них, и ничто не будет донимать вас за то, что вы его выключили.

Что остаётся на вашем компьютере

Ваши записи — и звук, и сырые I/Q, — изображения, которые строят декодеры SSTV и метеоспутников, всё, что декодируют декодеры, ваши закладки, планы диапазонов, настройки, местоположение приёмника и установленные плагины — это файлы на вашем собственном диске. Ничто их не выгружает, и ни одна частота, на которую вы настраиваетесь, не покидает ваш компьютер.

Проверка обновлений

При каждом запуске приложение один раз спрашивает этот сайт, есть ли новая версия. Весь запрос — это GET /api/update?v=, за которым следует номер вашей версии: ни идентификатора, ни идентификатора установки, ни cookie, ничего, что можно было бы связать с более поздним запросом. Сервер не создаёт для него никакой аналитической записи: записываются только просмотры страниц и загрузки файлов, а адрес проверки обновлений не относится ни к тем, ни к другим. Отключите её в разделе СИСТЕМА → Обновления, и приложение больше никогда не обратится к этой службе.

Ничего не скачивается и не устанавливается, пока вы не нажмёте кнопку. Если нажмёте, установщик загружается с этого сайта по HTTPS, и его SHA-256 сверяется с хешем, опубликованным сервером, прежде чем файл получит имя, под которым его что-либо может запустить, — а эта загрузка является обычной загрузкой с этого сайта, поэтому записывается так же, как любая другая, с IP-адресом, приблизительным местоположением, браузером и операционной системой, как описано в части этого уведомления, посвящённой сайту.

Отчёты об использовании

Начиная с версии 0.53.0 есть анонимный отчёт об использовании в разделе СИСТЕМА → Отчёты об использовании. Он включён по умолчанию, и вы можете его выключить — снимите этот флажок, и отправка отчётов немедленно прекратится. За каждый запуск отправляется один отчёт, описывающий только что завершившийся сеанс, и вот он целиком:

ОтправляетсяПримерЗачем
Идентификатор установкистрока из 32 случайных шестнадцатеричных символовПозволяет отличить 100 пользователей от одного пользователя, запустившего программу 100 раз. Генерируется случайным образом на вашем компьютере при первом запуске, удаляется, когда вы отключаете отчёты, и никогда не выводится из вашего оборудования, сети или имени.
Версия приложения0.99.39Обновляются ли люди. Альфа-версия для Android сообщает свою сборку как 0.98.1-android.4 — суффикс -android.N к номеру выпуска, из которого она собрана, чтобы её отчёты никогда не путались с отчётами установщика для Windows.
Операционная системаWindows 10.0.22631, Linux 6.8.0 или Android 14Какие платформы действительно используются. Операционная система и номер её сборки, ядра или выпуска, но никогда не имя вашего компьютера или учётной записи. Сборка для Linux (0.99.39) и альфа-версия для Android (0.98.1-android.4) отправляют те же поля под тем же переключателем.
Архитектураx64 или arm64То же, что выше.
Число запусков12Пользуются ли программой больше одного раза.
Число сбоев1Как часто программа даёт сбой.
Длительность сеанса3600 сДлятся ли сеансы минуты или часы.
Модель SDRuhd b200Каким SDR уделять приоритетное внимание. Серийные номера удаляются перед отправкой.
Какие демодуляторы использовались и как долгоWFM: 3000sКакие виды модуляции оправдывают дальнейшую работу.
Открытые панелиmap, decodedКакие функции используются.
Установленные плагиныADS-B 1.0.0Какие декодеры оправдывают дальнейшую работу.

Это полный список. Он поставляется вместе с приложением в виде PRIVACY.md, и автоматический тест проверяет содержимое отчёта поле за полем, так что новое поле невозможно добавить без того, чтобы этот тест не провалился и оба документа не были обновлены. Отключение отчётов удаляет идентификатор установки, поэтому, если вы когда-нибудь включите их снова, вы получите новый, который невозможно связать со старым.

Отчёт отправляется при запуске и описывает уже завершившийся сеанс, и никогда — при выходе: сетевой запрос на выходе может подвесить приложение, которое кто-то пытается закрыть, а отчёт, записанный при выходе, был бы потерян именно при том событии, которое важнее всего посчитать. Ничего из ответа не читается и не используется.

Отметка «всё ещё работает»

Отчёт, который приходит при запуске приложения, может сказать, кто его запустил, но никогда — у кого оно всё ещё открыто. Поэтому, пока FoxSDR работает — и только пока включены отчёты об использовании, — она также раз в пять минут отправляет одно очень маленькое сообщение, содержащее три поля и больше ничего:

ОтправляетсяПримерЗачем
Идентификатор установкита же строка из 32 шестнадцатеричных символов, что и вышеЧтобы двенадцать отметок от одной копии считались одной работающей копией, а не двенадцатью.
Версия приложения0.99.39Чтобы «работает сейчас» можно было разбить по версиям.
Признак отметки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. В частности, именно это говорит, что неполадка была поглощена — приложение её пережило, — а не привела к сбою; без этого они выглядят одинаково. Код и фиксированная фраза, никогда не содержимое.
Загруженные плагины и их версииADS-B 1.1.0«Падает только с загруженным плагином ADS-B» — это описание неполадки; «иногда падает» — нет.
Стеки потоковcascade.exe+0x1a2b на кадрСтек и есть неполадка. Это только имена модулей, идентификаторы сборок и числовые смещения — никаких путей к исходникам, переменных или содержимого памяти.
Конец журнала сеансаopened rtlsdrThe last lines the application logged, which is usually what it was doing when it failed. It is the application's own log: it records state changes — source opened, rate set, plugin started — never signal content, and never the name or path of a file you opened. It also carries what the radio driver said and what its libraries printed to the standard error stream. Before any line of it leaves your computer, the application's own lines as well as the driver's, it is scrubbed: serial numbers and the device-specific part of USB device identifiers are replaced by <stripped>, the account name in a file path by <user>, and anything in single quotes, such as the names you give patch nodes and speakers, by '<name>'; on any line that mentions hertz, a frequency, tuning, a centre, a range, an offset, a carrier, a preset or transmitting, every number is replaced by # unless it is marked as a sample rate, a time, a level, a size or a count, is a version, an identifier or an error code, or is part of a name such as R820T; and lines in which the USB driver lists the devices plugged into your computer are left out, with one line saying how many.
Контекстные заметкиmode: WFM, sampleRate: 2400000Несколько заметок вида ключ/значение, которые прикрепляет приложение: вид модуляции, источник (генератор, файл I/Q или реальный SDR), частота дискретизации, было ли открыто устройство, модель SDR без серийных номеров, сколько секунд работало приложение и выполнял ли поток, в котором произошла ошибка, собственный код FoxSDR или код драйвера SDR. sampleRate — это частота дискретизации, а не частота настройки.
Идентификатор установкистрока из 32 случайных шестнадцатеричных символов, или пустоИспользуется для ограничения частоты запросов, а затем отбрасывается: идентификатор установки не сохраняется. Компьютер, застрявший в цикле сбоев, не должен иметь возможности завалить сервер, и отличить один компьютер от сотни — единственное, для чего это поле когда-либо читается. Здесь оно никогда не записывается на диск. Если отчёты об использовании выключены, оно отправляется пустым — идентификатора тогда нет, а отчёт о сбое никогда его не создаёт.

Corrected in FoxSDR 0.99.33. Before 0.99.33 the scrubbing described above was applied only to the radio driver's lines, not to the application's own, and a few of the application's own lines could therefore reach a crash or freeze report carrying the frequency you had asked for or were transmitting on, a patch radio's label (which can include its serial number), the names you gave patch parts, the first line of text a decoder on the patch page had produced, and the list of USB devices the USB driver printed, including their serial numbers. That contradicted this notice. From 0.99.33 every line is scrubbed before it leaves your computer, and those log lines no longer contain those values in the first place.

Отчёт о сбое не содержит ни частоты, ни декодированных данных, ни пути к файлу, ни имени пользователя, ни имени компьютера, ни местоположения. Отчёты хранятся на собственном сервере этого сайта, за той же защищённой паролем панелью, что и всё остальное, и хранятся 90 дней после того, как неполадка была замечена в последний раз, а затем удаляются — те же три месяца, что и отчёты об использовании. Первый отчёт о любой неполадке хранится полностью, а также ещё по одному отчёту на каждую сборку, в которой неполадка сохранилась, но не более трёх; все остальные отчёты о той же неполадке подсчитываются, а не сохраняются. Автоматический тест сверяет с таблицей выше и то, что принимает адрес приёма, и то, что он записывает на диск, в обе стороны, так что ни в то, ни в другое невозможно добавить поле без изменения этой таблицы.

Полный дамп памяти никогда не отправляется, ни при каких настройках. Дамп памяти — это копия памяти программы, и он может содержать имена файлов, заголовки окон и данные принятого сигнала. По умолчанию он выключен; если вы включите его в разделе СИСТЕМА → Диагностика, файл .dmp записывается рядом с текстовым отчётом, только локально, а программа отправки открывает файлы с именами crash-*.txt и hang-*.txt и ничего больше.

Как часто. Не более пяти отчётов в день с одного компьютера, и одна и та же неполадка — только один раз в день, сколько бы раз она ни происходила; оба ограничения хранятся в вашем собственном файле настроек, поэтому компьютер в цикле сбоев прекращает отправку сам, а не по команде, а отчёт, который не удалось отправить, повторяется при последующих запусках не более трёх раз, после чего его оставляют в покое. Чтобы превратить смещение из отчёта обратно в имя функции, нужна отладочная база данных именно этой сборки, которая остаётся на наших собственных компьютерах и никуда не выгружается: сопоставление выполняется локально, а не на сервере.

Чего приложение никогда не отправляет

  • Частоты, на которые вы настраиваетесь. То, что человек слушает, — самые чувствительные сведения, которые известны этой программе, и они никогда не собираются. В Соединённом Королевстве перехват сообщения, на получение которого у вас нет разрешения, или разглашение его содержания является правонарушением согласно разделу 48 Закона о беспроводной телеграфии 2006 года (Wireless Telegraphy Act).
  • Имена или пути файлов, которые вы открываете. Имя файла записи — это ваши собственные данные: в нём может быть название службы, места или частота. Когда файл I/Q не удаётся открыть повторно, журнал фиксирует, что он не открылся; имя остаётся на экране, где вы его и так знаете.
  • Ничего декодированного — сообщения пейджеров, воздушные суда, корабли, изображения, спутниковый трафик.
  • Ваше местоположение или местоположение чего-либо, что вы принимаете, — включая заданное вами местоположение приёмника, которое никогда не передаётся ни в каком отчёте. См. ниже.
  • Ваш IP-адрес или любое местоположение, выведенное из него. Запрос неизбежно приходит на сервер с какого-то адреса, потому что так устроен интернет; адрес приёма отчётов об использовании не читает никакой информации о соединении и не ведёт журналов запросов.
  • Серийные номера оборудования. Модель SDR полезна; серийный номер идентифицирует ваш конкретный SDR и удаляется перед отправкой.
  • Ваше имя, имя вашего компьютера, вашу учётную запись пользователя или любой путь к файлу.
  • Полный дамп памяти.

Местоположение приёмника и GPS

FoxSDR нужно знать, где находится приёмник, потому что от него отсчитываются все дальности и пеленги на карте и на экране радара. Его можно ввести вручную, щёлкнуть на карте или считать с GPS-приёмника через последовательный порт.

Местоположение остаётся на вашем компьютере. Оно хранится в вашем собственном файле настроек и никогда не передаётся — ни в отчёте об использовании, ни в отметке, ни в отчёте о сбое, нигде. Считывание его с GPS запускаете вы: вы указываете порт и нажимаете «Взять позицию из GPS». Порт удерживается только до получения первой фиксации координат, и не более 60 с. Диагностический журнал записывает имя порта, скорость передачи, число предложений и спутников и любую ошибку — никогда не местоположение и никогда не текст предложения NMEA. Если в поле порта указано что-то, не похожее на порт, в журнал записываются только его вид и длина («введённый путь к устройству, 27 симв.»), так что путь к файлу с вашим именем пользователя не может попасть в отчёт. Это обеспечивают два автоматических теста: один проверяет кольцевой буфер журнала, другой — файл журнала, записанный настоящим приложением.

Каталог плагинов

К каталогу программа обращается, когда вы открываете окно магазина плагинов (в первый раз за сеанс, начиная с FoxSDR 0.99.16), каждый раз, когда вы нажимаете в нём ПРОВЕРИТЬ, и когда вы решаете что-то установить. При запуске ничего не загружается, окно само не открывается повторно, и ни один плагин никогда не обновляет себя сам. Каталог — это файл, опубликованный на GitHub (raw.githubusercontent.com), поэтому запрос попадает на серверы GitHub, которые — как и при любом веб-запросе — видят адрес, с которого он пришёл. Никакого вашего идентификатора с ним не отправляется: ни идентификатора установки, ни cookie, ничего, что можно было бы связать с отчётом об использовании. Каждая загрузка идёт по HTTPS, ограничена по размеру, отклоняется при перенаправлении на другой хост и сверяется с sha256, опубликованным в каталоге, прежде чем ей будет позволено стать файлом. Источник задаётся в настройках: вы можете указать другой каталог или index.json на вашем собственном диске, и тогда сетевой запрос не выполняется вообще.

Наборы элементов орбит спутников

Плагин спутников поддерживает свои наборы элементов орбит в актуальном состоянии, загружая их из источников, указанных в его 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.39Из какой сборки пришло предложение.
Операционная система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.39Из какой сборки пришло сообщение, чтобы не гоняться повторно за уже исправленной ошибкой.
Операционная системаwindows, linux или androidС какой платформы оно отправлено.
Архитектураx64 или arm64То же, что выше.
Номер схемы1Версия формата передачи, чтобы будущее изменение формата нельзя было принять за одно из полей выше.

Оно уходит на 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 часов и не раньше чем через полчаса после предыдущего; а если вы были на странице, когда мы писали, но через десять минут так и не увидели сообщение, письмо уходит тогда. Копия этого письма хранится, как описано выше; когда пишете вы, никакие письма не отправляются. Переписка хранится, пока вы не выйдете из программы или не попросите нас её удалить, а выход удаляет её полностью.
  • Хранится до окончания программы бета-тестирования или до вашей просьбы. Одного письма на адрес ниже достаточно, чтобы вас удалили и стёрли запись, — объяснять причину не нужно.
  • Правовым основанием здесь является ваше согласие, выраженное отметкой в поле; без неё форма не отправляется.

Если вы подписываетесь на новости по 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-адрес на момент посещения, поэтому, пожалуйста, укажите его и примерное время посещения.

Для приложения средства управления находятся в самой программе, и их три:

  • СИСТЕМА → Отчёты об использовании останавливает отчёт об использовании и пятиминутную отметку и удаляет идентификатор установки. Включите снова позже — и получите новый идентификатор, который невозможно связать со старым.
  • СИСТЕМА → Диагностика прекращает запись и отправку отчётов о сбоях и зависаниях.
  • СИСТЕМА → Обновления прекращает проверку обновлений.

Отчёты не содержат ничего, что можно связать с вами, поэтому запрашивать доступ не к чему; если вы хотите удалить идентификатор установки из уже отправленных отчётов, напишите на адрес ниже и укажите его, и он будет удалён.

Дети. FoxSDR — технический прибор для радиолюбителей. Он не предназначен для детей, не собирает персональную информацию ни у кого и, следовательно, не собирает её и у детей.

Пишите на [email protected]. Вы также можете подать жалобу в Управление комиссара по информации (Information Commissioner's Office, ico.org.uk), если считаете, что с этим обошлись ненадлежащим образом.

Последнее обновление: 24 сентября 2026 г., для FoxSDR 0.99.39 — сборки, которую сейчас предлагает этот сайт и с исходным кодом которой было сверено каждое утверждение выше. FoxSDR публикует Steven Fox; пишите на адрес выше с любыми вопросами об этом уведомлении или чтобы удалить идентификатор установки из уже отправленных отчётов. Если это уведомление когда-либо перестанет соответствовать тому, что делает программа, неправа программа: сбор данных сайтом реализован в store.go и app.js, которые можно прочитать в собственном исходном коде сайта, а собственный список приложения поставляется вместе с ним в виде PRIVACY.md вместе с тестом, сверяющим с ним содержимое отчёта.