Перейти к содержимому

Синхронизация сессий

Ваша сессия на двух компьютерах

Ваши куки и входы лежат в папке на той машине, где работал браузер. ARMANOS перевозит их на второй компьютер шифрованным файлом, через папку, которую уже синхронизирует ваше облако, поэтому ваших сессий у нас нет. Включается это переключателем «Синхронизировать сессии» на экране «Движок».
scrypt и AES-256-GCM
Шифрование
ваша папка, не наша
Хранение
1 / 2 / 5 / 20 по тарифу
Мест под машины
3 минуты, продляется пока открыт
Замок на профиле

Где теряются аккаунты

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

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

ARMANOS отвечает на это двумя половинами. Сессия едет одним шифрованным файлом через папку, которая и так ваша, а профиль открывается на одной машине за раз.

Экран профилей в программе ARMANOS.
Настройки доезжают до второй машины через аккаунт. Куки и входы остаются на этой машине, пока вы не отправите сессию.

Ваша папка ваше облако

Вы показываете ARMANOS папку на экране «Движок», в блоке «Сессия на двух компьютерах, через папку», и подойдёт любая, которую уже синхронизирует ваше облако. Облачный диск, рабочая сетевая папка, каталог на домашнем хранилище: программа не знает, что это, и не спрашивает.

Это выбор, а не пробел. Хранилища для ваших сессий мы не держим, поэтому у нас нет вашего, что можно было бы потерять или кому-то выдать.

  1. 1

    Выберите папку

    Любую, которую синхронизирует ваше облако. Программа сперва пишет туда пробный файл: и сетевая папка умеет выглядеть доступной и отказать на первой настоящей записи.

  2. 2

    Задайте пароль

    Поле «Пароль от файлов синхронизации»: не короче 8 знаков и одинаковый на обеих машинах.

  3. 3

    Назовите этот компьютер

    Это имя вторая машина покажет вам, когда сюда приедет сессия.

  4. 4

    Включите «Синхронизировать сессии»

    Без папки и пароля переключатель откажет, а не скажет «включено» и не сделает ничего.

Что уезжает и что остаётся

В вашей папке на каждый профиль появляется два файла: шифрованный архив и маленькая открытая пометка, которую вторая машина читает первой. В архиве сессии обоих движков лежат одним файлом.

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

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

ЧтоЕдет ли
Куки, входы, локальное хранилище и IndexedDBДа, внутри шифрованного архива
Номер профиля, имя, сценарий использования, группа, теги, заметки, адрес открытияДа, файлом profile.json внутри архива
Шаблон отпечатка, поколение и правки рукамиДа, и номер вместе с ними, чтобы отпечаток остался прежним
Прокси, страна, ключ двухфакторной защиты, сохранённый входДа, и только внутри шифрованного файла
Какие расширения включеныДа, сам выбор; сами файлы не пакуются
Кэши, хранилище рабочих, следы падений, файлы замков, компоненты движкаНет, сайты и движок наливают их сами, а файл был бы неподъёмным
Имя профиля снаружи шифрованного файлаНет, в пометке время, размер и имя вашего компьютера

Один пароль на две машины

Файл здесь тот же, что и при переносе профиля руками, поэтому записанный одной дорогой вы откроете другой. Заголовок, случайная соль в 16 байт, разовое число в 12 байт, scrypt с N 32768 до ключа в 256 бит, дальше AES-256-GCM.

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

Где лежит ваш пароль

На Windows ваш пароль закрывает сама система ключом вашей учётной записи Windows. На macOS он закрыт ключом, который лежит внутри самой программы, а на Linux ложится как набран в файл, доступный только вам, поэтому на обеих системах это не защищает от того, кто может читать вашу папку пользователя. В папку синхронизации он не попадает и обратно на экран не возвращается.

Права на файл это правда macOS и Linux

В Windows защищает файл то, что данные программы лежат внутри вашей учётной записи.

Когда происходит обмен

Перед открытием профиля программа забирает из папки сессию посвежее. Это обязано случиться до появления окна: подмена файлов под работающим браузером оставляет битый профиль.

Через четыре секунды после закрытия профиля сессия уезжает: браузер дописывает свои базы ещё секунду-другую после исчезновения окна, и программа заново убеждается, что профиль всё ещё закрыт. Если закрыть ARMANOS или поставить обновление, пока профили открыты, программа сперва спросит. «Сохранить и закрыть» ждёт отправки сессий в папку не дольше минуты, а «Закрыть без ожидания» закрывает сразу, и сессии уедут при следующем запуске.

Что бывает только по вашей команде

Пока программа открыта, она смотрит на папку раз в минуту, читая одну отметку времени, а не все пометки подряд. Без вашего слова она ничего не забирает: чужая сессия, приехавшая в профиль, в котором вы работаете, вынула бы землю у вас из-под ног.

  • Отправить свою в папку

    По профилю, с подтверждением, где прямо сказано, что она заменит лежащее там.

  • Взять из папки

    По профилю, с заменой сессии, которую держит этот компьютер.

  • Отправить все и забрать все

    По очереди: тридцать одновременных записей в облачную папку рождают двойники.

Когда менялись обе стороны

