Технические детали
Общая схема
Офлайн-доступ в Пассворке — локальный кэш отдельных записей, а не полная копия сейфа(ов). Он формируется после авторизации и синхронизации с сервером.
Как это работает:
- Пассворк хранит список выбранных записей, добавленных в офлайн-доступ.
- Десктопное приложение получает этот список через API.
- Локально сохраняются выбранные записи.
- Пароль и дополнительные поля записи перед сохранением шифруются отдельным локальным ключом.
- Если соединение с сервером пропадает, приложение использует локальный кэш.
- Когда соединение с сервером восстанавливается, приложение отправляет накопленные события и обновляет локальные данные.
Окно при недоступности сервера
Во время работы десктопное приложение отдельно отслеживает состояние сети и доступность сервера Пассворка. Потеря интернета, недоступный VPN, тайм-аут API-запроса или другая транспортная ошибка ещё не переводят приложение в оф лайн-режим автоматически. Сначала приложение выполняет контрольный запрос к серверу, чтобы исключить кратковременный сбой.
Если сервер всё ещё недоступен, открывается окно Ошибка подключения. В нём отображается адрес текущего хоста и список технических причин, которые стоит проверить. Окно нельзя закрыть кликом по фону — пользователь должен явно выбрать дальнейшее действие.
В окне доступны действия:
- Подключиться — повторно выполнить контрольный запрос к серверу. При успешном ответе приложение закрывает окно и продолжает онлайн-сессию.
- Офлайн-режим — доступен только пользователям, которым разрешён офлайн-доступ. Приложение закрывает окно, переключает интерфейс в офлайн-режим и перестаёт выполнять серверные запросы до повторного подключения.
- Выйти — выполняет локальный выход без обращения к серверу. Приложение отменяет активные запросы, очищает локальную сессию и переводит пользователя на экран входа.
После перехода в офлайн-режим в верхней панели отображается состояние недоступного сервера и кнопка повторного подключени я. Эта кнопка снова проверяет доступность сервера, обновляет сессию и только после успешного ответа возвращает приложение в онлайн-режим.
Холодный запуск без сети обрабатывается отдельно: если офлайн-доступ был включён заранее, приложение восстанавливает сохранённые авторизационные данные из локального хранилища и открывает офлайн-интерфейс без показа окна.
Где хранится кэш
Офлайн-данные хранятся в том же локальном файле БД, что и остальные служебные данные Пассворка:
- Windows —
%APPDATA%\@passwork\app\app-data.db; - macOS —
~/Library/Application Support/@passwork/app/app-data.db; - Linux —
~/.config/@passwork/app/app-data.db(или путь изXDG_CONFIG_HOME).
Как шифруются данные
В офлайн-доступе используется два уровня защиты.
Шифрование локальных записей
Чувствительные значения в app-data.db сохраняются через safeStorage. Это обёртка над хранилищем секретов операционной системы:
- Windows — DPAPI/хранилище учётных данных, привязанное к аккаунту пользователя;
- macOS — Связка ключей (Keychain);
- Linux — совместимый Secret Service (GNOME Keyring, KWallet и т.п.).
Ключи шифрования управляются операционной системой и не сохраняются в файлах приложения. В app-data.db попадают только зашифрованные base64-значения.