cargo-features = ["profile-rustflags"] [workspace] members = [ "warpgate", "warpgate-admin", "warpgate-aws", "warpgate-common-cache", "warpgate-common", "warpgate-secrets-vault", "warpgate-common-http", "warpgate-tls", "warpgate-core", "warpgate-desktop-auth", "warpgate-db-migrations", "warpgate-db-entities", "warpgate-database-protocols", "warpgate-ldap", "warpgate-protocol-http", "warpgate-protocol-kubernetes", "warpgate-protocol-mysql", "warpgate-protocol-postgres", "warpgate-protocol-rdp", "warpgate-protocol-ssh", "warpgate-protocol-vnc", "warpgate-desktop-ui", "warpgate-sso", "warpgate-web", "warpgate-web-clients-common", "warpgate-web-desktop", "warpgate-web-ssh", ] # Vendored IronRDP forks (path deps / patches). They are excluded from the workspace so # Cranky's deny lints don't apply to their upstream code. Each carries a PATCHES.md # describing the fork and a warpgate.patch reproducing it. ironrdp-server is a git snapshot # (no release builds against the current crate generation); the other two add the # credential-less CredSSP mode interactive-logon targets need. exclude = [ "vendor/ironrdp-async", "vendor/ironrdp-connector", "vendor/ironrdp-server", ] default-members = ["warpgate"] resolver = "2" [patch.crates-io] ironrdp-async = { path = "vendor/ironrdp-async" } ironrdp-connector = { path = "vendor/ironrdp-connector" } ironrdp-server = { path = "vendor/ironrdp-server" } [workspace.dependencies] aes-gcm = { version = "0.11", default-features = false, features = [ "aes", "alloc", ] } anyhow = { version = "1.0", default-features = false, features = ["std"] } async-trait = { version = "0.1", default-features = false } argon2 = { version = "0.5", default-features = false, features = [ "password-hash", "alloc", ] } bytes = { version = "1.4", default-features = false } data-encoding = { version = "2.3", default-features = false, features = [ "alloc", "std", ] } ipnet = { version = "2", default-features = false } jpeg-encoder = { version = "0.7", default-features = false, features = ["std"] } serde = { version = "1.0", features = ["derive"], default-features = false } serde_json = { version = "1.0", default-features = false } russh = { version = "0.65.0", features = [ "des", "dsa", "rsa", "aws-lc-rs", ], default-features = false } futures = { version = "0.3", default-features = false } http = { version = "1.4", default-features = false } tokio-stream = { version = "0.1.17", features = [ "net", ], default-features = false } tokio-rustls = { version = "0.26", default-features = false } tls-listener = { version = "0.11.2", features = [ "rustls-core", ], default-features = false } enum_dispatch = { version = "0.3.13", default-features = false } rustls = { version = "0.23", default-features = false, features = ["tls12"] } sqlx = { version = "0.8", features = [ "tls-rustls-aws-lc-rs", ], default-features = false } sea-orm = { version = "1.0", default-features = false, features = [ "runtime-tokio", "macros", "with-time", "with-uuid", ] } sea-orm-migration = { version = "1.0", default-features = false } poem = { version = "3.1", features = [ "cookie", "session", "anyhow", "websocket", "rustls", "embed", "server", ], default-features = false } ppp = { version = "2.3", default-features = false } hex = { version = "0.4", default-features = false } html-escape = { version = "0.2", default-features = false } poem-openapi = { version = "5.1", features = [ "stoplight-elements", "uuid", "static-files", "cookie", "time", ], default-features = false } password-hash = { version = "0.5", features = [ "std", ], default-features = false } delegate = { version = "0.13", default-features = false } subtle = { version = "2", default-features = false } tracing = { version = "0.1", default-features = false } schemars = { version = "1.2", default-features = false, features = [ "derive", "std", ] } ldap3 = { version = "0.12", default-features = false, features = [ "tls-rustls-aws-lc-rs", ] } rustls-pki-types = { version = "1.13", default-features = false, features = [ "alloc", "std", ] } thiserror = { version = "2", default-features = false } rand = { version = "0.10", default-features = false } rand_chacha = { version = "0.10", default-features = false } rand_core = { version = "0.10", default-features = false } sha2 = { version = "0.11", default-features = false } dialoguer = { version = "0.12", default-features = false, features = [ "editor", "password", ] } tokio = { version = "1.52", features = [ "tracing", "signal", "macros", "rt-multi-thread", "io-util", ], default-features = false } tokio-util = { version = "0.7", features = ["rt"] } quick_cache = "0.7.0" governor = { version = "0.10.0", default-features = false, features = [ "std", "quanta", "jitter", ] } rcgen = { version = "0.14", features = [ "zeroize", "crypto", "aws_lc_rs", "pem", "x509-parser", ], default-features = false } x509-parser = { version = "0.18.1", default-features = false } uuid = { version = "1.23", features = [ "v4", "serde", ], default-features = false } reqwest = { version = "0.13", features = [ "http2", # required for connecting to targets behind AWS ELB "rustls-no-provider", "stream", "gzip", ], default-features = false } reqwest_12 = { package = "reqwest", version = "0.12", features = [ "http2", "rustls-tls-native-roots-no-provider", "stream", "gzip", ], default-features = false } # separate copy to control features on openidconnect->oauth2->reqwest regex = { version = "1.6", default-features = false, features = ["std"] } tokio-tungstenite = { version = "0.30", features = [ "rustls-tls-native-roots", "connect", ], default-features = false } reqwest-websocket = { version = "0.6.0", default-features = false } time = { version = "0.3", default-features = false } url = { version = "2.4", default-features = false } zune-jpeg = "0.5" [profile.dev] debug = "line-tables-only" [profile.release] lto = "thin" strip = "debuginfo" [profile.release-no-lto] inherits = "release" lto = false [profile.coverage] inherits = "dev" [profile.dev.package.aws-sdk-ec2] hint-mostly-unused = true [profile.release.package.aws-sdk-ec2] hint-mostly-unused = true [profile.dev.package.aws-sdk-rds] hint-mostly-unused = true [profile.release.package.aws-sdk-rds] hint-mostly-unused = true [profile.dev.package.aws-sdk-eks] hint-mostly-unused = true [profile.release.package.aws-sdk-eks] hint-mostly-unused = true [profile.dev.package.aws-sdk-s3] hint-mostly-unused = true [profile.release.package.aws-sdk-s3] hint-mostly-unused = true