gophkeeper

module
v0.0.0-...-9df599e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2024 License: MIT

README

Gophkeeper

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

Содержание

Принцип работы

Серверная часть приложения предназначена для синхронизации данных между клиентами и шифрования данных. Для шифрования данных сервер использует алгоритмы GCM и AES-256 (ключ шифрования передается в перменной среды или флага при запуске). Для синхронизации данных используется временная метка, которую отправляет клиент при любом обращении с данными, а также флаг, указывающий удалены данные или нет. Использует в качестве хранилища PostgreSQL для метаданных, которые не шифруются: описание, врменная метка и т.д. Для самих шифрованных данных использует MinIO.

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

Быстрый старт

Сервер

Запустить серверную часть с помощью docker compose:

cd ./deploy
# команда запустит MinIO, PostgreSQL
docker compose up -d --build
Клиент

Для запуска клиентского приложения можно воспользоваться готовыми собранными бинарниками

Directories

Path Synopsis
cmd
client
Package main пакет для запуска клиентского приложения
Package main пакет для запуска клиентского приложения
server
Package main пакет для запуска серверного приложения
Package main пакет для запуска серверного приложения
internal
app/cliclient
Package app/cliclient это пакет для сборки и запуска клиентского cli приложения
Package app/cliclient это пакет для сборки и запуска клиентского cli приложения
app/server
Package server пакет для запуска серверного приложения
Package server пакет для запуска серверного приложения
common
Package common содержит общие пакеты для всего приложения
Package common содержит общие пакеты для всего приложения
common/datacipher
Package secretkeycipher реализует шифрование/дешифрование данных
Package secretkeycipher реализует шифрование/дешифрование данных
common/datahash
Package datahash реализует хеширование данных
Package datahash реализует хеширование данных
common/datatype
Package datatype содержит константы для хранимых типов данных
Package datatype содержит константы для хранимых типов данных
common/passwordhash
Package passwordhash хеширует пароль
Package passwordhash хеширует пароль
common/refreshtoken
Package refreshtoken реализует создание токена обновленния
Package refreshtoken реализует создание токена обновленния
common/secretkeycipher
Package secretkeycipher реализует шифрование/дешифрование/создание секретного ключа пользователя
Package secretkeycipher реализует шифрование/дешифрование/создание секретного ключа пользователя
controller/cliclient
Package controller/cliclient реализует слой интерфейсов для клиентского приложения
Package controller/cliclient реализует слой интерфейсов для клиентского приложения
controller/grpcserver
Package controller/grpcserver релизует интерфейсный слой серверного приложения
Package controller/grpcserver релизует интерфейсный слой серверного приложения
logger
Package logger Логер всего приложения
Package logger Логер всего приложения
storage/model/auth
Package storage/model/auth пакет содержит модели для auth хранилища
Package storage/model/auth пакет содержит модели для auth хранилища
storage/postgres
Package postgres реализация хранилища в PostgreSQL
Package postgres реализация хранилища в PostgreSQL
usecase/auth
Package auth - usecase для аутентификации
Package auth - usecase для аутентификации
usecase/auth/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
usecase/model/auth
Package usecase/model/auth модели auth usecase
Package usecase/model/auth модели auth usecase
usecase/store/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL