Конфіденційність і файли 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 с | Чи тривають сеанси хвилини, чи години. |
| Модель SDR | uhd b200 | Яким радіо надавати пріоритет. Серійні номери вилучаються перед надсиланням. |
| Використані демодулятори й як довго | WFM: 3000s | Які режими варті подальшої роботи. |
| Відкриті панелі | map, decoded | Якими функціями користуються. |
| Встановлені плагіни | ADS-B 1.0.0 | Які декодери варті подальшої роботи. |
Це повний список. Він постачається з програмою як PRIVACY.md, а автоматичний тест перевіряє корисне навантаження поле за полем, тож нове поле не можна додати так, щоб цей тест не впав, а обидва документи не довелося оновити. Вимкнення звітів видаляє ідентифікатор встановлення, тож якщо ви колись увімкнете їх знову, то отримаєте новий, який не можна пов'язати зі старим.
Звіт надсилається під час запуску й описує вже завершений сеанс — і ніколи під час виходу: мережевий виклик на виході може завісити програму, яку хтось намагається закрити, а звіт, записаний під час виходу, загубився б саме через ту подію, яку найважливіше порахувати. Ніщо у відповіді не читається й не виконується.
Сигнал «досі працює»
Звіт, який надходить, коли програма запускається, може сказати, хто її запустив, але ніколи — у кого вона досі відкрита. Тому, поки FoxSDR працює — і лише поки ввімкнено звіти про використання, — він також кожні п'ять хвилин надсилає одне дуже маленьке повідомлення, що містить три поля й нічого більше:
| Що надсилається | Приклад | Навіщо |
|---|---|---|
| Ідентифікатор встановлення | ті самі 32 шістнадцяткових символів, що й вище | Щоб дванадцять сигналів від однієї копії рахувалися як одна запущена копія, а не дванадцять. |
| Версія програми | 0.99.39 | Щоб «запущені зараз» можна було розбити за версіями. |
| Позначка сигналу | 1 | Повідомляє приймальній стороні, що це сигнал «досі працює», а не звіт про сеанс. |
Нічого із сеансу з ним не передається: ні режимів, ні панелей, ні моделі радіо, ні тривалостей, ні лічильників. Сигнали записуються в окремий набір даних, відокремлений від звітів про сеанси, тож жоден показник використання не змінює значення. Той самий перемикач зупиняє обидва: відправник відмовляється вмикатися без дійсного ідентифікатора встановлення, а вимкнення звітів про використання видаляє його, тож «вимкнено» означає жодного сигналу взагалі. Сигнал, який ще в дорозі, коли настає час наступного, пропускається, а не ставиться в чергу.
Куди йдуть звіти про використання
До 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 містить ті самі поля; кадри стека називають GNU build id бібліотеки, у якій сталася несправність, замість ідентифікатора PDB, бо жодна з цих платформ не збирається за допомогою MSVC. |
| Якого роду була відмова | access violation, 0xC0000005 | Власний рядок причини зі звіту й код винятку Windows. Зокрема, саме це повідомляє, що несправність було поглинуто — програма її пережила, — а не що це був збій; без цього обидва випадки виглядають однаково. Код і фіксоване речення, ніколи не вміст. |
| Завантажені плагіни та їхні версії | ADS-B 1.1.0 | «Збій лише із завантаженим плагіном ADS-B» — це опис несправності; «іноді падає» — ні. |
| Стеки потоків | cascade.exe+0x1a2b для кожного кадру | Стек — це і є несправність. Він містить лише назви модулів, ідентифікатори збірок і числові зміщення — жодних шляхів до вихідного коду, жодних змінних, жодного вмісту пам'яті. |
| Кінець журналу сеансу | opened rtlsdr | The 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 без серійних номерів, скільки секунд працювала програма і чи виконував потік, у якому сталася несправність, власний код FoxSDR чи код драйвера радіо. 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 Закону про бездротову телеграфію (Wireless Telegraphy Act) 2006 року.
- Назви чи шляхи файлів, які ви відкриваєте. Назва файлу запису — це ваші власні дані: вона може називати службу, місце чи частоту. Коли файл I/Q не вдається відкрити повторно, журнал фіксує, що його не вдалося відкрити; назва залишається на екрані, де ви її й так знаєте.
- Будь-що декодоване — пейджерні повідомлення, повітряні судна, кораблі, зображення, супутниковий трафік.
- Вашу позицію чи позицію будь-чого, що ви приймаєте, — зокрема задану вами позицію приймача, яка ніколи не передається в жодному звіті. Див. нижче.
- Вашу IP-адресу чи будь-яке місцезнаходження, визначене за нею. Запит неминуче надходить на сервер з якоїсь адреси, бо так працює інтернет; кінцева точка звітів про використання не читає жодної інформації про з'єднання й не веде журналів запитів.
- Серійні номери обладнання. Модель радіо корисна; серійний номер ідентифікує саме ваше радіо, і його вилучають перед надсиланням.
- Ваше ім'я, ім'я вашого комп'ютера, ваш обліковий запис чи будь-який шлях до файлу.
- Повний дамп пам'яті.
Позиція приймача і GPS
FoxSDR має знати, де розташований приймач, бо кожна дальність і кожен пеленг на карті й на екрані радара вимірюються від нього. Позицію можна ввести, клацнути на карті або прочитати з приймача GPS на послідовному порту.
Позиція залишається на вашому комп'ютері. Вона зберігається у вашому власному файлі налаштувань і ніколи не передається — ні у звіті про використання, ні в сигналі «досі працює», ні у звіті про збій, ніде. Зчитування з GPS запускаєте ви: ви вказуєте порт і натискаєте «Прочитати позицію з GPS». Порт утримується лише до отримання першого визначення позиції й щонайбільше 60 с. Діагностичний журнал фіксує назву порту, швидкість передачі, кількість речень і супутників і будь-яку помилку — ніколи не позицію й ніколи не текст речення NMEA. Поле порту, що містить щось, не схоже на порт, записується в журнал як його тип і довжина («a typed device path, 27 chars», тобто «введений шлях до пристрою»), тож шлях до файлу з вашим іменем користувача не може потрапити у звіт. Це забезпечують два автоматичні тести: один — на кільцевому буфері журналу, другий — на файлі журналу, який записала справжня програма.
Каталог плагінів
До каталогу звертаються, коли ви відкриваєте вікно магазину плагінів (починаючи з 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, які тут оновлюються кожні дванадцять годин, — і Satellites 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-адреса використовується лише для того, щоб тримати частоту публікацій у розумних межах, і ніколи не записується на диск. Опублікований пакет ніде не перелічено; завантажити його може будь-хто, хто має посилання. Він зберігається, доки його не видалять з панелі адміністратора або доки ви про це не попросите — напишіть на адресу нижче й зазначте його посилання.
Якщо ви записуєтеся бета-тестувальником
Бета-форма і підписка на новини — єдині місця, де цей сайт щось у вас запитує, не рахуючи публікації дизайну інтерфейсу (див. вище). Надсилання форми зберігає вашу адресу електронної пошти й те з наведеного, що ви вирішили вказати: ім'я чи позивний, вашу платформу, радіо, яке ви плануєте використовувати, ваші нотатки та список функцій, які ви зголосилися протестувати. Разом із цим ми зберігаємо той самий контекст відвідування, описаний вище, — приблизне місцезнаходження, мережу, браузер і операційну систему, — бо звіт про ваду читається дуже по-різному залежно від того, з якої конфігурації він надійшов.
- Адреса використовується для однієї мети: зв'язатися з вами щодо бета-збірок і того, що тестувати. Жодної розсилки, жодного маркетингу, і її ніколи нікому не передають.
- Нічого не відбувається, доки ви не підтвердите. Реєстрація надсилає один лист із шестизначним кодом, який ви вводите на сторінці, щоб підтвердити, що адреса ваша. Код дійсний 30 хв і відхиляється після п'яти неправильних спроб. Доки його не введено, запис неактивний: вас немає в списку тестувальників, вас не враховують, і більше нічого ніколи не надсилається. Якщо вашу адресу ввів хтось інший, проігноруйте цей лист, і запис ніколи не стане справжнім — відписуватися немає від чого, і вам не треба нічого робити. Цей один лист — єдиний автоматичний лист, який може спричинити реєстрація.
- Якщо ви нам писали, ми можемо вас запросити. Людина, яка написала нам і залишила адресу — наприклад, через поле пропозицій у програмі, — може отримати від нас одне особисте запрошення з одноразовим посиланням, що відкриває клавішу «Підтвердити» на цьому сайті. Таке запрошення зберігається як очікуваний запис, точно як непідтверджена реєстрація: ви не тестувальник і вас не враховують, доки ви не натиснете «Підтвердити», а якщо ви його проігноруєте, ми більше вам не писатимемо. Очікуваний запис не спливає сам; його видаляють, коли ми вилучаємо його зі списку або коли ви попросите одним листом на адресу нижче.
- Після підтвердження ви отримуєте своє особисте посилання для керування, і ми пишемо вам, коли виходить збірка, якій потрібно те, що ви зголосилися тестувати. Вам пише людина, а не список розсилки. Якщо ви загубите посилання, ми можемо видати нове: старе одразу перестає працювати, нове надходить вам листом, а ми зберігаємо час, коли це зроблено, і чи лист було надіслано.
- Цей лист проходить через Apple. Пошту для
foxsdr.comдоставляє служба iCloud Mail від Apple, тож ваша адреса й повідомлення проходять через їхні сервери на шляху до вас, на їхніх умовах як нашого поштового провайдера. Більше нічого про вас їм не надсилається. - Вона зберігається окремо від аналітики. Реєстрації зберігаються у власному файлі, який може читати лише обліковий запис, під яким працює сервер; аналітичний журнал фіксує, що якась реєстрація відбулася і скільки функцій вибрано, але ніколи — хто. Автоматичний тест провалює збірку, якщо адреса колись потрапить в аналітичний журнал.
- Повторна реєстрація з адресою, яка вже є в списку, не змінює цей запис. Зміни вносяться на вашій власній сторінці тестувальника. Натомість на адресу надсилається один лист: її особисте посилання, якщо адресу підтверджено, або новий код, якщо ні, і не частіше ніж раз на 15 хвилин.
- Ми зберігаємо копію того, що вам надіслали. Кожне повідомлення, яке цей сайт надсилає тестувальнику, — підтвердження і кожне повідомлення про збірку — зберігається з текстом, щоб ми бачили, що було сказано і чи воно дійшло. Копія зберігається під вашим внутрішнім ідентифікатором, а не під адресою, а персональні частини (код чи посилання підтвердження та ваше власне посилання для керування) вилучаються перед збереженням, тож збережене повідомлення ніколи не можна використати, щоб діяти від вашого імені. Ці копії видаляються разом з рештою вашого запису, коли ви йдете.
- Повідомлення між вами і нами зберігаються. Поле «Повідомлення» у вашому порталі тестувальника — це листування з людиною, яка створює FoxSDR: що ми пишемо вам і що ви відповідаєте, кожне повідомлення з часом написання та, якщо ви його вибрали, звітом, якого воно стосується. Воно зберігається під вашим внутрішнім ідентифікатором, а не під адресою, і читати його можете лише ви (за своїм особистим посиланням) і ми. Ми також відзначаємо, коли наші повідомлення побували у вас на екрані, щоб знати, що вони до вас дійшли. Поки ваша сторінка відкрита, вона кожні кілька секунд запитує нові повідомлення, тож вони з'являються одразу, щойно їх написано, і повідомляє, як давно ви нею користувалися; поки вона продовжує запитувати, і ще пів хвилини після, і лише якщо ви користувалися нею в останні п'ять хвилин, сервер знає, що ви на місці. Це зберігається лише в його пам'яті й ніде не записується. Ми не пишемо вам листа про кожне повідомлення: коли ми пишемо, поки вас немає, ви отримуєте один короткий лист про те, що на вас чекає повідомлення, з вашим посиланням і без самого повідомлення. Поки це повідомлення не прочитане, інший такий лист не надходить до 12 годин і не раніше ніж через пів години після попереднього; а якщо ви були на сторінці, коли ми писали, але через десять хвилин так і не побачили повідомлення, лист надсилається тоді. Копія цього листа зберігається, як описано вище; коли пишете ви, жодних листів не надсилається. Листування зберігається, доки ви не вийдете з програми або не попросите нас його видалити, а вихід видаляє його повністю.
- Зберігається до завершення бета-програми або доки ви не попросите. Один лист на адресу нижче вилучає вас і видаляє запис — пояснювати причину не потрібно.
- Правовою підставою тут є ваша згода, надана позначенням поля; без неї форма не надсилається.
Якщо ви підписуєтеся на новини електронною поштою
Сторінка новин запитує лише одне: вашу адресу електронної пошти. Її зберігають, щоб надсилати вам листи, коли виходить нова версія FoxSDR, а часом — про те, що будується. Вона не використовується ні для чого іншого й ніколи нікому не передається.
- Нічого не відбувається, доки ви не підтвердите. Підписка надсилає один лист із шестизначним кодом, який треба ввести на сторінці. Доки його не введено, більше нічого не надсилається, а адреса, яку не підтвердили протягом тижня, видаляється — кодом, що щодня запускається на сервері. Якщо вашу адресу ввів хтось інший, проігноруйте цей лист.
- У кожному листі є посилання, яке вилучає вас зі списку одним натисканням. Відписка видаляє адресу з файлу на сервері разом із копіями того, що на неї надсилалося; нічого про неї не зберігається.
- Це окремий список. Підписник новин не є бета-тестувальником: адреса зберігається в окремому файлі, який може читати лише обліковий запис, під яким працює сервер, і не враховується й не показується як тестувальник. Якщо ви також тестувальник, кожне повідомлення ви отримуєте один раз.
- Ми зберігаємо копію того, що вам надіслали — під внутрішнім ідентифікатором, а не під вашою адресою, з вилученими кодом підтвердження й посиланням для відписки, точно як для тестувальників.
- Цей лист проходить через Apple, як описано вище для тестувальників.
- Аналітичний журнал фіксує, що якась підписка відбулася, але ніколи — хто.
- Правовою підставою є ваша згода, надана позначенням поля; без неї форма не надсилається.
Файли cookie
| Cookie | Призначення | Строк |
|---|---|---|
fox_consent | Запам'ятовує, погодилися ви чи відмовилися, щоб вас запитували лише раз | 1 р. (якщо погодилися) / 6 міс. (якщо відмовилися) |
fox_vid | Випадковий ідентифікатор, щоб повторне відвідування розпізнавалося як той самий браузер. Встановлюється, лише якщо ви погодилися. | 400 дн. |
fox_sid | Групує одне відвідування в сеанс. Встановлюється, лише якщо ви погодилися. | 30 хв бездіяльності |
fox_beta | Зберігає ваше посилання бета-тестувальника, щоб ви могли повернутися до власного запису. Встановлюється, лише якщо ви записалися тестувальником, і лише тому, що саме про це ви й просили, — він нічого не вимірює, тож не є частиною вибору щодо аналітики вище. Вилучення себе зі списку очищає його. | 400 дн. |
foxsdr_lang | Запам'ятовує мову, яку ви вибрали для цього сайту, щоб наступна сторінка теж була нею. Встановлюється, лише коли ви самі вибираєте мову — перемикачем мов чи посиланням, що містить ?lang=, — і зберігає лише код цієї мови, наприклад es. Він нічого не вимірює, тож не є частиною вибору щодо аналітики вище. | 1 р. |
fox_news_joined | Не cookie, а позначка у власному сховищі вашого браузера, яка ніколи не надсилається нам. Після завантаження сайт запитує, чи хочете ви отримувати новини електронною поштою; щойно ви підписалися й підтвердили підписку з цього браузера, він перестає питати. Вона містить лише 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 разом із тестом, що тримає корисне навантаження відповідно до нього.