org.xbill.DNS.Message类的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(14.6k)|赞(0)|评价(0)|浏览(374)

本文整理了Java中org.xbill.DNS.Message类的一些代码示例,展示了Message类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Message类的具体详情如下:
包路径:org.xbill.DNS.Message
类名称:Message

Message介绍

暂无

代码示例

代码示例来源:origin: github/elasticsearch-srv-discovery

  1. @Override
  2. public Message send(Message query) throws IOException {
  3. final String HOSTNAME = "localhost.";
  4. if (query.getQuestion().getName().toString().equals(Constants.TEST_QUERY)) {
  5. Record question = Record.newRecord(query.getQuestion().getName(), Type.SRV, DClass.IN);
  6. Message queryMessage = Message.newQuery(question);
  7. Message result = new Message();
  8. result.setHeader(queryMessage.getHeader());
  9. result.addRecord(question, Section.QUESTION);
  10. result.addRecord(new SRVRecord(query.getQuestion().getName(), DClass.IN, 1, 1, 1, Constants.NODE_0_TRANSPORT_TCP_PORT, Name.fromString(HOSTNAME)), Section.ANSWER);
  11. result.addRecord(new SRVRecord(query.getQuestion().getName(), DClass.IN, 1, 1, 1, Constants.NODE_1_TRANSPORT_TCP_PORT, Name.fromString(HOSTNAME)), Section.ANSWER);
  12. result.addRecord(new SRVRecord(query.getQuestion().getName(), DClass.IN, 1, 1, 1, Constants.NODE_2_TRANSPORT_TCP_PORT, Name.fromString(HOSTNAME)), Section.ANSWER);
  13. result.addRecord(new SRVRecord(query.getQuestion().getName(), DClass.IN, 1, 1, 1, Constants.NODE_3_TRANSPORT_TCP_PORT, Name.fromString(HOSTNAME)), Section.ANSWER);
  14. result.addRecord(new SRVRecord(query.getQuestion().getName(), DClass.IN, 1, 1, 1, Constants.NODE_4_TRANSPORT_TCP_PORT, Name.fromString(HOSTNAME)), Section.ANSWER);
  15. return result;
  16. }
  17. if (query.getQuestion().getName().toString().equals(HOSTNAME)) {
  18. Record question = Record.newRecord(query.getQuestion().getName(), Type.A, DClass.IN);
  19. Message queryMessage = Message.newQuery(question);
  20. Message result = new Message();
  21. result.setHeader(queryMessage.getHeader());
  22. result.addRecord(question, Section.QUESTION);
  23. result.addRecord(new ARecord(query.getQuestion().getName(), DClass.IN, 1, InetAddress.getLoopbackAddress()), Section.ANSWER);
  24. return result;
  25. }
  26. throw new IllegalArgumentException("Unknown test query: " + query.getQuestion().getName().toString());
  27. }
  28. };

