mirror of https://github.com/M66B/NetGuard.git
Added setting for internet connection validation
This commit is contained in:
parent
9984fd4879
commit
5df4e83f66
|
@ -62,6 +62,7 @@ import androidx.annotation.NonNull;
|
|||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.core.app.NavUtils;
|
||||
import androidx.core.util.PatternsCompat;
|
||||
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||
|
||||
import org.xml.sax.Attributes;
|
||||
|
@ -238,9 +239,11 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
screen.findPreference("vpn6").setTitle(getString(R.string.setting_vpn6, prefs.getString("vpn6", "fd00:1:fd00:1:fd00:1:fd00:1")));
|
||||
EditTextPreference pref_dns1 = (EditTextPreference) screen.findPreference("dns");
|
||||
EditTextPreference pref_dns2 = (EditTextPreference) screen.findPreference("dns2");
|
||||
EditTextPreference pref_validate = (EditTextPreference) screen.findPreference("validate");
|
||||
EditTextPreference pref_ttl = (EditTextPreference) screen.findPreference("ttl");
|
||||
pref_dns1.setTitle(getString(R.string.setting_dns, prefs.getString("dns", "-")));
|
||||
pref_dns2.setTitle(getString(R.string.setting_dns, prefs.getString("dns2", "-")));
|
||||
pref_validate.setTitle(getString(R.string.setting_validate, prefs.getString("validate", "www.google.com")));
|
||||
pref_ttl.setTitle(getString(R.string.setting_ttl, prefs.getString("ttl", "259200")));
|
||||
|
||||
// SOCKS5 parameters
|
||||
|
@ -669,6 +672,21 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
getString(R.string.setting_dns, prefs.getString(name, "-")));
|
||||
ServiceSinkhole.reload("changed " + name, this, false);
|
||||
|
||||
} else if ("validate".equals(name)) {
|
||||
String host = prefs.getString(name, "www.google.com");
|
||||
try {
|
||||
checkDomain(host);
|
||||
prefs.edit().putString(name, host.trim()).apply();
|
||||
} catch (Throwable ex) {
|
||||
prefs.edit().remove(name).apply();
|
||||
((EditTextPreference) getPreferenceScreen().findPreference(name)).setText(null);
|
||||
if (!TextUtils.isEmpty(host))
|
||||
Toast.makeText(ActivitySettings.this, ex.toString(), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
getPreferenceScreen().findPreference(name).setTitle(
|
||||
getString(R.string.setting_validate, prefs.getString(name, "www.google.com")));
|
||||
ServiceSinkhole.reload("changed " + name, this, false);
|
||||
|
||||
} else if ("ttl".equals(name))
|
||||
getPreferenceScreen().findPreference(name).setTitle(
|
||||
getString(R.string.setting_ttl, prefs.getString(name, "259200")));
|
||||
|
@ -793,6 +811,17 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
}
|
||||
}
|
||||
|
||||
private void checkDomain(String address) throws IllegalArgumentException, UnknownHostException {
|
||||
if (address != null)
|
||||
address = address.trim();
|
||||
if (TextUtils.isEmpty(address))
|
||||
throw new IllegalArgumentException("Bad address");
|
||||
if (Util.isNumericAddress(address))
|
||||
throw new IllegalArgumentException("Bad address");
|
||||
if (!PatternsCompat.DOMAIN_NAME.matcher(address).matches())
|
||||
throw new IllegalArgumentException("Bad address");
|
||||
}
|
||||
|
||||
private BroadcastReceiver interactiveStateReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
|
|
|
@ -2142,13 +2142,15 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
|
|||
}
|
||||
}
|
||||
|
||||
Log.i(TAG, "Validating " + network + " " + ni);
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(ServiceSinkhole.this);
|
||||
String host = prefs.getString("validate", "www.google.com");
|
||||
Log.i(TAG, "Validating " + network + " " + ni + " host=" + host);
|
||||
|
||||
Socket socket = null;
|
||||
try {
|
||||
socket = network.getSocketFactory().createSocket();
|
||||
socket.connect(new InetSocketAddress("www.google.com", 443), 10000);
|
||||
Log.i(TAG, "Validated " + network + " " + ni);
|
||||
socket.connect(new InetSocketAddress(host, 443), 10000);
|
||||
Log.i(TAG, "Validated " + network + " " + ni + " host=" + host);
|
||||
synchronized (validated) {
|
||||
validated.put(network, new Date().getTime());
|
||||
}
|
||||
|
|
|
@ -111,6 +111,7 @@
|
|||
<string name="setting_vpn4">VPN IPv4: %s</string>
|
||||
<string name="setting_vpn6">VPN IPv6: %s</string>
|
||||
<string name="setting_dns">VPN DNS: %s</string>
|
||||
<string name="setting_validate">Validate at: %s</string>
|
||||
<string name="setting_ttl">Minimum DNS TTL: %s s</string>
|
||||
<string name="setting_socks5_enabled">Use SOCKS5 proxy</string>
|
||||
<string name="setting_socks5_addr">SOCKS5 address: %s</string>
|
||||
|
@ -165,6 +166,7 @@
|
|||
<string name="summary_track_usage">Track the number of bytes sent and received for each app and address. This might result in extra battery usage.</string>
|
||||
<string name="summary_block_domains">Respond with the configured DNS response code for blocked domain names. This switch is disabled when no hosts file is available.</string>
|
||||
<string name="summary_rcode">The default value is 3 (NXDOMAIN), which means \'non-existent domain\'.</string>
|
||||
<string name="summary_validate">Domain name used to validate the internet connection at port 443 (https).</string>
|
||||
<string name="summary_socks5_enabled">Only TCP traffic will be sent to the proxy server</string>
|
||||
<string name="summary_watchdog">Periodically check if NetGuard is still running (enter zero to disable this option). This might result in extra battery usage.</string>
|
||||
|
||||
|
|
|
@ -228,6 +228,11 @@
|
|||
android:dependency="filter"
|
||||
android:inputType="text"
|
||||
android:key="dns2" />
|
||||
<EditTextPreference
|
||||
android:hint="www.google.com"
|
||||
android:inputType="text"
|
||||
android:key="validate"
|
||||
android:summary="@string/summary_validate" />
|
||||
<EditTextPreference
|
||||
android:dependency="filter"
|
||||
android:inputType="number"
|
||||
|
|
|
@ -228,6 +228,11 @@
|
|||
android:dependency="filter"
|
||||
android:inputType="text"
|
||||
android:key="dns2" />
|
||||
<EditTextPreference
|
||||
android:hint="www.google.com"
|
||||
android:inputType="text"
|
||||
android:key="validate"
|
||||
android:summary="@string/summary_validate" />
|
||||
<EditTextPreference
|
||||
android:dependency="filter"
|
||||
android:inputType="number"
|
||||
|
|
Loading…
Reference in New Issue