Skip to content

Commit

Permalink
create protobuf type SocketAddress, use everywhere
Browse files Browse the repository at this point in the history
  • Loading branch information
Keksoj committed Feb 2, 2024
1 parent bd356d0 commit fb11245
Show file tree
Hide file tree
Showing 24 changed files with 520 additions and 618 deletions.
14 changes: 3 additions & 11 deletions bin/src/ctl/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ pub enum CtlError {
ArgsNeeded(String, String),
#[error("could not load certificate")]
LoadCertificate(CertificateError),
#[error("wrong address {0}: {1}")]
WrongAddress(String, UtilError),
#[error("wrong input to create listener")]
CreateListener(ConfigError),
#[error("domain can not be empty")]
Expand Down Expand Up @@ -161,19 +159,13 @@ impl CommandManager {
key,
address,
tls_versions,
} => self.add_certificate(
address.to_string(),
&certificate,
&chain,
&key,
tls_versions,
),
} => self.add_certificate(address.into(), &certificate, &chain, &key, tls_versions),
CertificateCmd::Remove {
certificate,
address,
fingerprint,
} => self.remove_certificate(
address.to_string(),
address.into(),
certificate.as_deref(),
fingerprint.as_deref(),
),
Expand All @@ -186,7 +178,7 @@ impl CommandManager {
old_fingerprint,
tls_versions,
} => self.replace_certificate(
address.to_string(),
address.into(),
&certificate,
&chain,
&key,
Expand Down
71 changes: 31 additions & 40 deletions bin/src/ctl/request_builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ use sozu_command_lib::{
LoadBalancingParams, MetricsConfiguration, PathRule, ProxyProtocolConfig,
QueryCertificatesFilters, QueryClusterByDomain, QueryClustersHashes, RemoveBackend,
RemoveCertificate, RemoveListener, ReplaceCertificate, RequestHttpFrontend,
RequestTcpFrontend, RulePosition, SoftStop, Status, SubscribeEvents, TlsVersion,
RequestTcpFrontend, RulePosition, SocketAddress, SoftStop, Status, SubscribeEvents,
TlsVersion,
},
};

Expand All @@ -21,7 +22,6 @@ use crate::{
MetricsCmd, TcpFrontendCmd, TcpListenerCmd,
},
ctl::CommandManager,
util::parse_socket_address,
};

