Skip to content

Commit d484720

Browse files
authored
refactor: Move proxy_config out of ConfiguredLoginParam (#6712)
We want to store ConfiguredLoginParam in the database as Json per-login, but proxy_config should be global for all logins.
1 parent 7624a50 commit d484720

File tree

4 files changed

+14
-20
lines changed

4 files changed

+14
-20
lines changed

src/configure.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,6 @@ async fn get_configured_param(
432432
.collect(),
433433
smtp_user: param.smtp.user.clone(),
434434
smtp_password,
435-
proxy_config: ProxyConfig::load(ctx).await?,
436435
provider,
437436
certificate_checks: match param.certificate_checks {
438437
EnteredCertificateChecks::Automatic => ConfiguredCertificateChecks::Automatic,
@@ -454,7 +453,8 @@ async fn configure(ctx: &Context, param: &EnteredLoginParam) -> Result<Configure
454453
let update_device_chats_handle = task::spawn(async move { ctx2.update_device_chats().await });
455454

456455
let configured_param = get_configured_param(ctx, param).await?;
457-
let strict_tls = configured_param.strict_tls();
456+
let proxy_config = ProxyConfig::load(ctx).await?;
457+
let strict_tls = configured_param.strict_tls(proxy_config.is_some());
458458

459459
progress!(ctx, 550);
460460

@@ -464,15 +464,15 @@ async fn configure(ctx: &Context, param: &EnteredLoginParam) -> Result<Configure
464464
let smtp_param = configured_param.smtp.clone();
465465
let smtp_password = configured_param.smtp_password.clone();
466466
let smtp_addr = configured_param.addr.clone();
467-
let proxy_config = configured_param.proxy_config.clone();
468467

468+
let proxy_config2 = proxy_config.clone();
469469
let smtp_config_task = task::spawn(async move {
470470
let mut smtp = Smtp::new();
471471
smtp.connect(
472472
&context_smtp,
473473
&smtp_param,
474474
&smtp_password,
475-
&proxy_config,
475+
&proxy_config2,
476476
&smtp_addr,
477477
strict_tls,
478478
configured_param.oauth2,
@@ -490,7 +490,7 @@ async fn configure(ctx: &Context, param: &EnteredLoginParam) -> Result<Configure
490490
let mut imap = Imap::new(
491491
configured_param.imap.clone(),
492492
configured_param.imap_password.clone(),
493-
configured_param.proxy_config.clone(),
493+
proxy_config,
494494
&configured_param.addr,
495495
strict_tls,
496496
configured_param.oauth2,

src/imap.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -271,12 +271,14 @@ impl Imap {
271271
let param = ConfiguredLoginParam::load(context)
272272
.await?
273273
.context("Not configured")?;
274+
let proxy_config = ProxyConfig::load(context).await?;
275+
let strict_tls = param.strict_tls(proxy_config.is_some());
274276
let imap = Self::new(
275277
param.imap.clone(),
276278
param.imap_password.clone(),
277-
param.proxy_config.clone(),
279+
proxy_config,
278280
&param.addr,
279-
param.strict_tls(),
281+
strict_tls,
280282
param.oauth2,
281283
idle_interrupt_receiver,
282284
);

src/login_param.rs

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -441,9 +441,6 @@ pub(crate) struct ConfiguredLoginParam {
441441

442442
pub smtp_password: String,
443443

444-
/// Proxy configuration.
445-
pub proxy_config: Option<ProxyConfig>,
446-
447444
pub provider: Option<&'static Provider>,
448445

449446
/// TLS options: whether to allow invalid certificates and/or
@@ -742,8 +739,6 @@ impl ConfiguredLoginParam {
742739
}];
743740
}
744741

745-
let proxy_config = ProxyConfig::load(context).await?;
746-
747742
Ok(Some(ConfiguredLoginParam {
748743
addr,
749744
imap,
@@ -754,7 +749,6 @@ impl ConfiguredLoginParam {
754749
smtp_password: send_pw,
755750
certificate_checks,
756751
provider,
757-
proxy_config,
758752
oauth2,
759753
}))
760754
}
@@ -837,11 +831,11 @@ impl ConfiguredLoginParam {
837831
Ok(())
838832
}
839833

840-
pub(crate) fn strict_tls(&self) -> bool {
834+
pub(crate) fn strict_tls(&self, connected_through_proxy: bool) -> bool {
841835
let provider_strict_tls = self.provider.map(|provider| provider.opt.strict_tls);
842836
match self.certificate_checks {
843837
ConfiguredCertificateChecks::OldAutomatic => {
844-
provider_strict_tls.unwrap_or(self.proxy_config.is_some())
838+
provider_strict_tls.unwrap_or(connected_through_proxy)
845839
}
846840
ConfiguredCertificateChecks::Automatic => provider_strict_tls.unwrap_or(true),
847841
ConfiguredCertificateChecks::Strict => true,
@@ -962,8 +956,6 @@ mod tests {
962956
}],
963957
smtp_user: "".to_string(),
964958
smtp_password: "bar".to_string(),
965-
// proxy_config is not saved by `save_to_database`, using default value
966-
proxy_config: None,
967959
provider: None,
968960
certificate_checks: ConfiguredCertificateChecks::Strict,
969961
oauth2: false,
@@ -1066,7 +1058,6 @@ mod tests {
10661058
],
10671059
smtp_user: "[email protected]".to_string(),
10681060
smtp_password: "foobarbaz".to_string(),
1069-
proxy_config: None,
10701061
provider: get_provider_by_id("posteo"),
10711062
certificate_checks: ConfiguredCertificateChecks::Strict,
10721063
oauth2: false,

src/smtp.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,14 @@ impl Smtp {
9090
let lp = ConfiguredLoginParam::load(context)
9191
.await?
9292
.context("Not configured")?;
93+
let proxy_config = ProxyConfig::load(context).await?;
9394
self.connect(
9495
context,
9596
&lp.smtp,
9697
&lp.smtp_password,
97-
&lp.proxy_config,
98+
&proxy_config,
9899
&lp.addr,
99-
lp.strict_tls(),
100+
lp.strict_tls(proxy_config.is_some()),
100101
lp.oauth2,
101102
)
102103
.await

0 commit comments

Comments
 (0)