Skip to content

Commit

Permalink
Merge #1510: Revert "Merge #1500: gui: allow to connect to an electru…
Browse files Browse the repository at this point in the history
…m server self signed certificate

b7b52d7 Revert "Merge #1500: gui: allow to connect to an electrum server w/ a self signed certificate" (edouardparis)

Pull request description:

  This reverts commit 2d2d080, reversing changes made to cfe15b3.

  We are not ready yet to have openssl dynamically link library dependency for our users.

ACKs for top commit:
  jp1ac4:
    utACK b7b52d7.

Tree-SHA512: e85963ac9dd9d449c4af5806d7f7aaee70de676d38e9f931e50ed7c060a5a9522209a27db77a0a6254249f55ae52259dc7c747fe2032d830a4d6d92f1cb6a72b
  • Loading branch information
edouardparis committed Jan 2, 2025
2 parents 31c4955 + b7b52d7 commit 83581e1
Show file tree
Hide file tree
Showing 13 changed files with 21 additions and 204 deletions.
8 changes: 0 additions & 8 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,6 @@ jobs:
toolchain: ${{ matrix.toolchain }}
override: true
profile: minimal
- name: Install OpenSSL (windows)
if: matrix.os == 'windows-latest'
run: |
choco install openssl.light --no-progress
echo "C:\Program Files\OpenSSL" >> $env:GITHUB_PATH
echo "C:\Program Files\OpenSSL\bin" >> $env::GITHUB_PATH
echo "OPENSSL_DIR=C:\Program Files\OpenSSL" >> $env:GITHUB_ENV
- name: Test on Rust ${{ matrix.toolchain }} (only Windows)
if: matrix.os == 'windows-latest'
run: cargo test --verbose --no-default-features
Expand Down
65 changes: 5 additions & 60 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 0 additions & 5 deletions contrib/lianad_config_example.toml
Original file line number Diff line number Diff line change
Expand Up @@ -50,13 +50,8 @@ poll_interval_secs = 30
# In order to connect, it needs the address as a string, which can be
# optionally prefixed with "ssl://" or "tcp://". If omitted, "tcp://"
# will be assumed.
# `validate_domain` field is optional: used in case of SSL connection,
# if set to `false`, internal electrum client will not try to validate
# the domain associated to the certificate: it's useful in case of
# self-signed certificate. Its default value is `true`.
# [electrum_config]
# addr = "127.0.0.1:50001"
# validate_domain = false
#
#
[bitcoind_config]
Expand Down
8 changes: 0 additions & 8 deletions liana-gui/src/app/state/settings/bitcoind.rs
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,6 @@ impl BitcoindSettings {
}
}
}
view::SettingsEditMessage::ValidateDomainEdited(_) => {}
view::SettingsEditMessage::BitcoindRpcAuthTypeSelected(auth_type) => {
if !self.processing {
self.selected_auth_type = auth_type;
Expand Down Expand Up @@ -463,7 +462,6 @@ 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 All @@ -472,11 +470,6 @@ impl ElectrumSettings {
}
}
view::SettingsEditMessage::Clipboard(text) => return clipboard::write(text),
view::SettingsEditMessage::ValidateDomainEdited(b) => {
if !self.processing {
self.electrum_config.validate_domain = b;
}
}
_ => {}
};
Command::none()
Expand All @@ -491,7 +484,6 @@ impl ElectrumSettings {
cache.blockheight,
&self.addr,
self.processing,
self.electrum_config.validate_domain,
)
} else {
view::settings::electrum(
Expand Down
1 change: 0 additions & 1 deletion liana-gui/src/app/view/message.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,6 @@ pub enum RemoteBackendSettingsMessage {
pub enum SettingsEditMessage {
Select,
FieldEdited(&'static str, String),
ValidateDomainEdited(bool),
BitcoindRpcAuthTypeSelected(RpcAuthType),
Cancel,
Confirm,
Expand Down
7 changes: 1 addition & 6 deletions liana-gui/src/app/view/settings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ use crate::{
hw::HardwareWallet,
node::{
bitcoind::{RpcAuthType, RpcAuthValues},
electrum::{self, validate_domain_checkbox},
electrum,
},
};

Expand Down Expand Up @@ -563,7 +563,6 @@ pub fn electrum_edit<'a>(
blockheight: i32,
addr: &form::Value<String>,
processing: bool,
validate_domain: bool,
) -> Element<'a, SettingsEditMessage> {
let mut col = Column::new().spacing(20);
if is_configured_node_type && blockheight != 0 {
Expand Down Expand Up @@ -596,9 +595,6 @@ pub fn electrum_edit<'a>(
.push(separation().width(Length::Fill));
}

let checkbox = validate_domain_checkbox(addr, validate_domain, |b| {
SettingsEditMessage::ValidateDomainEdited(b)
});
col = col.push(
Column::new()
.push(text("Address:").bold().small())
Expand All @@ -610,7 +606,6 @@ pub fn electrum_edit<'a>(
.size(P1_SIZE)
.padding(5),
)
.push_maybe(checkbox)
.push(text(electrum::ADDRESS_NOTES).size(P2_SIZE))
.spacing(5),
);
Expand Down
1 change: 0 additions & 1 deletion liana-gui/src/installer/message.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ pub enum DefineBitcoind {
#[derive(Debug, Clone)]
pub enum DefineElectrum {
ConfigFieldEdited(electrum::ConfigField, String),
ValidDomainChanged(bool),
}

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

#[derive(Clone)]
#[derive(Clone, Default)]
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 @@ -48,7 +38,6 @@ impl DefineElectrum {
crate::node::electrum::is_electrum_address_valid(&value);
}
},
message::DefineElectrum::ValidDomainChanged(v) => self.validate_domain = v,
};
};
Command::none()
Expand All @@ -58,23 +47,19 @@ 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, self.validate_domain)
view::define_electrum(&self.address)
}

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

