runewarp 0.1.0

Runewarp is an ingress tunneling tool for exposing local services without moving TLS termination to the edge. Clients connect out over QUIC, so you can publish services without putting your backend directly on the Internet or leaking your public IP.
Documentation
mod acme;
mod client;
mod client_hello;
mod client_public_cert;
mod config_preparation;
mod hostname;
mod identity;
mod paths;
mod proxy;
mod quic;
pub mod runtime_log;
mod server;
mod server_address;
mod server_cert;
mod settings;
mod shutdown;
mod startup;
mod tls_material;
mod trust;

pub use client::{
    Client, ClientConfig, ClientConnectError, ClientRuntimeArgs, ClientSettingsResolutionDefaults,
    ClientSettingsResolutionError, SelectedClientConfig, resolve_client_settings_from_cli,
    resolve_selected_client_settings, select_client_config,
};
pub use client_hello::{
    CLIENT_HELLO_BUFFER_LIMIT, ClientHelloError, ParsedClientHello, read_client_hello,
};
pub use client_public_cert::{
    CLIENT_PUBLIC_CA_FILENAME, CLIENT_PUBLIC_CA_LIFETIME_DAYS, CLIENT_PUBLIC_CERT_FILENAME,
    CLIENT_PUBLIC_CERT_LIFETIME_DAYS, CLIENT_PUBLIC_KEY_FILENAME, ClientPublicCertError,
    client_public_cert_leaf_dir, initialize_manual_client_public_cert,
    renew_manual_client_public_cert, rotate_manual_client_public_cert_authority,
};
pub use identity::{
    CLIENT_CERT_FILENAME, CLIENT_CERT_LIFETIME_DAYS, CLIENT_CERT_RENEW_AFTER_DAYS,
    CLIENT_IDENTITY_FILENAME, CLIENT_KEY_FILENAME, ClientCertificateRenewalDecision,
    ClientCertificateState, ClientIdentity, ClientIdentityMaterialError, GeneratedClientIdentity,
    ParseClientIdentityCertificateError, ParseClientIdentityError,
    client_identity_from_certificate_der, decide_client_certificate_renewal,
    generate_client_identity, inspect_client_certificate_renewal, read_client_identity,
    renew_client_identity_certificate, rotate_client_identity,
};
pub use paths::{
    XdgPathError, default_client_acme_state_dir, default_client_identity_material_dir,
    default_client_public_cert_material_dir, default_client_server_ca_path, default_config_path,
    default_server_acme_state_dir, default_server_cert_material_dir,
};
pub use quic::{
    HANDSHAKE_TIMEOUT, IDLE_TIMEOUT, KEEPALIVE_INTERVAL, MAX_SERVER_OPENED_BIDI_STREAMS,
    QuicConfigError, RUNEWARP_ALPN, make_client_quic_config,
    make_client_quic_config_with_client_auth, make_server_quic_config,
    make_server_quic_config_with_client_auth, make_server_quic_config_with_client_auth_resolver,
};
pub use server::{Server, ServerConfig};
pub use server_cert::{
    SERVER_CA_FILENAME, initialize_manual_server_certificate, inspect_manual_server_certificate,
    renew_manual_server_certificate, rotate_manual_server_certificate_authority,
};
pub use settings::{
    ClientPublicCertConfig, ClientServiceSettings, ClientSettings, ClientTlsMode, LogLevel,
    ServerCertificateSettings, ServerSettings, ServerSettingsResolutionError, ServerTunnelSettings,
    SettingsError, load_client_settings, load_server_settings,
    resolve_client_identity_material_dir_from_config,
    resolve_client_public_cert_material_dir_from_config,
    resolve_server_cert_material_dir_from_config, resolve_server_hostname_from_config,
    resolve_server_settings_from_cli, resolve_terminating_hostnames_from_config,
};
pub use startup::{ClientStartupError, PreparedClient, PreparedServer, ServerStartupError};