✨ feat: show version & local node (#318)
* ✨ feat: version Add display version information, incompatible with lower versions * 🎈 perf: unknown Unknown when there is no version number displayed * ✨ feat: Display local nodes Display local nodes, incompatible with lower versions
This commit is contained in:
@@ -197,6 +197,7 @@ impl CommandHandler {
|
||||
tunnel_proto: String,
|
||||
nat_type: String,
|
||||
id: String,
|
||||
version: String,
|
||||
}
|
||||
|
||||
impl From<PeerRoutePair> for PeerTableItem {
|
||||
@@ -212,6 +213,33 @@ impl CommandHandler {
|
||||
tunnel_proto: p.get_conn_protos().unwrap_or(vec![]).join(",").to_string(),
|
||||
nat_type: p.get_udp_nat_type(),
|
||||
id: p.route.peer_id.to_string(),
|
||||
version: if p.route.version.is_empty() {
|
||||
"unknown".to_string()
|
||||
} else {
|
||||
p.route.version.to_string()
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<NodeInfo> for PeerTableItem {
|
||||
fn from(p: NodeInfo) -> Self {
|
||||
PeerTableItem {
|
||||
ipv4: p.ipv4_addr.clone(),
|
||||
hostname: p.hostname.clone(),
|
||||
cost: "Local".to_string(),
|
||||
lat_ms: "-".to_string(),
|
||||
loss_rate: "-".to_string(),
|
||||
rx_bytes: "-".to_string(),
|
||||
tx_bytes: "-".to_string(),
|
||||
tunnel_proto: "-".to_string(),
|
||||
nat_type: if let Some(info) = p.stun_info {
|
||||
info.udp_nat_type().as_str_name().to_string()
|
||||
} else {
|
||||
"Unknown".to_string()
|
||||
},
|
||||
id: p.peer_id.to_string(),
|
||||
version: p.version,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -223,6 +251,15 @@ impl CommandHandler {
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let mut client = self.get_peer_manager_client().await?;
|
||||
let node_info = client
|
||||
.show_node_info(ShowNodeInfoRequest::default())
|
||||
.await?
|
||||
.into_inner()
|
||||
.node_info
|
||||
.ok_or(anyhow::anyhow!("node info not found"))?;
|
||||
items.push(node_info.into());
|
||||
|
||||
for p in peer_routes {
|
||||
items.push(p.into());
|
||||
}
|
||||
@@ -293,9 +330,28 @@ impl CommandHandler {
|
||||
next_hop_hostname: String,
|
||||
next_hop_lat: f64,
|
||||
cost: i32,
|
||||
version: String,
|
||||
}
|
||||
|
||||
let mut items: Vec<RouteTableItem> = vec![];
|
||||
let mut client = self.get_peer_manager_client().await?;
|
||||
let node_info = client
|
||||
.show_node_info(ShowNodeInfoRequest::default())
|
||||
.await?
|
||||
.into_inner()
|
||||
.node_info
|
||||
.ok_or(anyhow::anyhow!("node info not found"))?;
|
||||
|
||||
items.push(RouteTableItem {
|
||||
ipv4: node_info.ipv4_addr.clone(),
|
||||
hostname: node_info.hostname.clone(),
|
||||
proxy_cidrs: node_info.proxy_cidrs.join(", "),
|
||||
next_hop_ipv4: "-".to_string(),
|
||||
next_hop_hostname: "Local".to_string(),
|
||||
next_hop_lat: 0.0,
|
||||
cost: 0,
|
||||
version: node_info.version.clone(),
|
||||
});
|
||||
let peer_routes = self.list_peer_route_pair().await?;
|
||||
for p in peer_routes.iter() {
|
||||
let Some(next_hop_pair) = peer_routes
|
||||
@@ -314,6 +370,11 @@ impl CommandHandler {
|
||||
next_hop_hostname: "".to_string(),
|
||||
next_hop_lat: next_hop_pair.get_latency_ms().unwrap_or(0.0),
|
||||
cost: p.route.cost,
|
||||
version: if p.route.version.is_empty() {
|
||||
"unknown".to_string()
|
||||
} else {
|
||||
p.route.version.to_string()
|
||||
},
|
||||
});
|
||||
} else {
|
||||
items.push(RouteTableItem {
|
||||
@@ -324,6 +385,11 @@ impl CommandHandler {
|
||||
next_hop_hostname: next_hop_pair.route.hostname.clone(),
|
||||
next_hop_lat: next_hop_pair.get_latency_ms().unwrap_or(0.0),
|
||||
cost: p.route.cost,
|
||||
version: if p.route.version.is_empty() {
|
||||
"unknown".to_string()
|
||||
} else {
|
||||
p.route.version.to_string()
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@ use tokio::task::JoinSet;
|
||||
#[derive(Default, Clone, Debug, Serialize, Deserialize)]
|
||||
pub struct MyNodeInfo {
|
||||
pub virtual_ipv4: String,
|
||||
pub hostname: String,
|
||||
pub version: String,
|
||||
pub ips: GetIpListResponse,
|
||||
pub stun_info: StunInfo,
|
||||
pub listeners: Vec<String>,
|
||||
@@ -137,6 +139,8 @@ impl EasyTierLauncher {
|
||||
.get_ipv4()
|
||||
.map(|x| x.to_string())
|
||||
.unwrap_or_default(),
|
||||
hostname: global_ctx_c.get_hostname(),
|
||||
version: env!("CARGO_PKG_VERSION").to_string(),
|
||||
ips: global_ctx_c.get_ip_collector().collect_ip_addrs().await,
|
||||
stun_info: global_ctx_c.get_stun_info_collector().get_stun_info(),
|
||||
listeners: global_ctx_c
|
||||
|
||||
@@ -30,14 +30,7 @@ use crate::{
|
||||
PeerId,
|
||||
},
|
||||
rpc::{HandshakeRequest, PeerConnInfo, PeerConnStats, TunnelInfo},
|
||||
tunnel::packet_def::PacketType,
|
||||
tunnel::{
|
||||
filter::{StatsRecorderTunnelFilter, TunnelFilter, TunnelWithFilter},
|
||||
mpsc::{MpscTunnel, MpscTunnelSender},
|
||||
packet_def::ZCPacket,
|
||||
stats::{Throughput, WindowLatency},
|
||||
Tunnel, TunnelError, ZCPacketStream,
|
||||
},
|
||||
tunnel::{filter::{StatsRecorderTunnelFilter, TunnelFilter, TunnelWithFilter}, mpsc::{MpscTunnel, MpscTunnelSender}, packet_def::{PacketType, ZCPacket}, stats::{Throughput, WindowLatency}, Tunnel, TunnelError, ZCPacketStream},
|
||||
};
|
||||
|
||||
use super::{peer_conn_ping::PeerConnPinger, PacketRecvChan};
|
||||
|
||||
@@ -771,6 +771,7 @@ impl PeerManager {
|
||||
.map(|x| x.to_string())
|
||||
.collect(),
|
||||
config: self.global_ctx.config.dump(),
|
||||
version: env!("CARGO_PKG_VERSION").to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,6 +163,7 @@ impl Into<crate::rpc::Route> for RoutePeerInfo {
|
||||
Some(stun_info)
|
||||
},
|
||||
inst_id: self.inst_id.to_string(),
|
||||
version: env!("CARGO_PKG_VERSION").to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user