use crate::node::electrum::validate_domain_checkbox;
use crate::{
hw::{is_compatible_with_tapminiscript, HardwareWallet, UnsupportedReason},
installer::{
Expand Down Expand Up @@ -1135,15 +1134,7 @@ pub fn define_bitcoind<'a>(
.into()
}

pub fn define_electrum<'a>(
address: &form::Value<String>,
validate_domain: bool,
) -> Element<'a, Message> {
let checkbox = validate_domain_checkbox(address, validate_domain, |b| {
Message::DefineNode(DefineNode::DefineElectrum(
message::DefineElectrum::ValidDomainChanged(b),
))
});
pub fn define_electrum<'a>(address: &form::Value<String>) -> Element<'a, Message> {
let col_address = Column::new()
.push(text("Address:").bold())
.push(
Expand All @@ -1159,8 +1150,7 @@ pub fn define_electrum<'a>(
.size(text::P1_SIZE)
.padding(10),
)
.push_maybe(checkbox)
.push(text(electrum::ADDRESS_NOTES))
.push(text(electrum::ADDRESS_NOTES).size(text::P2_SIZE))
.spacing(10);

Column::new().push(col_address).spacing(50).into()
Expand Down
30 changes: 2 additions & 28 deletions liana-gui/src/node/electrum.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
use std::fmt;

use iced::{widget::checkbox, Element, Renderer};
use liana_ui::{component::form, theme::Theme};

#[derive(Debug, PartialEq, Eq, Clone, Copy)]
pub enum ConfigField {
Address,
}

pub const ADDRESS_NOTES: &str = "Note: include \"ssl://\" as a prefix \
for SSL connections.";

pub const VALID_SSL_DOMAIN_NOTES: &str = "Do not validate SSL Domain \
(check this only if you want to use a self-signed certificate)";
for SSL connections. Be aware that self-signed \
SSL certificates are currently not supported.";

impl fmt::Display for ConfigField {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
Expand All @@ -22,27 +17,6 @@ impl fmt::Display for ConfigField {
}
}

pub fn validate_domain_checkbox<'a, F, M>(
addr: &form::Value<String>,
value: bool,
closure: F,
) -> Option<Element<'a, M, Theme, Renderer>>
where
F: 'a + Fn(bool) -> M,
M: 'a,
{
let checkbox = checkbox(VALID_SSL_DOMAIN_NOTES, !value).on_toggle(move |b| closure(!b));
if addr.valid && is_ssl(&addr.value) {
Some(checkbox.into())
} else {
None
}
}

pub fn is_ssl(value: &str) -> bool {
value.starts_with("ssl://")
}

pub fn is_electrum_address_valid(value: &str) -> bool {
let value_noprefix = if value.starts_with("ssl://") {
value.replacen("ssl://", "", 1)
Expand Down
1 change: 0 additions & 1 deletion lianad/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ miniscript = { version = "11.0", features = ["serde", "compiler", "base64"] }
# For Electrum backend. This is the latest version with the same bitcoin version as
# the miniscript dependency.
bdk_electrum = { version = "0.14" }
electrum-client = { version = "0.19", features = ["use-openssl"] }

# Don't reinvent the wheel
dirs = "5.0"
Expand Down
Loading

0 comments on commit 83581e1

Please sign in to comment.