Java 类org.xbill.DNS.Header 实例源码

项目:ddns    文件:TestDatagram.java   
public static void main(String[] args) throws Exception {
    try (DatagramSocket socket = new DatagramSocket()) {
        Message message = new Message();
        Header header = message.getHeader();
        header.setOpcode(Opcode.QUERY);
        header.setID(1);
        header.setRcode(Rcode.NOERROR);
        header.setFlag(Flags.RD);
        message.addRecord(Record.newRecord(new Name("www.xqbase.com."), Type.A, DClass.IN), Section.QUESTION);
        byte[] data = message.toWire();
        DatagramPacket packet = new DatagramPacket(data, data.length, new InetSocketAddress("localhost", 53));
        socket.send(packet);
        data = new byte[65536];
        packet = new DatagramPacket(data, data.length);
        socket.setSoTimeout(2000);
        socket.receive(packet);
        Message response = new Message(Bytes.left(data, packet.getLength()));
        System.out.println(response);
    }
}
项目:dnsjava    文件:HeaderTest.java   
public void test_ctor_0arg()
   {
m_h = new Header();
assertTrue(0 <= m_h.getID() && m_h.getID() < 0xFFFF);

boolean[] flags = m_h.getFlags();
for( int i=0; i<flags.length; ++i){
    assertFalse(flags[i]);
}
assertEquals(0, m_h.getRcode());
assertEquals(0, m_h.getOpcode());
assertEquals(0, m_h.getCount(0));
assertEquals(0, m_h.getCount(1));
assertEquals(0, m_h.getCount(2));
assertEquals(0, m_h.getCount(3));
   }
项目:dnsjava    文件:HeaderTest.java   
public void test_clone()
   {
m_h.setOpcode(Opcode.value("IQUERY"));
m_h.setRcode(Rcode.value("SERVFAIL"));
m_h.setFlag(0); // qr
m_h.setFlag(7); // rd
m_h.setFlag(8); // ra
m_h.setFlag(11); // cd
m_h.setCount(1, 0xFF);
m_h.setCount(2, 0x0A);

Header h2 = (Header)m_h.clone();

assertNotSame(m_h, h2);
assertEquals(m_h.getID(), h2.getID());
for( int i=0; i<16; ++i){
    if( (i>0 && i<5) || i > 11){
    continue;
    }
    assertEquals(m_h.getFlag(i), h2.getFlag(i));
}
for( int i=0; i<4; ++i){
    assertEquals(m_h.getCount(i), h2.getCount(i));
}
   }
项目:JavaDNS    文件:HeaderTest.java   
public void test_ctor_0arg()
   {
m_h = new Header();
assertTrue(0 <= m_h.getID() && m_h.getID() < 0xFFFF);

boolean[] flags = m_h.getFlags();
for( int i=0; i<flags.length; ++i){
    assertFalse(flags[i]);
}
assertEquals(0, m_h.getRcode());
assertEquals(0, m_h.getOpcode());
assertEquals(0, m_h.getCount(0));
assertEquals(0, m_h.getCount(1));
assertEquals(0, m_h.getCount(2));
assertEquals(0, m_h.getCount(3));
   }
项目:JavaDNS    文件:HeaderTest.java   
public void test_clone()
   {
m_h.setOpcode(Opcode.value("IQUERY"));
m_h.setRcode(Rcode.value("SERVFAIL"));
m_h.setFlag(0); // qr
m_h.setFlag(7); // rd
m_h.setFlag(8); // ra
m_h.setFlag(11); // cd
m_h.setCount(1, 0xFF);
m_h.setCount(2, 0x0A);

Header h2 = (Header)m_h.clone();

assertNotSame(m_h, h2);
assertEquals(m_h.getID(), h2.getID());
for( int i=0; i<16; ++i){
    if( (i>0 && i<5) || i > 11){
    continue;
    }
    assertEquals(m_h.getFlag(i), h2.getFlag(i));
}
for( int i=0; i<4; ++i){
    assertEquals(m_h.getCount(i), h2.getCount(i));
}
   }
项目:dnsjava-fork    文件:HeaderTest.java   
public void test_ctor_0arg()
   {
m_h = new Header();
assertTrue(0 <= m_h.getID() && m_h.getID() < 0xFFFF);

boolean[] flags = m_h.getFlags();
for( int i=0; i<flags.length; ++i){
    assertFalse(flags[i]);
}
assertEquals(0, m_h.getRcode());
assertEquals(0, m_h.getOpcode());
assertEquals(0, m_h.getCount(0));
assertEquals(0, m_h.getCount(1));
assertEquals(0, m_h.getCount(2));
assertEquals(0, m_h.getCount(3));
   }
