Prevent blocking common domain names

pull/178/head
M66B 4 years ago
parent 6110ff0aa6
commit 242e0a0fd0

@ -99,6 +99,22 @@ public class EmailProvider {
throw new UnknownHostException(this.name + " invalid");
}
static List<String> getDomainNames(Context context) {
List<String> result = new ArrayList<>();
for (String domain : PROPRIETARY)
result.add(domain.replace(".", "\\."));
List<EmailProvider> providers = loadProfiles(context);
for (EmailProvider provider : providers)
if (provider.domain != null)
for (String domain : provider.domain)
if (!result.contains(domain))
result.add(domain);
return result;
}
static List<EmailProvider> loadProfiles(Context context) {
List<EmailProvider> result = null;
try {

@ -540,14 +540,23 @@ public class EntityRule {
return cal;
}
static EntityRule blockSender(Context context, EntityMessage message, EntityFolder junk, boolean block_domain) throws JSONException {
static EntityRule blockSender(Context context, EntityMessage message, EntityFolder junk, boolean block_domain, List<String> whitelist) throws JSONException {
String sender = ((InternetAddress) message.from[0]).getAddress();
String name = MessageHelper.formatAddresses(new Address[]{message.from[0]});
if (block_domain) {
int at = sender.indexOf('@');
if (at > 0)
sender = sender.substring(at);
if (at > 0) {
boolean whitelisted = false;
String domain = sender.substring(at + 1);
for (String d : whitelist)
if (domain.matches(d)) {
whitelisted = true;
break;
}
if (!whitelisted)
sender = '@' + domain;
}
}
JSONObject jsender = new JSONObject();

@ -6036,6 +6036,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
long id = args.getLong("id");
boolean block_sender = args.getBoolean("block_sender");
boolean block_domain = args.getBoolean("block_domain");
List<String> whitelist = EmailProvider.getDomainNames(context);
DB db = DB.getInstance(context);
try {
@ -6053,7 +6054,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if ((block_sender || block_domain) &&
(message.from != null && message.from.length > 0)) {
EntityRule rule = EntityRule.blockSender(context, message, junk, block_sender);
EntityRule rule = EntityRule.blockSender(context, message, junk, block_sender, whitelist);
rule.id = db.rule().insertRule(rule);
}

@ -240,6 +240,7 @@ public class ServiceUI extends IntentService {
private void onJunk(long id) throws JSONException {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
boolean block_sender = prefs.getBoolean("notify_block_sender", false);
List<String> whitelist = EmailProvider.getDomainNames(this);
DB db = DB.getInstance(this);
try {
@ -256,7 +257,7 @@ public class ServiceUI extends IntentService {
EntityOperation.queue(this, message, EntityOperation.MOVE, junk.id);
if (block_sender) {
EntityRule rule = EntityRule.blockSender(this, message, junk, false);
EntityRule rule = EntityRule.blockSender(this, message, junk, false, whitelist);
rule.id = db.rule().insertRule(rule);
}

Loading…
Cancel
Save