From 2fe8e58cf9f7b4378c412371b3423abfe53ca06f Mon Sep 17 00:00:00 2001 From: M66B Date: Sun, 4 Apr 2021 13:45:32 +0200 Subject: [PATCH] Refactoring --- app/src/main/java/eu/faircode/email/FragmentAnswer.java | 2 +- app/src/main/java/eu/faircode/email/FragmentCompose.java | 2 +- ...agmentDialogLink.java => FragmentDialogInsertLink.java} | 2 +- .../java/eu/faircode/email/FragmentDialogOpenLink.java | 7 ++++--- app/src/main/java/eu/faircode/email/Helper.java | 4 ++++ app/src/main/java/eu/faircode/email/MessageHelper.java | 4 ++-- 6 files changed, 13 insertions(+), 8 deletions(-) rename app/src/main/java/eu/faircode/email/{FragmentDialogLink.java => FragmentDialogInsertLink.java} (98%) diff --git a/app/src/main/java/eu/faircode/email/FragmentAnswer.java b/app/src/main/java/eu/faircode/email/FragmentAnswer.java index 249adbaff6..c73db0fa37 100644 --- a/app/src/main/java/eu/faircode/email/FragmentAnswer.java +++ b/app/src/main/java/eu/faircode/email/FragmentAnswer.java @@ -498,7 +498,7 @@ public class FragmentAnswer extends FragmentBase { args.putInt("start", etText.getSelectionStart()); args.putInt("end", etText.getSelectionEnd()); - FragmentDialogLink fragment = new FragmentDialogLink(); + FragmentDialogInsertLink fragment = new FragmentDialogInsertLink(); fragment.setArguments(args); fragment.setTargetFragment(this, REQUEST_LINK); fragment.show(getParentFragmentManager(), "answer:link"); diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index e2fc35c9be..47c6aa77ae 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1831,7 +1831,7 @@ public class FragmentCompose extends FragmentBase { args.putInt("start", etBody.getSelectionStart()); args.putInt("end", etBody.getSelectionEnd()); - FragmentDialogLink fragment = new FragmentDialogLink(); + FragmentDialogInsertLink fragment = new FragmentDialogInsertLink(); fragment.setArguments(args); fragment.setTargetFragment(this, REQUEST_LINK); fragment.show(getParentFragmentManager(), "compose:link"); diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogLink.java b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java similarity index 98% rename from app/src/main/java/eu/faircode/email/FragmentDialogLink.java rename to app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java index bd495ef773..bc10dabf8f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogLink.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogInsertLink.java @@ -36,7 +36,7 @@ import androidx.appcompat.app.AlertDialog; import static android.app.Activity.RESULT_OK; -public class FragmentDialogLink extends FragmentDialogBase { +public class FragmentDialogInsertLink extends FragmentDialogBase { private EditText etLink; @Override diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogOpenLink.java b/app/src/main/java/eu/faircode/email/FragmentDialogOpenLink.java index aa0d72a78b..4e7720921e 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogOpenLink.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogOpenLink.java @@ -309,9 +309,10 @@ public class FragmentDialogOpenLink extends FragmentDialogBase { String host = uri.getHost(); String thost = (uriTitle == null ? null : uriTitle.getHost()); - String puny; + String puny = null; try { - puny = IDN.toASCII(host); + if (host != null) + puny = IDN.toASCII(host, IDN.ALLOW_UNASSIGNED); } catch (Throwable ex) { Log.e(ex); puny = host; @@ -322,7 +323,7 @@ public class FragmentDialogOpenLink extends FragmentDialogBase { tvSuspicious.setVisibility(View.VISIBLE); } else { etLink.setText(uri.toString()); - tvSuspicious.setVisibility(View.GONE); + tvSuspicious.setVisibility(Helper.isSingleScript(host) ? View.GONE : View.VISIBLE); } grpDifferent.setVisibility( diff --git a/app/src/main/java/eu/faircode/email/Helper.java b/app/src/main/java/eu/faircode/email/Helper.java index 1469cbec49..8afc3f888d 100644 --- a/app/src/main/java/eu/faircode/email/Helper.java +++ b/app/src/main/java/eu/faircode/email/Helper.java @@ -1113,6 +1113,10 @@ public class Helper { static boolean isSingleScript(String s) { // https://en.wikipedia.org/wiki/IDN_homograph_attack + + if (TextUtils.isEmpty(s)) + return true; + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) return true; diff --git a/app/src/main/java/eu/faircode/email/MessageHelper.java b/app/src/main/java/eu/faircode/email/MessageHelper.java index 016610a497..a705b7534f 100644 --- a/app/src/main/java/eu/faircode/email/MessageHelper.java +++ b/app/src/main/java/eu/faircode/email/MessageHelper.java @@ -1580,7 +1580,7 @@ public class MessageHelper { String domain = email.substring(at + 1); try { - user = IDN.toASCII(user); + user = IDN.toASCII(user, IDN.ALLOW_UNASSIGNED); } catch (IllegalArgumentException ex) { Log.e(ex); } @@ -1588,7 +1588,7 @@ public class MessageHelper { String[] parts = domain.split("\\."); for (int p = 0; p < parts.length; p++) try { - parts[p] = IDN.toASCII(parts[p]); + parts[p] = IDN.toASCII(parts[p], IDN.ALLOW_UNASSIGNED); } catch (IllegalArgumentException ex) { Log.e(ex); }