From 3810533334ccffcc25420ab2de848cd01bfef14e Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 10 Mar 2022 14:57:48 +0100 Subject: [PATCH] DMARC viewer improvements --- .../java/eu/faircode/email/ActivityDmarc.java | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/ActivityDmarc.java b/app/src/main/java/eu/faircode/email/ActivityDmarc.java index 2da960ab01..ad480addcc 100644 --- a/app/src/main/java/eu/faircode/email/ActivityDmarc.java +++ b/app/src/main/java/eu/faircode/email/ActivityDmarc.java @@ -205,6 +205,8 @@ public class ActivityDmarc extends ActivityBase { eventType = xml.next(); if (eventType == XmlPullParser.TEXT) { String text = xml.getText(); + if (text == null) + text = ""; if ("begin".equals(name) || "end".equals(name)) { text = text.trim(); try { @@ -224,8 +226,12 @@ public class ActivityDmarc extends ActivityBase { case "domain": if (feedback && (policy_published || auth_results)) { eventType = xml.next(); - if (eventType == XmlPullParser.TEXT) - ssb.append(xml.getText()).append(' '); + if (eventType == XmlPullParser.TEXT) { + String text = xml.getText(); + if (text == null) + text = ""; + ssb.append(text).append(' '); + } } break; case "adkim": @@ -233,11 +239,16 @@ public class ActivityDmarc extends ActivityBase { case "p": case "sp": case "pct": + case "fo": if (feedback && policy_published) { eventType = xml.next(); - if (eventType == XmlPullParser.TEXT) + if (eventType == XmlPullParser.TEXT) { + String text = xml.getText(); + if (text == null) + text = ""; ssb.append(name).append('=') - .append(xml.getText()).append(' '); + .append(text).append(' '); + } } break; case "source_ip": @@ -245,8 +256,11 @@ public class ActivityDmarc extends ActivityBase { if (feedback && record && row) { eventType = xml.next(); if (eventType == XmlPullParser.TEXT) { + String text = xml.getText(); + if (text == null) + text = ""; ssb.append(name).append('=') - .append(xml.getText()).append(' '); + .append(text).append(' '); } } break; @@ -254,6 +268,8 @@ public class ActivityDmarc extends ActivityBase { case "dkim": case "spf": case "header_from": + case "envelope_from": + case "envelope_to": if (feedback && record) if (policy_evaluated || identifiers) { eventType = xml.next(); @@ -261,8 +277,10 @@ public class ActivityDmarc extends ActivityBase { ssb.append(name).append('='); int start = ssb.length(); String text = xml.getText(); + if (text == null) + text = ""; ssb.append(text); - if (!"pass".equals(text) && + if (!"pass".equals(text.toLowerCase(Locale.ROOT)) && ("dkim".equals(name) || "spf".equals(name))) { ssb.setSpan(new ForegroundColorSpan(colorWarning), start, ssb.length(), 0); ssb.setSpan(new StyleSpan(Typeface.BOLD), start, ssb.length(), 0); @@ -279,8 +297,10 @@ public class ActivityDmarc extends ActivityBase { ssb.append(result == null ? "?" : result).append('='); int start = ssb.length(); String text = xml.getText(); + if (text == null) + text = ""; ssb.append(text); - if (!"pass".equals(text)) { + if (!"pass".equals(text.toLowerCase(Locale.ROOT))) { ssb.setSpan(new ForegroundColorSpan(colorWarning), start, ssb.length(), 0); ssb.setSpan(new StyleSpan(Typeface.BOLD), start, ssb.length(), 0); } @@ -292,9 +312,13 @@ public class ActivityDmarc extends ActivityBase { case "scope": if (feedback && auth_results) { eventType = xml.next(); - if (eventType == XmlPullParser.TEXT) + if (eventType == XmlPullParser.TEXT) { + String text = xml.getText(); + if (text == null) + text = ""; ssb.append(name).append('=') - .append(xml.getText()).append(' '); + .append(text).append(' '); + } } break; } @@ -380,11 +404,8 @@ public class ActivityDmarc extends ActivityBase { @Override protected void onException(Bundle args, @NonNull Throwable ex) { - if (ex instanceof IllegalArgumentException && !BuildConfig.DEBUG) - Snackbar.make(findViewById(android.R.id.content), ex.getMessage(), Snackbar.LENGTH_LONG) - .setGestureInsetBottomIgnored(true).show(); - else - Log.unexpectedError(getSupportFragmentManager(), ex, false); + tvDmarc.setText(ex + "\n" + android.util.Log.getStackTraceString(ex)); + grpReady.setVisibility(View.VISIBLE); } }.execute(this, args, "dmarc:decode"); }