代码示例来源:origin: julian-klode/dns66

  1. @Test
  2. public void testBlockedDnsQuery() throws Exception {
  3. Message message = Message.newQuery(new ARecord(new Name("blocked.example.com."),
  4. 0x01,
  5. 3600,
  6. .payloadBuilder(
  7. new UnknownPacket.Builder()
  8. .rawData(message.toWire())
  9. );
  10. assertTrue(mockEventLoop.lastResponse.getPayload() instanceof UdpPacket);
  11. Message responseMsg = new Message(mockEventLoop.lastResponse.getPayload().getPayload().getRawData());
  12. assertEquals(NOERROR, responseMsg.getHeader().getRcode());
  13. assertArrayEquals(new Record[] {}, responseMsg.getSectionArray(Section.ANSWER));
  14. assertNotEquals(0, responseMsg.getSectionArray(Section.AUTHORITY).length);
  15. assertTrue(responseMsg.getSectionArray(Section.AUTHORITY)[0] instanceof SOARecord);
  16. assertTrue(responseMsg.getSectionArray(Section.AUTHORITY)[0].getTTL() > 0);

代码示例来源:origin: dnsjava/dnsjava

  1. private void
  2. applyEDNS(Message query) {
  3. if (queryOPT == null || query.getOPT() != null)
  4. return;
  5. query.addRecord(queryOPT, Section.ADDITIONAL);
  6. }

代码示例来源:origin: julian-klode/dns66

  1. Message dnsMsg;
  2. try {
  3. dnsMsg = new Message(dnsRawData);
  4. } catch (IOException e) {
  5. Log.i(TAG, "handleDnsRequest: Discarding non-DNS or invalid packet", e);
  6. return;
  7. if (dnsMsg.getQuestion() == null) {
  8. Log.i(TAG, "handleDnsRequest: Discarding DNS packet with no query " + dnsMsg);
  9. return;
  10. String dnsQueryName = dnsMsg.getQuestion().getName().toString(true);
  11. if (!ruleDatabase.isBlocked(dnsQueryName.toLowerCase(Locale.ENGLISH))) {
  12. Log.i(TAG, "handleDnsRequest: DNS Name " + dnsQueryName + " Allowed, sending to " + destAddr);
  13. } else {
  14. Log.i(TAG, "handleDnsRequest: DNS Name " + dnsQueryName + " Blocked!");
  15. dnsMsg.getHeader().setFlag(Flags.QR);
  16. dnsMsg.getHeader().setRcode(Rcode.NOERROR);
  17. dnsMsg.addRecord(NEGATIVE_CACHE_SOA_RECORD, Section.AUTHORITY);
  18. handleDnsResponse(parsedPacket, dnsMsg.toWire());

代码示例来源:origin: OpenNMS/opennms

  1. byte[] buildErrorMessage(final Header header, final int rcode, final Record question) {
  2. final Message response = new Message();
  3. response.setHeader(header);
  4. for (int i = 0; i < 4; i++)
  5. response.removeAllRecords(i);
  6. if (rcode == Rcode.SERVFAIL)
  7. response.addRecord(question, Section.QUESTION);
  8. header.setRcode(rcode);
  9. return response.toWire();
  10. }

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-registry

  1. Record[] assertDNSQueryNotNull(String lookup, int type, int answerCount)
  2. throws IOException {
  3. Name name = Name.fromString(lookup);
  4. Record question = Record.newRecord(name, type, DClass.IN);
  5. Message query = Message.newQuery(question);
  6. OPTRecord optRecord = new OPTRecord(4096, 0, 0, Flags.DO, null);
  7. query.addRecord(optRecord, Section.ADDITIONAL);
  8. byte[] responseBytes = getRegistryDNS().generateReply(query, null);
  9. Message response = new Message(responseBytes);
  10. assertEquals("not successful", Rcode.NOERROR, response.getRcode());
  11. assertNotNull("Null response", response);
  12. assertEquals("Questions do not match", query.getQuestion(),
  13. response.getQuestion());
  14. Record[] recs = response.getSectionArray(Section.ANSWER);
  15. assertEquals(answerCount, recs.length);
  16. assertEquals(recs[0].getType(), type);
  17. return recs;
  18. }

代码示例来源:origin: dnsjava/dnsjava

  1. private void
  2. sendQuery() throws IOException {
  3. Record question = Record.newRecord(zname, qtype, dclass);
  4. Message query = new Message();
  5. query.getHeader().setOpcode(Opcode.QUERY);
  6. query.addRecord(question, Section.QUESTION);
  7. if (qtype == Type.IXFR) {
  8. Record soa = new SOARecord(zname, dclass, 0, Name.root,
  9. Name.root, ixfr_serial,
  10. 0, 0, 0, 0);
  11. query.addRecord(soa, Section.AUTHORITY);
  12. }
  13. if (tsig != null) {
  14. tsig.apply(query, null);
  15. verifier = new TSIG.StreamVerifier(tsig, query.getTSIG());
  16. }
  17. byte [] out = query.toWire(Message.MAXLENGTH);
  18. client.send(out);
  19. }

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-registry

  1. /**
  2. * Create a query to forward to the primary DNS server (if configured).
  3. * NOTE: Experimental
  4. *
  5. * @param query the inbound query.
  6. * @return the query to forward to the primary server.
  7. * @throws NameTooLongException
  8. * @throws TextParseException if query creation fails.
  9. */
  10. private Message createPrimaryQuery(Message query)
  11. throws NameTooLongException, TextParseException {
  12. Name name = query.getQuestion().getName();
  13. if (name.labels() > 0 && name.labels() <= 2) {
  14. // short relative or absolute name. this code may not be necessary -
  15. // OS resolution utilities probably append the search paths defined
  16. // in resolv.conf prior to the lookup
  17. int id = query.getHeader().getID();
  18. String queryName = name.getLabelString(0);
  19. Name qualifiedName = Name.concatenate(Name.fromString(queryName),
  20. Name.fromString(domainName));
  21. LOG.info("Received query {}. Forwarding query {}", name, qualifiedName);
  22. Record question = Record.newRecord(qualifiedName,
  23. query.getQuestion().getType(),
  24. query.getQuestion().getDClass());
  25. query = Message.newQuery(question);
  26. query.getHeader().setID(id);
  27. }
  28. return query;
  29. }

代码示例来源:origin: dnsjava/dnsjava

  1. private Message
  2. sendAXFR(Message query) throws IOException {
  3. Name qname = query.getQuestion().getName();
  4. ZoneTransferIn xfrin = ZoneTransferIn.newAXFR(qname, address, tsig);
  5. xfrin.setTimeout((int)(getTimeout() / 1000));
  6. xfrin.setLocalAddress(localAddress);
  7. try {
  8. xfrin.run();
  9. }
  10. catch (ZoneTransferException e) {
  11. throw new WireParseException(e.getMessage());
  12. }
  13. List records = xfrin.getAXFR();
  14. Message response = new Message(query.getHeader().getID());
  15. response.getHeader().setFlag(Flags.AA);
  16. response.getHeader().setFlag(Flags.QR);
  17. response.addRecord(query.getQuestion(), Section.QUESTION);
  18. Iterator it = records.iterator();
  19. while (it.hasNext())
  20. response.addRecord((Record)it.next(), Section.ANSWER);
  21. return response;
  22. }

代码示例来源:origin: org.apache.hadoop/hadoop-yarn-registry

  1. @Test
  2. public void testContainerRegistrationPersistanceAbsent() throws Exception {
  3. ServiceRecord record = marshal.fromBytes("somepath",
  4. CONTAINER_RECORD_YARN_PERSISTANCE_ABSENT.getBytes());
  5. registryDNS.register(
  6. "/registry/users/root/services/org-apache-slider/test1/components/"
  7. + "ctr-e50-1451931954322-0016-01-000003",
  8. record);
  9. Name name =
  10. Name.fromString("ctr-e50-1451931954322-0016-01-000002.dev.test.");
  11. Record question = Record.newRecord(name, Type.A, DClass.IN);
  12. Message query = Message.newQuery(question);
  13. byte[] responseBytes = registryDNS.generateReply(query, null);
  14. Message response = new Message(responseBytes);
  15. assertEquals("Excepting NXDOMAIN as Record must not have regsisterd wrong",
  16. Rcode.NXDOMAIN, response.getRcode());
  17. }

代码示例来源:origin: OpenNMS/opennms

  1. byte[] generateReply(final Message query, final byte[] in, final int length, final Socket s) {
  2. final Header header = query.getHeader();
  3. int maxLength;
  4. int flags = 0;
  5. return errorMessage(query, Rcode.NOTIMP);
  6. final Record queryRecord = query.getQuestion();
  7. final TSIGRecord queryTSIG = query.getTSIG();
  8. TSIG tsig = null;
  9. if (queryTSIG != null) {
  10. final OPTRecord queryOPT = query.getOPT();
  11. final Message response = new Message(query.getHeader().getID());
  12. response.getHeader().setFlag(Flags.QR);
  13. if (query.getHeader().getFlag(Flags.RD)) {
  14. response.getHeader().setFlag(Flags.RD);
  15. response.addRecord(queryRecord, Section.QUESTION);
  16. final int optflags = (flags == FLAG_DNSSECOK) ? ExtendedFlags.DO : 0;
  17. final OPTRecord opt = new OPTRecord((short) 4096, rcode, (byte) 0, optflags);
  18. response.addRecord(opt, Section.ADDITIONAL);
  19. response.setTSIG(tsig, Rcode.NOERROR, queryTSIG);
  20. return response.toWire(maxLength);

代码示例来源:origin: org.apache.james/apache-jspf

  1. private Message makeQuery(DNSRequest request, int id) throws TextParseException {
  2. Name name = Name.fromString(request.getHostname(), Name.root);
  3. int type;
  4. switch (request.getRecordType()) {
  5. case DNSRequest.A: type = Type.A; break;
  6. case DNSRequest.AAAA: type = Type.AAAA; break;
  7. case DNSRequest.MX: type = Type.MX; break;
  8. case DNSRequest.PTR: type = Type.PTR; break;
  9. case DNSRequest.SPF: type = Type.SPF; break;
  10. case DNSRequest.TXT: type = Type.TXT; break;
  11. default:
  12. throw new UnsupportedOperationException("Unknown query type: "+request.getRecordType());
  13. }
  14. Record question = Record.newRecord(name, type, DClass.ANY);
  15. Message query = Message.newQuery(question);
  16. query.getHeader().setID(id);
  17. return query;
  18. }
  19. }

代码示例来源:origin: posicks/mdnsjava

  1. protected Message convertUpdateToQueryResponse(final Message update)
  2. {
  3. Message m = new Message();
  4. Header h = m.getHeader();
  5. h.setOpcode(Opcode.QUERY);
  6. h.setFlag(Flags.AA);
  7. h.setFlag(Flags.QR);
  8. Record[] records = update.getSectionArray(Section.UPDATE);
  9. for (int index = 0; index < records.length; index++ )
  10. {
  11. m.addRecord(records[index], Section.ANSWER);
  12. }
  13. records = update.getSectionArray(Section.ADDITIONAL);
  14. for (int index = 0; index < records.length; index++ )
  15. {
  16. m.addRecord(records[index], Section.ADDITIONAL);
  17. }
  18. return m;
  19. }

代码示例来源:origin: undera/jmeter-plugins

  1. protected byte[] getMessageBytes(String data) {
  2. Message msg = new Message();
  3. String recs[] = data.split(NL);
  4. for (String rec : recs) {
  5. if (rec.length() <= 3) {
  6. Header head = msg.getHeader();
  7. int val = Integer.parseInt(rec.trim());
  8. if (val < 0) {
  9. head.unsetFlag(-val);
  10. } else {
  11. head.setFlag(val);
  12. }
  13. msg.setHeader(head);
  14. } else {
  15. msg.addRecord(getRecord(rec.trim()), Section.QUESTION);
  16. }
  17. }
  18. return msg.toWire();
  19. }

代码示例来源:origin: org.nhind/dns

  1. /**
  2. * Processes a DNS error condition and creates an appropriate DNS response.
  3. * @param request The original DNS request.
  4. * @param error The error condition that occured.
  5. * @return A response to the DNS request.
  6. */
  7. protected Message processError(Message request, DNSError<?> error)
  8. {
  9. Message errorResponse = null;
  10. try
  11. {
  12. Header respHeader = new Header(request.toWire());
  13. Message response = new Message();
  14. response.setHeader(respHeader);
  15. for (int i = 0; i < 4; i++)
  16. response.removeAllRecords(i);
  17. response.addRecord(request.getQuestion(), Section.QUESTION);
  18. response.getHeader().setFlag(Flags.QR);
  19. if (request.getHeader().getFlag(Flags.RD))
  20. response.getHeader().setFlag(Flags.RD);
  21. respHeader.setRcode(Integer.parseInt(error.getError().toString()));
  22. return response;
  23. }
  24. catch (IOException e) {}
  25. return errorResponse;
  26. }

代码示例来源:origin: OpenNMS/opennms

  1. try {
  2. final DataOutputStream dataOut = new DataOutputStream(s.getOutputStream());
  3. int id = query.getHeader().getID();
  4. while (it.hasNext()) {
  5. final RRset rrset = it.next();
  6. final Message response = new Message(id);
  7. final Header header = response.getHeader();
  8. header.setFlag(Flags.QR);
  9. header.setFlag(Flags.AA);
  10. if (tsig != null) {
  11. tsig.applyStream(response, qtsig, first);
  12. qtsig = response.getTSIG();
  13. final byte[] out = response.toWire();
  14. dataOut.writeShort(out.length);
  15. dataOut.write(out);

代码示例来源:origin: org.littleshoot/dnsjava

  1. byte [] in = client.recv();
  2. Message response = parseMessage(in);
  3. if (response.getHeader().getRcode() == Rcode.NOERROR &&
  4. verifier != null)
  5. TSIGRecord tsigrec = response.getTSIG();
  6. Record [] answers = response.getSectionArray(Section.ANSWER);
  7. int rcode = response.getRcode();
  8. if (rcode != Rcode.NOERROR) {
  9. if (qtype == Type.IXFR &&
  10. Record question = response.getQuestion();
  11. if (question != null && question.getType() != qtype) {
  12. fail("invalid question section");
  13. !response.isVerified())
  14. fail("last message must be signed");

代码示例来源:origin: OpenNMS/opennms

  1. void addRRset(final Name name, final Message response, final RRset rrset, final int section, final int flags) {
  2. for (int s = 1; s <= section; s++) {
  3. if (response.findRRset(name, rrset.getType(), s)) return;
  4. }
  5. if ((flags & FLAG_SIGONLY) == 0) {
  6. @SuppressWarnings("unchecked")
  7. final Iterator<Record> it = rrset.rrs();
  8. while (it.hasNext()) {
  9. final Record r = it.next();
  10. if (r.getName().isWild() && !name.isWild()) {
  11. response.addRecord(r.withName(name), section);
  12. } else {
  13. response.addRecord(r, section);
  14. }
  15. }
  16. }
  17. if ((flags & (FLAG_SIGONLY | FLAG_DNSSECOK)) != 0) {
  18. @SuppressWarnings("unchecked")
  19. final Iterator<Record> it = rrset.sigs();
  20. while (it.hasNext()) {
  21. final Record r = it.next();
  22. if (r.getName().isWild() && !name.isWild()) {
  23. response.addRecord(r.withName(name), section);
  24. } else {
  25. response.addRecord(r, section);
  26. }
  27. }
  28. }
  29. }

代码示例来源:origin: DSpace/DSpace

  1. /**
  2. * Resolve an IP address to a host name.
  3. *
  4. * @param hostIp dotted decimal IPv4 address.
  5. * @return name if resolved, or the address.
  6. * @throws IOException from infrastructure.
  7. */
  8. public static String reverseDns(String hostIp) throws IOException {
  9. Resolver res = new ExtendedResolver();
  10. // set the timeout, defaults to 200 milliseconds
  11. int timeout = ConfigurationManager.getIntProperty("usage-statistics", "resolver.timeout", 200);
  12. res.setTimeout(0, timeout);
  13. Name name = ReverseMap.fromAddress(hostIp);
  14. int type = Type.PTR;
  15. int dclass = DClass.IN;
  16. Record rec = Record.newRecord(name, type, dclass);
  17. Message query = Message.newQuery(rec);
  18. Message response = res.send(query);
  19. Record[] answers = response.getSectionArray(Section.ANSWER);
  20. if (answers.length == 0) {
  21. return hostIp;
  22. } else {
  23. return answers[0].rdataToString();
  24. }
  25. }

代码示例来源:origin: dnsjava/dnsjava

  1. /**
  2. * Asynchronously sends a message to a single server, registering a listener
  3. * to receive a callback on success or exception. Multiple asynchronous
  4. * lookups can be performed in parallel. Since the callback may be invoked
  5. * before the function returns, external synchronization is necessary.
  6. * @param query The query to send
  7. * @param listener The object containing the callbacks.
  8. * @return An identifier, which is also a parameter in the callback
  9. */
  10. public Object
  11. sendAsync(final Message query, final ResolverListener listener) {
  12. final Object id;
  13. synchronized (this) {
  14. id = new Integer(uniqueID++);
  15. }
  16. Record question = query.getQuestion();
  17. String qname;
  18. if (question != null)
  19. qname = question.getName().toString();
  20. else
  21. qname = "(none)";
  22. String name = this.getClass() + ": " + qname;
  23. Thread thread = new ResolveThread(this, query, id, listener);
  24. thread.setName(name);
  25. thread.setDaemon(true);
  26. thread.start();
  27. return id;
  28. }

相关文章