mirror of
https://github.com/EasyTier/EasyTier.git
synced 2026-05-06 17:59:11 +00:00
chore: clippy fix some code on Windows (#2106)
This commit is contained in:
@@ -345,7 +345,7 @@ fn add_protocol_firewall_rules(
|
|||||||
|
|
||||||
SafeArrayPutElement(
|
SafeArrayPutElement(
|
||||||
interface_array,
|
interface_array,
|
||||||
&index as *const _ as *const i32,
|
&index as *const _,
|
||||||
&variant_interface as *const _ as *const std::ffi::c_void,
|
&variant_interface as *const _ as *const std::ffi::c_void,
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
|
|||||||
@@ -448,12 +448,11 @@ impl RegistryManager {
|
|||||||
for guid in network_key.enum_keys().map_while(Result::ok) {
|
for guid in network_key.enum_keys().map_while(Result::ok) {
|
||||||
if let Ok(guid_key) = network_key.open_subkey_with_flags(&guid, KEY_READ) {
|
if let Ok(guid_key) = network_key.open_subkey_with_flags(&guid, KEY_READ) {
|
||||||
// 检查 Connection/Name 是否匹配目标接口名
|
// 检查 Connection/Name 是否匹配目标接口名
|
||||||
if let Ok(conn_key) = guid_key.open_subkey_with_flags("Connection", KEY_READ) {
|
if let Ok(conn_key) = guid_key.open_subkey_with_flags("Connection", KEY_READ)
|
||||||
if let Ok(name) = conn_key.get_value::<String, _>("Name") {
|
&& let Ok(name) = conn_key.get_value::<String, _>("Name")
|
||||||
if name == interface_name {
|
&& name == interface_name
|
||||||
return Ok(guid);
|
{
|
||||||
}
|
return Ok(guid);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -202,13 +202,12 @@ mod tests {
|
|||||||
.arg("1")
|
.arg("1")
|
||||||
.arg("-w")
|
.arg("-w")
|
||||||
.arg("100")
|
.arg("100")
|
||||||
.arg(&fake_ip.to_string())
|
.arg(fake_ip.to_string())
|
||||||
.output()
|
.output()
|
||||||
.await
|
.await
|
||||||
|
&& o.status.success()
|
||||||
{
|
{
|
||||||
if o.status.success() {
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -491,10 +491,10 @@ mod win_service_manager {
|
|||||||
{
|
{
|
||||||
Ok(s) => s,
|
Ok(s) => s,
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
if let windows_service::Error::Winapi(ref win_err) = e {
|
if let windows_service::Error::Winapi(ref win_err) = e
|
||||||
if win_err.raw_os_error() == Some(0x424) {
|
&& win_err.raw_os_error() == Some(0x424)
|
||||||
return Ok(ServiceStatus::NotInstalled);
|
{
|
||||||
}
|
return Ok(ServiceStatus::NotInstalled);
|
||||||
}
|
}
|
||||||
return Err(io::Error::other(e));
|
return Err(io::Error::other(e));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,10 +68,10 @@ pub struct WinDivertTun {
|
|||||||
|
|
||||||
impl Drop for WinDivertTun {
|
impl Drop for WinDivertTun {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
if let Ok(mut sender) = self.sender.lock() {
|
if let Ok(mut sender) = self.sender.lock()
|
||||||
if let Err(e) = sender.close(windivert::CloseAction::Nothing) {
|
&& let Err(e) = sender.close(windivert::CloseAction::Nothing)
|
||||||
tracing::error!("WinDivertSender close failed: {:?}", e);
|
{
|
||||||
}
|
tracing::error!("WinDivertSender close failed: {:?}", e);
|
||||||
}
|
}
|
||||||
if let Err(e) = self.reader.shutdown() {
|
if let Err(e) = self.reader.shutdown() {
|
||||||
tracing::error!("WinDivertReader shutdown failed: {:?}", e);
|
tracing::error!("WinDivertReader shutdown failed: {:?}", e);
|
||||||
@@ -94,8 +94,7 @@ impl WinDivertTun {
|
|||||||
// Layer: Network (0)
|
// Layer: Network (0)
|
||||||
// Priority: 0
|
// Priority: 0
|
||||||
let flags = WinDivertFlags::default().set_sniff();
|
let flags = WinDivertFlags::default().set_sniff();
|
||||||
let reader = WinDivert::network(&filter, 0, flags)
|
let reader = WinDivert::network(&filter, 0, flags).map_err(io::Error::other)?;
|
||||||
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
|
|
||||||
let reader = Arc::new(WinDivertReader::new(reader));
|
let reader = Arc::new(WinDivertReader::new(reader));
|
||||||
let reader_clone = reader.clone();
|
let reader_clone = reader.clone();
|
||||||
|
|
||||||
@@ -109,7 +108,7 @@ impl WinDivertTun {
|
|||||||
|
|
||||||
let mut eth_data = vec![0u8; 14 + data.len()];
|
let mut eth_data = vec![0u8; 14 + data.len()];
|
||||||
// Set EtherType
|
// Set EtherType
|
||||||
if data.len() > 0 && data[0] >> 4 == 4 {
|
if !data.is_empty() && data[0] >> 4 == 4 {
|
||||||
eth_data[12] = 0x08;
|
eth_data[12] = 0x08;
|
||||||
eth_data[13] = 0x00;
|
eth_data[13] = 0x00;
|
||||||
} else {
|
} else {
|
||||||
@@ -118,12 +117,12 @@ impl WinDivertTun {
|
|||||||
}
|
}
|
||||||
eth_data[14..].copy_from_slice(data);
|
eth_data[14..].copy_from_slice(data);
|
||||||
|
|
||||||
if let Err(_) = tx.blocking_send(eth_data) {
|
if tx.blocking_send(eth_data).is_err() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Err(_) => {
|
Err(error) => {
|
||||||
// log error?
|
tracing::error!(?error, "WinDivert recv failed");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -133,8 +132,8 @@ impl WinDivertTun {
|
|||||||
// Sender: non-sniff, empty filter?
|
// Sender: non-sniff, empty filter?
|
||||||
// Use "false" to avoid capturing anything.
|
// Use "false" to avoid capturing anything.
|
||||||
// Flags: 0
|
// Flags: 0
|
||||||
let sender = WinDivert::network("false", 0, WinDivertFlags::default())
|
let sender =
|
||||||
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
|
WinDivert::network("false", 0, WinDivertFlags::default()).map_err(io::Error::other)?;
|
||||||
|
|
||||||
Ok(Self {
|
Ok(Self {
|
||||||
recv_queue: Mutex::new(rx),
|
recv_queue: Mutex::new(rx),
|
||||||
@@ -171,21 +170,15 @@ impl stack::Tun for WinDivertTun {
|
|||||||
let ip_data = &packet[14..];
|
let ip_data = &packet[14..];
|
||||||
|
|
||||||
let Ok(sender) = self.sender.try_lock() else {
|
let Ok(sender) = self.sender.try_lock() else {
|
||||||
return Err(std::io::Error::new(
|
return Err(std::io::Error::other("WinDivert sender lock failed"));
|
||||||
std::io::ErrorKind::Other,
|
|
||||||
"WinDivert sender lock failed",
|
|
||||||
));
|
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut pkt = unsafe { WinDivertPacket::<layer::NetworkLayer>::new(ip_data.to_vec()) };
|
let mut pkt = unsafe { WinDivertPacket::<layer::NetworkLayer>::new(ip_data.to_vec()) };
|
||||||
pkt.address.set_outbound(true);
|
pkt.address.set_outbound(true);
|
||||||
|
|
||||||
sender.send(&pkt).map_err(|e| {
|
sender
|
||||||
std::io::Error::new(
|
.send(&pkt)
|
||||||
std::io::ErrorKind::Other,
|
.map_err(|e| std::io::Error::other(format!("WinDivert send failed: {}", e)))?;
|
||||||
format!("WinDivert send failed: {}", e),
|
|
||||||
)
|
|
||||||
})?;
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user