Remove partial rule load

This commit is contained in:
M66B 2017-11-05 18:26:41 +01:00
parent 0cbf93d2e6
commit 7735a3b228
5 changed files with 33 additions and 38 deletions

View File

@ -164,7 +164,7 @@ public class ActivityForwarding extends AppCompatActivity {
@Override
protected List<Rule> doInBackground(Object... objects) {
return Rule.getRules(true, false, ActivityForwarding.this);
return Rule.getRules(true, ActivityForwarding.this);
}
@Override

View File

@ -333,7 +333,7 @@ public class ActivityLog extends AppCompatActivity implements SharedPreferences.
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
private String getUidForName(String query) {
if (query != null && query.length() > 0) {
for (Rule rule : Rule.getRules(true, false, ActivityLog.this))
for (Rule rule : Rule.getRules(true, ActivityLog.this))
if (rule.name != null && rule.name.toLowerCase().contains(query.toLowerCase())) {
String newQuery = Integer.toString(rule.uid);
Log.i(TAG, "Search " + query + " found " + rule.name + " new " + newQuery);

View File

@ -1053,7 +1053,7 @@ public class ActivityMain extends AppCompatActivity implements SharedPreferences
@Override
protected List<Rule> doInBackground(Object... arg) {
return Rule.getRules(false, false, ActivityMain.this);
return Rule.getRules(false, ActivityMain.this);
}
@Override

View File

@ -276,7 +276,7 @@ public class Rule {
}
}
public static List<Rule> getRules(final boolean all, boolean service, Context context) {
public static List<Rule> getRules(final boolean all, Context context) {
synchronized (context.getApplicationContext()) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
SharedPreferences wifi = context.getSharedPreferences("wifi", Context.MODE_PRIVATE);
@ -432,10 +432,7 @@ public class Rule {
}
rule.related = listPkg.toArray(new String[0]);
if (service)
rule.hosts = -1;
else
rule.hosts = dh.getHostCount(rule.uid, true);
rule.hosts = dh.getHostCount(rule.uid, true);
rule.updateChanged(default_wifi, default_other, default_roaming);
@ -446,37 +443,35 @@ public class Rule {
}
// Sort rule list
if (!service) {
final Collator collator = Collator.getInstance(Locale.getDefault());
collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc
final Collator collator = Collator.getInstance(Locale.getDefault());
collator.setStrength(Collator.SECONDARY); // Case insensitive, process accents etc
String sort = prefs.getString("sort", "name");
if ("uid".equals(sort))
Collections.sort(listRules, new Comparator<Rule>() {
@Override
public int compare(Rule rule, Rule other) {
if (rule.uid < other.uid)
return -1;
else if (rule.uid > other.uid)
return 1;
else {
int i = collator.compare(rule.name, other.name);
return (i == 0 ? rule.packageName.compareTo(other.packageName) : i);
}
String sort = prefs.getString("sort", "name");
if ("uid".equals(sort))
Collections.sort(listRules, new Comparator<Rule>() {
@Override
public int compare(Rule rule, Rule other) {
if (rule.uid < other.uid)
return -1;
else if (rule.uid > other.uid)
return 1;
else {
int i = collator.compare(rule.name, other.name);
return (i == 0 ? rule.packageName.compareTo(other.packageName) : i);
}
});
else
Collections.sort(listRules, new Comparator<Rule>() {
@Override
public int compare(Rule rule, Rule other) {
if (all || rule.changed == other.changed) {
int i = collator.compare(rule.name, other.name);
return (i == 0 ? rule.packageName.compareTo(other.packageName) : i);
}
return (rule.changed ? -1 : 1);
}
});
else
Collections.sort(listRules, new Comparator<Rule>() {
@Override
public int compare(Rule rule, Rule other) {
if (all || rule.changed == other.changed) {
int i = collator.compare(rule.name, other.name);
return (i == 0 ? rule.packageName.compareTo(other.packageName) : i);
}
});
}
return (rule.changed ? -1 : 1);
}
});
return listRules;
}

View File

@ -487,7 +487,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
state = State.enforcing;
Log.d(TAG, "Start foreground state=" + state.toString());
List<Rule> listRule = Rule.getRules(true, true, ServiceSinkhole.this);
List<Rule> listRule = Rule.getRules(true, ServiceSinkhole.this);
List<Rule> listAllowed = getAllowedRules(listRule);
last_builder = getBuilder(listAllowed, listRule);
@ -503,7 +503,7 @@ public class ServiceSinkhole extends VpnService implements SharedPreferences.OnS
}
private void reload(boolean interactive) {
List<Rule> listRule = Rule.getRules(true, true, ServiceSinkhole.this);
List<Rule> listRule = Rule.getRules(true, ServiceSinkhole.this);
// Check if rules needs to be reloaded
if (interactive) {