diff --git a/src/configure/auto_mozilla.rs b/src/configure/auto_mozilla.rs index c03c43a85..fd2016682 100644 --- a/src/configure/auto_mozilla.rs +++ b/src/configure/auto_mozilla.rs @@ -1,6 +1,7 @@ use quick_xml; use quick_xml::events::{BytesEnd, BytesStart, BytesText}; +use crate::constants::*; use crate::context::Context; use crate::dc_tools::*; use crate::login_param::LoginParam; @@ -120,13 +121,13 @@ fn moz_autoconfigure_text_cb( 13 => { let val_lower = val.to_lowercase(); if val_lower == "ssl" { - moz_ac.out.server_flags |= 0x200 + moz_ac.out.server_flags |= DC_LP_IMAP_SOCKET_SSL as i32 } if val_lower == "starttls" { - moz_ac.out.server_flags |= 0x100 + moz_ac.out.server_flags |= DC_LP_IMAP_SOCKET_STARTTLS as i32 } if val_lower == "plain" { - moz_ac.out.server_flags |= 0x400 + moz_ac.out.server_flags |= DC_LP_IMAP_SOCKET_PLAIN as i32 } } _ => {} @@ -139,13 +140,13 @@ fn moz_autoconfigure_text_cb( 13 => { let val_lower = val.to_lowercase(); if val_lower == "ssl" { - moz_ac.out.server_flags |= 0x20000 + moz_ac.out.server_flags |= DC_LP_SMTP_SOCKET_SSL as i32 } if val_lower == "starttls" { - moz_ac.out.server_flags |= 0x10000 + moz_ac.out.server_flags |= DC_LP_SMTP_SOCKET_STARTTLS as i32 } if val_lower == "plain" { - moz_ac.out.server_flags |= 0x40000 + moz_ac.out.server_flags |= DC_LP_SMTP_SOCKET_PLAIN as i32 } } _ => {} diff --git a/src/configure/auto_outlook.rs b/src/configure/auto_outlook.rs index 95b0f2c35..b3fdbe9b5 100644 --- a/src/configure/auto_outlook.rs +++ b/src/configure/auto_outlook.rs @@ -1,6 +1,7 @@ use quick_xml; use quick_xml::events::{BytesEnd, BytesStart, BytesText}; +use crate::constants::*; use crate::context::Context; use crate::dc_tools::*; use crate::login_param::LoginParam; @@ -167,9 +168,9 @@ unsafe fn outlk_autodiscover_endtag_cb(event: &BytesEnd, outlk_ad: &mut outlk_au outlk_ad.out.mail_server = to_string(outlk_ad.config[2]); outlk_ad.out.mail_port = port; if 0 != ssl_on { - outlk_ad.out.server_flags |= 0x200 + outlk_ad.out.server_flags |= DC_LP_IMAP_SOCKET_SSL as i32 } else if 0 != ssl_off { - outlk_ad.out.server_flags |= 0x400 + outlk_ad.out.server_flags |= DC_LP_IMAP_SOCKET_PLAIN as i32 } outlk_ad.out_imap_set = 1 } else if strcasecmp( @@ -181,9 +182,9 @@ unsafe fn outlk_autodiscover_endtag_cb(event: &BytesEnd, outlk_ad: &mut outlk_au outlk_ad.out.send_server = to_string(outlk_ad.config[2]); outlk_ad.out.send_port = port; if 0 != ssl_on { - outlk_ad.out.server_flags |= 0x20000 + outlk_ad.out.server_flags |= DC_LP_SMTP_SOCKET_SSL as i32 } else if 0 != ssl_off { - outlk_ad.out.server_flags |= 0x40000 + outlk_ad.out.server_flags |= DC_LP_SMTP_SOCKET_PLAIN as i32 } outlk_ad.out_smtp_set = 1 } diff --git a/src/configure/mod.rs b/src/configure/mod.rs index ccd549e5b..0b60fe6e5 100644 --- a/src/configure/mod.rs +++ b/src/configure/mod.rs @@ -1,7 +1,6 @@ use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC}; -use crate::constants::Event; -use crate::constants::DC_CREATE_MVBOX; +use crate::constants::*; use crate::context::Context; use crate::dc_tools::*; use crate::e2ee; @@ -283,13 +282,14 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &Context, _job: &Job) { } } if param.send_port == 0 { - param.send_port = if 0 != param.server_flags & 0x10000 { - 587 - } else if 0 != param.server_flags & 0x40000 { - 25 - } else { - 465 - } + param.send_port = + if 0 != param.server_flags & DC_LP_SMTP_SOCKET_STARTTLS as i32 { + 587 + } else if 0 != param.server_flags & DC_LP_SMTP_SOCKET_PLAIN as i32 { + 25 + } else { + 465 + } } if param.send_user.is_empty() && !param.mail_user.is_empty() { param.send_user = param.mail_user.clone(); @@ -297,24 +297,30 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &Context, _job: &Job) { if param.send_pw.is_empty() && !param.mail_pw.is_empty() { param.send_pw = param.mail_pw.clone() } - if !dc_exactly_one_bit_set(param.server_flags & (0x2 | 0x4)) { - param.server_flags &= !(0x2 | 0x4); - param.server_flags |= 0x4 - } - if !dc_exactly_one_bit_set(param.server_flags & (0x100 | 0x200 | 0x400)) { - param.server_flags &= !(0x100 | 0x200 | 0x400); - param.server_flags |= if param.send_port == 143 { 0x100 } else { 0x200 } + if !dc_exactly_one_bit_set(param.server_flags & DC_LP_AUTH_FLAGS as i32) { + param.server_flags &= !(DC_LP_AUTH_FLAGS as i32); + param.server_flags |= DC_LP_AUTH_NORMAL as i32 } if !dc_exactly_one_bit_set( - param.server_flags & (0x10000 | 0x20000 | 0x40000), + param.server_flags & DC_LP_IMAP_SOCKET_FLAGS as i32, ) { - param.server_flags &= !(0x10000 | 0x20000 | 0x40000); - param.server_flags |= if param.send_port == 587 { - 0x10000 - } else if param.send_port == 25 { - 0x40000 + param.server_flags &= !(DC_LP_IMAP_SOCKET_FLAGS as i32); + param.server_flags |= if param.send_port == 143 { + DC_LP_IMAP_SOCKET_STARTTLS as i32 } else { - 0x20000 + DC_LP_IMAP_SOCKET_SSL as i32 + } + } + if !dc_exactly_one_bit_set( + param.server_flags & (DC_LP_SMTP_SOCKET_FLAGS as i32), + ) { + param.server_flags &= !(DC_LP_SMTP_SOCKET_FLAGS as i32); + param.server_flags |= if param.send_port == 587 { + DC_LP_SMTP_SOCKET_STARTTLS as i32 + } else if param.send_port == 25 { + DC_LP_SMTP_SOCKET_PLAIN as i32 + } else { + DC_LP_SMTP_SOCKET_SSL as i32 } } /* do we have a complete configuration? */ @@ -428,8 +434,8 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &Context, _job: &Job) { success = false; } else { progress!(context, 850); - param.server_flags &= !(0x10000 | 0x20000 | 0x40000); - param.server_flags |= 0x10000; + param.server_flags &= !(DC_LP_SMTP_SOCKET_FLAGS as i32); + param.server_flags |= DC_LP_SMTP_SOCKET_STARTTLS as i32; param.send_port = 587; info!(context, "Trying: {}", ¶m); @@ -444,8 +450,8 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &Context, _job: &Job) { success = false; } else { progress!(context, 860); - param.server_flags &= !(0x10000 | 0x20000 | 0x40000); - param.server_flags |= 0x10000; + param.server_flags &= !(DC_LP_SMTP_SOCKET_FLAGS as i32); + param.server_flags |= DC_LP_SMTP_SOCKET_STARTTLS as i32; param.send_port = 25; info!(context, "Trying: {}", ¶m); diff --git a/src/constants.rs b/src/constants.rs index 5d1aab675..ddb9049b6 100644 --- a/src/constants.rs +++ b/src/constants.rs @@ -140,7 +140,7 @@ pub const DC_LP_AUTH_OAUTH2: usize = 0x2; /// Force NORMAL authorization, this is the default. /// If this flag is set, automatic configuration is skipped. -const DC_LP_AUTH_NORMAL: usize = 0x4; +pub const DC_LP_AUTH_NORMAL: usize = 0x4; /// Connect to IMAP via STARTTLS. /// If this flag is set, automatic configuration is skipped. @@ -148,7 +148,7 @@ pub const DC_LP_IMAP_SOCKET_STARTTLS: usize = 0x100; /// Connect to IMAP via SSL. /// If this flag is set, automatic configuration is skipped. -const DC_LP_IMAP_SOCKET_SSL: usize = 0x200; +pub const DC_LP_IMAP_SOCKET_SSL: usize = 0x200; /// Connect to IMAP unencrypted, this should not be used. /// If this flag is set, automatic configuration is skipped. @@ -160,19 +160,19 @@ pub const DC_LP_SMTP_SOCKET_STARTTLS: usize = 0x10000; /// Connect to SMTP via SSL. /// If this flag is set, automatic configuration is skipped. -const DC_LP_SMTP_SOCKET_SSL: usize = 0x20000; +pub const DC_LP_SMTP_SOCKET_SSL: usize = 0x20000; /// Connect to SMTP unencrypted, this should not be used. /// If this flag is set, automatic configuration is skipped. pub const DC_LP_SMTP_SOCKET_PLAIN: usize = 0x40000; /// if none of these flags are set, the default is chosen -const DC_LP_AUTH_FLAGS: usize = (DC_LP_AUTH_OAUTH2 | DC_LP_AUTH_NORMAL); +pub const DC_LP_AUTH_FLAGS: usize = (DC_LP_AUTH_OAUTH2 | DC_LP_AUTH_NORMAL); /// if none of these flags are set, the default is chosen -const DC_LP_IMAP_SOCKET_FLAGS: usize = +pub const DC_LP_IMAP_SOCKET_FLAGS: usize = (DC_LP_IMAP_SOCKET_STARTTLS | DC_LP_IMAP_SOCKET_SSL | DC_LP_IMAP_SOCKET_PLAIN); /// if none of these flags are set, the default is chosen -const DC_LP_SMTP_SOCKET_FLAGS: usize = +pub const DC_LP_SMTP_SOCKET_FLAGS: usize = (DC_LP_SMTP_SOCKET_STARTTLS | DC_LP_SMTP_SOCKET_SSL | DC_LP_SMTP_SOCKET_PLAIN); // QR code scanning (view from Bob, the joiner)