Check if link title has valid parent domain

This commit is contained in:
M66B 2021-08-17 08:44:44 +02:00
parent 528720932d
commit e866bfaa25
2 changed files with 19 additions and 7 deletions

View File

@ -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

View File

@ -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;