allow for hostname in '--proxy-listen-addr' and '--quic-proxy-addr' (ipv4 only)
This commit is contained in:
parent
26a5ca2021
commit
ab1b074e97
|
@ -36,6 +36,7 @@ use solana_sdk::commitment_config::CommitmentConfig;
|
|||
use solana_sdk::signature::Keypair;
|
||||
use solana_sdk::signer::Signer;
|
||||
use std::env;
|
||||
use std::net::{SocketAddr, ToSocketAddrs};
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::mpsc;
|
||||
|
||||
|
@ -263,9 +264,27 @@ pub async fn main() -> anyhow::Result<()> {
|
|||
fn configure_tpu_connection_path(quic_proxy_addr: Option<String>) -> TpuConnectionPath {
|
||||
match quic_proxy_addr {
|
||||
None => TpuConnectionPath::QuicDirectPath,
|
||||
Some(prox_address) => TpuConnectionPath::QuicForwardProxyPath {
|
||||
Some(prox_address) => {
|
||||
let proxy_socket_addr = parse_host_port_to_ipv4(prox_address.as_str()).unwrap();
|
||||
TpuConnectionPath::QuicForwardProxyPath {
|
||||
// e.g. "127.0.0.1:11111"
|
||||
forward_proxy_address: prox_address.parse().expect("Invalid proxy address"),
|
||||
},
|
||||
forward_proxy_address: proxy_socket_addr,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn parse_host_port_to_ipv4(host_port: &str) -> Result<SocketAddr, String> {
|
||||
let addrs: Vec<_> = host_port
|
||||
.to_socket_addrs()
|
||||
.map_err(|err| format!("Unable to resolve host {host_port}: {err}"))?
|
||||
.filter(|addr| addr.is_ipv4())
|
||||
.collect();
|
||||
if addrs.is_empty() {
|
||||
Err(format!("Unable to resolve host: {host_port}"))
|
||||
} else if addrs.len() > 1 {
|
||||
Err(format!("Multiple addresses resolved for host: {host_port}"))
|
||||
} else {
|
||||
Ok(addrs[0])
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ use clap::Parser;
|
|||
use dotenv::dotenv;
|
||||
use log::info;
|
||||
use solana_lite_rpc_core::keypair_loader::load_identity_keypair;
|
||||
use std::net::{SocketAddr, ToSocketAddrs};
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::validator_identity::ValidatorIdentity;
|
||||
|
@ -34,7 +35,7 @@ pub async fn main() -> anyhow::Result<()> {
|
|||
} = Args::parse();
|
||||
dotenv().ok();
|
||||
|
||||
let proxy_listener_addr = proxy_listen_addr.parse().unwrap();
|
||||
let proxy_listener_addr = parse_host_port_to_ipv4(proxy_listen_addr.as_str()).unwrap();
|
||||
let validator_identity = ValidatorIdentity::new(load_identity_keypair(&identity_keypair).await);
|
||||
|
||||
let tls_config = Arc::new(SelfSignedTlsConfigProvider::new_singleton_self_signed_localhost());
|
||||
|
@ -58,3 +59,18 @@ pub async fn main() -> anyhow::Result<()> {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn parse_host_port_to_ipv4(host_port: &str) -> Result<SocketAddr, String> {
|
||||
let addrs: Vec<_> = host_port
|
||||
.to_socket_addrs()
|
||||
.map_err(|err| format!("Unable to resolve host {host_port}: {err}"))?
|
||||
.filter(|addr| addr.is_ipv4())
|
||||
.collect();
|
||||
if addrs.is_empty() {
|
||||
Err(format!("Unable to resolve host: {host_port}"))
|
||||
} else if addrs.len() > 1 {
|
||||
Err(format!("Multiple addresses resolved for host: {host_port}"))
|
||||
} else {
|
||||
Ok(addrs[0])
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue