Add support for binding to unix domain sockets #640

Merged
lx merged 6 commits from networkException/garage:unix-sockets into main 2023-10-03 16:23:02 +00:00
4 changed files with 8 additions and 4 deletions
Showing only changes of commit 7907a09acc - Show all commits

View file

@ -66,7 +66,7 @@ impl AdminApiServer {
) -> Result<(), GarageError> { ) -> Result<(), GarageError> {
let region = self.garage.config.s3_api.s3_region.clone(); let region = self.garage.config.s3_api.s3_region.clone();
ApiServer::new(region, self) ApiServer::new(region, self)
.run_server(bind_addr, shutdown_signal) .run_server(bind_addr, Some(0o220), shutdown_signal)
.await .await
} }

View file

@ -98,6 +98,7 @@ impl<A: ApiHandler> ApiServer<A> {
pub async fn run_server( pub async fn run_server(
self: Arc<Self>, self: Arc<Self>,
bind_addr: UnixOrTCPSocketAddress, bind_addr: UnixOrTCPSocketAddress,
unix_bind_addr_mode: Option<u32>,
shutdown_signal: impl Future<Output = ()>, shutdown_signal: impl Future<Output = ()>,
) -> Result<(), GarageError> { ) -> Result<(), GarageError> {
let tcp_service = make_service_fn(|conn: &AddrStream| { let tcp_service = make_service_fn(|conn: &AddrStream| {
@ -146,7 +147,10 @@ impl<A: ApiHandler> ApiServer<A> {
let bound = Server::bind_unix(path)?; let bound = Server::bind_unix(path)?;
fs::set_permissions(path, Permissions::from_mode(0o222))?; fs::set_permissions(
path,
Permissions::from_mode(unix_bind_addr_mode.unwrap_or(0o222)),
)?;
bound bound
.serve(unix_service) .serve(unix_service)

View file

@ -42,7 +42,7 @@ impl K2VApiServer {
shutdown_signal: impl Future<Output = ()>, shutdown_signal: impl Future<Output = ()>,
) -> Result<(), GarageError> { ) -> Result<(), GarageError> {
ApiServer::new(s3_region, K2VApiServer { garage }) ApiServer::new(s3_region, K2VApiServer { garage })
.run_server(bind_addr, shutdown_signal) .run_server(bind_addr, None, shutdown_signal)
.await .await
} }
} }

View file

@ -49,7 +49,7 @@ impl S3ApiServer {
shutdown_signal: impl Future<Output = ()>, shutdown_signal: impl Future<Output = ()>,
) -> Result<(), GarageError> { ) -> Result<(), GarageError> {
ApiServer::new(s3_region, S3ApiServer { garage }) ApiServer::new(s3_region, S3ApiServer { garage })
.run_server(addr, shutdown_signal) .run_server(addr, None, shutdown_signal)
.await .await
} }