3.0 KiB
dsfx: Distributed Secure File Exchange
dsfx is a robust, secure, and distributed file exchange system written in Go. Designed from the ground up for safety, performance, and ease of maintenance, dsfx enables encrypted file transfers between nodes in a distributed network. Its streamlined architecture ensures that file exchanges are both secure and efficient.
Features
- End-to-End Security: Uses modern cryptographic primitives to ensure that all file exchanges are encrypted and authenticated.
- Distributed Architecture: Designed for secure file exchange across multiple nodes with built-in support for key-based authentication.
- High Performance: Optimized for low latency and high throughput, with a focus on reliable and predictable behavior.
- Administrative and Metrics Interface: The dsfx client is not only used for file exchange but also to obtain real-time metrics and perform administrative actions against the dsfx server.
- Easy Integration: Built in Go with minimal external dependencies, dsfx is simple to deploy and integrate into existing systems.
Installation
Prerequisites
- Go 1.24 or later is required.
- Git
Build from Source
Clone the repository:
git clone https://koti.casa/numenor-labs/dsfx.git
cd dsfx
Build the project:
go build -o build-path-here ./...
Install dsfx on your system (optional):
go install ./...
Usage
Starting the Server
To start a dsfx server, run:
dsfx-server -config /path/to/server/config.yaml
The server listens for incoming secure file exchange requests on the defined TCP port. Configuration options (such as server keys, port, and logging settings) can be adjusted in the configuration file.
Running the Client
The dsfx client is used to obtain metrics and perform administrative actions against the server. For example:
dsfx-client -config /path/to/client/config.yaml -action metrics
dsfx-client -config /path/to/client/config.yaml -action admin -command "restart"
The client uses the server’s public key to verify its identity before initiating any admin actions or retrieving metrics.
Command-Line Options
Both the server and client come with a set of command-line flags. Use the help flag for detailed options:
./dsfx-server -h
./dsfx-client -h
Contributing
Contributions to dsfx are welcome and encouraged!
How to Contribute
- Fork the Repository: Create your own branch from the latest code in
main
. - Make Your Changes: Follow the TigerStyle for Go guidelines to ensure code consistency and safety.
- Write Tests: Ensure new features and bug fixes include proper tests.
- Submit a Pull Request: Document your changes clearly in your pull request.
Reporting Issues
Please use the Git repository's issue tracker to report bugs or suggest new features. Include as much detail as possible to help reproduce and address the issue.
License
dsfx is distributed under the MIT License. See LICENSE for details.