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.StringReader;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Arrays;
@ -280,7 +281,30 @@ public class ActivityDmarc extends ActivityBase {
valid = true;
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)
break;
@ -419,10 +443,16 @@ public class ActivityDmarc extends ActivityBase {
}
List<DnsHelper.DnsRecord> records = new ArrayList<>();
records.addAll(Arrays.asList(
DnsHelper.lookup(context, "_dmarc." + lastDomain, "txt")));
records.addAll(Arrays.asList(
DnsHelper.lookup(context, "default._bimi." + lastDomain, "txt")));
try {
records.addAll(Arrays.asList(
DnsHelper.lookup(context, "_dmarc." + lastDomain, "txt")));
} catch (UnknownHostException ignored) {
}
try {
records.addAll(Arrays.asList(
DnsHelper.lookup(context, "default._bimi." + lastDomain, "txt")));
} catch (UnknownHostException ignored) {
}
for (DnsHelper.DnsRecord r : records)
ssb.append(r.name).append("\n");
ssb.append("\n");

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

Loading…
Cancel
Save