package org.pihole.dnsproxy; import android.os.ParcelFileDescriptor; import android.util.Log; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.net.InetSocketAddress; import java.net.SocketAddress; import java.nio.channels.DatagramChannel; public class DNSProxyRunner implements Runnable { public interface OnEstablishListener { void onEstablish(ParcelFileDescriptor networkInterface); } private OnEstablishListener onEstablishListener; private DNSProxyService service; DNSProxyRunner(DNSProxyService service) { this.service = service; } @Override public void run() { try { DatagramChannel tunnel = DatagramChannel.open(); if(!this.service.protect(tunnel.socket())) { throw new IllegalStateException("Cannot protect tunnel"); } // SocketAddress server = new InetSocketAddress("servername", "serverport"); // // tunnel.connect(server); // tunnel.configureBlocking(false); // // ParcelFileDescriptor networkInterface = this.handshake(tunnel); // FileInputStream in = new FileInputStream(networkInterface.getFileDescriptor()); // FileOutputStream out = new FileOutputStream(networkInterface.getFileDescriptor()); } catch (IOException exception) { Log.e(DNSProxyService.LOG_TAG, "Cannot use socket", exception); } } public void setOnEstablishListener(OnEstablishListener listener) { this.onEstablishListener = listener; } }