Class DnsName
- All Implemented Interfaces:
Serializable
,CharSequence
,Comparable<DnsName>
DnsLabel
) and is subject to certain restrictions (see
for example RFC 3696 ยง 2.).
Instances of this class can be created by using from(String)
.
This class holds three representations of a DNS name: ACE, raw ACE and IDN. ACE (ASCII Compatible Encoding), which
can be accessed via ace
, represents mostly the data that got send over the wire. But since DNS names are
case insensitive, the ACE value is normalized to lower case. You can use getRawAce()
to get the raw ACE data
that was received, which possibly includes upper case characters. The IDN (Internationalized Domain Name), that is
the DNS name as it should be shown to the user, can be retrieved using asIdn()
.
- See Also:
-
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionasIdn()
int
boolean
static DnsName
from
(CharSequence name) static DnsName
from
(CharSequence child, DnsName parent) static DnsName
static DnsName
static DnsName
static DnsName
static DnsName
static DnsName
Create a DNS name by "concatenating" the child under the parent name.getAce()
Return the ACE (ASCII Compatible Encoding) version of this DNS name.byte[]
getBytes()
Serialize a domain name under IDN rules.Domainpart in ACE representation.Hostpart in ACE representation.getLabel
(int labelNum) int
DnsLabel[]
Get a copy of the labels of this DNS name.Return the parent of this DNS label.Returns the raw ACE version of this DNS name.byte[]
DnsLabel[]
Get a copy of the raw labels of this DNS name.int
hashCode()
boolean
boolean
isDirectChildOf
(DnsName parent) boolean
static DnsName
parse
(DataInputStream dis, byte[] data) Parse a domain name starting at the current offset and moving the input stream pointer past this domain name (even if cross references occure).int
size()
stripToLabels
(int labelCount) toString()
void
Methods inherited from class org.minidns.util.SafeCharSequence
charAt, length, subSequence, toSafeString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.CharSequence
chars, codePoints
-
Field Details
-
MAX_LABELS
- See Also:
-
ROOT
-
IN_ADDR_ARPA
-
IP6_ARPA
-
VALIDATE
Whether or not the DNS name is validated on construction. -
ace
The DNS name in ASCII Compatible Encoding (ACE).
-
-
Method Details
-
writeToStream
- Throws:
IOException
-
getBytes
Serialize a domain name under IDN rules.- Returns:
- The binary domain name representation.
-
getRawBytes
-
getAce
Return the ACE (ASCII Compatible Encoding) version of this DNS name. Note that this method may return a String containing null bytes. Those Strings are notoriously difficult to handle from a security perspective. Therefore it is recommended to usetoString()
instead, which will return a sanitized String.- Returns:
- the ACE version of this DNS name.
- Since:
- 1.1.0
-
getRawAce
Returns the raw ACE version of this DNS name. That is, the version as it was received over the wire. Most notably, this version may include uppercase letters. Please refer togetAce()
for a discussion of the security implications when working with the ACE representation of a DNS name.- Returns:
- the raw ACE version of this DNS name.
- See Also:
-
asIdn
-
getDomainpart
Domainpart in ACE representation.- Returns:
- the domainpart in ACE representation.
-
getHostpart
Hostpart in ACE representation.- Returns:
- the hostpart in ACE representation.
-
getHostpartLabel
-
size
-
toString
- Specified by:
toString
in interfaceCharSequence
- Overrides:
toString
in classObject
-
from
-
from
-
from
Create a DNS name by "concatenating" the child under the parent name. The child can also be seen as the "left" part of the resulting DNS name and the parent is the "right" part.For example using "i.am.the.child" as child and "of.this.parent.example" as parent, will result in a DNS name: "i.am.the.child.of.this.parent.example".
- Parameters:
child
- the child DNS name.parent
- the parent DNS name.- Returns:
- the resulting of DNS name.
-
from
-
from
-
from
-
from
-
from
-
parse
Parse a domain name starting at the current offset and moving the input stream pointer past this domain name (even if cross references occure).- Parameters:
dis
- The input stream.data
- The raw data (for cross references).- Returns:
- The domain name string.
- Throws:
IOException
- Should never happen.
-
compareTo
- Specified by:
compareTo
in interfaceComparable<DnsName>
-
equals
-
hashCode
-
isDirectChildOf
-
isChildOf
-
getLabelCount
-
getLabels
Get a copy of the labels of this DNS name. The resulting array will contain the labels in reverse order, that is, the top-level domain will be at res[0].- Returns:
- an array of the labels in reverse order.
-
getLabel
-
getRawLabels
Get a copy of the raw labels of this DNS name. The resulting array will contain the labels in reverse order, that is, the top-level domain will be at res[0].- Returns:
- an array of the raw labels in reverse order.
-
stripToLabels
-
getParent
Return the parent of this DNS label. Will return the root label if this label itself is the root label (because there is no parent of root).For example:
"foo.bar.org".getParent() == "bar.org"
".".getParent() == "."
- Returns:
- the parent of this DNS label.
-
isRootLabel
-