dsfx/README.md

101 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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:
```bash
git clone https://koti.casa/numenor-labs/dsfx.git
cd dsfx
```
Build the project:
```bash
go build -o build-path-here ./...
```
Install dsfx on your system (optional):
```bash
go install ./...
```
---
## Usage
### Starting the Server
To start a dsfx server, run:
```bash
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:
```bash
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 servers 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:
```bash
./dsfx-server -h
./dsfx-client -h
```
---
## Contributing
Contributions to dsfx are welcome and encouraged!
### How to Contribute
1. **Fork the Repository:** Create your own branch from the latest code in `main`.
2. **Make Your Changes:** Follow the [TigerStyle for Go](./TIGERSTYLE.md) guidelines to ensure code consistency and safety.
3. **Write Tests:** Ensure new features and bug fixes include proper tests.
4. **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](LICENSE) for details.