项目:dnsjava-fork    文件:HeaderTest.java   
public void test_clone()
   {
m_h.setOpcode(Opcode.value("IQUERY"));
m_h.setRcode(Rcode.value("SERVFAIL"));
m_h.setFlag(0); // qr
m_h.setFlag(7); // rd
m_h.setFlag(8); // ra
m_h.setFlag(11); // cd
m_h.setCount(1, 0xFF);
m_h.setCount(2, 0x0A);

Header h2 = (Header)m_h.clone();

assertNotSame(m_h, h2);
assertEquals(m_h.getID(), h2.getID());
for( int i=0; i<16; ++i){
    if( (i>0 && i<5) || i > 11){
    continue;
    }
    assertEquals(m_h.getFlag(i), h2.getFlag(i));
}
for( int i=0; i<4; ++i){
    assertEquals(m_h.getCount(i), h2.getCount(i));
}
   }
项目:androdns    文件:DNSFormActivity.java   
private void setAnswerFlagsToState(Header header, AnswerScreenState state){
    state.flag_AA =  header.getFlag(Flags.AA);
    state.flag_AD = header.getFlag(Flags.AD);
    state.flag_TC = header.getFlag(Flags.TC);
    state.flag_RD = header.getFlag(Flags.RD);
    state.flag_RA = header.getFlag(Flags.RA);
    state.flag_CD = header.getFlag(Flags.CD);
}
项目:dnsjava    文件:HeaderTest.java   
public void test_ctor_DNSInput() throws IOException
   {
byte[] raw = new byte[] { (byte)0x12, (byte)0xAB, // ID
              (byte)0x8F, (byte)0xBD, // flags: 1 0001 1 1 1 1 011 1101
              (byte)0x65, (byte)0x1C, // QDCOUNT
              (byte)0x10, (byte)0xF0, // ANCOUNT
              (byte)0x98, (byte)0xBA, // NSCOUNT
              (byte)0x71, (byte)0x90 }; // ARCOUNT

m_h = new Header(new DNSInput(raw));

assertEquals(0x12AB, m_h.getID());

boolean[] flags = m_h.getFlags();

assertTrue(flags[0]);

assertEquals(1, m_h.getOpcode());

assertTrue(flags[5]);

assertTrue(flags[6]);

assertTrue(flags[7]);

assertTrue(flags[8]);

assertFalse(flags[9]);
assertTrue(flags[10]);
assertTrue(flags[11]);

assertEquals(0xD, m_h.getRcode());

assertEquals(0x651C, m_h.getCount(0));
assertEquals(0x10F0, m_h.getCount(1));
assertEquals(0x98BA, m_h.getCount(2));
assertEquals(0x7190, m_h.getCount(3));
   }
项目:dnsjava    文件:HeaderTest.java   
public void test_toWire() throws IOException
   {
byte[] raw = new byte[] { (byte)0x12, (byte)0xAB, // ID
              (byte)0x8F, (byte)0xBD, // flags: 1 0001 1 1 1 1 011 1101
              (byte)0x65, (byte)0x1C, // QDCOUNT
              (byte)0x10, (byte)0xF0, // ANCOUNT
              (byte)0x98, (byte)0xBA, // NSCOUNT
              (byte)0x71, (byte)0x90 }; // ARCOUNT

m_h = new Header(raw);

DNSOutput dout = new DNSOutput();
m_h.toWire(dout);

byte[] out = dout.toByteArray();

assertEquals(12, out.length);
for( int i=0; i<out.length; ++i){
    assertEquals(raw[i], out[i]);
}

m_h.setOpcode(0xA); // 1010
assertEquals(0xA, m_h.getOpcode());
m_h.setRcode(0x7);  // 0111

// flags is now: 1101 0111 1011 0111

raw[2] = (byte)0xD7;
raw[3] = (byte)0xB7;

out = m_h.toWire();

assertEquals(12, out.length);
for( int i=0; i<out.length; ++i){
    assertEquals("i=" + i, raw[i], out[i]);
}
   }
项目:JavaDNS    文件:HeaderTest.java   
public void test_ctor_DNSInput() throws IOException
   {
byte[] raw = new byte[] { (byte)0x12, (byte)0xAB, // ID
              (byte)0x8F, (byte)0xBD, // flags: 1 0001 1 1 1 1 011 1101
              (byte)0x65, (byte)0x1C, // QDCOUNT
              (byte)0x10, (byte)0xF0, // ANCOUNT
              (byte)0x98, (byte)0xBA, // NSCOUNT
              (byte)0x71, (byte)0x90 }; // ARCOUNT

m_h = new Header(new DNSInput(raw));

assertEquals(0x12AB, m_h.getID());

boolean[] flags = m_h.getFlags();

assertTrue(flags[0]);

assertEquals(1, m_h.getOpcode());

assertTrue(flags[5]);

assertTrue(flags[6]);

assertTrue(flags[7]);

assertTrue(flags[8]);

assertFalse(flags[9]);
assertTrue(flags[10]);
assertTrue(flags[11]);

assertEquals(0xD, m_h.getRcode());

assertEquals(0x651C, m_h.getCount(0));
assertEquals(0x10F0, m_h.getCount(1));
assertEquals(0x98BA, m_h.getCount(2));
assertEquals(0x7190, m_h.getCount(3));
   }
