GophKeeper is a client-server system for securely storing logins, passwords, and other private data. The main functionality is concentrated in the client part, which allows users to manage their data. The client part can operate without synchronization with the server, providing the ability to manage data autonomously. The client stores data in the user's profile folder, settings in a JSON file, and data in an SQLite database.
- Go
- Postgres (if Docker is not used)
- Docker and Docker Compose
- make
-
Clone this repository and navigate to its folder:
git clone <repository-url> cd <repository-folder>
-
Use make to build and run the applications:
-
To build and run the client:
make run_client
-
To build and run the server:
make run_server
-
-
The server and database can be started using Docker Compose:
make docker-up
- Help: Help is available for each command with the
--helpand-hflags.
For example:gophkeeper save --helporgophkeeper save card --help. - Encryption: Encryption is performed using a randomly generated encryption key. This encryption key is generated once, when first needed, encrypted with a passphrase requested from the user, and stored in the profile settings. Subsequent access to the encryption key is through a passphrase request.
- List of Saved Data: Retrieving a list of keys of existing saved data does not require a passphrase or encryption key - only open data is displayed.
- Data Request by Key: Users can access their data by requesting it with a unique key. To do this, they need to enter a passphrase that unlocks the encryption key to unpack the encrypted data.
- Data Synchronization: Ability to synchronize data to the server specified in the settings. Data is transmitted in the same encrypted form as it is stored in the local database. The encryption key, encrypted with a passphrase, is stored in the user's settings on the server. Registration on the server is done with a separate synchronization password, and further authorization is done with a client token obtained during registration.
- User registration and authentication.
- Storage of the encrypted encryption key.
- Storage of the user's encrypted data.
- Data synchronization with authorized clients.
gophkeeper
gophkeeper -v
gophkeeper -h
gophkeeper [command] -hgophkeeper shellWhen saving data, the key is automatically generated based on the data type and current date; if necessary, a custom key can be set using the -k|--key parameter.
gophkeeper save [auth|bin|card|text] [args]gophkeeper save --help
gophkeeper save text -k "manual key name" -t "some text"
gophkeeper save bin -f filename -d "description"
gophkeeper save card --num 2222-4444-5555-1111 --exp 10/29 --cvv 123 --owner "Max Space"
gophkeeper save auth -l login -p password -k "my-key-name" -d site.comgophkeeper view <key name>gophkeeper config global
gophkeeper config usergophkeeper config user -e <email>
gophkeeper config user -s <synchronization server address>gophkeeper sync registergophkeeper sync nowgophkeeper sync passwordgophkeeper sync deleteThis project is licensed under the terms of the MIT License.
