gui(settings): add sanity check on electrum wallet address

This commit is contained in:
pythcoiner 2024-09-09 14:25:05 +02:00 committed by Michael Mallan
parent 4dd0fd3692
commit bf25103fad
No known key found for this signature in database
GPG Key ID: 5177CDCEDB0EABEB
3 changed files with 23 additions and 17 deletions

View File

@ -453,7 +453,8 @@ impl ElectrumSettings {
}
view::SettingsEditMessage::FieldEdited(field, value) => {
if !self.processing && field == "address" {
self.addr.value = value
self.addr.valid = crate::node::electrum::is_electrum_address_valid(&value);
self.addr.value = value;
}
}
view::SettingsEditMessage::Confirm => {

View File

@ -35,23 +35,9 @@ impl DefineElectrum {
match msg {
message::DefineElectrum::ConfigFieldEdited(field, value) => match field {
ConfigField::Address => {
let value_noprefix = if value.starts_with("ssl://") {
value.replacen("ssl://", "", 1)
} else {
value.replacen("tcp://", "", 1)
};
let noprefix_parts: Vec<_> = value_noprefix.split(':').collect();
self.address.value.clone_from(&value); // save the value including any prefix
self.address.valid = noprefix_parts.len() == 2
&& !noprefix_parts
.first()
.expect("there are two parts")
.is_empty()
&& noprefix_parts
.last()
.expect("there are two parts")
.parse::<u16>() // check it is a port
.is_ok();
self.address.valid =
crate::node::electrum::is_electrum_address_valid(&value);
}
},
};

View File

@ -12,3 +12,22 @@ impl fmt::Display for ConfigField {
}
}
}
pub fn is_electrum_address_valid(value: &str) -> bool {
let value_noprefix = if value.starts_with("ssl://") {
value.replacen("ssl://", "", 1)
} else {
value.replacen("tcp://", "", 1)
};
let noprefix_parts: Vec<_> = value_noprefix.split(':').collect();
noprefix_parts.len() == 2
&& !noprefix_parts
.first()
.expect("there are two parts")
.is_empty()
&& noprefix_parts
.last()
.expect("there are two parts")
.parse::<u16>() // check it is a port
.is_ok()
}