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 // Just handle queries and no responses
if ( ! dnsPacket.getHeader().flagQueryResponse) { if ( ! dnsPacket.getHeader().flagQueryResponse) {
DnsPacket response = handleReceivedPacket(dnsPacket); DnsPacket response = handleReceivedPacket(packet.getAddress(), dnsPacket);
if (response != null){ if (response != null){
ByteArrayOutputStream outBuffer = new ByteArrayOutputStream(); ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
BinaryStructOutputStream out = new BinaryStructOutputStream(outBuffer); 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(); DnsPacket response = new DnsPacket();
response.getHeader().setDefaultResponseData(); response.getHeader().setDefaultResponseData();
for (DnsPacketQuestion question : request.getQuestions()){ for (DnsPacketQuestion question : request.getQuestions()){
if (question.name == null) continue; if (question.name == null) continue;
switch (question.type){ switch (question.type){
// ------------------------------------------
// Normal Domain Name Resolution // Normal Domain Name Resolution
// ------------------------------------------
case DnsConstants.TYPE.A: case DnsConstants.TYPE.A:
if (entries.containsKey(question.name)){ 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)); response.addAnswerRecord(entries.get(question.name));
} else { } else {
logger.finest("Received request for unknown domain: " + question.name); logger.finest("Received request for unknown domain: '" + question.name + "' from source: " + address);
} }
break; break;
// Service Name Resolution // ------------------------------------------
// Service Name Resolution (Reverse DNS)
// ------------------------------------------
case DnsConstants.TYPE.PTR: case DnsConstants.TYPE.PTR:
if (question.name.startsWith("_service.")){ if (question.name.startsWith("_service.")){
String postFix = question.name.substring(9); String postFix = question.name.substring(9);
for (String domain : entries.keySet()){ for (String domain : entries.keySet()){
if (domain.endsWith(postFix)) { 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)); response.addAnswerRecord(entries.get(domain));
} else { } 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)){ } 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)); response.addAnswerRecord(entries.get(question.name));
} else { } else {
logger.finer("Received request for unknown pointer: " + question.name); logger.finer("Received request for unknown pointer: '" + question.name + "' from source: " + address);
} }
break; 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; public static final int NULL = 10;
/** a well known service description */ /** a well known service description */
public static final int WKS = 11; 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; public static final int PTR = 12;
/** host information */ /** host information */
public static final int HINFO = 13; public static final int HINFO = 13;

View file

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