Merge pull request #521 from deltachat/server_flags

Restore DC_LP_* constants from C code
This commit is contained in:
Alexander Krotov
2019-09-14 14:19:02 +00:00
committed by GitHub
4 changed files with 51 additions and 43 deletions

View File

@@ -1,6 +1,7 @@
use quick_xml; use quick_xml;
use quick_xml::events::{BytesEnd, BytesStart, BytesText}; use quick_xml::events::{BytesEnd, BytesStart, BytesText};
use crate::constants::*;
use crate::context::Context; use crate::context::Context;
use crate::dc_tools::*; use crate::dc_tools::*;
use crate::login_param::LoginParam; use crate::login_param::LoginParam;
@@ -120,13 +121,13 @@ fn moz_autoconfigure_text_cb<B: std::io::BufRead>(
13 => { 13 => {
let val_lower = val.to_lowercase(); let val_lower = val.to_lowercase();
if val_lower == "ssl" { 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" { 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" { 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<B: std::io::BufRead>(
13 => { 13 => {
let val_lower = val.to_lowercase(); let val_lower = val.to_lowercase();
if val_lower == "ssl" { 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" { 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" { if val_lower == "plain" {
moz_ac.out.server_flags |= 0x40000 moz_ac.out.server_flags |= DC_LP_SMTP_SOCKET_PLAIN as i32
} }
} }
_ => {} _ => {}

View File

@@ -1,6 +1,7 @@
use quick_xml; use quick_xml;
use quick_xml::events::{BytesEnd, BytesStart, BytesText}; use quick_xml::events::{BytesEnd, BytesStart, BytesText};
use crate::constants::*;
use crate::context::Context; use crate::context::Context;
use crate::dc_tools::*; use crate::dc_tools::*;
use crate::login_param::LoginParam; 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_server = to_string(outlk_ad.config[2]);
outlk_ad.out.mail_port = port; outlk_ad.out.mail_port = port;
if 0 != ssl_on { 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 { } 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 outlk_ad.out_imap_set = 1
} else if strcasecmp( } 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_server = to_string(outlk_ad.config[2]);
outlk_ad.out.send_port = port; outlk_ad.out.send_port = port;
if 0 != ssl_on { 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 { } 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 outlk_ad.out_smtp_set = 1
} }

View File

@@ -1,7 +1,6 @@
use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC}; use percent_encoding::{utf8_percent_encode, NON_ALPHANUMERIC};
use crate::constants::Event; use crate::constants::*;
use crate::constants::DC_CREATE_MVBOX;
use crate::context::Context; use crate::context::Context;
use crate::dc_tools::*; use crate::dc_tools::*;
use crate::e2ee; 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 { if param.send_port == 0 {
param.send_port = if 0 != param.server_flags & 0x10000 { param.send_port =
587 if 0 != param.server_flags & DC_LP_SMTP_SOCKET_STARTTLS as i32 {
} else if 0 != param.server_flags & 0x40000 { 587
25 } else if 0 != param.server_flags & DC_LP_SMTP_SOCKET_PLAIN as i32 {
} else { 25
465 } else {
} 465
}
} }
if param.send_user.is_empty() && !param.mail_user.is_empty() { if param.send_user.is_empty() && !param.mail_user.is_empty() {
param.send_user = param.mail_user.clone(); 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() { if param.send_pw.is_empty() && !param.mail_pw.is_empty() {
param.send_pw = param.mail_pw.clone() param.send_pw = param.mail_pw.clone()
} }
if !dc_exactly_one_bit_set(param.server_flags & (0x2 | 0x4)) { if !dc_exactly_one_bit_set(param.server_flags & DC_LP_AUTH_FLAGS as i32) {
param.server_flags &= !(0x2 | 0x4); param.server_flags &= !(DC_LP_AUTH_FLAGS as i32);
param.server_flags |= 0x4 param.server_flags |= DC_LP_AUTH_NORMAL as i32
}
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( 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 &= !(DC_LP_IMAP_SOCKET_FLAGS as i32);
param.server_flags |= if param.send_port == 587 { param.server_flags |= if param.send_port == 143 {
0x10000 DC_LP_IMAP_SOCKET_STARTTLS as i32
} else if param.send_port == 25 {
0x40000
} else { } 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? */ /* 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; success = false;
} else { } else {
progress!(context, 850); progress!(context, 850);
param.server_flags &= !(0x10000 | 0x20000 | 0x40000); param.server_flags &= !(DC_LP_SMTP_SOCKET_FLAGS as i32);
param.server_flags |= 0x10000; param.server_flags |= DC_LP_SMTP_SOCKET_STARTTLS as i32;
param.send_port = 587; param.send_port = 587;
info!(context, "Trying: {}", &param); info!(context, "Trying: {}", &param);
@@ -444,8 +450,8 @@ pub unsafe fn dc_job_do_DC_JOB_CONFIGURE_IMAP(context: &Context, _job: &Job) {
success = false; success = false;
} else { } else {
progress!(context, 860); progress!(context, 860);
param.server_flags &= !(0x10000 | 0x20000 | 0x40000); param.server_flags &= !(DC_LP_SMTP_SOCKET_FLAGS as i32);
param.server_flags |= 0x10000; param.server_flags |= DC_LP_SMTP_SOCKET_STARTTLS as i32;
param.send_port = 25; param.send_port = 25;
info!(context, "Trying: {}", &param); info!(context, "Trying: {}", &param);

View File

@@ -140,7 +140,7 @@ pub const DC_LP_AUTH_OAUTH2: usize = 0x2;
/// Force NORMAL authorization, this is the default. /// Force NORMAL authorization, this is the default.
/// If this flag is set, automatic configuration is skipped. /// 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. /// Connect to IMAP via STARTTLS.
/// If this flag is set, automatic configuration is skipped. /// 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. /// Connect to IMAP via SSL.
/// If this flag is set, automatic configuration is skipped. /// 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. /// Connect to IMAP unencrypted, this should not be used.
/// If this flag is set, automatic configuration is skipped. /// 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. /// Connect to SMTP via SSL.
/// If this flag is set, automatic configuration is skipped. /// 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. /// Connect to SMTP unencrypted, this should not be used.
/// If this flag is set, automatic configuration is skipped. /// If this flag is set, automatic configuration is skipped.
pub const DC_LP_SMTP_SOCKET_PLAIN: usize = 0x40000; pub const DC_LP_SMTP_SOCKET_PLAIN: usize = 0x40000;
/// if none of these flags are set, the default is chosen /// 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 /// 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); (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 /// 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); (DC_LP_SMTP_SOCKET_STARTTLS | DC_LP_SMTP_SOCKET_SSL | DC_LP_SMTP_SOCKET_PLAIN);
// QR code scanning (view from Bob, the joiner) // QR code scanning (view from Bob, the joiner)