GophKeeper представляет собой клиент-серверную систему, позволяющую пользователю надёжно и безопасно хранить логины, пароли, бинарные данные и прочую приватную информацию.
Сервер должен реализовывать следующую бизнес-логику:
- регистрация, аутентификация и авторизация пользователей;
- хранение приватных данных;
- синхронизация данных между несколькими авторизованными клиентами одного владельца;
- передача приватных данных владельцу по запросу.
Клиент должен реализовывать следующую бизнес-логику:
- аутентификация и авторизация пользователей на удалённом сервере;
- доступ к приватным данным по запросу.
Сборка go:
go build -o gophkeeper cmd/gophkeeper/main.go
Сборка gophkeeper в папку bin:
make buildsrv
Сборка go:
go build -o gk-client cmd/grpcclient/main.go
Сборка gk-client в папку bin:
make buildcli
Флаг "d" или переменная окружения "DATABASE_DSN" - строка соединения с базой данных postgres. Не обязательный, по умолчанию "postgres://postgres:postgres@localhost/gophkeeper". Пример:
gophkeeper -d postgres://user:passwd@db:5432/basename
Флаг "m" или переменная окружения "MIGRATE_PATH" - путь к файлам миграции. Не обязательный, по умолчанию "". Создаёт в указанной базе данных необходимые таблицы. Пример:
gophkeeper -m ./migrations
Флаг "a" или переменная окружения "RUN_ADDRESS" - адрес, порт запуска сервера. Не обязательный, по умолчанию ":28000". Пример:
gophkeeper -a :8080
Флаг "l" или переменная окружения "LOG_LEVEL" - уровень выводимых логов (debug, error, info, warn). Не обязательный, по умолчанию "info". Пример:
gophkeeper -l warn
Флаг "a" - адрес, порт сервера, который будет слушать клиент. Не обязательный, по умолчанию ":28000". Пример:
gk-client -a :8080
Клиент работает в интерактивном режиме, после запуска ждёт команды пользователя. Основные команды:
- exit - выход из клиента
- ping - проверка соединения
- login - авторизация пользователя
- reg - регистрация нового пользователя
- user - выбор авторизованного пользователя
- list (ls) - список хранимых данных
Хранилища которыми можно управлять после регистрации или авторизации:
- password - работа с хранилищем паролей
- note - работа с хранилищем заметок
- card - работа с хранилищем карт
- file - работа с хранилищем файлов
Для хранилищ определены следующие команд:
- ls - показать список
- get - прочитать данные из хранилища
- new - добавить данные в хранилище
- upd - обновить данные
- del - удалить из хранилища
Чтение, изменение, удаление выполняются по имени элемента.
:28000> reg
login: user-1
password: super-password
После удачной регистрации приглашение изменится на вид user@server> в данном случае "user-1@:28000>"
user-1@:28000> note ls
user-1@:28000> note new
name: note#1
notes: Какая-то важная заметка
user-1@:28000> note get note#1
name: note#1
notes: Какая-то важная заметка