mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 07:40:00 -04:00
Allow adding multiple ResponseHandlers at once
Change this at call sites as well.
This commit is contained in:
parent
e4de7eb4f9
commit
d593af3a5f
9 changed files with 56 additions and 38 deletions
|
|
@ -113,8 +113,7 @@ class Cve202125215(DomainHandler):
|
|||
|
||||
def main() -> None:
|
||||
server = AsyncDnsServer(acknowledge_manual_dname_handling=True, default_aa=True)
|
||||
server.install_response_handler(CnameThenDnameHandler())
|
||||
server.install_response_handler(Cve202125215())
|
||||
server.install_response_handlers([CnameThenDnameHandler(), Cve202125215()])
|
||||
server.run()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -205,10 +205,14 @@ class FallbackHandler(ResponseHandler):
|
|||
|
||||
def cookie_server(evil: bool) -> AsyncDnsServer:
|
||||
server = AsyncDnsServer(acknowledge_tsig_dnspython_hacks=True)
|
||||
server.install_response_handler(NsHandler(evil))
|
||||
server.install_response_handler(GlueHandler(evil))
|
||||
server.install_response_handler(TcpAHandler())
|
||||
server.install_response_handler(WithtsigUdpAHandler())
|
||||
server.install_response_handler(UdpAHandler())
|
||||
server.install_response_handler(FallbackHandler())
|
||||
server.install_response_handlers(
|
||||
[
|
||||
NsHandler(evil),
|
||||
GlueHandler(evil),
|
||||
TcpAHandler(),
|
||||
WithtsigUdpAHandler(),
|
||||
UdpAHandler(),
|
||||
FallbackHandler(),
|
||||
]
|
||||
)
|
||||
return server
|
||||
|
|
|
|||
|
|
@ -56,8 +56,7 @@ class AddNsecToTxtHandler(ResponseHandler):
|
|||
|
||||
def main() -> None:
|
||||
server = AsyncDnsServer()
|
||||
server.install_response_handler(AddRrsigToAHandler())
|
||||
server.install_response_handler(AddNsecToTxtHandler())
|
||||
server.install_response_handlers([AddRrsigToAHandler(), AddNsecToTxtHandler()])
|
||||
server.run()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -810,6 +810,10 @@ class AsyncDnsServer(AsyncServer):
|
|||
else:
|
||||
self._response_handlers.append(handler)
|
||||
|
||||
def install_response_handlers(self, handlers: List[ResponseHandler]) -> None:
|
||||
for handler in handlers:
|
||||
self.install_response_handler(handler)
|
||||
|
||||
def uninstall_response_handler(self, handler: ResponseHandler) -> None:
|
||||
"""
|
||||
Remove the specified handler from the list of response handlers.
|
||||
|
|
|
|||
|
|
@ -103,11 +103,15 @@ class StaleHandler(DomainHandler):
|
|||
|
||||
def main() -> None:
|
||||
server = AsyncDnsServer()
|
||||
server.install_response_handler(QueryLogger())
|
||||
server.install_response_handler(BadHandler())
|
||||
server.install_response_handler(UglyHandler())
|
||||
server.install_response_handler(SlowHandler())
|
||||
server.install_response_handler(StaleHandler())
|
||||
server.install_response_handlers(
|
||||
[
|
||||
QueryLogger(),
|
||||
BadHandler(),
|
||||
UglyHandler(),
|
||||
SlowHandler(),
|
||||
StaleHandler(),
|
||||
]
|
||||
)
|
||||
server.run()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -39,10 +39,14 @@ class ZoopBoingSlowHandler(DelayedResponseHandler):
|
|||
|
||||
def main() -> None:
|
||||
server = AsyncDnsServer()
|
||||
server.install_response_handler(QueryLogger())
|
||||
server.install_response_handler(ZoopBoingBadHandler())
|
||||
server.install_response_handler(ZoopBoingUglyHandler())
|
||||
server.install_response_handler(ZoopBoingSlowHandler())
|
||||
server.install_response_handlers(
|
||||
[
|
||||
QueryLogger(),
|
||||
ZoopBoingBadHandler(),
|
||||
ZoopBoingUglyHandler(),
|
||||
ZoopBoingSlowHandler(),
|
||||
]
|
||||
)
|
||||
server.run()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -85,11 +85,15 @@ class IckyPtangZoopBoingSlowHandler(DelayedResponseHandler):
|
|||
|
||||
def main() -> None:
|
||||
server = AsyncDnsServer()
|
||||
server.install_response_handler(QueryLogger())
|
||||
server.install_response_handler(StaleHandler())
|
||||
server.install_response_handler(IckyPtangZoopBoingBadHandler())
|
||||
server.install_response_handler(IckyPtangZoopBoingUglyHandler())
|
||||
server.install_response_handler(IckyPtangZoopBoingSlowHandler())
|
||||
server.install_response_handlers(
|
||||
[
|
||||
QueryLogger(),
|
||||
StaleHandler(),
|
||||
IckyPtangZoopBoingBadHandler(),
|
||||
IckyPtangZoopBoingUglyHandler(),
|
||||
IckyPtangZoopBoingSlowHandler(),
|
||||
]
|
||||
)
|
||||
server.run()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -50,8 +50,7 @@ class IgnoreNs(ResponseHandler):
|
|||
|
||||
def main() -> None:
|
||||
server = AsyncDnsServer(default_aa=True, default_rcode=dns.rcode.NOERROR)
|
||||
server.install_response_handler(ReplyA())
|
||||
server.install_response_handler(IgnoreNs())
|
||||
server.install_response_handlers([ReplyA(), IgnoreNs()])
|
||||
server.run()
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -159,18 +159,19 @@ class FallbackHandler(ResponseHandler):
|
|||
|
||||
def main() -> None:
|
||||
server = AsyncDnsServer(default_rcode=dns.rcode.NOERROR)
|
||||
for handler in (
|
||||
BadGoodCnameHandler,
|
||||
Cname1Handler,
|
||||
Cname2Handler,
|
||||
ExampleHandler,
|
||||
FooInfoHandler,
|
||||
NoDataHandler,
|
||||
NxdomainHandler,
|
||||
SubHandler,
|
||||
FallbackHandler,
|
||||
):
|
||||
server.install_response_handler(handler())
|
||||
server.install_response_handlers(
|
||||
[
|
||||
BadGoodCnameHandler(),
|
||||
Cname1Handler(),
|
||||
Cname2Handler(),
|
||||
ExampleHandler(),
|
||||
FooInfoHandler(),
|
||||
NoDataHandler(),
|
||||
NxdomainHandler(),
|
||||
SubHandler(),
|
||||
FallbackHandler(),
|
||||
]
|
||||
)
|
||||
server.run()
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue