[package] name = "khm" version = "0.7.1" edition = "2021" authors = ["AB "] description = "KHM - Known Hosts Manager for SSH key management and synchronization" homepage = "https://github.com/house-of-vanity/khm" repository = "https://github.com/house-of-vanity/khm" license = "WTFPL" keywords = ["ssh", "known-hosts", "security", "system-admin", "automation"] categories = ["command-line-utilities", "network-programming"] [lib] crate-type = ["cdylib", "rlib"] [[bin]] name = "khm" path = "src/bin/cli.rs" [[bin]] name = "khm-desktop" path = "src/bin/desktop.rs" required-features = ["gui"] [dependencies] actix-web = { version = "4", optional = true } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" log = "0.4" regex = { version = "1.10.5", optional = true } base64 = { version = "0.21", optional = true } tokio = { version = "1", features = ["full", "sync"], optional = true } tokio-postgres = { version = "0.7", features = ["with-chrono-0_4"], optional = true } tokio-util = { version = "0.7", features = ["codec"], optional = true } clap = { version = "4", features = ["derive"], optional = true } chrono = { version = "0.4.38", features = ["serde"], optional = true } reqwest = { version = "0.12", features = ["json"], optional = true } trust-dns-resolver = { version = "0.23", optional = true } futures = { version = "0.3", optional = true } hostname = { version = "0.3", optional = true } rust-embed = { version = "8.0", optional = true } tray-icon = { version = "0.21", optional = true } notify = { version = "6.1", optional = true } notify-debouncer-mini = { version = "0.4", optional = true } dirs = "5.0" eframe = { version = "0.29", optional = true } egui = { version = "0.29", optional = true } wasm-bindgen-futures = { version = "0.4", optional = true } web-sys = { version = "0.3", optional = true } wasm-bindgen = { version = "0.2", optional = true } console_error_panic_hook = { version = "0.1", optional = true } tracing-wasm = { version = "0.2", optional = true } getrandom = { version = "0.2", features = ["js"], optional = true } winit = { version = "0.30", optional = true } env_logger = "0.11" urlencoding = "2.1" # Linux-specific dependencies for GTK tray support [target.'cfg(target_os = "linux")'.dependencies] gtk = { version = "0.18", optional = true } glib = { version = "0.18", optional = true } [features] default = ["server", "web", "gui"] cli = ["server", "web", "web-gui"] desktop = ["gui"] gui = ["tray-icon", "eframe", "egui", "winit", "notify", "notify-debouncer-mini", "gtk", "glib"] web-gui = ["egui", "eframe", "wasm-bindgen-futures", "web-sys", "wasm-bindgen", "console_error_panic_hook", "tracing-wasm", "getrandom"] web-gui-wasm = ["web-gui"] server = ["actix-web", "tokio", "tokio-postgres", "tokio-util", "clap", "chrono", "regex", "base64", "futures", "hostname", "rust-embed", "trust-dns-resolver", "reqwest"] web = ["server"] # Target-specific dependencies for cross-compilation [target.aarch64-unknown-linux-gnu.dependencies] openssl = { version = "0.10", features = ["vendored"] } # WASM-specific dependencies [target.'cfg(target_arch = "wasm32")'.dependencies] getrandom = { version = "0.2", features = ["js"] }