Struct ClientConfig

Source
pub struct ClientConfig { /* private fields */ }
Expand description

Client configuration struct

See library documentation for usage example.

Implementations§

Source§

impl ClientConfig

Source

pub fn new(id: String, coord: String) -> Self

Construct new ClientConfig

  • id is the Client’s name, which will be used to identify it to other clients.
  • coord is the hostname of the coordinator. The coordinator’s TLS certificate must match this name.

By default, Client will attempt to resolve the hostname coord and connect on the default port. Use set_port to change the port number, or use set_addr to specify a SocketAddr rather than relying on name resolution.

In all cases, the Client will ensure that the Coordinator’s TLS certificate matches the hostname specified as coord.

Source

pub fn set_port(&mut self, port: u16) -> &mut Self

Set the Coordinator’s port number to port

Source

pub fn set_addr(&mut self, addr: SocketAddr) -> &mut Self

Set the Coordinator’s address to addr, disabling name resolution

Note that Client will still ensure that Coordinator’s TLS certificate matches the name specified to ClientConfig::new.

Source

pub fn enable_keylog(&mut self) -> &mut Self

Enable logging key material to the file specified by the environment variable SSLKEYLOGFILE.

Source

pub fn set_ca(&mut self, ca: Certificate) -> &mut Self

Add a trusted certificate authority

This certificate authority is used to validate the Coordinator’s certificate.

Source

pub fn set_ca_from_file( &mut self, cert_path: &Path, ) -> Result<&mut Self, CertReadError>

Add a trusted certificate authority from a file

This is a convenience wrapper around ClientConfig::set_ca. Both PEM and DER formats are supported.

Source

pub fn set_client_ca(&mut self, ca: Certificate) -> &mut Self

Add a trusted certificate authority for checking Client certs

If no trusted CA is provided, self-signed Client certificates are required.

Source

pub fn set_client_ca_from_file( &mut self, cert_path: &Path, ) -> Result<&mut Self, CertReadError>

Add a trusted certificate authority for checking Client certs from a file

This is a convenience wrapper around ClientConfig::set_client_ca. Both PEM and DER formats are supported.

Source

pub fn set_srcaddr(&mut self, src: SocketAddr) -> &mut Self

Set the Client’s source address explicitly

By default, the source address is set to 0.0.0.0:0. To bind to a host-assigned IPv6 port instead, one might call

client_cfg.set_srcaddr(SocketAddr::new(IpAddr::V6(Ipv6Addr::UNSPECIFIED), 0));
Source

pub fn enable_stateless_retry(&mut self) -> &mut Self

Enable QUIC stateless retry.

Per QUIC spec, stateless retry defends against client address spoofing. The downside is that this adds another round-trip to new connections.

Source

pub fn disable_listen(&mut self) -> &mut Self

Disable Client listening for incoming direct connections

This means that all streams must be proxed through Coordinator

Source

pub fn disable_keepalive(&mut self) -> &mut Self

Disable Client keepalive messages

By default, Clients send a short keepalive message every 5 seconds. This setting disables that.

Note that when keepalive is disabled, the underlying transport will close idle connections after 10 seconds.

Source

pub fn disable_holepunch(&mut self) -> &mut Self

Disable holepunching

By default, Clients that are listening for incoming channels will attempt to set up a UDP Holepunch when alerted by the Coordinator that a new channel is incoming. This setting disables that.

Source

pub fn set_cert( &mut self, cert: CertificateChain, key: PrivateKey, key_der: Vec<u8>, ) -> &mut Self

Set a certificate and key for Client

This certificate is used to authenticate to the Coordinator and when accepting direct connections from other clients.

To be usable, a certificate must meet two criteria:

  • It must be valid for the Client id provided to ClientConfig::new, otherwise the coordinator will reject the connection.

  • If the Coordinator is configured to accept self-signed certificates (which is the default), this certificate must be self-signed. Otherwise, if the coordinator is configured to accept certificates signed by a particular CA (via CoordConfig::set_client_ca), this certificate must be signed by that CA.

Source

pub fn set_cert_from_file( &mut self, cert_path: &Path, key_path: &Path, ) -> Result<&mut Self, CertReadError>

Set a certificate and key for Client from file

This is a convenience wrapper around ClientConfig::set_cert. Both PEM and DER formats are supported.

Trait Implementations§

Source§

impl Clone for ClientConfig

Source§

fn clone(&self) -> ClientConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ClientConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more