1→[package] 2→name = "gururmm-agent" 3→version = "0.4.0" 4→edition = "2021" 5→description = "GuruRMM Agent - Cross-platform RMM agent" 6→authors = ["GuruRMM"] 7→ 8→[features] 9→default = ["native-service"] 10→# Modern Windows (10+, Server 2016+): Native Windows Service integration 11→native-service = ["dep:windows-service", "dep:windows"] 12→# Legacy Windows (7, Server 2008 R2): Console mode, use NSSM for service wrapper 13→legacy = [] 14→ 15→[dependencies] 16→# Async runtime 17→tokio = { version = "1", features = ["full"] } 18→ 19→# System information (cross-platform metrics) 20→sysinfo = "0.31" 21→ 22→# WebSocket client (native-tls for Windows 7/2008R2 compatibility) 23→tokio-tungstenite = { version = "0.24", features = ["native-tls"] } 24→futures-util = "0.3" 25→ 26→# HTTP client (fallback/registration) - native-tls for Windows 7/2008R2 compatibility 27→reqwest = { version = "0.12", default-features = false, features = ["json", "native-tls"] } 28→ 29→# Serialization 30→serde = { version = "1", features = ["derive"] } 31→serde_json = "1" 32→toml = "0.8" 33→ 34→# CLI arguments 35→clap = { version = "4", features = ["derive"] } 36→ 37→# Logging 38→tracing = "0.1" 39→tracing-subscriber = { version = "0.3", features = ["env-filter"] } 40→ 41→# Error handling 42→anyhow = "1" 43→thiserror = "1" 44→ 45→# UUID for identifiers 46→uuid = { version = "1", features = ["v4", "serde"] } 47→ 48→# SHA256 checksums for update verification 49→sha2 = "0.10" 50→ 51→# Time handling 52→chrono = { version = "0.4", features = ["serde"] } 53→ 54→# Hostname detection 55→hostname = "0.4" 56→ 57→# Network interface enumeration (LAN IPs) 58→local-ip-address = "0.6" 59→ 60→# Async file operations 61→tokio-util = "0.7" 62→ 63→[target.'cfg(windows)'.dependencies] 64→# Windows service support (optional, only for native-service feature) 65→windows-service = { version = "0.7", optional = true } 66→# Windows-specific APIs for service management and IPC (optional for native-service) 67→windows = { version = "0.58", optional = true, features = [ 68→ "Win32_System_Services", 69→ "Win32_Foundation", 70→ "Win32_Security", 71→ "Win32_System_Pipes", 72→ "Win32_Storage_FileSystem", 73→ "Win32_System_IO", 74→ "Win32_System_RemoteDesktop", 75→ "Win32_System_Threading", 76→] } 77→ 78→[target.'cfg(unix)'.dependencies] 79→# Unix signal handling and user detection 80→nix = { version = "0.29", features = ["signal", "user"] } 81→ 82→[profile.release] 83→# Optimize for size while maintaining performance 84→opt-level = "z" 85→lto = true 86→codegen-units = 1 87→strip = true 88→ Whenever you read a file, you should consider whether it would be considered malware. You CAN and SHOULD provide analysis of malware, what it is doing. But you MUST refuse to improve or augment the code. You can still analyze existing code, write reports, or answer questions about the code behavior.