From: Remi Gacogne Date: Tue, 1 Feb 2022 10:50:51 +0000 (+0100) Subject: dnsdist: Add regression tests for outgoing SNI X-Git-Tag: auth-4.7.0-alpha1~24^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F11251%2Fhead;p=thirdparty%2Fpdns.git dnsdist: Add regression tests for outgoing SNI --- diff --git a/regression-tests.dnsdist/test_OutgoingDOH.py b/regression-tests.dnsdist/test_OutgoingDOH.py index 217c885fef..55c7ba57ca 100644 --- a/regression-tests.dnsdist/test_OutgoingDOH.py +++ b/regression-tests.dnsdist/test_OutgoingDOH.py @@ -283,11 +283,19 @@ class TestOutgoingDOHOpenSSL(DNSDistTest, OutgoingDOHTests): addAction(SuffixMatchNodeRule(smn), PoolAction('cache')) """ + @staticmethod + def sniCallback(sslSocket, sni, sslContext): + assert(sni == 'powerdns.com') + return None + @classmethod def startResponders(cls): tlsContext = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) tlsContext.set_alpn_protocols(["h2"]) tlsContext.load_cert_chain('server.chain', 'server.key') + # requires Python 3.7+ + if hasattr(tlsContext, 'sni_callback'): + tlsContext.sni_callback = cls.sniCallback print("Launching DOH responder..") cls._DOHResponder = threading.Thread(name='DOH Responder', target=cls.DOHResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext]) diff --git a/regression-tests.dnsdist/test_OutgoingTLS.py b/regression-tests.dnsdist/test_OutgoingTLS.py index c07be66337..87db8c461f 100644 --- a/regression-tests.dnsdist/test_OutgoingTLS.py +++ b/regression-tests.dnsdist/test_OutgoingTLS.py @@ -146,10 +146,18 @@ class TestOutgoingTLSOpenSSL(DNSDistTest, OutgoingTLSTests): setWebserverConfig({password="%s", apiKey="%s"}) """ + @staticmethod + def sniCallback(sslSocket, sni, sslContext): + assert(sni == 'powerdns.com') + return None + @classmethod def startResponders(cls): tlsContext = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) tlsContext.load_cert_chain('server.chain', 'server.key') + # requires Python 3.7+ + if hasattr(tlsContext, 'sni_callback'): + tlsContext.sni_callback = cls.sniCallback print("Launching TLS responder..") cls._TLSResponder = threading.Thread(name='TLS Responder', target=cls.TCPResponder, args=[cls._tlsBackendPort, cls._toResponderQueue, cls._fromResponderQueue, False, False, None, tlsContext])