Initial commit: RAIDGuard X Rust/Slint GUI client and server
This commit is contained in:
+139
@@ -0,0 +1,139 @@
|
||||
# RAIDGuard X - GUI Client/Server Architecture
|
||||
|
||||
A modern Rust-based GUI application for managing RAID storage systems.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ raidguard_x_gui_client (Slint GUI) │
|
||||
│ - Cross-platform UI (macOS, Windows, Linux) │
|
||||
│ - TCP connection to server │
|
||||
│ - Real-time data display │
|
||||
└─────────────────────────┬───────────────────────────────────────────┘
|
||||
│ TCP JSON Protocol (:8923)
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ raidguard_x_gui_server (Mock/Real Backend) │
|
||||
│ - Provides RAID controller data │
|
||||
│ - Currently serves mock data │
|
||||
│ - Future: In-Band API to real RAID systems │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
raidguard_x_gui_server/ # Data server
|
||||
├── Cargo.toml
|
||||
├── src/
|
||||
│ ├── main.rs # Entry point
|
||||
│ ├── lib.rs
|
||||
│ ├── server.rs # TCP server
|
||||
│ ├── protocol/ # JSON message protocol
|
||||
│ ├── handlers/ # Request handlers
|
||||
│ └── mock/ # Mock data provider
|
||||
|
||||
raidguard_x_gui_client/ # GUI client
|
||||
├── Cargo.toml
|
||||
├── build.rs # Slint build script
|
||||
├── src/
|
||||
│ ├── main.rs # Entry point + Slint integration
|
||||
│ ├── lib.rs
|
||||
│ ├── app.rs # App state management
|
||||
│ ├── models/ # Data models
|
||||
│ └── protocol/ # Client protocol
|
||||
└── ui/
|
||||
└── main_window.slint # Slint UI definition
|
||||
```
|
||||
|
||||
## Build Requirements
|
||||
|
||||
- Rust 1.70+
|
||||
- For GUI client: `xcode-select` (macOS) or equivalent
|
||||
|
||||
## Build Instructions
|
||||
|
||||
### Server
|
||||
|
||||
```bash
|
||||
cd raidguard_x_gui_server
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
Run:
|
||||
```bash
|
||||
# Default port 8923
|
||||
cargo run --release
|
||||
|
||||
# Custom port
|
||||
SERVER_ADDR=127.0.0.1:8923 cargo run --release
|
||||
```
|
||||
|
||||
### Client
|
||||
|
||||
```bash
|
||||
cd raidguard_x_gui_client
|
||||
cargo build --release
|
||||
```
|
||||
|
||||
Run:
|
||||
```bash
|
||||
cargo run --release
|
||||
```
|
||||
|
||||
## Protocol
|
||||
|
||||
### Request Format
|
||||
```json
|
||||
{
|
||||
"id": "uuid-v4",
|
||||
"type": "request",
|
||||
"action": "get_controllers",
|
||||
"params": {}
|
||||
}
|
||||
```
|
||||
|
||||
### Response Format
|
||||
```json
|
||||
{
|
||||
"id": "uuid-v4",
|
||||
"type": "response",
|
||||
"status": "success",
|
||||
"data": { ... },
|
||||
"error": null
|
||||
}
|
||||
```
|
||||
|
||||
### Available Actions
|
||||
|
||||
| Action | Description |
|
||||
|--------|-------------|
|
||||
| `get_controllers` | Get all controllers |
|
||||
| `get_raids` | Get RAID arrays |
|
||||
| `get_disks` | Get physical disks |
|
||||
| `get_events` | Get event log |
|
||||
| `ping` | Health check |
|
||||
|
||||
## Development
|
||||
|
||||
### Testing the Server
|
||||
|
||||
```bash
|
||||
# Terminal 1: Start server
|
||||
cd raidguard_x_gui_server
|
||||
cargo run --release
|
||||
|
||||
# Terminal 2: Connect with netcat
|
||||
nc localhost 8923
|
||||
|
||||
# Send request:
|
||||
{"id":"test","type":"request","action":"get_controllers","params":{}}
|
||||
|
||||
# Response:
|
||||
{"id":"test","type":"response","status":"success","data":{"controllers":[...]}}
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
Proprietary - Accusys Inc.
|
||||
Reference in New Issue
Block a user