项目:JavaDNS    文件:HeaderTest.java   
public void test_toWire() throws IOException
   {
byte[] raw = new byte[] { (byte)0x12, (byte)0xAB, // ID
              (byte)0x8F, (byte)0xBD, // flags: 1 0001 1 1 1 1 011 1101
              (byte)0x65, (byte)0x1C, // QDCOUNT
              (byte)0x10, (byte)0xF0, // ANCOUNT
              (byte)0x98, (byte)0xBA, // NSCOUNT
              (byte)0x71, (byte)0x90 }; // ARCOUNT

m_h = new Header(raw);

DNSOutput dout = new DNSOutput();
m_h.toWire(dout);

byte[] out = dout.toByteArray();

assertEquals(12, out.length);
for( int i=0; i<out.length; ++i){
    assertEquals(raw[i], out[i]);
}

m_h.setOpcode(0xA); // 1010
assertEquals(0xA, m_h.getOpcode());
m_h.setRcode(0x7);  // 0111

// flags is now: 1101 0111 1011 0111

raw[2] = (byte)0xD7;
raw[3] = (byte)0xB7;

out = m_h.toWire();

assertEquals(12, out.length);
for( int i=0; i<out.length; ++i){
    assertEquals("i=" + i, raw[i], out[i]);
}
   }
项目:dnssecjava    文件:ValidatingResolver.java   
/**
 * Creates a response message with the given return code.
 * 
 * @param request The request for which the response belongs.
 * @param rcode The response code, @see Rcode
 * @return The response message for <code>request</code>.
 */
private static SMessage errorMessage(Message request, int rcode) {
    SMessage m = new SMessage(request.getHeader().getID(), request.getQuestion());
    Header h = m.getHeader();
    h.setRcode(rcode);
    h.setFlag(Flags.QR);

    return m;
}
项目:dnssecjava    文件:SMessage.java   
/**
 * Creates a instance of this class.
 * 
 * @param h The header of the original message.
 */
@SuppressWarnings("unchecked")
public SMessage(Header h) {
    this.sections = new List[NUM_SECTIONS];
    this.header = h;
    this.securityStatus = SecurityStatus.UNCHECKED;
}
项目:dnsjava-fork    文件:HeaderTest.java   
public void test_ctor_DNSInput() throws IOException
   {
byte[] raw = new byte[] { (byte)0x12, (byte)0xAB, // ID
              (byte)0x8F, (byte)0xBD, // flags: 1 0001 1 1 1 1 011 1101
              (byte)0x65, (byte)0x1C, // QDCOUNT
              (byte)0x10, (byte)0xF0, // ANCOUNT
              (byte)0x98, (byte)0xBA, // NSCOUNT
              (byte)0x71, (byte)0x90 }; // ARCOUNT

m_h = new Header(new DNSInput(raw));

assertEquals(0x12AB, m_h.getID());

boolean[] flags = m_h.getFlags();

assertTrue(flags[0]);

assertEquals(1, m_h.getOpcode());

assertTrue(flags[5]);

assertTrue(flags[6]);

assertTrue(flags[7]);

assertTrue(flags[8]);

assertFalse(flags[9]);
assertTrue(flags[10]);
assertTrue(flags[11]);

assertEquals(0xD, m_h.getRcode());

assertEquals(0x651C, m_h.getCount(0));
assertEquals(0x10F0, m_h.getCount(1));
assertEquals(0x98BA, m_h.getCount(2));
assertEquals(0x7190, m_h.getCount(3));
   }
项目:dnsjava-fork    文件:HeaderTest.java   
public void test_toWire() throws IOException
   {
byte[] raw = new byte[] { (byte)0x12, (byte)0xAB, // ID
              (byte)0x8F, (byte)0xBD, // flags: 1 0001 1 1 1 1 011 1101
              (byte)0x65, (byte)0x1C, // QDCOUNT
              (byte)0x10, (byte)0xF0, // ANCOUNT
              (byte)0x98, (byte)0xBA, // NSCOUNT
              (byte)0x71, (byte)0x90 }; // ARCOUNT

m_h = new Header(raw);

DNSOutput dout = new DNSOutput();
m_h.toWire(dout);

byte[] out = dout.toByteArray();

assertEquals(12, out.length);
for( int i=0; i<out.length; ++i){
    assertEquals(raw[i], out[i]);
}

m_h.setOpcode(0xA); // 1010
assertEquals(0xA, m_h.getOpcode());
m_h.setRcode(0x7);  // 0111

// flags is now: 1101 0111 1011 0111

raw[2] = (byte)0xD7;
raw[3] = (byte)0xB7;

out = m_h.toWire();

assertEquals(12, out.length);
for( int i=0; i<out.length; ++i){
    assertEquals("i=" + i, raw[i], out[i]);
}
   }
