Add certificate check configuration options

This commit is contained in:
Alexander Krotov
2019-09-29 22:54:39 +03:00
parent 230c65594c
commit 297bc635e8
2 changed files with 40 additions and 0 deletions

View File

@@ -4,6 +4,20 @@ use std::fmt;
use crate::context::Context;
use crate::error::Error;
#[derive(Debug, FromPrimitive)]
#[repr(i32)]
pub enum CertificateChecks {
Strict,
AcceptInvalidHostnames,
AcceptInvalidCertificates,
}
impl Default for CertificateChecks {
fn default() -> Self {
Self::AcceptInvalidCertificates
}
}
#[derive(Default, Debug)]
pub struct LoginParam {
pub addr: String,
@@ -11,10 +25,14 @@ pub struct LoginParam {
pub mail_user: String,
pub mail_pw: String,
pub mail_port: i32,
/// IMAP TLS options: whether to allow invalid certificates and/or invalid hostnames
pub mail_certificate_checks: CertificateChecks,
pub send_server: String,
pub send_user: String,
pub send_pw: String,
pub send_port: i32,
/// SMTP TLS options: whether to allow invalid certificates and/or invalid hostnames
pub send_certificate_checks: CertificateChecks,
pub server_flags: i32,
}
@@ -48,6 +66,14 @@ impl LoginParam {
let key = format!("{}mail_pw", prefix);
let mail_pw = sql.get_config(context, key).unwrap_or_default();
let key = format!("{}mail_certificate_checks", prefix);
let mail_certificate_checks =
if let Some(certificate_checks) = sql.get_config_int(context, key) {
num_traits::FromPrimitive::from_i32(certificate_checks).unwrap_or_default()
} else {
Default::default()
};
let key = format!("{}send_server", prefix);
let send_server = sql.get_config(context, key).unwrap_or_default();
@@ -60,6 +86,14 @@ impl LoginParam {
let key = format!("{}send_pw", prefix);
let send_pw = sql.get_config(context, key).unwrap_or_default();
let key = format!("{}send_certificate_checks", prefix);
let send_certificate_checks =
if let Some(certificate_checks) = sql.get_config_int(context, key) {
num_traits::FromPrimitive::from_i32(certificate_checks).unwrap_or_default()
} else {
Default::default()
};
let key = format!("{}server_flags", prefix);
let server_flags = sql.get_config_int(context, key).unwrap_or_default();
@@ -69,10 +103,12 @@ impl LoginParam {
mail_user,
mail_pw,
mail_port,
mail_certificate_checks,
send_server,
send_user,
send_pw,
send_port,
send_certificate_checks,
server_flags,
}
}