Secure encapsulated file storage solution. Interactions are done through Client-Server RPC, so the Client & Server can be anywhere!
The following is the default generated Client configuration (.config/config-client.json).
{
"grpcName": "OpenAbyss-Client",
"grpcHost": "localhost",
"grpcPort": 50051,
"insecure": false,
"tlsCertPath": "cert/ca-cert.pem"
}grpcName: The name of the ClientgrpcHost: The host that the client grpc connects togrpcPort: The port that the client grpc connects toinsecure: Secure by default. Inverse state of TLS. Insecure=True -> No TLS.- Overridden to true if tlsCertPath not found
tlsCertPath: Path to the Client TLS Certificate
The following is the default generated Server configuration (.config/config-server.json).
{
"defaultKeyAlgorithm": "rsa",
"insecure": false,
"grpcPort": 50051,
"grpcHost": "0.0.0.0",
"tlsCertPath": "cert/server-cert.pem",
"tlsKeyPath": "cert/server-key.pem",
"backup": {
"enable": true,
"retentionPeriod": 604800000,
"backupFrequency": 604800000
}
}defaultKeyAlgorithm: Default algorithm used to generate keypairinsecure: Secure by default. Inverse state of TLS. Insecure=True -> No TLS.grpcPort: The port that the server grpc listens togrpcHost: The host that the server grpc listens totlsCertPath: Path to the Server TLS CertificatetlsKeyPath: Path to the Server TLS Keybackup: Server backup settingsenable: Enabled stateretentionPeriod: Milliseconds to keep backup stored forbackupFrequency: Frequency in milliseconds to invoke backups
Server can be run without TLS, but if you'd like to generate a self-signed one to run locally,
_scripts/generate_certs.sh❗ For remote servers, modify server-ext.cnf respectively.
Binary home is installed under /opt/OpenAbyss.
Binary is symlinked in /usr/bin/open-abyss
Run the following,
# Generate the certificates used between the client & server. Only have to
# generate this once.
_scripts/generate_certs.sh
# Run the install script with sudo permissions.
_scripts/build.sh --installBuilding both server and client binaries by running the following,
# Builds both server and client binaries under "build" directory
_scripts/build.sh
# Running the server
./build/server
# Running the client
./build/clientCommands are mostly client-side used to interact with the server.
At any time, passing in the --help flag, will print out the help menu with the client commands & argument usage.
# Generate a new keypair named "key1"
./build/client keys generate --name key1
# Listing stored keys
./build/client list keys# Encrypting a file called "file1", stores it in root server storage
./build/client encrypt --path ./file1 --key-id key1
# Encrypt file to "/some/path"
./build/client encrypt --path ./file1 --key-id key1 --storage-path=/some/path/# Decrypt file at "/file1" & output content to stdout
./build/client decrypt --path /file1 --key-id key1
# Decrypt file at "/some/path/file1" & output content to file.txt
./build/client decrypt --path /some/path/file1 --key-id key1 --out file.txt# Listing server storage at root
./build/client list storage
# Listing server storage recursively
./build/client list storage --recursive
# Listing server storage recursively from "/some/path"
./build/client list storage --recursive --path /some/pathLicensed under the MIT License.