mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-08-07 04:59:49 +00:00
chore: update Rust to 2024 edition (#2066)
This commit is contained in:
@@ -5,11 +5,11 @@ use hickory_proto::rr::LowerName;
|
||||
use hickory_resolver::config::ResolverOpts;
|
||||
use hickory_resolver::name_server::TokioConnectionProvider;
|
||||
use hickory_resolver::system_conf::read_system_conf;
|
||||
use hickory_server::ServerFuture;
|
||||
use hickory_server::authority::{AuthorityObject, Catalog, ZoneType};
|
||||
use hickory_server::server::{Request, RequestHandler, ResponseHandler, ResponseInfo};
|
||||
use hickory_server::store::forwarder::ForwardConfig;
|
||||
use hickory_server::store::{forwarder::ForwardAuthority, in_memory::InMemoryAuthority};
|
||||
use hickory_server::ServerFuture;
|
||||
use std::io;
|
||||
use std::net::SocketAddr;
|
||||
use std::str::FromStr;
|
||||
|
||||
@@ -7,28 +7,28 @@
|
||||
// all the clients will exit and let the easytier instance to launch a new server instance.
|
||||
|
||||
use super::{
|
||||
MAGIC_DNS_INSTANCE_ADDR,
|
||||
config::{GeneralConfigBuilder, RunConfigBuilder},
|
||||
server::Server,
|
||||
system_config::{OSConfig, SystemConfig},
|
||||
MAGIC_DNS_INSTANCE_ADDR,
|
||||
};
|
||||
use crate::{
|
||||
common::{
|
||||
ifcfg::{IfConfiger, IfConfiguerTrait},
|
||||
PeerId,
|
||||
ifcfg::{IfConfiger, IfConfiguerTrait},
|
||||
},
|
||||
instance::dns_server::{
|
||||
config::{Record, RecordBuilder, RecordType},
|
||||
server::build_authority,
|
||||
},
|
||||
peers::{peer_manager::PeerManager, NicPacketFilter},
|
||||
peers::{NicPacketFilter, peer_manager::PeerManager},
|
||||
proto::{
|
||||
api::instance::Route,
|
||||
common::{TunnelInfo, Void},
|
||||
magic_dns::{
|
||||
dns_record::{self},
|
||||
DnsRecord, DnsRecordA, DnsRecordList, GetDnsRecordResponse, HandshakeRequest,
|
||||
HandshakeResponse, MagicDnsServerRpc, MagicDnsServerRpcServer, UpdateDnsRecordRequest,
|
||||
dns_record::{self},
|
||||
},
|
||||
rpc_impl::standalone::{RpcServerHook, StandAloneServer},
|
||||
rpc_types::controller::{BaseController, Controller},
|
||||
@@ -47,11 +47,10 @@ use pnet::packet::icmp::{IcmpTypes, MutableIcmpPacket};
|
||||
use pnet::packet::ipv4::Ipv4Packet;
|
||||
use pnet::packet::udp::UdpPacket;
|
||||
use pnet::packet::{
|
||||
icmp,
|
||||
MutablePacket, Packet, icmp,
|
||||
ip::IpNextHeaderProtocols,
|
||||
ipv4::{self, MutableIpv4Packet},
|
||||
udp::{self, MutableUdpPacket},
|
||||
MutablePacket, Packet,
|
||||
};
|
||||
use std::net::{SocketAddr, SocketAddrV4};
|
||||
use std::sync::Mutex;
|
||||
@@ -528,18 +527,18 @@ impl MagicDnsServerInstance {
|
||||
let mut dns_server = Server::new(dns_config);
|
||||
dns_server.run().await?;
|
||||
|
||||
if !tun_inet.contains(&fake_ip) {
|
||||
if let Some(tun_dev_name) = &tun_dev {
|
||||
let cost = if cfg!(target_os = "windows") {
|
||||
Some(4)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let ifcfg = IfConfiger {};
|
||||
ifcfg
|
||||
.add_ipv4_route(tun_dev_name, fake_ip, 32, cost)
|
||||
.await?;
|
||||
}
|
||||
if !tun_inet.contains(&fake_ip)
|
||||
&& let Some(tun_dev_name) = &tun_dev
|
||||
{
|
||||
let cost = if cfg!(target_os = "windows") {
|
||||
Some(4)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let ifcfg = IfConfiger {};
|
||||
ifcfg
|
||||
.add_ipv4_route(tun_dev_name, fake_ip, 32, cost)
|
||||
.await?;
|
||||
}
|
||||
|
||||
let data = Arc::new(MagicDnsServerInstanceData {
|
||||
@@ -587,13 +586,13 @@ impl MagicDnsServerInstance {
|
||||
if let Err(e) = ret {
|
||||
tracing::error!("Failed to close system config: {:?}", e);
|
||||
}
|
||||
if !self.tun_inet.contains(&self.data.fake_ip) {
|
||||
if let Some(tun_dev_name) = &self.data.tun_dev {
|
||||
let ifcfg = IfConfiger {};
|
||||
let _ = ifcfg
|
||||
.remove_ipv4_route(tun_dev_name, self.data.fake_ip, 32)
|
||||
.await;
|
||||
}
|
||||
if !self.tun_inet.contains(&self.data.fake_ip)
|
||||
&& let Some(tun_dev_name) = &self.data.tun_dev
|
||||
{
|
||||
let ifcfg = IfConfiger {};
|
||||
let _ = ifcfg
|
||||
.remove_ipv4_route(tun_dev_name, self.data.fake_ip, 32)
|
||||
.await;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -17,12 +17,12 @@ use tokio::{sync::oneshot, task::JoinSet};
|
||||
#[cfg(feature = "magic-dns")]
|
||||
use tokio_util::sync::CancellationToken;
|
||||
|
||||
use crate::common::PeerId;
|
||||
use crate::common::acl_processor::AclRuleBuilder;
|
||||
use crate::common::config::ConfigLoader;
|
||||
use crate::common::error::Error;
|
||||
use crate::common::global_ctx::{ArcGlobalCtx, GlobalCtx, GlobalCtxEvent};
|
||||
use crate::common::scoped_task::ScopedTask;
|
||||
use crate::common::PeerId;
|
||||
use crate::connector::direct::DirectConnectorManager;
|
||||
use crate::connector::manual::{ConnectorManagerRpcService, ManualConnectorManager};
|
||||
use crate::connector::tcp_hole_punch::TcpHolePunchConnector;
|
||||
@@ -40,7 +40,7 @@ use crate::peers::peer_manager::{PeerManager, RouteAlgoType};
|
||||
#[cfg(feature = "tun")]
|
||||
use crate::peers::recv_packet_from_chan;
|
||||
use crate::peers::rpc_service::PeerManagerRpcService;
|
||||
use crate::peers::{create_packet_recv_chan, PacketRecvChanReceiver};
|
||||
use crate::peers::{PacketRecvChanReceiver, create_packet_recv_chan};
|
||||
use crate::proto::api::config::{
|
||||
ConfigPatchAction, ConfigRpc, GetConfigRequest, GetConfigResponse, PatchConfigRequest,
|
||||
PatchConfigResponse, PortForwardPatch,
|
||||
@@ -63,7 +63,7 @@ use crate::utils::weak_upgrade;
|
||||
use crate::vpn_portal::{self, VpnPortal};
|
||||
|
||||
#[cfg(feature = "magic-dns")]
|
||||
use super::dns_server::{runner::DnsRunner, MAGIC_DNS_FAKE_IP};
|
||||
use super::dns_server::{MAGIC_DNS_FAKE_IP, runner::DnsRunner};
|
||||
use super::listeners::ListenerManager;
|
||||
|
||||
#[cfg(feature = "socks5")]
|
||||
@@ -272,11 +272,11 @@ impl InstanceConfigPatcher {
|
||||
global_ctx.set_hostname(hostname.clone());
|
||||
global_ctx.config.set_hostname(Some(hostname));
|
||||
}
|
||||
if let Some(ipv4) = patch.ipv4 {
|
||||
if !global_ctx.config.get_dhcp() {
|
||||
global_ctx.set_ipv4(Some(ipv4.into()));
|
||||
global_ctx.config.set_ipv4(Some(ipv4.into()));
|
||||
}
|
||||
if let Some(ipv4) = patch.ipv4
|
||||
&& !global_ctx.config.get_dhcp()
|
||||
{
|
||||
global_ctx.set_ipv4(Some(ipv4.into()));
|
||||
global_ctx.config.set_ipv4(Some(ipv4.into()));
|
||||
}
|
||||
if let Some(ipv6) = patch.ipv6 {
|
||||
global_ctx.set_ipv6(Some(ipv6.into()));
|
||||
@@ -667,13 +667,13 @@ impl Instance {
|
||||
packet_recv: Arc<Mutex<PacketRecvChanReceiver>>,
|
||||
) {
|
||||
#[cfg(feature = "magic-dns")]
|
||||
if let Some(old_ctx) = arc_nic_ctx.lock().await.take() {
|
||||
if let Some(dns_runner) = old_ctx.magic_dns {
|
||||
dns_runner.dns_runner_cancel_token.cancel();
|
||||
tracing::debug!("cancelling dns runner task");
|
||||
let ret = dns_runner.dns_runner_task.await;
|
||||
tracing::debug!("dns runner task cancelled, ret: {:?}", ret);
|
||||
}
|
||||
if let Some(old_ctx) = arc_nic_ctx.lock().await.take()
|
||||
&& let Some(dns_runner) = old_ctx.magic_dns
|
||||
{
|
||||
dns_runner.dns_runner_cancel_token.cancel();
|
||||
tracing::debug!("cancelling dns runner task");
|
||||
let ret = dns_runner.dns_runner_task.await;
|
||||
tracing::debug!("dns runner task cancelled, ret: {:?}", ret);
|
||||
};
|
||||
|
||||
let mut tasks = JoinSet::new();
|
||||
@@ -772,10 +772,11 @@ impl Instance {
|
||||
|
||||
let dhcp_inet = used_ipv4.iter().next().unwrap_or(&default_ipv4_addr);
|
||||
// if old ip is already in this subnet and not conflicted, use it
|
||||
if let Some(ip) = current_dhcp_ip {
|
||||
if ip.network() == dhcp_inet.network() && !used_ipv4.contains(&ip) {
|
||||
continue;
|
||||
}
|
||||
if let Some(ip) = current_dhcp_ip
|
||||
&& ip.network() == dhcp_inet.network()
|
||||
&& !used_ipv4.contains(&ip)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// find an available ip in the subnet
|
||||
@@ -1070,7 +1071,9 @@ impl Instance {
|
||||
self.peer_manager.my_peer_id()
|
||||
}
|
||||
|
||||
fn get_vpn_portal_rpc_service(&self) -> impl VpnPortalRpc<Controller = BaseController> + Clone {
|
||||
fn get_vpn_portal_rpc_service(
|
||||
&self,
|
||||
) -> impl VpnPortalRpc<Controller = BaseController> + Clone + use<> {
|
||||
#[derive(Clone)]
|
||||
struct VpnPortalRpcService {
|
||||
peer_mgr: Weak<PeerManager>,
|
||||
@@ -1115,7 +1118,7 @@ impl Instance {
|
||||
|
||||
fn get_mapped_listener_manager_rpc_service(
|
||||
&self,
|
||||
) -> impl MappedListenerManageRpc<Controller = BaseController> + Clone {
|
||||
) -> impl MappedListenerManageRpc<Controller = BaseController> + Clone + use<> {
|
||||
#[derive(Clone)]
|
||||
pub struct MappedListenerManagerRpcService(Weak<GlobalCtx>);
|
||||
|
||||
@@ -1146,7 +1149,7 @@ impl Instance {
|
||||
|
||||
fn get_port_forward_manager_rpc_service(
|
||||
&self,
|
||||
) -> impl PortForwardManageRpc<Controller = BaseController> + Clone {
|
||||
) -> impl PortForwardManageRpc<Controller = BaseController> + Clone + use<> {
|
||||
#[derive(Clone)]
|
||||
pub struct PortForwardManagerRpcService {
|
||||
global_ctx: Weak<GlobalCtx>,
|
||||
@@ -1176,7 +1179,7 @@ impl Instance {
|
||||
}
|
||||
}
|
||||
|
||||
fn get_stats_rpc_service(&self) -> impl StatsRpc<Controller = BaseController> + Clone {
|
||||
fn get_stats_rpc_service(&self) -> impl StatsRpc<Controller = BaseController> + Clone + use<> {
|
||||
#[derive(Clone)]
|
||||
pub struct StatsRpcService {
|
||||
global_ctx: Weak<GlobalCtx>,
|
||||
@@ -1242,7 +1245,7 @@ impl Instance {
|
||||
}
|
||||
}
|
||||
|
||||
fn get_config_service(&self) -> impl ConfigRpc<Controller = BaseController> + Clone {
|
||||
fn get_config_service(&self) -> impl ConfigRpc<Controller = BaseController> + Clone + use<> {
|
||||
#[derive(Clone)]
|
||||
pub struct ConfigRpcService {
|
||||
patcher: InstanceConfigPatcher,
|
||||
@@ -1285,7 +1288,7 @@ impl Instance {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_api_rpc_service(&self) -> impl InstanceRpcService {
|
||||
pub fn get_api_rpc_service(&self) -> impl InstanceRpcService + use<> {
|
||||
use crate::proto::api::instance::*;
|
||||
|
||||
#[derive(Clone)]
|
||||
@@ -1308,15 +1311,15 @@ impl Instance {
|
||||
|
||||
#[async_trait::async_trait]
|
||||
impl<
|
||||
A: PeerManageRpc<Controller = BaseController> + Send + Sync,
|
||||
B: ConnectorManageRpc<Controller = BaseController> + Send + Sync,
|
||||
C: MappedListenerManageRpc<Controller = BaseController> + Send + Sync,
|
||||
D: VpnPortalRpc<Controller = BaseController> + Send + Sync,
|
||||
E: AclManageRpc<Controller = BaseController> + Send + Sync,
|
||||
F: PortForwardManageRpc<Controller = BaseController> + Send + Sync,
|
||||
G: StatsRpc<Controller = BaseController> + Send + Sync,
|
||||
H: ConfigRpc<Controller = BaseController> + Send + Sync,
|
||||
> InstanceRpcService for ApiRpcServiceImpl<A, B, C, D, E, F, G, H>
|
||||
A: PeerManageRpc<Controller = BaseController> + Send + Sync,
|
||||
B: ConnectorManageRpc<Controller = BaseController> + Send + Sync,
|
||||
C: MappedListenerManageRpc<Controller = BaseController> + Send + Sync,
|
||||
D: VpnPortalRpc<Controller = BaseController> + Send + Sync,
|
||||
E: AclManageRpc<Controller = BaseController> + Send + Sync,
|
||||
F: PortForwardManageRpc<Controller = BaseController> + Send + Sync,
|
||||
G: StatsRpc<Controller = BaseController> + Send + Sync,
|
||||
H: ConfigRpc<Controller = BaseController> + Send + Sync,
|
||||
> InstanceRpcService for ApiRpcServiceImpl<A, B, C, D, E, F, G, H>
|
||||
{
|
||||
fn get_peer_manage_service(&self) -> &dyn PeerManageRpc<Controller = BaseController> {
|
||||
&self.peer_mgr_rpc_service
|
||||
|
||||
@@ -17,8 +17,8 @@ use crate::{
|
||||
},
|
||||
peers::peer_manager::PeerManager,
|
||||
tunnel::{
|
||||
self, ring::RingTunnelListener, tcp::TcpTunnelListener, udp::UdpTunnelListener, IpScheme,
|
||||
Tunnel, TunnelListener, TunnelScheme,
|
||||
self, IpScheme, Tunnel, TunnelListener, TunnelScheme, ring::RingTunnelListener,
|
||||
tcp::TcpTunnelListener, udp::UdpTunnelListener,
|
||||
},
|
||||
utils::BoxExt,
|
||||
};
|
||||
@@ -284,7 +284,7 @@ mod tests {
|
||||
|
||||
use crate::{
|
||||
common::global_ctx::tests::get_mock_global_ctx,
|
||||
tunnel::{packet_def::ZCPacket, ring::RingTunnelConnector, TunnelConnector, TunnelError},
|
||||
tunnel::{TunnelConnector, TunnelError, packet_def::ZCPacket, ring::RingTunnelConnector},
|
||||
};
|
||||
|
||||
use super::*;
|
||||
|
||||
@@ -15,18 +15,18 @@ use crate::{
|
||||
log,
|
||||
},
|
||||
instance::proxy_cidrs_monitor::ProxyCidrsMonitor,
|
||||
peers::{peer_manager::PeerManager, recv_packet_from_chan, PacketRecvChanReceiver},
|
||||
peers::{PacketRecvChanReceiver, peer_manager::PeerManager, recv_packet_from_chan},
|
||||
tunnel::{
|
||||
common::{reserve_buf, FramedWriter, TunnelWrapper, ZCPacketToBytes},
|
||||
packet_def::{ZCPacket, ZCPacketType, TAIL_RESERVED_SIZE},
|
||||
StreamItem, Tunnel, TunnelError, ZCPacketSink, ZCPacketStream,
|
||||
common::{FramedWriter, TunnelWrapper, ZCPacketToBytes, reserve_buf},
|
||||
packet_def::{TAIL_RESERVED_SIZE, ZCPacket, ZCPacketType},
|
||||
},
|
||||
};
|
||||
|
||||
use byteorder::WriteBytesExt as _;
|
||||
use bytes::{BufMut, BytesMut};
|
||||
use cidr::{Ipv4Inet, Ipv6Inet};
|
||||
use futures::{lock::BiLock, ready, SinkExt, Stream, StreamExt};
|
||||
use futures::{SinkExt, Stream, StreamExt, lock::BiLock, ready};
|
||||
use pin_project_lite::pin_project;
|
||||
use pnet::packet::{ipv4::Ipv4Packet, ipv6::Ipv6Packet};
|
||||
use tokio::{
|
||||
@@ -530,7 +530,9 @@ impl VirtualNic {
|
||||
Ok(_) => tracing::info!("add_self_to_firewall_allowlist successful!"),
|
||||
Err(error) => {
|
||||
log::warn!(%error, "Failed to add Easytier to firewall allowlist, Subnet proxy and KCP proxy may not work properly.");
|
||||
log::warn!("You can add firewall rules manually, or use --use-smoltcp to run with user-space TCP/IP stack.");
|
||||
log::warn!(
|
||||
"You can add firewall rules manually, or use --use-smoltcp to run with user-space TCP/IP stack."
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -768,7 +770,7 @@ impl VirtualNic {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn get_ifcfg(&self) -> impl IfConfiguerTrait {
|
||||
pub fn get_ifcfg(&self) -> impl IfConfiguerTrait + use<> {
|
||||
IfConfiger {}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user