Stun fix (#18)
* make easytier-core a lib * add stun command to easytier cli * fix stun test for musl
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use dashmap::DashMap;
|
||||
use easytier_rpc::PeerConnInfo;
|
||||
|
||||
use tokio::{
|
||||
select,
|
||||
@@ -12,12 +11,12 @@ use tokio_util::bytes::Bytes;
|
||||
use tracing::Instrument;
|
||||
use uuid::Uuid;
|
||||
|
||||
use super::peer_conn::PeerConn;
|
||||
use crate::common::{
|
||||
error::Error,
|
||||
global_ctx::{ArcGlobalCtx, GlobalCtxEvent},
|
||||
};
|
||||
|
||||
use super::peer_conn::PeerConn;
|
||||
use crate::rpc::PeerConnInfo;
|
||||
|
||||
type ArcPeerConn = Arc<Mutex<PeerConn>>;
|
||||
type ConnMap = Arc<DashMap<Uuid, ArcPeerConn>>;
|
||||
|
||||
@@ -7,7 +7,6 @@ use std::{
|
||||
},
|
||||
};
|
||||
|
||||
use easytier_rpc::{PeerConnInfo, PeerConnStats};
|
||||
use futures::{SinkExt, StreamExt};
|
||||
use pnet::datalink::NetworkInterface;
|
||||
|
||||
@@ -26,6 +25,7 @@ use tracing::Instrument;
|
||||
use crate::{
|
||||
common::global_ctx::ArcGlobalCtx,
|
||||
define_tunnel_filter_chain,
|
||||
rpc::{PeerConnInfo, PeerConnStats},
|
||||
tunnels::{
|
||||
stats::{Throughput, WindowLatency},
|
||||
tunnel_filter::StatsRecorderTunnelFilter,
|
||||
|
||||
@@ -353,7 +353,7 @@ impl PeerManager {
|
||||
self.peers.add_route(arc_route).await;
|
||||
}
|
||||
|
||||
pub async fn list_routes(&self) -> Vec<easytier_rpc::Route> {
|
||||
pub async fn list_routes(&self) -> Vec<crate::rpc::Route> {
|
||||
self.basic_route.list_routes().await
|
||||
}
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@ use std::{net::Ipv4Addr, sync::Arc};
|
||||
|
||||
use anyhow::Context;
|
||||
use dashmap::DashMap;
|
||||
use easytier_rpc::PeerConnInfo;
|
||||
use tokio::sync::{mpsc, RwLock};
|
||||
use tokio_util::bytes::Bytes;
|
||||
|
||||
use crate::{
|
||||
common::{error::Error, global_ctx::ArcGlobalCtx},
|
||||
rpc::PeerConnInfo,
|
||||
tunnels::TunnelError,
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@ use std::{net::Ipv4Addr, sync::Arc, time::Duration};
|
||||
|
||||
use async_trait::async_trait;
|
||||
use dashmap::DashMap;
|
||||
use easytier_rpc::{NatType, StunInfo};
|
||||
use rkyv::{Archive, Deserialize, Serialize};
|
||||
use tokio::{sync::Mutex, task::JoinSet};
|
||||
use tokio_util::bytes::Bytes;
|
||||
@@ -21,6 +20,7 @@ use crate::{
|
||||
route_trait::{Route, RouteInterfaceBox},
|
||||
PeerId,
|
||||
},
|
||||
rpc::{NatType, StunInfo},
|
||||
};
|
||||
|
||||
use super::{packet::ArchivedPacketBody, peer_manager::PeerPacketFilter};
|
||||
@@ -431,11 +431,11 @@ impl Route for BasicRoute {
|
||||
}
|
||||
}
|
||||
|
||||
async fn list_routes(&self) -> Vec<easytier_rpc::Route> {
|
||||
async fn list_routes(&self) -> Vec<crate::rpc::Route> {
|
||||
let mut routes = Vec::new();
|
||||
|
||||
let parse_route_info = |real_peer_id: &Uuid, route_info: &SyncPeerInfo| {
|
||||
let mut route = easytier_rpc::Route::default();
|
||||
let mut route = crate::rpc::Route::default();
|
||||
route.ipv4_addr = if let Some(ipv4_addr) = route_info.ipv4_addr {
|
||||
ipv4_addr.to_string()
|
||||
} else {
|
||||
|
||||
@@ -27,7 +27,7 @@ pub trait Route {
|
||||
async fn close(&self);
|
||||
|
||||
async fn get_next_hop(&self, peer_id: &PeerId) -> Option<PeerId>;
|
||||
async fn list_routes(&self) -> Vec<easytier_rpc::Route>;
|
||||
async fn list_routes(&self) -> Vec<crate::rpc::Route>;
|
||||
|
||||
async fn get_peer_id_by_ipv4(&self, _ipv4: &Ipv4Addr) -> Option<PeerId> {
|
||||
None
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use easytier_rpc::cli::PeerInfo;
|
||||
use easytier_rpc::peer_manage_rpc_server::PeerManageRpc;
|
||||
use easytier_rpc::{ListPeerRequest, ListPeerResponse, ListRouteRequest, ListRouteResponse};
|
||||
use crate::rpc::{
|
||||
cli::PeerInfo,
|
||||
peer_manage_rpc_server::PeerManageRpc,
|
||||
{ListPeerRequest, ListPeerResponse, ListRouteRequest, ListRouteResponse},
|
||||
};
|
||||
use tonic::{Request, Response, Status};
|
||||
|
||||
use super::peer_manager::PeerManager;
|
||||
@@ -20,7 +22,7 @@ impl PeerManagerRpcService {
|
||||
let peers = self.peer_manager.get_peer_map().list_peers().await;
|
||||
let mut peer_infos = Vec::new();
|
||||
for peer in peers {
|
||||
let mut peer_info = easytier_rpc::PeerInfo::default();
|
||||
let mut peer_info = PeerInfo::default();
|
||||
peer_info.peer_id = peer.to_string();
|
||||
|
||||
if let Some(conns) = self
|
||||
|
||||
Reference in New Issue
Block a user