Added support for SPF/MX

pull/207/head
M66B 3 years ago
parent 7ece2b50ec
commit d8cce82f2d

@ -46,6 +46,7 @@ import java.io.FileNotFoundException;
import java.io.InputStream; import java.io.InputStream;
import java.io.StringReader; import java.io.StringReader;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.DateFormat; import java.text.DateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
@ -280,6 +281,29 @@ public class ActivityDmarc extends ActivityBase {
valid = true; valid = true;
break; break;
} }
} else if ("mx".equals(ip))
try {
DnsHelper.DnsRecord[] mxs =
DnsHelper.lookup(context, p.first, "mx");
for (DnsHelper.DnsRecord mx : mxs) {
List<DnsHelper.DnsRecord> as = new ArrayList<>();
try {
as.addAll(Arrays.asList(DnsHelper.lookup(context, mx.name, "a")));
} catch (UnknownHostException ignored) {
}
try {
as.addAll(Arrays.asList(DnsHelper.lookup(context, mx.name, "aaaa")));
} catch (UnknownHostException ignored) {
}
for (DnsHelper.DnsRecord a : as)
if (text.equals(a.name)) {
valid = true;
break;
}
if (valid)
break;
}
} catch (UnknownHostException ignored) {
} }
} }
if (valid) if (valid)
@ -419,10 +443,16 @@ public class ActivityDmarc extends ActivityBase {
} }
List<DnsHelper.DnsRecord> records = new ArrayList<>(); List<DnsHelper.DnsRecord> records = new ArrayList<>();
try {
records.addAll(Arrays.asList( records.addAll(Arrays.asList(
DnsHelper.lookup(context, "_dmarc." + lastDomain, "txt"))); DnsHelper.lookup(context, "_dmarc." + lastDomain, "txt")));
} catch (UnknownHostException ignored) {
}
try {
records.addAll(Arrays.asList( records.addAll(Arrays.asList(
DnsHelper.lookup(context, "default._bimi." + lastDomain, "txt"))); DnsHelper.lookup(context, "default._bimi." + lastDomain, "txt")));
} catch (UnknownHostException ignored) {
}
for (DnsHelper.DnsRecord r : records) for (DnsHelper.DnsRecord r : records)
ssb.append(r.name).append("\n"); ssb.append(r.name).append("\n");
ssb.append("\n"); ssb.append("\n");

@ -29,6 +29,8 @@ import android.os.Build;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import org.xbill.DNS.AAAARecord;
import org.xbill.DNS.ARecord;
import org.xbill.DNS.Lookup; import org.xbill.DNS.Lookup;
import org.xbill.DNS.MXRecord; import org.xbill.DNS.MXRecord;
import org.xbill.DNS.Message; import org.xbill.DNS.Message;
@ -92,6 +94,12 @@ public class DnsHelper {
case "txt": case "txt":
rtype = Type.TXT; rtype = Type.TXT;
break; break;
case "a":
rtype = Type.A;
break;
case "aaaa":
rtype = Type.AAAA;
break;
default: default:
throw new IllegalArgumentException(type); throw new IllegalArgumentException(type);
} }
@ -203,6 +211,12 @@ public class DnsHelper {
result.get(0).name += content.toString(); result.get(0).name += content.toString();
else else
result.add(new DnsRecord(content.toString(), 0)); result.add(new DnsRecord(content.toString(), 0));
} else if (record instanceof ARecord) {
ARecord a = (ARecord) record;
result.add(new DnsRecord(a.getAddress().getHostAddress()));
} else if (record instanceof AAAARecord) {
AAAARecord aaaa = (AAAARecord) record;
result.add(new DnsRecord(aaaa.getAddress().getHostAddress()));
} else } else
throw new IllegalArgumentException(record.getClass().getName()); throw new IllegalArgumentException(record.getClass().getName());
} }

Loading…
Cancel
Save