Add TXT record

This commit is contained in:
Rene Treffer 2014-07-23 00:00:55 +02:00
parent f13813186f
commit b0f8bec1cb
2 changed files with 74 additions and 1 deletions

View file

@ -11,6 +11,7 @@ import de.measite.minidns.record.Data;
import de.measite.minidns.record.NS; import de.measite.minidns.record.NS;
import de.measite.minidns.record.PTR; import de.measite.minidns.record.PTR;
import de.measite.minidns.record.SRV; import de.measite.minidns.record.SRV;
import de.measite.minidns.record.TXT;
import de.measite.minidns.util.NameUtil; import de.measite.minidns.util.NameUtil;
/** /**
@ -231,7 +232,11 @@ public class Record {
public void parse(DataInputStream dis, byte[] data) throws IOException { public void parse(DataInputStream dis, byte[] data) throws IOException {
this.name = NameUtil.parse(dis, data); this.name = NameUtil.parse(dis, data);
this.type = TYPE.getType(dis.readUnsignedShort()); this.type = TYPE.getType(dis.readUnsignedShort());
this.clazz = CLASS.getClass(dis.readUnsignedShort()); int clazzValue = dis.readUnsignedShort();
this.clazz = CLASS.getClass(clazzValue);
if (this.clazz == null) {
System.out.println("Unknown class " + clazzValue);
}
this.ttl = (((long)dis.readUnsignedShort()) << 32) + this.ttl = (((long)dis.readUnsignedShort()) << 32) +
dis.readUnsignedShort(); dis.readUnsignedShort();
int payloadLength = dis.readUnsignedShort(); int payloadLength = dis.readUnsignedShort();
@ -254,6 +259,9 @@ public class Record {
case PTR: case PTR:
this.payloadData = new PTR(); this.payloadData = new PTR();
break; break;
case TXT:
this.payloadData = new TXT();
break;
default: default:
System.out.println("Unparsed type " + type); System.out.println("Unparsed type " + type);
this.payloadData = null; this.payloadData = null;

View file

@ -0,0 +1,65 @@
package de.measite.minidns.record;
import java.io.DataInputStream;
import java.io.IOException;
import de.measite.minidns.Record.TYPE;
import de.measite.minidns.util.NameUtil;
/**
* TXT record (actually a binary blob with wrappers for text content).
*/
public class TXT implements Data {
protected byte[] blob;
public byte[] getBlob() {
return blob;
}
public void setBlob(byte[] blob) {
this.blob = blob;
}
public String getText() {
try {
return (new String(blob, "UTF-8")).intern();
} catch (Exception e) {
/* Can't happen for UTF-8 unless it's really a blob */
return null;
}
}
public void setText(String text) {
try {
this.blob = text.getBytes("UTF-8");
} catch (Exception e) {
/* Can't happen, UTF-8 IS supported */
throw new RuntimeException("UTF-8 not supported", e);
}
}
@Override
public byte[] toByteArray() {
throw new UnsupportedOperationException("Not implemented yet");
}
@Override
public void parse(DataInputStream dis, byte[] data, int length)
throws IOException
{
blob = new byte[length];
dis.readFully(blob);
}
@Override
public TYPE getType() {
return TYPE.TXT;
}
@Override
public String toString() {
return "\"" + getText() + "\"";
}
}