mirror of
https://github.com/M66B/FairEmail.git
synced 2025-02-24 07:01:05 +00:00
Check if link title has valid parent domain
This commit is contained in:
parent
528720932d
commit
e866bfaa25
2 changed files with 19 additions and 7 deletions
|
@ -171,9 +171,11 @@ public class FragmentDialogOpenLink extends FragmentDialogBase {
|
|||
|
||||
// Process title
|
||||
final Uri uriTitle;
|
||||
if (title != null && PatternsCompat.WEB_URL.matcher(title).matches())
|
||||
uriTitle = Uri.parse(title.contains("://") ? title : "http://" + title);
|
||||
else
|
||||
if (title != null && PatternsCompat.WEB_URL.matcher(title).matches()) {
|
||||
Uri u = Uri.parse(title.contains("://") ? title : "http://" + title);
|
||||
String host = u.getHost(); // Capture1.PNG
|
||||
uriTitle = (UriHelper.hasParentDomain(context, host) ? u : null);
|
||||
} else
|
||||
uriTitle = null;
|
||||
|
||||
// Get views
|
||||
|
|
|
@ -26,6 +26,7 @@ import java.io.BufferedReader;
|
|||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
|
||||
public class UriHelper {
|
||||
// https://publicsuffix.org/
|
||||
|
@ -37,14 +38,23 @@ public class UriHelper {
|
|||
static String getParentDomain(Context context, String host) {
|
||||
if (host == null)
|
||||
return null;
|
||||
String parent = _getSuffix(context, host);
|
||||
return (parent == null ? host : parent);
|
||||
}
|
||||
|
||||
static boolean hasParentDomain(Context context, String host) {
|
||||
return (host != null && _getSuffix(context, host) != null);
|
||||
}
|
||||
|
||||
private static String _getSuffix(Context context, String host) {
|
||||
ensureSuffixList(context);
|
||||
|
||||
String h = host;
|
||||
String h = host.toLowerCase(Locale.ROOT);
|
||||
while (true) {
|
||||
int dot = h.indexOf('.');
|
||||
if (dot < 0)
|
||||
return host;
|
||||
return null;
|
||||
|
||||
String prefix = h.substring(0, dot);
|
||||
h = h.substring(dot + 1);
|
||||
|
||||
|
@ -52,8 +62,8 @@ public class UriHelper {
|
|||
String w = (d < 0 ? null : '*' + h.substring(d));
|
||||
|
||||
synchronized (suffixList) {
|
||||
if ((suffixList.contains(h) || suffixList.contains(w)) &&
|
||||
!suffixList.contains('!' + h)) {
|
||||
if (!suffixList.contains('!' + h) &&
|
||||
(suffixList.contains(h) || suffixList.contains(w))) {
|
||||
String parent = prefix + "." + h;
|
||||
Log.d("Host=" + host + " parent=" + parent);
|
||||
return parent;
|
||||
|
|
Loading…
Reference in a new issue