Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Socket address in protobuf #1065

Merged
merged 1 commit into from
Feb 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading
Loading