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::signature::Keypair;
|
||||||
use solana_sdk::signer::Signer;
|
use solana_sdk::signer::Signer;
|
||||||
use std::env;
|
use std::env;
|
||||||
|
use std::net::{SocketAddr, ToSocketAddrs};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use tokio::sync::mpsc;
|
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 {
|
fn configure_tpu_connection_path(quic_proxy_addr: Option<String>) -> TpuConnectionPath {
|
||||||
match quic_proxy_addr {
|
match quic_proxy_addr {
|
||||||
None => TpuConnectionPath::QuicDirectPath,
|
None => TpuConnectionPath::QuicDirectPath,
|
||||||
Some(prox_address) => TpuConnectionPath::QuicForwardProxyPath {
|
Some(prox_address) => {
|
||||||
// e.g. "127.0.0.1:11111"
|
let proxy_socket_addr = parse_host_port_to_ipv4(prox_address.as_str()).unwrap();
|
||||||
forward_proxy_address: prox_address.parse().expect("Invalid proxy address"),
|
TpuConnectionPath::QuicForwardProxyPath {
|
||||||
},
|
// e.g. "127.0.0.1:11111"
|
||||||
|
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 dotenv::dotenv;
|
||||||
use log::info;
|
use log::info;
|
||||||
use solana_lite_rpc_core::keypair_loader::load_identity_keypair;
|
use solana_lite_rpc_core::keypair_loader::load_identity_keypair;
|
||||||
|
use std::net::{SocketAddr, ToSocketAddrs};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use crate::validator_identity::ValidatorIdentity;
|
use crate::validator_identity::ValidatorIdentity;
|
||||||
|
@ -34,7 +35,7 @@ pub async fn main() -> anyhow::Result<()> {
|
||||||
} = Args::parse();
|
} = Args::parse();
|
||||||
dotenv().ok();
|
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 validator_identity = ValidatorIdentity::new(load_identity_keypair(&identity_keypair).await);
|
||||||
|
|
||||||
let tls_config = Arc::new(SelfSignedTlsConfigProvider::new_singleton_self_signed_localhost());
|
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