feat: HELIOS Remote v5.0.0 Final Release & Systemd Auto-Start Daemon
Some checks failed
HELIOS Remote CI/CD Pipeline / Check & Test Workspace (push) Has been cancelled
HELIOS Remote CI/CD Pipeline / Build Release Binaries (push) Has been cancelled

This commit is contained in:
2026-07-26 20:07:09 +09:00
parent be8c4329ca
commit c11afbedd1
58 changed files with 6454 additions and 0 deletions

10
common/Cargo.toml Normal file
View 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
View 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
View File

@@ -0,0 +1,3 @@
fn main() {
println!("Hello, world!");
}