mirror of
https://github.com/M66B/FairEmail.git
synced 2026-01-04 03:43:55 +01:00
Check if link title has valid parent domain
This commit is contained in:
@@ -171,9 +171,11 @@ public class FragmentDialogOpenLink extends FragmentDialogBase {
|
|||||||
|
|
||||||
// Process title
|
// Process title
|
||||||
final Uri uriTitle;
|
final Uri uriTitle;
|
||||||
if (title != null && PatternsCompat.WEB_URL.matcher(title).matches())
|
if (title != null && PatternsCompat.WEB_URL.matcher(title).matches()) {
|
||||||
uriTitle = Uri.parse(title.contains("://") ? title : "http://" + title);
|
Uri u = Uri.parse(title.contains("://") ? title : "http://" + title);
|
||||||
else
|
String host = u.getHost(); // Capture1.PNG
|
||||||
|
uriTitle = (UriHelper.hasParentDomain(context, host) ? u : null);
|
||||||
|
} else
|
||||||
uriTitle = null;
|
uriTitle = null;
|
||||||
|
|
||||||
// Get views
|
// Get views
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import java.io.BufferedReader;
|
|||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
public class UriHelper {
|
public class UriHelper {
|
||||||
// https://publicsuffix.org/
|
// https://publicsuffix.org/
|
||||||
@@ -37,14 +38,23 @@ public class UriHelper {
|
|||||||
static String getParentDomain(Context context, String host) {
|
static String getParentDomain(Context context, String host) {
|
||||||
if (host == null)
|
if (host == null)
|
||||||
return 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);
|
ensureSuffixList(context);
|
||||||
|
|
||||||
String h = host;
|
String h = host.toLowerCase(Locale.ROOT);
|
||||||
while (true) {
|
while (true) {
|
||||||
int dot = h.indexOf('.');
|
int dot = h.indexOf('.');
|
||||||
if (dot < 0)
|
if (dot < 0)
|
||||||
return host;
|
return null;
|
||||||
|
|
||||||
String prefix = h.substring(0, dot);
|
String prefix = h.substring(0, dot);
|
||||||
h = h.substring(dot + 1);
|
h = h.substring(dot + 1);
|
||||||
|
|
||||||
@@ -52,8 +62,8 @@ public class UriHelper {
|
|||||||
String w = (d < 0 ? null : '*' + h.substring(d));
|
String w = (d < 0 ? null : '*' + h.substring(d));
|
||||||
|
|
||||||
synchronized (suffixList) {
|
synchronized (suffixList) {
|
||||||
if ((suffixList.contains(h) || suffixList.contains(w)) &&
|
if (!suffixList.contains('!' + h) &&
|
||||||
!suffixList.contains('!' + h)) {
|
(suffixList.contains(h) || suffixList.contains(w))) {
|
||||||
String parent = prefix + "." + h;
|
String parent = prefix + "." + h;
|
||||||
Log.d("Host=" + host + " parent=" + parent);
|
Log.d("Host=" + host + " parent=" + parent);
|
||||||
return parent;
|
return parent;
|
||||||
|
|||||||
Reference in New Issue
Block a user