|
@@ -39,6 +39,7 @@ from isc.log_messages.xfrout_messages import *
|
|
|
|
|
|
isc.log.init("b10-xfrout")
|
|
|
logger = isc.log.Logger("xfrout")
|
|
|
+DBG_XFROUT_TRACE = logger.DBGLVL_TRACE_BASIC
|
|
|
|
|
|
try:
|
|
|
from libutil_io_python import *
|
|
@@ -224,39 +225,44 @@ class XfroutSession():
|
|
|
# the auth server, but since it's far from our xfrout itself,
|
|
|
# we check it by ourselves.
|
|
|
if msg.get_rr_count(Message.SECTION_QUESTION) != 1:
|
|
|
- # TODO: Log?
|
|
|
+ logger.debug(DBG_XFROUT_TRACE, XFROUT_XFR_REQUEST_MISSING_QUESTION,
|
|
|
+ format_addrinfo(self._remote))
|
|
|
return Rcode.FORMERR(), msg
|
|
|
|
|
|
request_type = msg.get_question()[0].get_type()
|
|
|
+ zone_name = msg.get_question()[0].get_name()
|
|
|
+ zone_class = msg.get_question()[0].get_class()
|
|
|
|
|
|
# If it is an IXFR query, there should be a SOA in the authority
|
|
|
# section too
|
|
|
if request_type == RRType.IXFR():
|
|
|
if msg.get_rr_count(Message.SECTION_AUTHORITY) != 1:
|
|
|
- # TODO: Log?
|
|
|
+ logger.debug(DBG_XFROUT_TRACE, XFROUT_IXFR_REQUEST_MISSING_SOA,
|
|
|
+ format_addrinfo(self._remote),
|
|
|
+ format_zone_str(zone_name, zone_class))
|
|
|
return Rcode.FORMERR(), msg
|
|
|
self._request_type = 'IXFR'
|
|
|
elif request_type == RRType.AXFR():
|
|
|
self._request_type = 'AXFR'
|
|
|
else:
|
|
|
- # TODO: Log?
|
|
|
+ logger.error(XFROUT_XFR_REQUEST_BAD_TYPE,
|
|
|
+ format_zone_str(zone_name, zone_class),
|
|
|
+ format_addrinfo(self._remote))
|
|
|
return Rcode.FORMERR(), msg
|
|
|
|
|
|
# ACL checks
|
|
|
- zone_name = msg.get_question()[0].get_name()
|
|
|
- zone_class = msg.get_question()[0].get_class()
|
|
|
acl = self._get_transfer_acl(zone_name, zone_class)
|
|
|
acl_result = acl.execute(
|
|
|
isc.acl.dns.RequestContext(self._remote[2], msg.get_tsig_record()))
|
|
|
if acl_result == DROP:
|
|
|
- logger.info(XFROUT_QUERY_DROPPED, self._request_type,
|
|
|
- format_addrinfo(self._remote),
|
|
|
- format_zone_str(zone_name, zone_class))
|
|
|
+ logger.debug(DBG_XFROUT_TRACE, XFROUT_QUERY_DROPPED,
|
|
|
+ self._request_type, format_addrinfo(self._remote),
|
|
|
+ format_zone_str(zone_name, zone_class))
|
|
|
return None, None
|
|
|
elif acl_result == REJECT:
|
|
|
- logger.info(XFROUT_QUERY_REJECTED, self._request_type,
|
|
|
- format_addrinfo(self._remote),
|
|
|
- format_zone_str(zone_name, zone_class))
|
|
|
+ logger.debug(DBG_XFROUT_TRACE, XFROUT_QUERY_REJECTED,
|
|
|
+ self._request_type, format_addrinfo(self._remote),
|
|
|
+ format_zone_str(zone_name, zone_class))
|
|
|
return Rcode.REFUSED(), msg
|
|
|
|
|
|
return rcode, msg
|