use super::CtlError;
Expand Down Expand Up @@ -118,7 +118,7 @@ impl CommandManager {
} => self.send_request(
RequestType::AddBackend(AddBackend {
cluster_id: id,
address: address.to_string(),
address: address.into(),
backend_id,
load_balancing_parameters: Some(LoadBalancingParams::default()),
sticky_id,
Expand All @@ -133,7 +133,7 @@ impl CommandManager {
} => self.send_request(
RequestType::RemoveBackend(RemoveBackend {
cluster_id: id,
address: address.to_string(),
address: address.into(),
backend_id,
})
.into(),
Expand Down Expand Up @@ -211,15 +211,15 @@ impl CommandManager {
TcpFrontendCmd::Add { id, address, tags } => self.send_request(
RequestType::AddTcpFrontend(RequestTcpFrontend {
cluster_id: id,
address: address.to_string(),
address: address.into(),
tags: tags.unwrap_or(BTreeMap::new()),
})
.into(),
),
TcpFrontendCmd::Remove { id, address } => self.send_request(
RequestType::RemoveTcpFrontend(RequestTcpFrontend {
cluster_id: id,
address: address.to_string(),
address: address.into(),
..Default::default()
})
.into(),
Expand All @@ -241,7 +241,7 @@ impl CommandManager {
} => self.send_request(
RequestType::AddHttpFrontend(RequestHttpFrontend {
cluster_id: route.into(),
address: address.to_string(),
address: address.into(),
hostname,
path: PathRule::from_cli_options(path_prefix, path_regex, path_equals),
method: method.map(String::from),
Expand All @@ -264,7 +264,7 @@ impl CommandManager {
} => self.send_request(
RequestType::RemoveHttpFrontend(RequestHttpFrontend {
cluster_id: route.into(),
address: address.to_string(),
address: address.into(),
hostname,
path: PathRule::from_cli_options(path_prefix, path_regex, path_equals),
method: method.map(String::from),
Expand All @@ -289,7 +289,7 @@ impl CommandManager {
} => self.send_request(
RequestType::AddHttpsFrontend(RequestHttpFrontend {
cluster_id: route.into(),
address: address.to_string(),
address: address.into(),
hostname,
path: PathRule::from_cli_options(path_prefix, path_regex, path_equals),
method: method.map(String::from),
Expand All @@ -312,7 +312,7 @@ impl CommandManager {
} => self.send_request(
RequestType::RemoveHttpsFrontend(RequestHttpFrontend {
cluster_id: route.into(),
address: address.to_string(),
address: address.into(),
hostname,
path: PathRule::from_cli_options(path_prefix, path_regex, path_equals),
method: method.map(String::from),
Expand All @@ -339,7 +339,7 @@ impl CommandManager {
request_timeout,
connect_timeout,
} => {
let https_listener = ListenerBuilder::new_https(address)
let https_listener = ListenerBuilder::new_https(address.into())
.with_public_address(public_address)
.with_answer_404_path(answer_404)
.with_answer_503_path(answer_503)
Expand All @@ -357,13 +357,13 @@ impl CommandManager {
self.send_request(RequestType::AddHttpsListener(https_listener).into())
}
HttpsListenerCmd::Remove { address } => {
self.remove_listener(address.to_string(), ListenerType::Https)
self.remove_listener(address.into(), ListenerType::Https)
}
HttpsListenerCmd::Activate { address } => {
self.activate_listener(address.to_string(), ListenerType::Https)
self.activate_listener(address.into(), ListenerType::Https)
}
HttpsListenerCmd::Deactivate { address } => {
self.deactivate_listener(address.to_string(), ListenerType::Https)
self.deactivate_listener(address.into(), ListenerType::Https)
}
}
}
Expand All @@ -382,7 +382,7 @@ impl CommandManager {
request_timeout,
connect_timeout,
} => {
let http_listener = ListenerBuilder::new_http(address)
let http_listener = ListenerBuilder::new_http(address.into())
.with_public_address(public_address)
.with_answer_404_path(answer_404)
.with_answer_503_path(answer_503)
Expand All @@ -398,13 +398,13 @@ impl CommandManager {
self.send_request(RequestType::AddHttpListener(http_listener).into())
}
HttpListenerCmd::Remove { address } => {
self.remove_listener(address.to_string(), ListenerType::Http)
self.remove_listener(address.into(), ListenerType::Http)
}
HttpListenerCmd::Activate { address } => {
self.activate_listener(address.to_string(), ListenerType::Http)
self.activate_listener(address.into(), ListenerType::Http)
}
HttpListenerCmd::Deactivate { address } => {
self.deactivate_listener(address.to_string(), ListenerType::Http)
self.deactivate_listener(address.into(), ListenerType::Http)
}
}
}
Expand All @@ -416,7 +416,7 @@ impl CommandManager {
public_address,
expect_proxy,
} => {
let listener = ListenerBuilder::new_tcp(address)
let listener = ListenerBuilder::new_tcp(address.into())
.with_public_address(public_address)
.with_expect_proxy(expect_proxy)
.to_tcp(Some(&self.config))
Expand All @@ -425,13 +425,13 @@ impl CommandManager {
self.send_request(RequestType::AddTcpListener(listener).into())
}
TcpListenerCmd::Remove { address } => {
self.remove_listener(address.to_string(), ListenerType::Tcp)
self.remove_listener(address.into(), ListenerType::Tcp)
}
TcpListenerCmd::Activate { address } => {
self.activate_listener(address.to_string(), ListenerType::Tcp)
self.activate_listener(address.into(), ListenerType::Tcp)
}
TcpListenerCmd::Deactivate { address } => {
self.deactivate_listener(address.to_string(), ListenerType::Tcp)
self.deactivate_listener(address.into(), ListenerType::Tcp)
}
}
}
Expand All @@ -442,15 +442,12 @@ impl CommandManager {

pub fn remove_listener(
&mut self,
address: String,
address: SocketAddress,
listener_type: ListenerType,
) -> Result<(), CtlError> {
let address = parse_socket_address(&address)
.map_err(|util_err| CtlError::WrongAddress(address, util_err))?;

self.send_request(
RequestType::RemoveListener(RemoveListener {
address: address.to_string(),
address,
proxy: listener_type.into(),
})
.into(),
Expand All @@ -459,15 +456,12 @@ impl CommandManager {

pub fn activate_listener(
&mut self,
address: String,
address: SocketAddress,
listener_type: ListenerType,
) -> Result<(), CtlError> {
let address = parse_socket_address(&address)
.map_err(|util_err| CtlError::WrongAddress(address, util_err))?;

self.send_request(
RequestType::ActivateListener(ActivateListener {
address: address.to_string(),
address,
proxy: listener_type.into(),
from_scm: false,
})
Expand All @@ -477,15 +471,12 @@ impl CommandManager {

pub fn deactivate_listener(
&mut self,
address: String,
address: SocketAddress,
listener_type: ListenerType,
) -> Result<(), CtlError> {
let address = parse_socket_address(&address)
.map_err(|util_err| CtlError::WrongAddress(address, util_err))?;

self.send_request(
RequestType::DeactivateListener(DeactivateListener {
address: address.to_string(),
address,
proxy: listener_type.into(),
to_scm: false,
})
Expand All @@ -499,7 +490,7 @@ impl CommandManager {

pub fn add_certificate(
&mut self,
address: String,
address: SocketAddress,
certificate_path: &str,
certificate_chain_path: &str,
key_path: &str,
Expand Down Expand Up @@ -527,7 +518,7 @@ impl CommandManager {
#[allow(clippy::too_many_arguments)]
pub fn replace_certificate(
&mut self,
address: String,
address: SocketAddress,
new_certificate_path: &str,
new_certificate_chain_path: &str,
new_key_path: &str,
Expand Down Expand Up @@ -575,7 +566,7 @@ impl CommandManager {

pub fn remove_certificate(
&mut self,
address: String,
address: SocketAddress,
certificate_path: Option<&str>,
fingerprint: Option<&str>,
) -> Result<(), CtlError> {
Expand Down
9 changes: 0 additions & 9 deletions bin/src/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ use std::{
ffi::OsString,
fs::{read_link, File},
io::{Error as IoError, Write},
net::{AddrParseError, SocketAddr},
os::unix::io::RawFd,
path::PathBuf,
};
Expand Down Expand Up @@ -45,8 +44,6 @@ pub enum UtilError {
or use the SOZU_CONFIG environment variable when building sozu."
)]
GetConfigFilePath,
#[error("could not parse socket address: {0}")]
ParseSocketAddress(AddrParseError),
}

/// FD_CLOEXEC is set by default on every fd in Rust standard lib,
Expand Down Expand Up @@ -117,12 +114,6 @@ pub fn get_config_file_path(args: &cli::Args) -> Result<&str, UtilError> {
}
}

pub fn parse_socket_address(address: &str) -> Result<SocketAddr, UtilError> {
address
.parse::<SocketAddr>()
.map_err(UtilError::ParseSocketAddress)
}

#[cfg(target_os = "freebsd")]
pub unsafe fn get_executable_path() -> Result<String, UtilError> {
let mut capacity = PATH_MAX as usize;
Expand Down

0 comments on commit fb11245

Please sign in to comment.