diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 5e5f5ffc..a10303ab 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,5 +31,6 @@ + \ No newline at end of file diff --git a/app/src/main/java/com/emanuelef/remote_capture/MainActivity.java b/app/src/main/java/com/emanuelef/remote_capture/MainActivity.java index fa566c25..8ac870a4 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/MainActivity.java +++ b/app/src/main/java/com/emanuelef/remote_capture/MainActivity.java @@ -237,9 +237,12 @@ public class MainActivity extends AppCompatActivity implements LoaderManager.Loa if (requestCode == REQUEST_CODE_VPN && resultCode == RESULT_OK) { Intent intent = new Intent(MainActivity.this, CaptureService.class); Bundle bundle = new Bundle(); + String dns_server = Utils.getDnsServer(getApplicationContext()); + + Log.i("Main", "Using DNS server " + dns_server); // the configuration for the VPN - bundle.putString("dns_server", "8.8.8.8"); // TODO: read system DNS + bundle.putString("dns_server", dns_server); bundle.putString(Prefs.PREF_COLLECTOR_IP_KEY, getCollectorIPPref()); bundle.putInt(Prefs.PREF_COLLECTOR_PORT_KEY, Integer.parseInt(getCollectorPortPref())); bundle.putInt(Prefs.PREF_UID_FILTER, mFilterUid); diff --git a/app/src/main/java/com/emanuelef/remote_capture/Utils.java b/app/src/main/java/com/emanuelef/remote_capture/Utils.java index 7eaaa6d7..c10e6da5 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/Utils.java +++ b/app/src/main/java/com/emanuelef/remote_capture/Utils.java @@ -1,12 +1,17 @@ package com.emanuelef.remote_capture; +import android.app.Service; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; +import android.net.ConnectivityManager; +import android.net.Network; +import android.os.Build; import android.util.Log; +import java.net.InetAddress; import java.util.ArrayList; import java.util.Calendar; import java.util.List; @@ -51,6 +56,25 @@ public class Utils { return apps; } + public static String getDnsServer(Context context) { + ConnectivityManager conn = (ConnectivityManager) context.getSystemService(Service.CONNECTIVITY_SERVICE); + + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + Network net = conn.getActiveNetwork(); + + if(net != null) { + List dns_server = conn.getLinkProperties(net).getDnsServers(); + + for(InetAddress server : dns_server) { + return server.getHostAddress(); + } + } + } + + // Fallback + return "8.8.8.8"; + } + public static long now() { Calendar calendar = Calendar.getInstance(); return(calendar.getTimeInMillis() / 1000);