# Audion Sync Tools

[English](README_EN.md) · [Руководство](USER_GUIDE_RU.md)

**Содержание**

- [С чего начать](#с-чего-начать)
- [Что где лежит](#что-где-лежит)
- [Окно](#окно)
- [Цвета](#цвета)
- [Маршруты к домашним машинам](#маршруты-к-домашним-машинам)
- [Документация](#документация)
- [Правила, которые важно знать заранее](#правила-которые-важно-знать-заранее)
- [OpenVPN из папки данных](#openvpn-из-папки-данных)

Программа, которая держит на машине копию MAIN VPS и всё, без чего эта копия
бесполезна: ключи, клиент туннеля, доступ к домашним машинам. Плюс снимок
приватных архивов Build-стека в R2 bucket.

Отсюда ничего не уходит наружу: ни карточек, ни релизов, ни репозиториев.
Публикацией занимается Audion Build Publisher.

## С чего начать

После переустановки Windows: выбрать прежнюю **DATA FOLDER**, затем
**SETUP → RESTORE**. До форматирования один раз выполнить **SSHD** для сохранения
хост-ключей в DATA. Порядок, ограничения и CLI: [восстановление Windows](RESTORE_RU.md).

Запустить `Start.exe`. Окно один раз попросит права администратора — они нужны
для корректной работы с системными сетевыми соединениями: служба туннеля,
состояние интерфейсов WireGuard и рукопожатия отдаются системой только
администратору. Отказать можно: всё, кроме туннелей, работает и без прав.

На новой машине порядок такой:

1. распаковать программу и принести с собой папку данных этой машины —
   `Audion Backup <Машина>`;
2. запустить `Start.exe`: окно первого запуска спросит папку данных и скачает
   инструменты, которых в выпуске нет, — `rclone`, `cloudflared`, терминал,
   PeaZip и редакторы;
3. `SETUP` → `IMPORT KEYS` — разложит ключи по трём местам, где их ищут
   программы; то же делает `Runs\import-keys.cmd`;
4. `STORAGE` → `SYNC ALL` — первое наполнение зеркала. Дальше зеркало обновляется
   той же кнопкой или `Runs\sync-backup.cmd`: заданий в Планировщике Windows
   программа не заводит, а ночной снимок MAIN VPS делает сам, своим таймером.

Проверка, что всё встало: кнопка `ДИАГНОСТИКА` в разделе TUNNEL или
`Tunnel\RemoteDesktop\check-routes.cmd` из консоли.

## Что где лежит

**Программа** — эта папка: окно, сценарии, свой `rclone`, клиент туннеля.
Здесь нет ни одного файла, который жалко потерять: ни ключей, ни адресов, ни
паролей — только указатель на профиль.

**Данные** — соседняя `Audion Backup`: снимки, шесть зеркал кода MAIN VPS,
ключи, токены. Здесь нет ни одного исполняемого файла.

**Профиль машины** — сама папка данных: у каждой машины своя, например
`Audion Backup Laptop` или `Audion Backup Work`. В ней то, чем эта машина
отличается от такой же программы у другого человека: rclone.conf, ключи
R2, отпечатки хостов, адреса машин, план зеркала, пароль роутера. Настройки
окна — тема, язык, терминал — часть самой программы и в профиль не уходят.

Имя профиля даёт человек — `Laptop`, `Work`, `Base`, — потому что папку данных
носят между машинами, а имя компьютера на работе не переделать. Сама программа
хранит только указатель на профиль: `config\profile.json`, две строки. Всё
остальное она берёт из профиля и туда же дописывает.

Рабочие файлы соединений лежат только в папке данных: программа их не хранит.
Посмотреть их списком — кнопка `СПИСОК` в разделе SSH KEYS.

Путь к данным считается от расположения программы. Если данные лежат в другом
месте, путь задаётся ключом `-Root` — у окна и у каждого враппера. Буква диска
нигде не зашита: на ноутбуке это `E:`, на станции `S:`.

    Start.exe                       запуск окна
    Runs\sync-backup.cmd            зеркало MAIN VPS
    Runs\import-keys.cmd            разложить ключи
    Runs\export-keys.cmd            собрать Export Keys в Tunnel\Export
    Runs\backup.cmd                 PRIVATE BACKUP: архивы Build-стека в R2
    App\                            окно и свой PowerShell 7
    Engine\                         сценарии
    Tunnel\                         клиент туннеля
    Tunnel\RemoteDesktop\           доступ к машинам, роутер, маршруты
    Tools\                          rclone, терминал, PeaZip, редакторы
    config\                         версия, указатель на папку данных, настройки окна
    logs\                           журналы окна и мастеров

## Окно

Две файловые панели видны всегда, а лента разделов сверху меняет только то, что
в них открыто и какой ряд кнопок показан: SETUP, SSH KEYS, TUNNEL, REMOTE,
STORAGE, CLOUDS и SETTINGS. Справа — журнал, между панелями — узкая полоса
кнопок, внизу — ряд файловых операций с их клавишами. Локальный диск, машина по
ssh, R2 bucket и облако для программы одинаковы: их читает один `rclone`, и
копировать можно между любыми двумя сторонами.

В шапке — бейдж DATA с именем папки данных, строка пробы (какой маршрут за
сколько ответил и каким путём пойдёт окно), число потоков, язык RU / EN и
кнопка тем: Audion Vault Dark, Audion Dark, Audion Code Dark и Audion Light.
Выбор запоминается между запусками.

Разделы `SETUP` и `SSH KEYS` показывают, чем эта машина уже обзавелась: адреса
машин, ключи ssh, ключи к R2, список ключей хостов, sshd, пароль роутера. У
каждой кнопки индикатор: серый — этого ещё нет, оранжевый — есть, но делом не
подтверждено, зелёный — подтверждено чтением панели. Отдельно стоит
`REMOVE TASK`: он удаляет ежедневное задание, оставшееся от прежних версий, и
виден, только пока такой остаток есть.

Машины — BASE, LAPTOP, MAIN VPS, HOME, WORK и роутеры — стоят в разделе REMOTE:
кнопка машины открывает на ней терминал. Набор кнопок задан `targets.json`; у
машины, чей адрес ещё не вписан, индикатор серый, и нажатие говорит об этом
словами. MAIN VPS стоит в панелях наравне с домашними машинами и R2 bucket:
файл едет между R2 bucket и MAIN VPS напрямую, без scp и без консоли.

Клавиши как в файловом менеджере: пробел отмечает, Enter входит, Backspace
поднимает на уровень, Tab переходит в соседнюю панель. F2 — переименовать, F3 —
публичные ссылки на отмеченное в R2 bucket, F4 — редактор, F5 и F6 — копировать
и перенести, F7 — папка, F8 — удалить. F11 доливает недостающее в соседнюю
панель, F12 делает её точной копией активной. Alt+F5 и Alt+F9 упаковывают и
распаковывают архивы, Ctrl+F ищет от папки панели вглубь, клавиша F сужает
список по имени. Esc останавливает идущую операцию.

Звёздочка в полосе между панелями отмечает строки по маскам: свои маски,
сохранённые наборы, время изменения и группы расширений. Лупа открывает поиск —
на диске, на машине, в R2 bucket и в облаке одинаково; найденное можно вывести
в панель плоским списком.

Кнопка `СОСТОЯНИЕ` под журналом перечитывает панели и пишет сводку: возраст
снимка, ключи R2, версия `cloudflared`, sshd и туннели этой машины — свои и
чужого VPN. Та же сводка появляется при старте.

Инструменты программа возит с собой и обновляет сама: `SETTINGS → ОБНОВИТЬ`
ведёт `rclone`, `cloudflared`, терминал, PeaZip и редакторы. Версии спрашиваются
до закачки, поэтому уже свежее не качается заново. Там же — папка данных,
шрифт, прозрачность и показ размеров в байтах.

Подробно — в [руководстве](USER_GUIDE_RU.md).

## Цвета

Имена файлов и папок красит `App\config\colors\themes.json`: в нём цвета и
порядок правил для тёмной и светлой сторон. Что считать видео, документом или
архивом, говорит соседний `App\config\mask-groups.json` — те же семьи, что в
окне масок; второго списка расширений в программе нет. Цвета сняты с тем
Total Commander владельца.

Правила идут сверху вниз, побеждает первое подошедшее — как в самом TC.
Поэтому свежесть обычно важнее типа: файл, изменённый сегодня, красится
цветом «не старше дня», даже если это архив. Возраст считается календарными
сутками: вчерашний файл — «не старше дня», даже если ему тридцать часов.

Цвета самого окна — рамки, кнопки, фон списка — живут отдельно, в темах окна,
и на цвета строк не влияют.

## Маршруты к домашним машинам

Из дома всё идёт напрямую. Из чужой сети — через jump host MAIN VPS: сначала по
имени, потом поверх cloudflared, и последним остаётся SECOND VPS. Маршрут
выбирает проба, а кнопки `МАРШРУТ` в ленте разделов позволяют настоять на
своём: `АВТО`, `LAN`, `SSH MAIN VPS`, `SSH MAIN VPS CF`, `SSH SECOND VPS`. Подпись
источника над панелью говорит, каким путём идёт обращение:
`BASE · SSH MAIN VPS CF`. Где общий выбор не годится, кнопка в полосе между
панелями задаёт маршрут каждой машине отдельно.

## Документация

    README.md                указатель на описания и руководства
    Docs\README_RU.md        это описание
    Docs\README_EN.md        то же по-английски
    CLAUDE.md                правила работы с проектом
    MEMORY.md                история: почему устроено именно так
    SKILL.md                 команды, проверки, конфиги
    Docs\USER_GUIDE_RU.md    руководство пользователя
    Docs\USER_GUIDE_EN.md    то же по-английски
    Docs\RESTORE_RU.md       восстановление после переустановки Windows
    Docs\RESTORE_EN.md       то же по-английски
    Docs\CHANGELOG_RU.md     журнал изменений
    Docs\CHANGELOG_EN.md     то же по-английски

Реестр доступов — какой ключ что открывает, где какие туннели — живёт в данных:
`Audion Backup\Tunnel\ACCESS.md`. Значения секретов туда не копируются никогда,
только пути и назначение.

## Правила, которые важно знать заранее

**Ничего не брать у соседних проектов.** У программы свой `rclone` и свои ключи;
правка, возвращающая связь с соседями, — неверная правка.

**Данные не чистить.** `Audion Backup` не удаляется и не «приводится в порядок»:
там ключи, токены и единственная локальная копия MAIN VPS.

**Кнопка зовёт враппер.** В окне не должно происходить ничего, чего нельзя
сделать из консоли — иначе окно и врапперы разойдутся.

**Ключи правит владелец.** Программа чинит права и пути, содержимое ключей —
никогда.

## OpenVPN из папки данных

`TUNNEL → NET → OPENVPN` предлагает подключить VPN и открыть диски WORK
в активной панели либо отключить выбранный VPN-профиль. После запроса подключения
программа до 90 секунд ждёт чтения `work:/` через rclone, с ключами и проверкой
сервера из рабочего rclone.conf. Ошибка входа не считается готовым соединением.
На новой машине сначала нужны IMPORT KEYS, RCLONE.CONF и доверенные ключи WORK.
`SETUP → ПРОЧЕЕ → OVPN PATH` позволяет выбрать клиент и профиль;
Ctrl+OPENVPN проверяет пути без подключения. То же доступно через
`Tunnel\RemoteDesktop\openvpn.cmd` и `openvpn-path.cmd` с ключом `-Root`.

Переносимая раскладка: `DATA\OpenVPN Portable\openvpn-portable.exe`, рядом
`app`, профиль в `data\config\*.ovpn`, RDP-файл рядом с клиентом. Эти файлы
предоставляет владелец; в выпуск Sync Tools они не входят. Если системный
OpenVPN GUI установлен, он обнаруживается автоматически; явный выбор клиента
сохраняется в данных и имеет приоритет. Запуск внешнего клиента выполняется
через UAC. Для отключения служит та же кнопка OPENVPN или значок клиента в трее;
СТОП предназначен для файловых операций. В CLI есть `-Connect` и `-Disconnect`.
OpenVPN даёт маршрут до WORK; SSH/SFTP-соединение для панелей устанавливает rclone.
Для одновременных VPN-подключений с разных машин нужны профили, разрешённые
администратором сервера: копии одного сертификата могут вытеснять друг друга.
