mirror of https://github.com/M66B/NetGuard.git
Always reload rules
This commit is contained in:
parent
2ea05570da
commit
37d44af65a
|
@ -99,7 +99,7 @@ am start -a eu.faircode.netguard.STOP_PORT_FORWARD \
|
|||
DatabaseHelper.getInstance(ActivityForwardApproval.this).deleteForward(protocol, dport);
|
||||
}
|
||||
|
||||
SinkholeService.reload(null, "forwarding", ActivityForwardApproval.this);
|
||||
SinkholeService.reload("forwarding", ActivityForwardApproval.this);
|
||||
|
||||
finish();
|
||||
}
|
||||
|
|
|
@ -98,7 +98,7 @@ public class ActivityForwarding extends AppCompatActivity {
|
|||
public boolean onMenuItemClick(MenuItem menuItem) {
|
||||
if (menuItem.getItemId() == R.id.menu_delete) {
|
||||
DatabaseHelper.getInstance(ActivityForwarding.this).deleteForward(protocol, dport);
|
||||
SinkholeService.reload(null, "forwarding", ActivityForwarding.this);
|
||||
SinkholeService.reload("forwarding", ActivityForwarding.this);
|
||||
adapter = new AdapterForwarding(ActivityForwarding.this,
|
||||
DatabaseHelper.getInstance(ActivityForwarding.this).getForwarding());
|
||||
lvForwarding.setAdapter(adapter);
|
||||
|
@ -211,7 +211,7 @@ public class ActivityForwarding extends AppCompatActivity {
|
|||
protected void onPostExecute(Throwable ex) {
|
||||
if (running)
|
||||
if (ex == null) {
|
||||
SinkholeService.reload(null, "forwarding", ActivityForwarding.this);
|
||||
SinkholeService.reload("forwarding", ActivityForwarding.this);
|
||||
adapter = new AdapterForwarding(ActivityForwarding.this,
|
||||
DatabaseHelper.getInstance(ActivityForwarding.this).getForwarding());
|
||||
lvForwarding.setAdapter(adapter);
|
||||
|
|
|
@ -253,7 +253,7 @@ public class ActivityLog extends AppCompatActivity implements SharedPreferences.
|
|||
if (swEnabled.isChecked() != log)
|
||||
swEnabled.setChecked(log);
|
||||
|
||||
SinkholeService.reload(null, "changed " + name, ActivityLog.this);
|
||||
SinkholeService.reload("changed " + name, ActivityLog.this);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -200,7 +200,7 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
swipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
||||
@Override
|
||||
public void onRefresh() {
|
||||
SinkholeService.reload(null, "pull", ActivityMain.this);
|
||||
SinkholeService.reload("pull", ActivityMain.this);
|
||||
updateApplicationList(null);
|
||||
}
|
||||
});
|
||||
|
@ -406,7 +406,7 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
|
|||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
if (requestCode == REQUEST_ROAMING)
|
||||
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
|
||||
SinkholeService.reload("other", "permission granted", this);
|
||||
SinkholeService.reload("permission granted", this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -309,7 +309,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
Toast.makeText(ActivitySettings.this, R.string.msg_downloaded, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
SinkholeService.reload(null, "hosts file download", ActivitySettings.this);
|
||||
SinkholeService.reload("hosts file download", ActivitySettings.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -467,20 +467,20 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
// Dependencies
|
||||
if ("whitelist_wifi".equals(name) ||
|
||||
"screen_wifi".equals(name))
|
||||
SinkholeService.reload("wifi", "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
else if ("whitelist_other".equals(name) ||
|
||||
"screen_other".equals(name))
|
||||
SinkholeService.reload("other", "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
else if ("whitelist_roaming".equals(name)) {
|
||||
if (prefs.getBoolean(name, false)) {
|
||||
if (Util.hasPhoneStatePermission(this))
|
||||
SinkholeService.reload("other", "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
else
|
||||
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_ROAMING_INTERNATIONAL);
|
||||
} else
|
||||
SinkholeService.reload("other", "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
} else if ("auto_enable".equals(name))
|
||||
getPreferenceScreen().findPreference(name).setTitle(getString(R.string.setting_auto, prefs.getString(name, "0")));
|
||||
|
@ -492,7 +492,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
recreate();
|
||||
|
||||
else if ("tethering".equals(name))
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
else if ("wifi_homes".equals(name)) {
|
||||
MultiSelectListPreference pref_wifi_homes = (MultiSelectListPreference) getPreferenceScreen().findPreference(name);
|
||||
|
@ -501,17 +501,17 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
pref_wifi_homes.setTitle(getString(R.string.setting_wifi_home, TextUtils.join(", ", ssid)));
|
||||
else
|
||||
pref_wifi_homes.setTitle(getString(R.string.setting_wifi_home, "-"));
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
} else if ("use_metered".equals(name))
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
else if ("unmetered_2g".equals(name) ||
|
||||
"unmetered_3g".equals(name) ||
|
||||
"unmetered_4g".equals(name)) {
|
||||
if (prefs.getBoolean(name, false)) {
|
||||
if (Util.hasPhoneStatePermission(this))
|
||||
SinkholeService.reload("other", "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
else {
|
||||
if ("unmetered_2g".equals(name))
|
||||
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_METERED2);
|
||||
|
@ -521,16 +521,16 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_METERED4);
|
||||
}
|
||||
} else
|
||||
SinkholeService.reload("other", "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
} else if ("national_roaming".equals(name)) {
|
||||
if (prefs.getBoolean(name, false)) {
|
||||
if (Util.hasPhoneStatePermission(this))
|
||||
SinkholeService.reload("other", "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
else
|
||||
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_ROAMING_NATIONAL);
|
||||
} else
|
||||
SinkholeService.reload("other", "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
|
||||
} else if ("manage_system".equals(name)) {
|
||||
|
@ -538,14 +538,14 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
if (!manage)
|
||||
prefs.edit().putBoolean("show_user", true).apply();
|
||||
prefs.edit().putBoolean("show_system", manage).apply();
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
} else if ("log_app".equals(name)) {
|
||||
Intent ruleset = new Intent(ActivityMain.ACTION_RULES_CHANGED);
|
||||
LocalBroadcastManager.getInstance(this).sendBroadcast(ruleset);
|
||||
|
||||
} else if ("filter".equals(name)) {
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
// Show dialog
|
||||
if (prefs.getBoolean(name, false)) {
|
||||
|
@ -571,10 +571,10 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
}
|
||||
|
||||
} else if ("filter_allowed".equals(name))
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
else if ("use_hosts".equals(name))
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
|
||||
else if ("vpn4".equals(name)) {
|
||||
String vpn4 = prefs.getString("vpn4", null);
|
||||
|
@ -583,7 +583,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
} catch (Throwable ex) {
|
||||
prefs.edit().remove("vpn4").apply();
|
||||
}
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
getPreferenceScreen().findPreference(name).setTitle(getString(R.string.setting_vpn4, prefs.getString("vpn4", "10.1.10.1")));
|
||||
|
||||
} else if ("vpn6".equals(name)) {
|
||||
|
@ -593,7 +593,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
} catch (Throwable ex) {
|
||||
prefs.edit().remove("vpn6").apply();
|
||||
}
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
getPreferenceScreen().findPreference(name).setTitle(getString(R.string.setting_vpn6, prefs.getString("vpn6", "fd00:1:fd00:1:fd00:1:fd00:1")));
|
||||
|
||||
} else if ("dns".equals(name)) {
|
||||
|
@ -603,7 +603,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
} catch (Throwable ex) {
|
||||
prefs.edit().remove("dns").apply();
|
||||
}
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
getPreferenceScreen().findPreference(name).setTitle(getString(R.string.setting_dns, prefs.getString("dns", Util.getDefaultDNS(this))));
|
||||
} else if ("pcap_record_size".equals(name) || "pcap_file_size".equals(name)) {
|
||||
if ("pcap_record_size".equals(name))
|
||||
|
@ -636,7 +636,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
getPreferenceScreen().findPreference(name).setSummary(prefs.getString(name, "http://www.netguard.me/hosts"));
|
||||
|
||||
else if ("loglevel".equals(name))
|
||||
SinkholeService.reload(null, "changed " + name, this);
|
||||
SinkholeService.reload("changed " + name, this);
|
||||
}
|
||||
|
||||
private void checkAddress(String address) throws IllegalArgumentException, UnknownHostException {
|
||||
|
@ -725,7 +725,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
}
|
||||
|
||||
if (granted)
|
||||
SinkholeService.reload("other", "permission granted", this);
|
||||
SinkholeService.reload("permission granted", this);
|
||||
}
|
||||
|
||||
private BroadcastReceiver interactiveStateReceiver = new BroadcastReceiver() {
|
||||
|
@ -926,7 +926,7 @@ public class ActivitySettings extends AppCompatActivity implements SharedPrefere
|
|||
Toast.makeText(ActivitySettings.this, R.string.msg_completed, Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
||||
SinkholeService.reload(null, "hosts import", ActivitySettings.this);
|
||||
SinkholeService.reload("hosts import", ActivitySettings.this);
|
||||
} else
|
||||
Toast.makeText(ActivitySettings.this, ex.toString(), Toast.LENGTH_LONG).show();
|
||||
}
|
||||
|
|
|
@ -514,20 +514,20 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> im
|
|||
case R.id.menu_allow:
|
||||
if (IAB.isPurchased(ActivityPro.SKU_FILTER, context)) {
|
||||
DatabaseHelper.getInstance(context).setAccess(id, 0);
|
||||
SinkholeService.reload(null, "allow host", context);
|
||||
SinkholeService.reload("allow host", context);
|
||||
} else
|
||||
context.startActivity(new Intent(context, ActivityPro.class));
|
||||
return true;
|
||||
case R.id.menu_block:
|
||||
if (IAB.isPurchased(ActivityPro.SKU_FILTER, context)) {
|
||||
DatabaseHelper.getInstance(context).setAccess(id, 1);
|
||||
SinkholeService.reload(null, "block host", context);
|
||||
SinkholeService.reload("block host", context);
|
||||
} else
|
||||
context.startActivity(new Intent(context, ActivityPro.class));
|
||||
return true;
|
||||
case R.id.menu_reset:
|
||||
DatabaseHelper.getInstance(context).setAccess(id, -1);
|
||||
SinkholeService.reload(null, "reset host", context);
|
||||
SinkholeService.reload("reset host", context);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -652,7 +652,7 @@ public class AdapterRule extends RecyclerView.Adapter<AdapterRule.ViewHolder> im
|
|||
if (root) {
|
||||
notifyDataSetChanged();
|
||||
NotificationManagerCompat.from(context).cancel(rule.info.applicationInfo.uid);
|
||||
SinkholeService.reload(null, "rule changed", context);
|
||||
SinkholeService.reload("rule changed", context);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -254,7 +254,7 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
public void onSubscriptionsChanged() {
|
||||
Log.i(TAG, "Subscriptions changed");
|
||||
if (prefs.getBoolean("national_roaming", false))
|
||||
SinkholeService.reload(null, "Subscriptions changed", SinkholeService.this);
|
||||
SinkholeService.reload("Subscriptions changed", SinkholeService.this);
|
||||
}
|
||||
};
|
||||
sm.addOnSubscriptionsChangedListener((SubscriptionManager.OnSubscriptionsChangedListener) subscriptionsChangedListener);
|
||||
|
@ -457,7 +457,7 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
prefs.edit().putBoolean(pkg, blocked).apply();
|
||||
|
||||
// Apply rules
|
||||
SinkholeService.reload(null, "notification", SinkholeService.this);
|
||||
SinkholeService.reload("notification", SinkholeService.this);
|
||||
|
||||
// Update notification
|
||||
Receiver.notifyNewApplication(uid, SinkholeService.this);
|
||||
|
@ -1030,7 +1030,7 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
}
|
||||
|
||||
private void prepareUidIPFilters() {
|
||||
Map<Long, Map<InetAddress, Boolean>> map = new HashMap<>();
|
||||
mapUidIPFilters.clear();
|
||||
|
||||
Cursor cursor = DatabaseHelper.getInstance(SinkholeService.this).getAccessDns();
|
||||
int colUid = cursor.getColumnIndex("uid");
|
||||
|
@ -1058,17 +1058,17 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
dport = 0;
|
||||
long key = (version << 40) | (protocol << 32) | (dport << 16) | uid;
|
||||
|
||||
if (!map.containsKey(key))
|
||||
map.put(key, new HashMap());
|
||||
if (!mapUidIPFilters.containsKey(key))
|
||||
mapUidIPFilters.put(key, new HashMap());
|
||||
|
||||
try {
|
||||
Log.i(TAG, "Set filter uid=" + uid + " " + daddr + " " + dresource + "/" + dport + "=" + block);
|
||||
//Log.i(TAG, "Set filter uid=" + uid + " " + daddr + " " + dresource + "/" + dport + "=" + block);
|
||||
if (dresource == null) {
|
||||
if (Util.isNumericAddress(daddr))
|
||||
map.get(key).put(InetAddress.getByName(daddr), block);
|
||||
mapUidIPFilters.get(key).put(InetAddress.getByName(daddr), block);
|
||||
} else {
|
||||
if (Util.isNumericAddress(dresource))
|
||||
map.get(key).put(InetAddress.getByName(dresource), block);
|
||||
mapUidIPFilters.get(key).put(InetAddress.getByName(dresource), block);
|
||||
else
|
||||
Log.w(TAG, "Address not numeric " + daddr);
|
||||
}
|
||||
|
@ -1077,10 +1077,6 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
}
|
||||
}
|
||||
cursor.close();
|
||||
|
||||
synchronized (mapUidIPFilters) {
|
||||
mapUidIPFilters = map;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateUidIPFilters() {
|
||||
|
@ -1340,11 +1336,11 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
|
||||
if (interactive || delay == 0) {
|
||||
last_interactive = interactive;
|
||||
reload(null, "interactive state changed", SinkholeService.this);
|
||||
reload("interactive state changed", SinkholeService.this);
|
||||
} else {
|
||||
if (ACTION_SCREEN_OFF_DELAYED.equals(intent.getAction())) {
|
||||
last_interactive = interactive;
|
||||
reload(null, "interactive state changed", SinkholeService.this);
|
||||
reload("interactive state changed", SinkholeService.this);
|
||||
} else {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M)
|
||||
am.set(AlarmManager.RTC_WAKEUP, new Date().getTime() + delay * 60 * 1000L, pi);
|
||||
|
@ -1396,7 +1392,7 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
|
||||
// Reload rules when coming from idle mode
|
||||
if (!pm.isDeviceIdleMode())
|
||||
reload(null, "idle state changed", SinkholeService.this);
|
||||
reload("idle state changed", SinkholeService.this);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1413,7 +1409,7 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
// Reload rules
|
||||
Log.i(TAG, "Received " + intent);
|
||||
Util.logExtras(intent);
|
||||
reload(null, "connectivity changed", SinkholeService.this);
|
||||
reload("connectivity changed", SinkholeService.this);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1435,7 +1431,7 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
if (prefs.getBoolean("unmetered_2g", false) ||
|
||||
prefs.getBoolean("unmetered_3g", false) ||
|
||||
prefs.getBoolean("unmetered_4g", false))
|
||||
reload("other", "data connection state changed", SinkholeService.this);
|
||||
reload("data connection state changed", SinkholeService.this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1452,7 +1448,7 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(SinkholeService.this);
|
||||
if (prefs.getBoolean("national_roaming", false))
|
||||
reload(null, "service state changed", SinkholeService.this);
|
||||
reload("service state changed", SinkholeService.this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1463,7 +1459,7 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
public void onReceive(Context context, Intent intent) {
|
||||
Log.i(TAG, "Received " + intent);
|
||||
Util.logExtras(intent);
|
||||
reload(null, "package added", SinkholeService.this);
|
||||
reload("package added", SinkholeService.this);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -1905,19 +1901,13 @@ public class SinkholeService extends VpnService implements SharedPreferences.OnS
|
|||
context.startService(intent);
|
||||
}
|
||||
|
||||
public static void reload(String network, String reason, Context context) {
|
||||
public static void reload(String reason, Context context) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
if (prefs.getBoolean("enabled", false)) {
|
||||
boolean wifi = Util.isWifiActive(context);
|
||||
boolean metered = Util.isMeteredNetwork(context);
|
||||
if (wifi && !prefs.getBoolean("use_metered", false))
|
||||
metered = false;
|
||||
if (network == null || ("wifi".equals(network) ? !metered : metered)) {
|
||||
Intent intent = new Intent(context, SinkholeService.class);
|
||||
intent.putExtra(EXTRA_COMMAND, Command.reload);
|
||||
intent.putExtra(EXTRA_REASON, reason);
|
||||
context.startService(intent);
|
||||
}
|
||||
Intent intent = new Intent(context, SinkholeService.class);
|
||||
intent.putExtra(EXTRA_COMMAND, Command.reload);
|
||||
intent.putExtra(EXTRA_REASON, reason);
|
||||
context.startService(intent);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue