feat: support to get local ip with local-ip-address (#37)
Signed-off-by: Gaius <gaius.qi@gmail.com>
This commit is contained in:
parent
0ae97a36d4
commit
9aa02821db
|
|
@ -42,3 +42,4 @@ prometheus = "0.13.3"
|
||||||
warp = "0.3.5"
|
warp = "0.3.5"
|
||||||
tokio = { version = "1.28.1", features = ["full"] }
|
tokio = { version = "1.28.1", features = ["full"] }
|
||||||
hostname = "^0.3"
|
hostname = "^0.3"
|
||||||
|
local-ip-address = "0.5.3"
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ async fn main() {
|
||||||
let _guards = init_tracing(NAME, &args.log_dir, args.log_level, None);
|
let _guards = init_tracing(NAME, &args.log_dir, args.log_level, None);
|
||||||
|
|
||||||
// Load config.
|
// Load config.
|
||||||
let config = Config::load(&args.config).unwrap();
|
let config = Config::load(&args.config).unwrap().convert().unwrap();
|
||||||
|
|
||||||
let metrics = Metrics::new(config.network.enable_ipv6);
|
let metrics = Metrics::new(config.network.enable_ipv6);
|
||||||
metrics.serve().await;
|
metrics.serve().await;
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,10 @@ use crate::config::{
|
||||||
default_cache_dir, default_config_dir, default_data_dir, default_lock_dir, default_log_dir,
|
default_cache_dir, default_config_dir, default_data_dir, default_lock_dir, default_log_dir,
|
||||||
default_plugin_dir, default_root_dir,
|
default_plugin_dir, default_root_dir,
|
||||||
};
|
};
|
||||||
|
use local_ip_address::{local_ip, local_ipv6};
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::net::{Ipv4Addr, SocketAddr};
|
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
|
||||||
use std::path::PathBuf;
|
use std::path::PathBuf;
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use tracing::info;
|
use tracing::info;
|
||||||
|
|
@ -120,9 +121,9 @@ pub struct Host {
|
||||||
|
|
||||||
// hostname is the hostname of the host.
|
// hostname is the hostname of the host.
|
||||||
pub hostname: String,
|
pub hostname: String,
|
||||||
// TODO Implement default values of ipv4 and ipv6.
|
|
||||||
// ip is the advertise ip of the host.
|
// ip is the advertise ip of the host.
|
||||||
// pub ip: IpAddr,
|
pub ip: IpAddr,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Host implements default value for Host.
|
// Host implements default value for Host.
|
||||||
|
|
@ -132,6 +133,7 @@ impl Default for Host {
|
||||||
idc: None,
|
idc: None,
|
||||||
location: None,
|
location: None,
|
||||||
hostname: hostname::get().unwrap().to_string_lossy().to_string(),
|
hostname: hostname::get().unwrap().to_string_lossy().to_string(),
|
||||||
|
ip: local_ip().unwrap(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -429,4 +431,13 @@ impl Config {
|
||||||
Ok(Self::default())
|
Ok(Self::default())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// convert converts the configuration.
|
||||||
|
pub fn convert(&mut self) -> Result<Config> {
|
||||||
|
if self.network.enable_ipv6 {
|
||||||
|
self.host.ip = local_ipv6().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(self.clone())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue