Added manual edit dns test servers

This commit is contained in:
PeratX 2017-04-18 21:12:44 +08:00
parent 4f082c6e45
commit cd425eb8a5
7 changed files with 38 additions and 22 deletions

View File

@ -4,10 +4,12 @@ import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.preference.PreferenceManager;
import android.util.Log;
import org.itxtech.daedalus.activity.MainActivity;
import org.itxtech.daedalus.service.DaedalusVpnService;
@ -28,7 +30,7 @@ import java.util.List;
* the Free Software Foundation, version 3.
*/
public class Daedalus extends Application {
public static final String SHORTCUT_ID_ACTIVATE = "activate";
private static final String SHORTCUT_ID_ACTIVATE = "shortcut_activate";
public static final List<DnsServer> DNS_SERVERS = new ArrayList<DnsServer>() {{
add(new DnsServer("0", "113.107.249.56", R.string.server_north_china));
@ -45,14 +47,26 @@ public class Daedalus extends Application {
};
private static Daedalus instance = null;
private static SharedPreferences prefs;
@Override
public void onCreate() {
super.onCreate();
initConfig();
instance = this;
}
private void initConfig() {
PreferenceManager.setDefaultValues(this, R.xml.perf_settings, false);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
}
public static SharedPreferences getPrefs() {
return prefs;
}
@Override
public void onTerminate() {
super.onTerminate();

View File

@ -3,10 +3,8 @@ package org.itxtech.daedalus.activity;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.VpnService;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
@ -38,7 +36,6 @@ public class MainActivity extends AppCompatActivity {
public static final int LAUNCH_ACTION_DEACTIVATE = 2;
private static MainActivity instance = null;
private SharedPreferences prefs;
public static MainActivity getInstance() {
return instance;
@ -50,8 +47,6 @@ public class MainActivity extends AppCompatActivity {
instance = this;
initConfig();
setContentView(R.layout.activity_main);
/*Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);*/
@ -152,11 +147,6 @@ public class MainActivity extends AppCompatActivity {
updateUserInterface();
}
private void initConfig() {
PreferenceManager.setDefaultValues(this, R.xml.perf_settings, false);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
}
private void activateService() {
Intent intent = VpnService.prepare(this);
if (intent != null) {
@ -188,8 +178,8 @@ public class MainActivity extends AppCompatActivity {
protected void onActivityResult(int request, int result, Intent data) {
if (result == RESULT_OK) {
DaedalusVpnService.primaryServer = DnsServer.getDnsServerAddressById(prefs.getString("primary_server", "0"));
DaedalusVpnService.secondaryServer = DnsServer.getDnsServerAddressById(prefs.getString("secondary_server", "1"));
DaedalusVpnService.primaryServer = DnsServer.getDnsServerAddressById(Daedalus.getPrefs().getString("primary_server", "0"));
DaedalusVpnService.secondaryServer = DnsServer.getDnsServerAddressById(Daedalus.getPrefs().getString("secondary_server", "1"));
startService(getServiceIntent().setAction(DaedalusVpnService.ACTION_ACTIVATE));

View File

@ -21,6 +21,7 @@ import org.itxtech.daedalus.R;
import org.itxtech.daedalus.util.DnsServer;
import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Random;
import java.util.Set;
@ -84,7 +85,15 @@ public class ServerTestActivity extends AppCompatActivity {
testDomain = Daedalus.DEFAULT_TEST_DOMAINS[0];
}
StringBuilder testText = new StringBuilder();
String[] dnsServers = {DnsServer.getDnsServerAddressByStringDescription(context, spinnerServerChoice.getSelectedItem().toString()), "114.114.114.114", "8.8.8.8"};
ArrayList<String> dnsServers = new ArrayList<String>() {{
add(DnsServer.getDnsServerAddressByStringDescription(context, spinnerServerChoice.getSelectedItem().toString()));
String servers = Daedalus.getPrefs().getString("dns_test_servers", "");
if (!servers.equals("")) {
for (String server : servers.split(",")) {
add(server);
}
}
}};
DNSClient client = new DNSClient(null);
for (String dnsServer : dnsServers) {
testText = testServer(client, dnsServer, testDomain, testText);

View File

@ -3,12 +3,9 @@ package org.itxtech.daedalus.receiver;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.VpnService;
import android.preference.PreferenceManager;
import android.util.Log;
import org.itxtech.daedalus.Daedalus;
import org.itxtech.daedalus.R;
import org.itxtech.daedalus.service.DaedalusVpnService;
import org.itxtech.daedalus.util.DnsServer;
@ -25,17 +22,15 @@ import org.itxtech.daedalus.util.DnsServer;
public class BootBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
PreferenceManager.setDefaultValues(context, R.xml.perf_settings, false);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
if (prefs.getBoolean("settings_boot", false)) {
if (Daedalus.getPrefs().getBoolean("settings_boot", false)) {
Intent vIntent = VpnService.prepare(context);
if (vIntent != null) {
context.startActivity(vIntent);
}
DaedalusVpnService.primaryServer = DnsServer.getDnsServerAddressById(prefs.getString("primary_server", "0"));
DaedalusVpnService.secondaryServer = DnsServer.getDnsServerAddressById(prefs.getString("secondary_server", "1"));
DaedalusVpnService.primaryServer = DnsServer.getDnsServerAddressById(Daedalus.getPrefs().getString("primary_server", "0"));
DaedalusVpnService.secondaryServer = DnsServer.getDnsServerAddressById(Daedalus.getPrefs().getString("secondary_server", "1"));
context.startService((new Intent(context, DaedalusVpnService.class)).setAction(DaedalusVpnService.ACTION_ACTIVATE));

View File

@ -37,4 +37,5 @@
<string name="notice_legacy_api">当前 Android API 无法支持所有功能。</string>
<string name="settings_issue_tracker">提交反馈</string>
<string name="settings_issue_summary">前往 GitHub 提交问题反馈。</string>
<string name="settings_dns_test_servers">DNS 测试服务器</string>
</resources>

View File

@ -37,4 +37,5 @@
<string name="notice_legacy_api">The current Android API can not support all the features.</string>
<string name="settings_issue_tracker">Issue tracker</string>
<string name="settings_issue_summary">Submit an issue in GitHub Issues page.</string>
<string name="settings_dns_test_servers">DNS test servers</string>
</resources>

View File

@ -16,6 +16,12 @@
android:title="@string/secondary_server"
android:defaultValue="1">
</ListPreference>
<EditTextPreference
android:key="dns_test_servers"
android:defaultValue="114.114.114.114,8.8.8.8"
android:selectAllOnFocus="true"
android:singleLine="true"
android:title="@string/settings_dns_test_servers"/>
</PreferenceCategory>
<PreferenceCategory
android:key="settings_system"