Stun fix (#18)

* make easytier-core a lib
* add stun command to easytier cli
* fix stun test for musl
This commit is contained in:
Sijie.Sun
2024-02-08 23:44:51 +08:00
committed by GitHub
parent 7fc4aecdb9
commit 756d498b90
26 changed files with 192 additions and 86 deletions
+2 -3
View File
@@ -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>>;
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -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
}
+1 -1
View File
@@ -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,
};
+3 -3
View File
@@ -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 {
+1 -1
View File
@@ -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
+6 -4
View File
@@ -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