mirror of https://github.com/M66B/NetGuard.git
Refactoring, comments, cleanup
This commit is contained in:
parent
f9b1f1f309
commit
918a633336
|
@ -75,11 +75,11 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
});
|
||||
swEnabled.setChecked(prefs.getBoolean("enabled", false));
|
||||
|
||||
// Listen for external enabled changes
|
||||
// Listen for preference changes
|
||||
prefs.registerOnSharedPreferenceChangeListener(this);
|
||||
|
||||
// Fill application list
|
||||
getApplicationList();
|
||||
fillApplicationList();
|
||||
|
||||
// Listen for added/removed applications
|
||||
IntentFilter intentFilter = new IntentFilter();
|
||||
|
@ -102,16 +102,17 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
Log.i(TAG, "Received " + intent);
|
||||
getApplicationList();
|
||||
fillApplicationList();
|
||||
}
|
||||
};
|
||||
|
||||
private void getApplicationList() {
|
||||
// Package list
|
||||
private void fillApplicationList() {
|
||||
// Get recycler view
|
||||
final RecyclerView rvApplication = (RecyclerView) findViewById(R.id.rvApplication);
|
||||
rvApplication.setHasFixedSize(true);
|
||||
rvApplication.setLayoutManager(new LinearLayoutManager(this));
|
||||
|
||||
// Get/set application list
|
||||
new AsyncTask<Object, Object, List<Rule>>() {
|
||||
@Override
|
||||
protected List<Rule> doInBackground(Object... arg) {
|
||||
|
@ -132,7 +133,10 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
public void onSharedPreferenceChanged(SharedPreferences prefs, String name) {
|
||||
Log.i(TAG, "Changed pref=" + name);
|
||||
if ("enabled".equals(name)) {
|
||||
// Get enabled
|
||||
boolean enabled = prefs.getBoolean(name, false);
|
||||
|
||||
// Check switch state
|
||||
Switch swEnabled = (Switch) getSupportActionBar().getCustomView().findViewById(R.id.swEnabled);
|
||||
if (swEnabled.isChecked() != enabled)
|
||||
swEnabled.setChecked(enabled);
|
||||
|
@ -144,6 +148,7 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
MenuInflater inflater = getMenuInflater();
|
||||
inflater.inflate(R.menu.main, menu);
|
||||
|
||||
// Search
|
||||
MenuItem searchItem = menu.findItem(R.id.menu_search);
|
||||
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
|
||||
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
|
||||
|
@ -178,18 +183,19 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
// Handle item selection
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_wifi:
|
||||
// Toggle Wi-Fi
|
||||
if (adapter != null)
|
||||
adapter.toggle("wifi", this);
|
||||
invalidateOptionsMenu();
|
||||
return true;
|
||||
|
||||
case R.id.menu_other:
|
||||
// Toggle other
|
||||
if (adapter != null)
|
||||
adapter.toggle("other", this);
|
||||
invalidateOptionsMenu();
|
||||
return true;
|
||||
|
||||
case R.id.menu_vpn_settings:
|
||||
// Open VPN settings
|
||||
Intent intent = new Intent("android.net.vpn.SETTINGS");
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
if (intent.resolveActivity(getPackageManager()) != null)
|
||||
|
@ -199,6 +205,7 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
return true;
|
||||
|
||||
case R.id.menu_about:
|
||||
// Show about
|
||||
LayoutInflater inflater = LayoutInflater.from(this);
|
||||
View view = inflater.inflate(R.layout.about, null);
|
||||
TextView tvVersion = (TextView) view.findViewById(R.id.tvVersion);
|
||||
|
@ -217,9 +224,11 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode == REQUEST_VPN) {
|
||||
// Update enabled state
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
prefs.edit().putBoolean("enabled", resultCode == RESULT_OK).apply();
|
||||
|
||||
// Start service
|
||||
if (resultCode == RESULT_OK) {
|
||||
Intent intent = new Intent(ActivityMain.this, BlackHoleService.class);
|
||||
intent.putExtra(BlackHoleService.EXTRA_COMMAND, BlackHoleService.Command.start);
|
||||
|
|
|
@ -26,19 +26,21 @@ public class BlackHoleService extends VpnService {
|
|||
|
||||
@Override
|
||||
public int onStartCommand(Intent intent, int flags, int startId) {
|
||||
// Get enabled
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
boolean enabled = prefs.getBoolean("enabled", false);
|
||||
|
||||
// Get command
|
||||
Command cmd = (intent == null ? Command.start : (Command) intent.getSerializableExtra(EXTRA_COMMAND));
|
||||
Log.i(TAG, "Start intent=" + intent + " command=" + cmd + " enabled=" + enabled + " vpn=" + (vpn != null));
|
||||
|
||||
// Process command
|
||||
if (cmd == Command.reload || cmd == Command.stop) {
|
||||
if (vpn != null)
|
||||
vpnStop();
|
||||
if (cmd == Command.stop)
|
||||
stopSelf();
|
||||
}
|
||||
|
||||
if (cmd == Command.start || cmd == Command.reload) {
|
||||
if (enabled && vpn == null) {
|
||||
Log.i(TAG, "Starting");
|
||||
|
@ -52,7 +54,7 @@ public class BlackHoleService extends VpnService {
|
|||
private void vpnStart() {
|
||||
Log.i(TAG, "Starting");
|
||||
|
||||
// Check if Wi-Fi connection
|
||||
// Check if Wi-Fi
|
||||
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
|
||||
NetworkInfo ni = cm.getActiveNetworkInfo();
|
||||
boolean wifi = (ni != null && ni.getType() == ConnectivityManager.TYPE_WIFI);
|
||||
|
@ -60,7 +62,7 @@ public class BlackHoleService extends VpnService {
|
|||
|
||||
// Build VPN service
|
||||
final Builder builder = new Builder();
|
||||
builder.setSession("BlackHoleService");
|
||||
builder.setSession(getString(R.string.app_name));
|
||||
builder.addAddress("10.1.10.1", 32);
|
||||
builder.addRoute("0.0.0.0", 0);
|
||||
builder.setBlocking(false);
|
||||
|
@ -75,6 +77,7 @@ public class BlackHoleService extends VpnService {
|
|||
}
|
||||
}
|
||||
|
||||
// Build configure intent
|
||||
Intent configure = new Intent(this, ActivityMain.class);
|
||||
PendingIntent pi = PendingIntent.getActivity(this, 0, configure, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
builder.setConfigureIntent(pi);
|
||||
|
@ -110,6 +113,8 @@ public class BlackHoleService extends VpnService {
|
|||
public void onCreate() {
|
||||
super.onCreate();
|
||||
Log.i(TAG, "Create");
|
||||
|
||||
// Request connectivity updates
|
||||
IntentFilter intentFilter = new IntentFilter();
|
||||
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
|
||||
registerReceiver(connectivityChangedReceiver, intentFilter);
|
||||
|
@ -118,19 +123,26 @@ public class BlackHoleService extends VpnService {
|
|||
@Override
|
||||
public void onDestroy() {
|
||||
Log.i(TAG, "Destroy");
|
||||
|
||||
if (vpn != null)
|
||||
vpnStop();
|
||||
|
||||
unregisterReceiver(connectivityChangedReceiver);
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRevoke() {
|
||||
Log.i(TAG, "Revoke");
|
||||
|
||||
if (vpn != null)
|
||||
vpnStop();
|
||||
|
||||
// Disable firewall
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
prefs.edit().putBoolean("enabled", false).apply();
|
||||
|
||||
super.onRevoke();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@ public class Receiver extends BroadcastReceiver {
|
|||
public void onReceive(final Context context, Intent intent) {
|
||||
Log.i(TAG, "Received " + intent);
|
||||
|
||||
// Start service
|
||||
if (VpnService.prepare(context) == null) {
|
||||
Intent service = new Intent(context, BlackHoleService.class);
|
||||
service.putExtra(BlackHoleService.EXTRA_COMMAND, BlackHoleService.Command.start);
|
||||
|
|
|
@ -51,12 +51,10 @@ public class RuleAdapter extends RecyclerView.Adapter<RuleAdapter.ViewHolder> im
|
|||
|
||||
@Override
|
||||
public void onBindViewHolder(final ViewHolder holder, int position) {
|
||||
// Get rule
|
||||
final Rule rule = listSelected.get(position);
|
||||
|
||||
holder.ivIcon.setImageDrawable(rule.getIcon(holder.view.getContext()));
|
||||
holder.tvName.setText(rule.name);
|
||||
holder.tvPackage.setText(rule.info.packageName);
|
||||
|
||||
// Rule change listener
|
||||
CompoundButton.OnCheckedChangeListener cbListener = new CompoundButton.OnCheckedChangeListener() {
|
||||
@Override
|
||||
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
|
||||
|
@ -81,6 +79,10 @@ public class RuleAdapter extends RecyclerView.Adapter<RuleAdapter.ViewHolder> im
|
|||
}
|
||||
};
|
||||
|
||||
holder.ivIcon.setImageDrawable(rule.getIcon(holder.view.getContext()));
|
||||
holder.tvName.setText(rule.name);
|
||||
holder.tvPackage.setText(rule.info.packageName);
|
||||
|
||||
holder.cbWifi.setOnCheckedChangeListener(null);
|
||||
holder.cbWifi.setChecked(rule.wifi_blocked);
|
||||
holder.cbWifi.setOnCheckedChangeListener(cbListener);
|
||||
|
@ -125,6 +127,7 @@ public class RuleAdapter extends RecyclerView.Adapter<RuleAdapter.ViewHolder> im
|
|||
}
|
||||
|
||||
public void toggle(String name, Context context) {
|
||||
// Toggle rule set
|
||||
SharedPreferences.Editor editor = context.getSharedPreferences(name, Context.MODE_PRIVATE).edit();
|
||||
for (Rule rule : listSelected) {
|
||||
if ("wifi".equals(name)) {
|
||||
|
@ -137,10 +140,12 @@ public class RuleAdapter extends RecyclerView.Adapter<RuleAdapter.ViewHolder> im
|
|||
}
|
||||
editor.apply();
|
||||
|
||||
// Reload rules
|
||||
Intent intent = new Intent(context, BlackHoleService.class);
|
||||
intent.putExtra(BlackHoleService.EXTRA_COMMAND, BlackHoleService.Command.reload);
|
||||
context.startService(intent);
|
||||
|
||||
// Update UI
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue