NEDNSProxyProvider iOS Не может просматривать какой-либо сайт
** Привет, я настроил NEDNSProxyProvider. Я получаю правильные вызовы в следующей функции, но на устройстве не открывается ни один веб-сайт. **
func handleNewFlow(_ flow: NEAppProxyFlow) -> Bool {
var host = ""
var port = ""
var blocked:Bool = false
var endpoint = NWHostEndpoint.init()
NSLog("DNSProxyProvider handleNewFlow : ")
if let tcpFlow = flow as? NEAppProxyTCPFlow {
host = (tcpFlow.remoteEndpoint as! NWHostEndpoint).hostname
port = (tcpFlow.remoteEndpoint as! NWHostEndpoint).port
NSLog("DNSProxyProvider TCP HOST : \(host)")
NSLog("DNSProxyProvider TCP PORT : \(port)")
NSLog("DNSProxyProvider TCP debugDescription : \(tcpFlow.debugDescription)")
if let ep = tcpFlow.remoteEndpoint as? NWHostEndpoint{
endpoint = ep
}
} else if let udpFlow = flow as? NEAppProxyUDPFlow {
host = (udpFlow.localEndpoint as! NWHostEndpoint).hostname
port = (udpFlow.localEndpoint as! NWHostEndpoint).port
NSLog("DNSProxyProvider UDP HOST : \(host)")
NSLog("DNSProxyProvider UDP PORT : \(port)")
NSLog("DNSProxyProvider UDP debugDescription : \(String(describing: udpFlow.localEndpoint))")
if let ep = udpFlow.localEndpoint as? NWHostEndpoint{
endpoint = ep
}
}
//*
flow.open(withLocalEndpoint: endpoint, completionHandler: { (error) in
if error != nil {
NSLog("DNSProxyProvider: open error: \(error.debugDescription)")
}
});
// */
return true
}
1 ответ
Я смог решить эту проблему, потому что мне пришлось предоставить IP-адреса для пакетов DNS, для которых я возвращаю true из функции handleNewFlow. вот основной поток
вызовите openon flow; ошибка проверки ссылки, если ошибка равна нулю; вызовите readDatagrams; отправьте датаграммы на ваш сервер, чтобы получить их разрешенные; вызовите writeDatagrams с перенастроенными измененными датаграммами с сервера, затем проверьте, существует ли больше датаграмм, снова вызвав readDatagrams или закройте дескриптор