Improved log message

This commit is contained in:
Ziver Koc 2020-06-25 23:09:27 +02:00
parent ef42d8aa6c
commit 196846e8e4
3 changed files with 22 additions and 19 deletions

View file

@ -116,7 +116,7 @@ public class MulticastDnsServer extends ThreadedUDPNetwork implements ThreadedUD
// Just handle queries and no responses
if ( ! dnsPacket.getHeader().flagQueryResponse) {
DnsPacket response = handleReceivedPacket(dnsPacket);
DnsPacket response = handleReceivedPacket(packet.getAddress(), dnsPacket);
if (response != null){
ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
BinaryStructOutputStream out = new BinaryStructOutputStream(outBuffer);
@ -135,45 +135,48 @@ public class MulticastDnsServer extends ThreadedUDPNetwork implements ThreadedUD
}
}
protected DnsPacket handleReceivedPacket(DnsPacket request){
protected DnsPacket handleReceivedPacket(InetAddress address, DnsPacket request){
DnsPacket response = new DnsPacket();
response.getHeader().setDefaultResponseData();
for (DnsPacketQuestion question : request.getQuestions()){
if (question.name == null) continue;
switch (question.type){
// ------------------------------------------
// Normal Domain Name Resolution
// ------------------------------------------
case DnsConstants.TYPE.A:
if (entries.containsKey(question.name)){
logger.finer("Received request for domain: " + question.name);
logger.finer("Received request for domain: '" + question.name + "' from source: " + address);
response.addAnswerRecord(entries.get(question.name));
} else {
logger.finest("Received request for unknown domain: " + question.name);
logger.finest("Received request for unknown domain: '" + question.name + "' from source: " + address);
}
break;
// Service Name Resolution
// ------------------------------------------
// Service Name Resolution (Reverse DNS)
// ------------------------------------------
case DnsConstants.TYPE.PTR:
if (question.name.startsWith("_service.")){
String postFix = question.name.substring(9);
for (String domain : entries.keySet()){
if (domain.endsWith(postFix)) {
logger.finer("Received request for service: " + question.name);
logger.finer("Received request for service: '" + question.name + "' from source: " + address);
response.addAnswerRecord(entries.get(domain));
} else {
logger.finest("Received request for unknown service: " + question.name);
logger.finest("Received request for unknown service: '" + question.name + "' from source: " + address);
}
}
} else if (entries.containsKey(question.name)){
logger.finer("Received request for service: " + question.name);
logger.finer("Received request for service: '" + question.name + "' from source: " + address);
response.addAnswerRecord(entries.get(question.name));
} else {
logger.finer("Received request for unknown pointer: " + question.name);
logger.finer("Received request for unknown pointer: '" + question.name + "' from source: " + address);
}
break;
default:
logger.finest("Unknown request type: " + question.type);
}
}

View file

@ -77,7 +77,7 @@ public final class DnsConstants {
public static final int NULL = 10;
/** a well known service description */
public static final int WKS = 11;
/** a domain name pointer */
/** a domain name pointer, generally used for reverse DNS */
public static final int PTR = 12;
/** host information */
public static final int HINFO = 13;

View file

@ -21,12 +21,12 @@ public class MulticastDnsServerTest {
@Test
public void domainLookupNoEntries(){
public void domainLookupNoEntries() throws UnknownHostException {
DnsPacket request = creatRequestDnsPacket(
"example.com",
DnsConstants.TYPE.A);
DnsPacket response = server.handleReceivedPacket(request);
DnsPacket response = server.handleReceivedPacket(InetAddress.getLocalHost(), request);
assertNull(response);
}
@ -38,19 +38,19 @@ public class MulticastDnsServerTest {
DnsConstants.TYPE.A);
server.addEntry("example.com", InetAddress.getLocalHost());
DnsPacket response = server.handleReceivedPacket(request);
DnsPacket response = server.handleReceivedPacket(InetAddress.getLocalHost(), request);
assertNotNull(response);
assertEquals("example.com", response.getAnswerRecords().get(0).name);
}
@Test
public void serviceDiscoveryNoEntries(){
public void serviceDiscoveryNoEntries() throws UnknownHostException {
DnsPacket request = creatRequestDnsPacket(
"_service._tcp.local",
DnsConstants.TYPE.PTR);
DnsPacket response = server.handleReceivedPacket(request);
DnsPacket response = server.handleReceivedPacket(InetAddress.getLocalHost(), request);
assertNull(response);
}
@ -62,7 +62,7 @@ public class MulticastDnsServerTest {
DnsConstants.TYPE.PTR);
server.addEntry("_http._tcp.local", InetAddress.getLocalHost());
DnsPacket response = server.handleReceivedPacket(request);
DnsPacket response = server.handleReceivedPacket(InetAddress.getLocalHost(), request);
assertNotNull(response);
}