Prevent blocking common domain names

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

@ -99,6 +99,22 @@ public class EmailProvider {
throw new UnknownHostException(this.name + " invalid"); 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) { static List<EmailProvider> loadProfiles(Context context) {
List<EmailProvider> result = null; List<EmailProvider> result = null;
try { try {

@ -540,14 +540,23 @@ public class EntityRule {
return cal; 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 sender = ((InternetAddress) message.from[0]).getAddress();
String name = MessageHelper.formatAddresses(new Address[]{message.from[0]}); String name = MessageHelper.formatAddresses(new Address[]{message.from[0]});
if (block_domain) { if (block_domain) {
int at = sender.indexOf('@'); int at = sender.indexOf('@');
if (at > 0) if (at > 0) {
sender = sender.substring(at); 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(); JSONObject jsender = new JSONObject();

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

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

Loading…
Cancel
Save