Решает это программа по отметкам, а не по часам. Она спрашивает, менялась ли сессия на этой машине с прошлого обмена и менялась ли пометка в папке, поэтому часы двух машин в сравнение не входят.

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

«Отправить свою в папку» решает спор в пользу этой машины. То, что вы заменяете, сперва ложится копией рядом, и таких копий хранится три, поэтому нажатие не глядя стоит минуты, а не дня работы.

Что изменилось с прошлого обменаЧто делает программа
В папке для этого профиля нет ничегоОтправляет, как только появится настоящая сессия
Менялась только эта машинаОтправляет
Менялась только папкаЗабирает, до открытия профиля
Не менялось ничегоНе пишет ничего
Менялись обе стороныНе трогает ничего; говорит вам, и выбираете вы
Пометка свежее файла рядом с нейВ этот раз ничего; программа вернётся, когда файл доедет

Облако работает за вашей спиной

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

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

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

Что сделало облакоЧто получаете вы
Скопировало сперва пометку, а архив позжеВ этот раз ничего, а как файл доедет, обычный приём
Выгрузило архив ради места на дискеНичего не забирается и ничего не затирается
Оставило два файла после почти одновременной записиДвойник узнают по имени и один раз скажут о нём вам
Оставило недописанный соседний файлПодметается через час и только если имя в точности наше

Профиль открыт на одной машине

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

Когда вы вошли в аккаунт, открытый профиль ещё и держит замок на сервере. Вторая машина получает прямой отказ с именем держателя, а перехватить профиль можно осознанно.

Каждый ваш компьютер получает свой случайный опознаватель, поэтому два одинаково названных ноутбука это две машины. Места у вас общие на всё рабочее пространство и идут за действующей подпиской, а отвязка машины освобождает место сразу.

Замок держится
3 минуты
Продляется
каждые 60 секунд, пока профиль открыт
Вторая машина
отказ с именем держателя и сроком
Профиль закрыт
замок снимается сразу
Машину обесточили
замок отпускает сам

Эти числа те же, что держит замок профиля на сервере и продление в программе.

ТарифМест под машиныПрофилей
Бесплатный12
Профессиональный2от 10 до 100
Деловой5от 200 до 1000
Корпоративный20от 5000 и выше

Чего это не делает

  • Ничего за вас не хранит. Нет папки или не запущено облачное приложение, значит нет и обмена. Пока облако не докачало файл, программа ждёт и в этот раз не делает ничего.
  • Не сводит две сессии в одну. Когда менялись обе стороны, вы выбираете одну, вторая откладывается копией, а свести их придётся руками.
  • Не трогает открытый профиль ни в одну сторону. Профиль, открытый весь день, не уедет, пока вы его не закроете.
  • Это не зеркало в реальном времени. Сессии ездят перед открытием профиля, через несколько секунд после закрытия, при запуске программы и по кнопке.
  • Потерянный пароль не восстанавливается: файлы, уже лежащие в папке, открыть будет нечем. Так задумано, копии пароля у нас нет.

Как проверить

За каждым утверждением выше стоит файл, а за большинством ещё и стенд, который исполняет настоящий код.

В папке лежит шифрованный файл, и полный круг возвращает те же куки
apps/desktop/src/lib/sessionSync.js · apps/desktop/test/session-sync-folder.js
Менялись обе стороны: не затирается ничего, а заменённое откладывается рядом
apps/desktop/src/main/main.js · apps/desktop/test/conflict-keeps-copy.js
Архив, выгруженный облаком или ещё не докачанный, не читается как пустая папка
apps/desktop/src/lib/sessionSync.js · apps/desktop/test/cloud-evicted-file.js
Профиль открывается на одной машине за раз, а перехват осознанный
apps/server/src/profiles/profiles.service.ts · apps/server/test/profile-lock.js
Места идут за действующим тарифом, а отвязка машины запоминается
apps/server/src/devices/devices.service.ts · apps/server/test/team-money-seats.js · apps/desktop/test/device-identity.js

Вопросы

Насколько большим бывает архив сессии?
Архив тяжелее 400 МБ вы получите отказом сразу, а не половиной файла. Поэтому кэши и следы падений уходят из архива первыми: это сотни мегабайт, которые сайт наливает сам.
Можно ли поднять профиль, который есть только в папке?
Да. Кнопка «Найти профили в папке» покажет вам то, что лежит там и чего нет здесь, а настройки приедут из самого архива, поэтому работает это даже без аккаунта.
Что будет, если сменить пароль от файлов синхронизации?
Каждый ваш профиль уедет заново под новым паролем, и программа скажет, сколько их. Иначе в папке незаметно копилась бы смесь из двух паролей.
Уходит ли к вам что-нибудь о моих сессиях?
Одна строка и только после работы: какая машина, в какую сторону, вышло или нет и короткое имя ошибки. Ни имён файлов, ни содержимого, а без этой строки кабинет не показал бы о сессиях вообще ничего.
А если закрыть программу до отправки?
Отправку программа догонит при следующем запуске, по одному профилю и с паузой между ними. Собрать тридцать сессий разом значило бы подвесить машину сразу после старта.

Настройте это на обоих компьютерах

Когда ARMANOS стоит на обеих машинах, покажите обеим одну папку и задайте одинаковый пароль. Первая сессия уедет туда, как только вы закроете профиль.