[package]
name = "ssh-commander-core"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Async Rust domain layer for SSH, SFTP, FTP/FTPS, PostgreSQL, and connection management — the engine behind midnight-ssh."
documentation = "https://docs.rs/ssh-commander-core"
readme = "../../README.md"
keywords = ["ssh", "sftp", "ftp", "postgres", "tunnel"]
categories = ["network-programming", "database", "asynchronous", "authentication"]
[dependencies]
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["full"] }
async-trait = "0.1"
russh = { version = "0.43", features = ["openssl", "vendored-openssl"] }
russh-keys = { version = "0.43", features = ["vendored-openssl"] }
russh-sftp = "2"
anyhow = "1"
thiserror = "2"
tracing = "0.1"
tokio-util = "0.7"
futures = "0.3"
suppaftp = { version = "6", features = ["async-native-tls"] }
async-std = "1"
dirs = "5"
rand = "0.8"
chrono = { version = "0.4", default-features = false, features = ["clock"] }
tokio-postgres = { version = "0.7", features = ["runtime", "with-chrono-0_4"] }
tokio-postgres-rustls = "0.13"
rustls = { version = "0.23", default-features = false, features = ["ring"] }
rustls-native-certs = "0.8"
uuid = { version = "1", features = ["v4"] }
[target.'cfg(target_os = "macos")'.dependencies]
security-framework = "3"
security-framework-sys = "2"
[dev-dependencies]
tempfile = "3"