当前位置: 首页>>代码示例>>Java>>正文


Java RRset.getType方法代码示例

本文整理汇总了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;
}
 
开发者ID:ibauersachs,项目名称:dnssecjava,代码行数:17,代码来源:TestBase.java

示例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();
}
 
开发者ID:google,项目名称:nomulus,代码行数:13,代码来源:DnsUpdateWriterTest.java

示例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;
}
 
开发者ID:ibauersachs,项目名称:dnssecjava,代码行数:28,代码来源:UnboundTests.java

示例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());
        }
    }
}
 
开发者ID:ibauersachs,项目名称:dnssecjava,代码行数:14,代码来源:TestDNames.java

示例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));
}
 
开发者ID:ibauersachs,项目名称:dnssecjava,代码行数:29,代码来源:TestTrustAnchorLoading.java

示例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;
}
 
开发者ID:eclipse,项目名称:tiaki-java,代码行数:62,代码来源:DnsUtil.java

示例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;
}
 
开发者ID:ibauersachs,项目名称:dnssecjava,代码行数:56,代码来源:ValUtils.java


注:本文中的org.xbill.DNS.RRset.getType方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。