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 --install
Building 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/client
Commands 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/path
Licensed under the MIT License.