#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use typed_builder::TypedBuilder;
pub use schemars::JsonSchema;
pub use serde::{Serialize, Deserialize};
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
#[kube(group = "traefik.io", version = "v1alpha1", kind = "TLSOption", plural = "tlsoptions")]
#[kube(namespaced)]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct TLSOptionSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "alpnProtocols")]
#[builder(default, setter(strip_option))]
pub alpn_protocols: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "cipherSuites")]
#[builder(default, setter(strip_option))]
pub cipher_suites: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clientAuth")]
#[builder(default, setter(strip_option))]
pub client_auth: Option<TLSOptionClientAuth>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "curvePreferences")]
#[builder(default, setter(strip_option))]
pub curve_preferences: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxVersion")]
#[builder(default, setter(strip_option))]
pub max_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "minVersion")]
#[builder(default, setter(strip_option))]
pub min_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "preferServerCipherSuites")]
#[builder(default, setter(strip_option))]
pub prefer_server_cipher_suites: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "sniStrict")]
#[builder(default, setter(strip_option))]
pub sni_strict: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, TypedBuilder, Default, PartialEq, JsonSchema)]
pub struct TLSOptionClientAuth {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "clientAuthType")]
#[builder(default, setter(strip_option))]
pub client_auth_type: Option<TLSOptionClientAuthClientAuthType>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "secretNames")]
#[builder(default, setter(strip_option))]
pub secret_names: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
pub enum TLSOptionClientAuthClientAuthType {
NoClientCert,
RequestClientCert,
RequireAnyClientCert,
VerifyClientCertIfGiven,
RequireAndVerifyClientCert,
}