mirror of
https://github.com/uqbar-dao/nectar.git
synced 2024-12-28 11:04:39 +03:00
Merge pull request #168 from uqbar-dao/dr/port-flag-enforce-only
Dr/port flag enforce only
This commit is contained in:
commit
8cfe5819ef
@ -99,8 +99,8 @@ pub fn deserialize_headers(hashmap: HashMap<String, String>) -> HeaderMap {
|
||||
header_map
|
||||
}
|
||||
|
||||
pub async fn find_open_port(start_at: u16) -> Option<u16> {
|
||||
for port in start_at..(start_at + 1000) {
|
||||
pub async fn find_open_port(start_at: u16, end_at: u16) -> Option<u16> {
|
||||
for port in start_at..end_at {
|
||||
let bind_addr = format!("0.0.0.0:{}", port);
|
||||
if is_port_available(&bind_addr).await {
|
||||
return Some(port);
|
||||
|
50
src/main.rs
50
src/main.rs
@ -97,11 +97,7 @@ async fn main() {
|
||||
.author("Uqbar DAO: https://github.com/uqbar-dao")
|
||||
.about("A General Purpose Sovereign Cloud Computing Platform")
|
||||
.arg(arg!([home] "Path to home directory").required(true))
|
||||
.arg(
|
||||
arg!(--port <PORT> "First port to try binding")
|
||||
.default_value("8080")
|
||||
.value_parser(value_parser!(u16)),
|
||||
)
|
||||
.arg(arg!(--port <PORT> "First port to try binding").value_parser(value_parser!(u16)))
|
||||
.arg(
|
||||
arg!(--testnet "Use Sepolia testnet")
|
||||
.default_value("false")
|
||||
@ -129,7 +125,10 @@ async fn main() {
|
||||
let matches = app.get_matches();
|
||||
|
||||
let home_directory_path = matches.get_one::<String>("home").unwrap();
|
||||
let port = *matches.get_one::<u16>("port").unwrap();
|
||||
let (port, port_flag_used) = match matches.get_one::<u16>("port") {
|
||||
Some(port) => (*port, true),
|
||||
None => (8080, false),
|
||||
};
|
||||
let on_testnet = *matches.get_one::<bool>("testnet").unwrap();
|
||||
let contract_address = if on_testnet {
|
||||
register::KNS_SEPOLIA_ADDRESS
|
||||
@ -211,16 +210,35 @@ async fn main() {
|
||||
}
|
||||
};
|
||||
|
||||
let http_server_port = http::utils::find_open_port(port).await.unwrap();
|
||||
if http_server_port != port {
|
||||
let error_message = format!(
|
||||
"error: couldn't bind {}; first available port found {}. Set an available port with `--port` and try again.",
|
||||
port,
|
||||
http_server_port,
|
||||
);
|
||||
println!("{error_message}");
|
||||
panic!("{error_message}");
|
||||
}
|
||||
let http_server_port = if port_flag_used {
|
||||
match http::utils::find_open_port(port, port + 1).await {
|
||||
Some(port) => port,
|
||||
None => {
|
||||
println!(
|
||||
"error: couldn't bind {}; first available port found was {}. \
|
||||
Set an available port with `--port` and try again.",
|
||||
port,
|
||||
http::utils::find_open_port(port, port + 1000)
|
||||
.await
|
||||
.expect("no ports found in range"),
|
||||
);
|
||||
panic!();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
match http::utils::find_open_port(port, port + 1000).await {
|
||||
Some(port) => port,
|
||||
None => {
|
||||
println!(
|
||||
"error: couldn't bind any ports between {port} and {}. \
|
||||
Set an available port with `--port` and try again.",
|
||||
port + 1000,
|
||||
);
|
||||
panic!();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
println!(
|
||||
"login or register at http://localhost:{}\r",
|
||||
http_server_port
|
||||
|
@ -110,7 +110,11 @@ pub async fn register(
|
||||
let tx = Arc::new(tx);
|
||||
|
||||
// TODO: if IP is localhost, don't allow registration as direct
|
||||
let ws_port = crate::http::utils::find_open_port(9000).await.unwrap();
|
||||
let ws_port = crate::http::utils::find_open_port(9000, 65535)
|
||||
.await
|
||||
.expect(
|
||||
"Unable to find free port between 9000 and 65535 for a new websocket, are you kidding?",
|
||||
);
|
||||
|
||||
// This is a temporary identity, passed to the UI. If it is confirmed through a /boot or /confirm-change-network-keys, then it will be used to replace the current identity
|
||||
let our_temp_id = Arc::new(Identity {
|
||||
@ -355,7 +359,7 @@ async fn handle_import_keyfile(
|
||||
}
|
||||
};
|
||||
|
||||
let Some(ws_port) = crate::http::utils::find_open_port(9000).await else {
|
||||
let Some(ws_port) = crate::http::utils::find_open_port(9000, 9999).await else {
|
||||
return Ok(warp::reply::with_status(
|
||||
warp::reply::json(&"Unable to find free port"),
|
||||
StatusCode::INTERNAL_SERVER_ERROR,
|
||||
@ -417,7 +421,7 @@ async fn handle_login(
|
||||
}
|
||||
let encoded_keyfile = encoded_keyfile.unwrap();
|
||||
|
||||
let Some(ws_port) = crate::http::utils::find_open_port(9000).await else {
|
||||
let Some(ws_port) = crate::http::utils::find_open_port(9000, 65535).await else {
|
||||
return Ok(warp::reply::with_status(
|
||||
warp::reply::json(&"Unable to find free port"),
|
||||
StatusCode::INTERNAL_SERVER_ERROR,
|
||||
|
Loading…
Reference in New Issue
Block a user