Конфиденциальность
Это перевод PRIVACY.md. Английский текст правится первым, поэтому если они в чём-то разошлись, верен он.
Dota 2 Mod Manager ничего не собирает, ничего о тебе никуда не отправляет, и аккаунт в нём не нужен. Здесь написано, что именно это значит, и перечислен каждый адрес, к которому приложение может обратиться, и зачем. Так это можно проверить, а не просто поверить.
Всё ниже взято из исходников этого репозитория. У каждой строки указан файл, откуда она; если что-то перестало быть правдой, значит, этот файл изменился, а страница устарела.
Что не собирается
- Никакой телеметрии, аналитики и статистики использования. Ничто не считает, что ты ставишь, что включаешь, сколько приложение открыто и открывалось ли оно вообще.
- Никаких идентификаторов. Твой Steam ID, аккаунт Dota, имя компьютера, железо и IP приложение не читает и никуда не отправляет.
- Никакого сервиса отчётов о сбоях. Ошибки пишутся в лог на твоём же диске и там остаются. Отправить его можно только руками (см. Отчёт диагностики ниже).
- Никакой рекламы, сторонних трекеров и cookie. В приложении нет ни одного скрипта слежки, и на dota2modmanager.com тоже.
- Никакого аккаунта. Входить никуда не нужно ни для одной функции. Единственный необязательный вход описан ниже, и он не хранит паролей.
Числа скачиваний на сайте и в README берутся из API релизов самого GitHub, а он считает файлы, не людей. Само приложение ничего не сообщает.
Куда приложение подключается и зачем
Каждый запрос приложения скачивает что-то публичное. Ни один не несёт о тебе больше, чем неизбежно видит хост любого HTTP-запроса.
| Хост | Зачем | Где в коде |
|---|---|---|
raw.githubusercontent.com |
Каталог модов (Dota2PornFxWeb), карта отпечатков и удалённый конфиг, которым сломанную функцию можно выключить без релиза |
src/catalog.ts, src/fingerprints.ts, src/remote-config.ts |
github.com |
Проверка обновлений и скачивание новой версии из Releases | electron-updater, src/updater.ts, src/portable-update.ts |
cdn.dota2modmanager.com |
Копия архивов модов из каталога и их превью, закреплённый тулчейн, а с 2.6.5 и обновления самого приложения, чтобы всё это работало, когда GitHub недоступен | src/net.ts, renderer/ui/media.ts, src/portable-update.ts |
huggingface.co |
Ещё одна копия архивов модов из каталога, её держит автор каталога. К ней приложение идёт после cdn.dota2modmanager.com. Она указана в подписанном удалённом конфиге, а не в самом приложении, и скачанный с неё файл засчитывается, только если совпал с хэшем, который публикует каталог |
config/app.json, src/remote-config.ts, src/net.ts |
dota2modmanager.com |
Зеркало небольших файлов каталога, по той же причине, и единственная копия, где файл и его подпись всегда из одного момента | src/net.ts, src/catalog.ts |
cdn.jsdelivr.net, ghproxy.net, gh-proxy.com, ghfast.top |
Публичные зеркала GitHub, к ним приложение идёт, только если не ответили адреса выше. Сам список лежит в удалённом конфиге, так что зеркало, которое начнёт чудить, можно убрать без релиза | src/net.ts |
dota2.fandom.com, liquipedia.net |
Картинки предметов и героев для экрана бесплатной косметики, когда в файлах самой игры их нет | src/icons.ts |
discord.com, cdn.discordapp.com |
Только если ты нажмёшь «Войти через Discord», и только чтобы прочитать имя и аватар | src/discord-auth.ts |
К Valve и Steam приложение не обращается никогда и твой аккаунт Steam не трогает. Оно читает конфигурационные файлы Steam на диске, чтобы найти, куда установлена Dota и какой у неё язык. Пишет в них оно только языковую настройку игры, и только когда ты сам об этом просишь.
Необязательный вход через Discord
Он нужен ровно для одного: подписать твоим именем пресет, которым ты делишься, чтобы получатель знал, от кого он. Всё остальное работает и без входа.
- Пароль ты вводишь в своём же браузере на discord.com. Приложение его не видит.
- Токен возвращается во фрагменте адреса, а браузеры не отправляют эту часть на сервер.
- Токена обновления нет, и приложению он не нужен. Токен используется один раз, чтобы прочитать имя и аватар, и потом выбрасывается. Ничего долгоживущего не хранится, так что вредоносу здесь потом нечего утащить.
- Что остаётся после этого в
settings.json: твой id в Discord, имя пользователя и аватар в виде маленькой встроенной картинки, а не ссылки обратно в Discord. Выход из аккаунта всё это удаляет.
Твой статус в Discord
Пока приложение открыто, оно сообщает клиенту Discord на твоём же компьютере, что показать у тебя
в профиле: название приложения, какая вкладка открыта, сколько модов включено, когда началась
сессия, и кнопку, которая открывает dota2modmanager.com. Приложение передаёт это через локальное
соединение, которое Discord открывает для игр (именованный канал на Windows, сокет на Linux), а не
через интернет. Дальше Discord показывает это тем, кто видит твой профиль, как любую игру, в
которую ты играешь. Статус включён, пока ты не выключишь его в настройках, и выключение закрывает
соединение. Код: src/discord-presence.ts.
Ссылки на пресеты
Ссылка на пресет несёт сам пресет после # в адресе. Браузеры никогда не отправляют эту часть на
сервер, поэтому страница на dota2modmanager.com, которая открывает ссылку, не узнаёт, какими
модами кто делился.
Дети
Приложение не предназначено для детей младше 13 лет.
Что хранится на твоём компьютере
Всё в %APPDATA%\Dota 2 Mod Manager на Windows и в ~/.config/Dota 2 Mod Manager на Linux.
Ничего не покидает эту папку, пока ты сам это не отправишь.
| Файл | Что в нём |
|---|---|
settings.json |
Твои настройки: путь к игре, язык, масштаб, тема, избранное и имя в Discord, если ты входил |
manifest.json |
Какие моды ты поставил и какие пресеты сохранил |
downloads/ |
Скачанные архивы модов, чтобы переустановка обходилась без сети |
logs/ |
Что делало приложение, только на твоём диске |
catalog-cache/, icons/, fingerprints.json |
Копии публичных данных, чтобы приложение работало без интернета |
При удалении приложение предлагает стереть эту папку. Удалить её руками тоже достаточно.
Что приложение пишет в игру
Это не про конфиденциальность, но об этом спрашивают здесь, так что: приложение кладёт файлы
.vpk в папку модов самой Dota и может положить шрифты и курсоры в папки игры, сначала сохранив
оригиналы. Безопасный режим, включённый по умолчанию, значит, что приложение не трогает ни
одного файла самой Dota. Если его выключить, добавится одна строка в
gameinfo_branchspecific.gi и подпись в dota.signatures. Оба файла сохраняются до первой
правки и возвращаются байт в байт, когда режим включают обратно.
Подробно.
Отчёт диагностики
Настройки → Диагностика → Экспортировать отчёт сохраняет zip туда, куда ты скажешь. Никуда ничего не загружается. В нём путь к игре, список установленных модов, твои настройки, мониторы и их размеры и хвост лога. Это то, что нужно, чтобы разобрать баг, и именно поэтому стоит посмотреть его, прежде чем кому-то отправлять.
Сайт
dota2modmanager.com это статический сайт на Cloudflare Pages без аналитики, без менеджера тегов и без cookie. Шрифты, стили и скрипты отдаёт сам сайт. Cloudflare ведёт логи запросов, как любой хостинг; больше ничего не собирается, и на сайте нет ничего, по чему мы могли бы узнать посетителя.
Письма на hello@ и security@
Оба адреса работают через Cloudflare Email Routing, и письмо на любой из них проходит два шага, в таком порядке. Сначала оно целиком пересылается в личный ящик мейнтейнера, так что по дороге ничего не теряется и не переписывается. Потом о нём появляется строчка в приватном канале, который мейнтейнер читает, чтобы письмо увидели в тот же день, а не через неделю.
В этой строчке только заголовки: от кого, кому, тема, размер и прошли ли SPF и DKIM. Ни текста,
ни вложений. Код лежит в tools/email-worker/worker.js в этом репозитории, и это весь код.
Дальше письмо лежит в ящике Gmail, и на него распространяются условия Google, как на любое письмо на любой адрес Gmail. Если для того, что ты пишешь, это важно, скажи об этом и попроси другой способ продолжить разговор.
Изменения
Этот файл меняется вместе с приложением. Его история хранится в этом репозитории, так что что в нём было написано в любой день, можно посмотреть, а не вспоминать.
Вопросы: issue или Discord. Сообщения о дырах в безопасности отправляй через SECURITY.md, приватно.