windows fixess
This commit is contained in:
parent
dfeecdde0d
commit
909a2f5362
@ -79,21 +79,19 @@ pub async fn txt_lookup<S: AsRef<str>>(host: S) -> EyreResult<Vec<String>> {
|
|||||||
cfg_if! {
|
cfg_if! {
|
||||||
if #[cfg(target_os = "windows")] {
|
if #[cfg(target_os = "windows")] {
|
||||||
use core::ffi::c_void;
|
use core::ffi::c_void;
|
||||||
use windows::core::PSTR;
|
use windows::core::{PSTR,PCSTR};
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
use windows::Win32::NetworkManagement::Dns::{DnsQuery_UTF8, DnsFree, DNS_TYPE_TEXT, DNS_QUERY_STANDARD, DNS_RECORDA, DnsFreeRecordList};
|
use windows::Win32::NetworkManagement::Dns::{DnsQuery_UTF8, DnsFree, DNS_TYPE_TEXT, DNS_QUERY_STANDARD, DNS_RECORDA, DnsFreeRecordList};
|
||||||
|
|
||||||
let mut out = Vec::new();
|
let mut out = Vec::new();
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut p_query_results: *mut DNS_RECORDA = core::ptr::null_mut();
|
let mut p_query_results: *mut DNS_RECORDA = core::ptr::null_mut();
|
||||||
let status = DnsQuery_UTF8(host.as_ref(), DNS_TYPE_TEXT as u16, DNS_QUERY_STANDARD, core::ptr::null_mut(), &mut p_query_results as *mut *mut DNS_RECORDA, core::ptr::null_mut());
|
let host = host.as_ref().to_string();
|
||||||
if status != 0 {
|
DnsQuery_UTF8(PCSTR::from_raw(host.as_ptr()), DNS_TYPE_TEXT, DNS_QUERY_STANDARD, None, &mut p_query_results as *mut *mut DNS_RECORDA, None).wrap_err("Failed to resolve TXT record")?;
|
||||||
bail!("Failed to resolve TXT record");
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut p_record: *mut DNS_RECORDA = p_query_results;
|
let mut p_record: *mut DNS_RECORDA = p_query_results;
|
||||||
while !p_record.is_null() {
|
while !p_record.is_null() {
|
||||||
if (*p_record).wType == DNS_TYPE_TEXT as u16 {
|
if (*p_record).wType == DNS_TYPE_TEXT.0 {
|
||||||
let count:usize = (*p_record).Data.TXT.dwStringCount.try_into().unwrap();
|
let count:usize = (*p_record).Data.TXT.dwStringCount.try_into().unwrap();
|
||||||
let string_array: *const PSTR = &(*p_record).Data.TXT.pStringArray[0];
|
let string_array: *const PSTR = &(*p_record).Data.TXT.pStringArray[0];
|
||||||
for n in 0..count {
|
for n in 0..count {
|
||||||
@ -107,7 +105,7 @@ pub async fn txt_lookup<S: AsRef<str>>(host: S) -> EyreResult<Vec<String>> {
|
|||||||
}
|
}
|
||||||
p_record = (*p_record).pNext;
|
p_record = (*p_record).pNext;
|
||||||
}
|
}
|
||||||
DnsFree(p_query_results as *const c_void, DnsFreeRecordList);
|
DnsFree(Some(p_query_results as *const c_void), DnsFreeRecordList);
|
||||||
}
|
}
|
||||||
Ok(out)
|
Ok(out)
|
||||||
|
|
||||||
@ -139,7 +137,7 @@ pub async fn ptr_lookup(ip_addr: IpAddr) -> EyreResult<String> {
|
|||||||
cfg_if! {
|
cfg_if! {
|
||||||
if #[cfg(target_os = "windows")] {
|
if #[cfg(target_os = "windows")] {
|
||||||
use core::ffi::c_void;
|
use core::ffi::c_void;
|
||||||
use windows::core::PSTR;
|
use windows::core::{PSTR,PCSTR};
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
use windows::Win32::NetworkManagement::Dns::{DnsQuery_UTF8, DnsFree, DNS_TYPE_PTR, DNS_QUERY_STANDARD, DNS_RECORDA, DnsFreeRecordList};
|
use windows::Win32::NetworkManagement::Dns::{DnsQuery_UTF8, DnsFree, DNS_TYPE_PTR, DNS_QUERY_STANDARD, DNS_RECORDA, DnsFreeRecordList};
|
||||||
|
|
||||||
@ -159,14 +157,11 @@ pub async fn ptr_lookup(ip_addr: IpAddr) -> EyreResult<String> {
|
|||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
let mut p_query_results: *mut DNS_RECORDA = core::ptr::null_mut();
|
let mut p_query_results: *mut DNS_RECORDA = core::ptr::null_mut();
|
||||||
let status = DnsQuery_UTF8(host, DNS_TYPE_PTR as u16, DNS_QUERY_STANDARD, core::ptr::null_mut(), &mut p_query_results as *mut *mut DNS_RECORDA, core::ptr::null_mut());
|
DnsQuery_UTF8(PCSTR::from_raw(host.as_ptr()), DNS_TYPE_PTR, DNS_QUERY_STANDARD, None, &mut p_query_results as *mut *mut DNS_RECORDA, None).wrap_err("Failed to resolve PTR record")?;
|
||||||
if status != 0 {
|
|
||||||
bail!("Failed to resolve PTR record");
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut p_record: *mut DNS_RECORDA = p_query_results;
|
let mut p_record: *mut DNS_RECORDA = p_query_results;
|
||||||
while !p_record.is_null() {
|
while !p_record.is_null() {
|
||||||
if (*p_record).wType == DNS_TYPE_PTR as u16 {
|
if (*p_record).wType == DNS_TYPE_PTR.0 {
|
||||||
let p_name_host: PSTR = (*p_record).Data.PTR.pNameHost;
|
let p_name_host: PSTR = (*p_record).Data.PTR.pNameHost;
|
||||||
let c_str: &CStr = CStr::from_ptr(p_name_host.0 as *const i8);
|
let c_str: &CStr = CStr::from_ptr(p_name_host.0 as *const i8);
|
||||||
if let Ok(str_slice) = c_str.to_str() {
|
if let Ok(str_slice) = c_str.to_str() {
|
||||||
@ -176,7 +171,7 @@ pub async fn ptr_lookup(ip_addr: IpAddr) -> EyreResult<String> {
|
|||||||
}
|
}
|
||||||
p_record = (*p_record).pNext;
|
p_record = (*p_record).pNext;
|
||||||
}
|
}
|
||||||
DnsFree(p_query_results as *const c_void, DnsFreeRecordList);
|
DnsFree(Some(p_query_results as *const c_void), DnsFreeRecordList);
|
||||||
}
|
}
|
||||||
bail!("No records returned");
|
bail!("No records returned");
|
||||||
} else {
|
} else {
|
||||||
|
@ -61,10 +61,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: collection
|
name: collection
|
||||||
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
|
sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.17.1"
|
version: "1.17.2"
|
||||||
convert:
|
convert:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -168,14 +168,6 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.0.0"
|
version: "1.0.0"
|
||||||
js:
|
|
||||||
dependency: transitive
|
|
||||||
description:
|
|
||||||
name: js
|
|
||||||
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
|
|
||||||
url: "https://pub.dev"
|
|
||||||
source: hosted
|
|
||||||
version: "0.6.7"
|
|
||||||
json_annotation:
|
json_annotation:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -212,18 +204,18 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: matcher
|
name: matcher
|
||||||
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
|
sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.12.15"
|
version: "0.12.16"
|
||||||
material_color_utilities:
|
material_color_utilities:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: material_color_utilities
|
name: material_color_utilities
|
||||||
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.2.0"
|
version: "0.5.0"
|
||||||
meta:
|
meta:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -329,10 +321,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: source_span
|
name: source_span
|
||||||
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.9.1"
|
version: "1.10.0"
|
||||||
stack_trace:
|
stack_trace:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -385,10 +377,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
|
sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.5.1"
|
version: "0.6.0"
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -411,7 +403,15 @@ packages:
|
|||||||
path: ".."
|
path: ".."
|
||||||
relative: true
|
relative: true
|
||||||
source: path
|
source: path
|
||||||
version: "0.1.7"
|
version: "0.1.9"
|
||||||
|
web:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: web
|
||||||
|
sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "0.1.4-beta"
|
||||||
win32:
|
win32:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@ -437,5 +437,5 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "3.5.0"
|
version: "3.5.0"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.0.0 <4.0.0"
|
dart: ">=3.1.0-185.0.dev <4.0.0"
|
||||||
flutter: ">=3.10.6"
|
flutter: ">=3.10.6"
|
||||||
|
Loading…
Reference in New Issue
Block a user