Skip to content

Commit

Permalink
gui: allow user to not validate the ssl domain for an electrum server
Browse files Browse the repository at this point in the history
  • Loading branch information
pythcoiner committed Dec 16, 2024
1 parent f83bad7 commit 78de446
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 5 deletions.
1 change: 1 addition & 0 deletions liana-gui/src/app/state/settings/bitcoind.rs
Original file line number Diff line number Diff line change
Expand Up @@ -461,6 +461,7 @@ impl ElectrumSettings {
daemon_config.bitcoin_backend =
Some(lianad::config::BitcoinBackend::Electrum(ElectrumConfig {
addr: self.addr.value.clone(),
validate_domain: self.electrum_config.validate_domain,
}));
self.processing = true;
return Command::perform(async move { daemon_config }, |cfg| {
Expand Down
1 change: 1 addition & 0 deletions liana-gui/src/installer/message.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ pub enum DefineBitcoind {
#[derive(Debug, Clone)]
pub enum DefineElectrum {
ConfigFieldEdited(electrum::ConfigField, String),
ValidDomainChanged(bool),
}

#[derive(Debug, Clone)]
Expand Down
21 changes: 18 additions & 3 deletions liana-gui/src/installer/step/node/electrum.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,19 @@ use crate::{
node::electrum::ConfigField,
};

#[derive(Clone, Default)]
#[derive(Clone)]
pub struct DefineElectrum {
address: form::Value<String>,
validate_domain: bool,
}

impl Default for DefineElectrum {
fn default() -> Self {
Self {
address: Default::default(),
validate_domain: true,
}
}
}

impl DefineElectrum {
Expand All @@ -38,6 +48,7 @@ impl DefineElectrum {
crate::node::electrum::is_electrum_address_valid(&value);
}
},
message::DefineElectrum::ValidDomainChanged(v) => self.validate_domain = v,
};
};
Command::none()
Expand All @@ -47,19 +58,23 @@ impl DefineElectrum {
if self.can_try_ping() {
ctx.bitcoin_backend = Some(lianad::config::BitcoinBackend::Electrum(ElectrumConfig {
addr: self.address.value.clone(),
validate_domain: self.validate_domain,
}));
return true;
}
false
}

pub fn view(&self) -> Element<Message> {
view::define_electrum(&self.address)
view::define_electrum(&self.address, self.validate_domain)
}

pub fn ping(&self) -> Result<(), Error> {
let builder = electrum_client::Config::builder();
let config = builder.timeout(Some(3)).build();
let config = builder
.timeout(Some(3))
.validate_domain(self.validate_domain)
.build();
let client = electrum_client::Client::from_config(&self.address.value, config)
.map_err(|e| Error::Electrum(e.to_string()))?;
client
Expand Down
11 changes: 9 additions & 2 deletions liana-gui/src/installer/view/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1134,7 +1134,10 @@ pub fn define_bitcoind<'a>(
.into()
}

pub fn define_electrum<'a>(address: &form::Value<String>) -> Element<'a, Message> {
pub fn define_electrum<'a>(
address: &form::Value<String>,
validate_domain: bool,
) -> Element<'a, Message> {
let col_address = Column::new()
.push(text("Address:").bold())
.push(
Expand All @@ -1150,7 +1153,11 @@ pub fn define_electrum<'a>(address: &form::Value<String>) -> Element<'a, Message
.size(text::P1_SIZE)
.padding(10),
)
.push(text(electrum::ADDRESS_NOTES).size(text::P2_SIZE))
.push(
checkbox("Not validate SSL Domain, check this only if you want connect to a self sign certificate", !validate_domain)
.on_toggle(|b| {
Message::DefineNode(DefineNode::DefineElectrum(message::DefineElectrum::ValidDomainChanged(!b)))
}))
.spacing(10);

Column::new().push(col_address).spacing(50).into()
Expand Down

0 comments on commit 78de446

Please sign in to comment.