本文整理汇总了Java中org.xbill.DNS.RRset.getType方法的典型用法代码示例。如果您正苦于以下问题:Java RRset.getType方法的具体用法?Java RRset.getType怎么用?Java RRset.getType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.xbill.DNS.RRset
的用法示例。
在下文中一共展示了RRset.getType方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getReason
import org.xbill.DNS.RRset; //导入方法依赖的package包/类
protected String getReason(Message m) {
for (RRset set : m.getSectionRRsets(Section.ADDITIONAL)) {
if (set.getName().equals(Name.root) && set.getType() == Type.TXT && set.getDClass() == ValidatingResolver.VALIDATION_REASON_QCLASS) {
StringBuilder sb = new StringBuilder();
@SuppressWarnings("unchecked")
List<String> strings = (List<String>)((TXTRecord)set.first()).getStrings();
for (String part : strings){
sb.append(part);
}
return sb.toString();
}
}
return null;
}
示例2: findUpdateRecords
import org.xbill.DNS.RRset; //导入方法依赖的package包/类
private ImmutableList<Record> findUpdateRecords(
Update update, String resourceName, int recordType) {
for (RRset set : update.getSectionRRsets(Section.UPDATE)) {
if (set.getName().toString().equals(resourceName) && set.getType() == recordType) {
return fixIterator(Record.class, set.rrs());
}
}
assert_().fail(
"No record set found for resource '%s' type '%s'",
resourceName, Type.string(recordType));
throw new AssertionError();
}
示例3: stripAdditional
import org.xbill.DNS.RRset; //导入方法依赖的package包/类
private Message stripAdditional(Message m) {
if (m.getQuestion().getType() == Type.RRSIG) {
return m;
}
Message copy = new Message();
copy.setHeader(m.getHeader());
for (int i = 0; i < Section.ADDITIONAL; i++) {
for (RRset set : m.getSectionRRsets(i)) {
if (set.getType() == Type.NS && m.getQuestion().getType() != Type.NS) {
continue;
}
Iterator<?> rrs = set.rrs();
while (rrs.hasNext()) {
copy.addRecord((Record)rrs.next(), i);
}
Iterator<?> sigs = set.sigs();
while (sigs.hasNext()) {
copy.addRecord((Record)sigs.next(), i);
}
}
}
return copy;
}
示例4: testDNameDirectQueryIsValid
import org.xbill.DNS.RRset; //导入方法依赖的package包/类
@Test
public void testDNameDirectQueryIsValid() throws IOException {
Message response = resolver.send(createMessage("alias.ingotronic.ch./DNAME"));
assertTrue("AD flag must not set", response.getHeader().getFlag(Flags.AD));
assertEquals(Rcode.NOERROR, response.getRcode());
assertNull(getReason(response));
for (RRset set : response.getSectionRRsets(Section.ANSWER)) {
if (set.getType() == Type.DNAME) {
DNAMERecord r = (DNAMERecord)set.first();
assertEquals(Name.fromString("ingotronic.ch."), r.getTarget());
}
}
}
示例5: testLoadRootTrustAnchorWithDNSKEY
import org.xbill.DNS.RRset; //导入方法依赖的package包/类
@Test
public void testLoadRootTrustAnchorWithDNSKEY() throws IOException {
Message keys = resolver.send(createMessage("./DNSKEY"));
ByteArrayOutputStream bos = new ByteArrayOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(bos);
for (RRset set : keys.getSectionRRsets(Section.ANSWER)) {
if (set.getType() == Type.DNSKEY) {
@SuppressWarnings("unchecked")
Iterator<DNSKEYRecord> it = set.rrs();
while (it.hasNext()) {
DNSKEYRecord r = it.next();
osw.write(r.toString());
osw.write('\n');
}
}
}
osw.close();
resolver.getTrustAnchors().clear();
resolver.loadTrustAnchors(new ByteArrayInputStream(bos.toByteArray()));
assertNotNull(resolver.getTrustAnchors().find(Name.root, DClass.IN));
Message response = resolver.send(createMessage("www.ingotronic.ch./A"));
assertTrue("AD flag must be set", response.getHeader().getFlag(Flags.AD));
assertEquals(Rcode.NOERROR, response.getRcode());
assertNull(getReason(response));
}
示例6: checkDnsSec
import org.xbill.DNS.RRset; //导入方法依赖的package包/类
/**
* Validate the DNSSEC trust chain against the provided domain name (i.e. <code>Fqdn</code>).
*
* @param name A <code>Fqdn</code> representing the validating domain
* @param resolver A DNS <code>Resovler</code> to be used in this validation
* @param rType An integer representing the record type
*
* @return <code>true</code> iff the DNSSEC is valid
*
* @throws LookupException
* Containing the specific <code>StatusCode</code> defining the error that has been raised.
*/
public static boolean checkDnsSec(Fqdn name, Resolver resolver, int rType)
throws LookupException
{
try {
ValidatingResolver validating = (ValidatingResolver) resolver;
Record toValidate = Record.newRecord(Name.fromConstantString(name.fqdn()), rType, DClass.IN);
Message dnsResponse = validating.send(Message.newQuery(toValidate));
RRset[] rrSets = dnsResponse.getSectionRRsets(Section.ADDITIONAL);
StringBuilder reason = new StringBuilder("");
for (RRset rrset : rrSets) {
if (rrset.getName().equals(Name.root) && rrset.getType() == Type.TXT
&& rrset.getDClass() == ValidatingResolver.VALIDATION_REASON_QCLASS) {
reason.append(TextRecord.build((TXTRecord) rrset.first()).getRData());
}
}
StatusCode outcome = StatusCode.SUCCESSFUL_OPERATION;
if (dnsResponse.getRcode() == Rcode.SERVFAIL) {
if (reason.toString().toLowerCase().contains(CHAIN_OF_TRUST)
|| reason.toString().toLowerCase().contains(INSECURE)) {
outcome = StatusCode.RESOURCE_INSECURE_ERROR;
} else if (reason.toString().toLowerCase().contains(NO_DATA)) {
outcome = StatusCode.NETWORK_ERROR;
} else if (reason.toString().toLowerCase().contains(NO_SIGNATURE)
|| reason.toString().toLowerCase().contains(MISSING_KEY)) {
outcome = StatusCode.RESOLUTION_NAME_ERROR;
}
} else if (dnsResponse.getRcode() == Rcode.NXDOMAIN) {
if (reason.toString().toLowerCase().contains(NSEC3_NO_DS)) {
outcome = StatusCode.RESOURCE_INSECURE_ERROR;
} else {
outcome = StatusCode.RESOLUTION_NAME_ERROR;
}
} else if (dnsResponse.getRcode() == Rcode.NOERROR
&& !dnsResponse.getHeader().getFlag(Flags.AD)) {
outcome = StatusCode.RESOURCE_INSECURE_ERROR;
}
if (outcome != StatusCode.SUCCESSFUL_OPERATION) {
throw ExceptionsUtil.build(outcome,
"DNSSEC Validation Failed",
new LinkedHashMap<String, StatusCode>());
}
} catch (IOException e) {
// it might be a transient error network: retry with next Resolver
return false;
}
return true;
}
示例7: classifyResponse
import org.xbill.DNS.RRset; //导入方法依赖的package包/类
/**
* Given a response, classify ANSWER responses into a subtype.
*
* @param m The response to classify.
*
* @return A subtype ranging from UNKNOWN to NAMEERROR.
*/
public static ResponseClassification classifyResponse(SMessage m) {
// Normal Name Error's are easy to detect -- but don't mistake a CNAME
// chain ending in NXDOMAIN.
if (m.getRcode() == Rcode.NXDOMAIN && m.getCount(Section.ANSWER) == 0) {
return ResponseClassification.NAMEERROR;
}
// Next is NODATA
if (m.getCount(Section.ANSWER) == 0) {
return ResponseClassification.NODATA;
}
// We distinguish between CNAME response and other positive/negative
// responses because CNAME answers require extra processing.
int qtype = m.getQuestion().getType();
// We distinguish between ANY and CNAME or POSITIVE because ANY
// responses are validated differently.
if (qtype == Type.ANY) {
return ResponseClassification.ANY;
}
boolean hadCname = false;
for (RRset set : m.getSectionRRsets(Section.ANSWER)) {
if (set.getType() == qtype) {
return ResponseClassification.POSITIVE;
}
if (set.getType() == Type.CNAME || set.getType() == Type.DNAME) {
hadCname = true;
if (qtype == Type.DS) {
return ResponseClassification.CNAME;
}
}
}
if (hadCname) {
if (m.getRcode() == Rcode.NXDOMAIN) {
return ResponseClassification.CNAME_NAMEERROR;
}
else {
return ResponseClassification.CNAME_NODATA;
}
}
logger.warn("Failed to classify response message:\n" + m);
return ResponseClassification.UNKNOWN;
}