Browse Source

Resolve hostname for arguments passing an address

This allows hostname to be passed, rather than only IP addresses.
fees
Dagur Valberg Johannsson 6 years ago
parent
commit
d614071dd4
  1. 40
      src/config.rs

40
src/config.rs

@ -4,6 +4,7 @@ use dirs::home_dir;
use num_cpus; use num_cpus;
use std::fs; use std::fs;
use std::net::SocketAddr; use std::net::SocketAddr;
use std::net::ToSocketAddrs;
use std::path::{Path, PathBuf}; use std::path::{Path, PathBuf};
use std::sync::Arc; use std::sync::Arc;
use stderrlog; use stderrlog;
@ -30,6 +31,15 @@ pub struct Config {
pub server_banner: String, pub server_banner: String,
} }
fn str_to_socketaddr(address: &str, what: &str) -> SocketAddr {
address
.to_socket_addrs()
.expect(&format!("unable to resolve {} address", what))
.collect::<Vec<_>>()
.pop()
.unwrap()
}
impl Config { impl Config {
pub fn from_args() -> Config { pub fn from_args() -> Config {
let m = App::new("Electrum Rust Server") let m = App::new("Electrum Rust Server")
@ -150,21 +160,21 @@ impl Config {
Network::Regtest => 24224, Network::Regtest => 24224,
}; };
let daemon_rpc_addr: SocketAddr = m let daemon_rpc_addr: SocketAddr = str_to_socketaddr(
.value_of("daemon_rpc_addr") m.value_of("daemon_rpc_addr")
.unwrap_or(&format!("127.0.0.1:{}", default_daemon_port)) .unwrap_or(&format!("127.0.0.1:{}", default_daemon_port)),
.parse() "Bitcoin RPC",
.expect("invalid Bitcoind RPC address"); );
let electrum_rpc_addr: SocketAddr = m let electrum_rpc_addr: SocketAddr = str_to_socketaddr(
.value_of("electrum_rpc_addr") m.value_of("electrum_rpc_addr")
.unwrap_or(&format!("127.0.0.1:{}", default_electrum_port)) .unwrap_or(&format!("127.0.0.1:{}", default_electrum_port)),
.parse() "Electrum RPC",
.expect("invalid Electrum RPC address"); );
let monitoring_addr: SocketAddr = m let monitoring_addr: SocketAddr = str_to_socketaddr(
.value_of("monitoring_addr") m.value_of("monitoring_addr")
.unwrap_or(&format!("127.0.0.1:{}", default_monitoring_port)) .unwrap_or(&format!("127.0.0.1:{}", default_monitoring_port)),
.parse() "Prometheus monitoring",
.expect("invalid Prometheus monitoring address"); );
let mut daemon_dir = m let mut daemon_dir = m
.value_of("daemon_dir") .value_of("daemon_dir")

Loading…
Cancel
Save