Skip to content
Closed
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
28 changes: 19 additions & 9 deletions rust/agama-server/src/agama-web-server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -273,19 +273,29 @@ async fn handle_http_stream(
}
}

async fn find_listener(addresses: String) -> Option<tokio::net::TcpListener> {
let addresses = addresses.split(',').collect::<Vec<_>>();
for addr in addresses {
// see https://github.com/tokio-rs/axum/blob/main/examples/low-level-openssl/src/main.rs
// how to use axum with openSSL
match tokio::net::TcpListener::bind(&addr).await {
Ok(listener) => {
return Some(listener);
}
Err(error) => {
eprintln!("Error: could not listen on {}: {}", &addr, error);
}
}
}
None
}

/// Starts the web server
async fn start_server(address: String, service: Router, ssl_acceptor: SslAcceptor) {
tracing::info!("Starting Agama web server at {}", address);

// see https://github.com/tokio-rs/axum/blob/main/examples/low-level-openssl/src/main.rs
// how to use axum with openSSL
let listener = tokio::net::TcpListener::bind(&address)
.await
.unwrap_or_else(|error| {
let msg = format!("Error: could not listen on {}: {}", &address, error);
tracing::error!(msg);
panic!("{}", msg)
});
let opt_listener = find_listener(address).await;
let listener = opt_listener.expect("None of the alternative addresses worked");

pin_mut!(listener);

Expand Down
2 changes: 1 addition & 1 deletion rust/share/agama-web-server.service
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ BindsTo=agama.service
EnvironmentFile=-/run/agama/environment.conf
Environment="AGAMA_LOG=debug,zbus=info"
Type=notify
ExecStart=/usr/bin/agama-web-server serve --address :::80 --address2 :::443
ExecStart=/usr/bin/agama-web-server serve --address :::80,0.0.0.0:80 --address2 :::443,0.0.0.0:443
PIDFile=/run/agama/web.pid
User=root
TimeoutStopSec=5
Expand Down
Loading