项目:acme4j    文件:DnsServer.java   
/**
 * Processes a DNS query.
 *
 * @param sock
 *            Socket to listen to
 */
private void process(DatagramSocket sock) {
    try {
        byte[] in = new byte[UDP_SIZE];

        // Read the question
        DatagramPacket indp = new DatagramPacket(in, UDP_SIZE);
        indp.setLength(UDP_SIZE);
        sock.receive(indp);
        Message msg = new Message(in);
        Header header = msg.getHeader();

        Record question = msg.getQuestion();

        // Prepare a response
        Message response = new Message(header.getID());
        response.getHeader().setFlag(Flags.QR);
        response.addRecord(question, Section.QUESTION);

        Name name = question.getName();
        boolean hasRecords = false;

        String txt = txtRecords.get(name.toString(true));
        if (question.getType() == Type.TXT && txt != null) {
            response.addRecord(new TXTRecord(name, DClass.IN, TTL, txt), Section.ANSWER);
            hasRecords = true;
            LOG.info("dns-01: {} {} IN TXT \"{}\"", name, TTL, txt);
        }

        InetAddress a = aRecords.get(name.toString(true));
        if (question.getType() == Type.A && a != null) {
            response.addRecord(new ARecord(name, DClass.IN, TTL, a), Section.ANSWER);
            hasRecords = true;
            LOG.info("dns-01: {} {} IN A {}", name, TTL, a.getHostAddress());
        }

        if (!hasRecords) {
            response.getHeader().setRcode(Rcode.NXDOMAIN);
            LOG.warn("dns-01: Cannot answer: {}", question);
        }

        // Send the response
        byte[] resp = response.toWire();
        DatagramPacket outdp = new DatagramPacket(resp, resp.length, indp.getAddress(), indp.getPort());
        sock.send(outdp);
    } catch (Exception ex) {
        LOG.error("Failed to process query", ex);
    }
}
项目:dnsjava    文件:HeaderTest.java   
public void setUp()
   {
m_h = new Header(0xABCD); // 43981
   }
项目:JavaDNS    文件:HeaderTest.java   
public void setUp()
   {
m_h = new Header(0xABCD); // 43981
   }
项目:dnssecjava    文件:SMessage.java   
/**
 * Gets this message as a standard DNSJAVA message.
 * 
 * @return This message as a standard DNSJAVA message.
 */
public Message getMessage() {
    // Generate our new message.
    Message m = new Message(this.header.getID());

    // Convert the header
    // We do this for two reasons:
    // 1) setCount() is package scope, so we can't do that, and
    // 2) setting the header on a message after creating the
    // message frequently gets stuff out of sync, leading to malformed wire
    // format messages.
    Header h = m.getHeader();
    h.setOpcode(this.header.getOpcode());
    h.setRcode(this.header.getRcode());
    for (int i = 0; i < MAX_FLAGS; i++) {
        if (Flags.isFlag(i) && this.header.getFlag(i)) {
            h.setFlag(i);
        }
    }

    // Add all the records. -- this will set the counts correctly in the
    // message header.
    if (this.question != null) {
        m.addRecord(this.question, Section.QUESTION);
    }

    for (int sec = Section.ANSWER; sec <= Section.ADDITIONAL; sec++) {
        List<SRRset> slist = this.getSectionRRsets(sec);
        for (SRRset rrset : slist) {
            for (Iterator<?> j = rrset.rrs(); j.hasNext();) {
                m.addRecord((Record)j.next(), sec);
            }

            for (Iterator<?> j = rrset.sigs(); j.hasNext();) {
                m.addRecord((Record)j.next(), sec);
            }
        }
    }

    if (this.oPTRecord != null) {
        m.addRecord(this.oPTRecord, Section.ADDITIONAL);
    }

    return m;
}
项目:dnsjava-fork    文件:HeaderTest.java   
public void setUp()
   {
m_h = new Header(0xABCD); // 43981
   }
项目:dnssecjava    文件:SMessage.java   
/**
 * Creates a new instance of this class.
 * 
 * @param id The ID of the DNS query or response message.
 * @param question The question section of the query or response.
 */
public SMessage(int id, Record question) {
    this(new Header(id));
    this.question = question;
}
项目:dnssecjava    文件:SMessage.java   
/**
 * Gets the header of this message.
 * 
 * @return The header of this message.
 */
public Header getHeader() {
    return this.header;
}