mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-08-06 20:49:46 +00:00
Merge branch 'main' into feat/dns-policy
# Conflicts: # easytier/src/common/log.rs # easytier/src/connector/dns_connector.rs # easytier/src/dns/system/windows.rs # easytier/src/gateway/socks5.rs # easytier/src/instance/dns_server/server.rs # easytier/src/instance/dns_server/server_instance.rs # easytier/src/instance/instance.rs # easytier/src/peers/peer_manager.rs # easytier/src/peers/peer_ospf_route.rs # easytier/src/proto/utils.rs # easytier/src/tunnel/common.rs # easytier/src/utils/panic.rs
This commit is contained in:
@@ -15,12 +15,12 @@ use tokio::sync::{Mutex, Notify};
|
||||
#[cfg(feature = "tun")]
|
||||
use tokio::{sync::oneshot, task::JoinSet};
|
||||
|
||||
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,
|
||||
@@ -215,11 +215,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()));
|
||||
@@ -690,10 +690,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
|
||||
@@ -972,7 +973,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>,
|
||||
@@ -1017,7 +1020,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>);
|
||||
|
||||
@@ -1048,7 +1051,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>,
|
||||
@@ -1078,7 +1081,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>,
|
||||
@@ -1144,7 +1147,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,
|
||||
@@ -1187,7 +1190,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)]
|
||||
@@ -1210,15 +1213,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
|
||||
|
||||
Reference in New Issue
Block a user