From d369384d3c13098236b99004f1fe251e4dbf8838 Mon Sep 17 00:00:00 2001 From: M66B Date: Mon, 21 Sep 2020 23:03:13 +0200 Subject: [PATCH] Fixed canceling block domain rules --- .../java/eu/faircode/email/EntityRule.java | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/EntityRule.java b/app/src/main/java/eu/faircode/email/EntityRule.java index 60ae890c1d..2aec98fa54 100644 --- a/app/src/main/java/eu/faircode/email/EntityRule.java +++ b/app/src/main/java/eu/faircode/email/EntityRule.java @@ -728,21 +728,28 @@ public class EntityRule { boolean isBlockingSender(EntityMessage message, EntityFolder junk) throws JSONException { if (message.from == null || message.from.length == 0) return false; + String sender = ((InternetAddress) message.from[0]).getAddress(); if (sender == null) return false; - int at = sender.indexOf('@'); - String domain = (at < 0 ? sender : sender.substring(at)); JSONObject jcondition = new JSONObject(condition); if (!jcondition.has("sender")) return false; JSONObject jsender = jcondition.getJSONObject("sender"); - if (jsender.optBoolean("regex")) - return false; String value = jsender.optString("value"); - if (!sender.equals(value) && !domain.equals(value)) - return false; + boolean regex = jsender.optBoolean("regex"); + + if (regex) { + Pattern pattern = Pattern.compile(value, Pattern.DOTALL); + if (!pattern.matcher(sender).matches()) + return false; + } else { + int at = sender.indexOf('@'); + String domain = (at < 0 ? sender : sender.substring(at)); + if (!sender.equals(value) && !domain.equals(value)) + return false; + } JSONObject jaction = new JSONObject(action); if (jaction.optInt("type", -1) != TYPE_MOVE)