feat: HELIOS Remote v5.0.0 Final Release & Systemd Auto-Start Daemon
This commit is contained in:
10
common/Cargo.toml
Normal file
10
common/Cargo.toml
Normal file
@@ -0,0 +1,10 @@
|
||||
[package]
|
||||
name = "common"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
serde_json = "1.0"
|
||||
thiserror = "1.0"
|
||||
uuid = { version = "1.0", features = ["v4", "serde"] }
|
||||
166
common/src/lib.rs
Normal file
166
common/src/lib.rs
Normal file
@@ -0,0 +1,166 @@
|
||||
use serde::{Deserialize, Serialize};
|
||||
use thiserror::Error;
|
||||
use uuid::Uuid;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum HeliosError {
|
||||
#[error("Internal error: {0}")]
|
||||
Internal(String),
|
||||
#[error("Network error: {0}")]
|
||||
Network(String),
|
||||
#[error("Authentication error: {0}")]
|
||||
Auth(String),
|
||||
#[error("Serialization error: {0}")]
|
||||
Serialization(String),
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||
pub enum ProtocolMessage {
|
||||
/// Initial handshake from Agent or Viewer to Relay
|
||||
Handshake {
|
||||
device_id: Uuid,
|
||||
session_token: String,
|
||||
is_agent: bool,
|
||||
},
|
||||
/// Response to Handshake
|
||||
AuthResponse {
|
||||
success: bool,
|
||||
message: String,
|
||||
},
|
||||
/// Screen frame data captured by Agent
|
||||
ScreenFrame {
|
||||
timestamp: u64,
|
||||
width: u32,
|
||||
height: u32,
|
||||
format: String,
|
||||
data: Vec<u8>,
|
||||
},
|
||||
/// Mouse and Keyboard input event sent by Viewer
|
||||
InputEvent {
|
||||
event_type: InputEventType,
|
||||
key_or_button: u32,
|
||||
x: i32,
|
||||
y: i32,
|
||||
},
|
||||
/// Chunked File Transfer packet
|
||||
FileChunk {
|
||||
transfer_id: Uuid,
|
||||
file_name: String,
|
||||
chunk_index: u32,
|
||||
total_chunks: u32,
|
||||
data: Vec<u8>,
|
||||
checksum: String,
|
||||
},
|
||||
/// Bidirectional Clipboard Synchronization packet
|
||||
ClipboardSync {
|
||||
text: String,
|
||||
timestamp: u64,
|
||||
},
|
||||
/// Real-time Audio Stream packet
|
||||
AudioChunk {
|
||||
timestamp: u64,
|
||||
channels: u8,
|
||||
sample_rate: u32,
|
||||
data: Vec<u8>,
|
||||
},
|
||||
/// List of available displays on target Agent
|
||||
MonitorInfoList {
|
||||
monitors: Vec<MonitorInfo>,
|
||||
},
|
||||
/// Request to switch active monitor for streaming
|
||||
SelectMonitor {
|
||||
monitor_id: u32,
|
||||
},
|
||||
/// Wake-on-LAN Magic Packet Request
|
||||
WolRequest {
|
||||
mac_address: String,
|
||||
broadcast_ip: Option<String>,
|
||||
},
|
||||
/// Remote Terminal Command Execution request
|
||||
TerminalCommand {
|
||||
command: String,
|
||||
},
|
||||
/// Remote Terminal Command Output response
|
||||
TerminalOutput {
|
||||
output: String,
|
||||
},
|
||||
/// Real-time System, GPU, and Docker Metrics
|
||||
SystemMetrics {
|
||||
cpu_usage: f32,
|
||||
ram_usage: f32,
|
||||
gpu_usage: f32,
|
||||
gpu_temp: f32,
|
||||
docker_containers: Vec<DockerContainerInfo>,
|
||||
},
|
||||
/// Model Context Protocol (MCP) AI Request
|
||||
McpRequest {
|
||||
request_id: String,
|
||||
method: String,
|
||||
params: String,
|
||||
},
|
||||
/// Model Context Protocol (MCP) AI Response
|
||||
McpResponse {
|
||||
request_id: String,
|
||||
result: String,
|
||||
},
|
||||
/// Autonomous AI State Analysis Report
|
||||
AiReport(AiAnalysisReport),
|
||||
/// Enterprise Security Audit Log Event
|
||||
AuditEvent(AuditLogEvent),
|
||||
/// Ping/Pong Heartbeat between endpoints
|
||||
Heartbeat {
|
||||
timestamp: u64,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||
pub struct AiAnalysisReport {
|
||||
pub report_id: String,
|
||||
pub timestamp: u64,
|
||||
pub threat_level: String,
|
||||
pub summary: String,
|
||||
pub recommendations: Vec<String>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||
pub struct AuditLogEvent {
|
||||
pub event_id: String,
|
||||
pub event_type: String,
|
||||
pub user_id: String,
|
||||
pub details: String,
|
||||
pub timestamp: u64,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||
pub struct DockerContainerInfo {
|
||||
pub id: String,
|
||||
pub name: String,
|
||||
pub image: String,
|
||||
pub status: String,
|
||||
}
|
||||
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
|
||||
pub struct MonitorInfo {
|
||||
pub id: u32,
|
||||
pub name: String,
|
||||
pub width: u32,
|
||||
pub height: u32,
|
||||
pub is_primary: bool,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum InputEventType {
|
||||
MouseMove,
|
||||
MouseDown,
|
||||
MouseUp,
|
||||
KeyDown,
|
||||
KeyUp,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||
pub struct Packet {
|
||||
pub id: u64,
|
||||
pub message: ProtocolMessage,
|
||||
}
|
||||
|
||||
3
common/src/main.rs
Normal file
3
common/src/main.rs
Normal file
@@ -0,0 +1,3 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
||||
Reference in New Issue
Block a user