Cargo Features

[dependencies]
rusty-penguin = { version = "0.7.0", default-features = false, features = ["rustls-webpki-roots", "rustls-native-roots", "nativetls", "dev-dependencies", "tests-real-internet4", "tests-real-internet6", "tests-udp", "tests-acme-has-pebble", "default-is-ipv6", "rustls-keylog", "tokio-console", "remove-logging", "deadlock-detection", "acme", "tungstenite", "penguin-binary"] }
default = acme, penguin-binary, rustls-native-roots, tests-real-internet4, tests-udp, tungstenite

These default features are set whenever rusty-penguin is added without default-features = false somewhere in the dependency tree.

rustls-webpki-roots

Note that it does not make sense to use more than one TLS implementations at the same time, but there must be at least one if penguin-binary is enabled.

Enables webpki-roots ^0.26, rustls, rustls-pemfile, and tokio-rustls, rustls-tls-webpki-roots of reqwest, rustls-tls-webpki-roots of tokio-tungstenite

rustls-native-roots default

Enables rustls, rustls-native-certs, rustls-pemfile, and tokio-rustls, rustls-tls-native-roots of reqwest, rustls-tls-native-roots of tokio-tungstenite

nativetls

Enables tokio-native-tls, native-tls of tokio-tungstenite and native-tls of reqwest

reqwest:

Enables native-tls specific functionality not available by default.

dev-dependencies

Dependencies for testing

Enables rcgen, io-util, net and rt-multi-thread of tokio, env-filter of tracing-subscriber

tests-real-internet4 default

Allow some tests that require real internet connection

tests-real-internet6
tests-udp default

Allow some tests that uses UDP sockets. They may be flaky depending on the network environment.

tests-acme-has-pebble = acme

Test the ACME client with a local ACME server at https://localhost:14000/dir

default-is-ipv6

Set the default localhost or unspecified address to IPv6

rustls-keylog

Export key logs to a file specified via env SSLKEYLOGFILE

Enables rustls, rustls-pemfile, and tokio-rustls

tokio-console

Enabling this causes penguin to listen for tokio-console connections

Enables console-subscriber

remove-logging

Statically remove some logging code. This breaks tokio-console

Enables max_level_trace and release_max_level_debug of log and tracing

deadlock-detection

parking_lot's deadlock detection in a separate thread

Enables deadlock_detection of parking_lot

acme default tests-acme-has-pebble? = penguin-binary

obtaining certificate automatically using ACME protocol

Enables instant-acme and rcgen, process of tokio

Affects arg::ServerArgs.tls_domain, arg::ServerArgs.tls_acme_url, arg::ServerArgs.tls_acme_email, arg::ServerArgs.tls_acme_accept_tos, arg::ServerArgs.tls_acme_challenge_helper, server::acme, tls::make_tls_identity_from_rcgen_pem, tls::reload_tls_identity_from_rcgen_pem, native::make_server_config_from_rcgen_pem, rustls::make_server_config_from_rcgen_pem

tungstenite default penguin-binary

use tungstenite as the WebSocket implementation

Enables tokio-tungstenite

penguin-binary default acme = tungstenite

penguin binary

Enables tokio-tungstenite and tracing-subscriber, arc-swap, base64, clap, http-body-util, hyper, hyper-util, reqwest, and sha1, fs, io-std, io-util, net, rt-multi-thread and signal of tokio

Required by the penguin binary

Features from optional dependencies

In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.

log remove-logging?