Beispiel #1
0
 def __init__(self, interface="::0", port=80, tls_cert_path=None,
         tls_key_path=None, check_cert_callback=None,
         new_client_callback=None):
     self.handler = _TCPConnectionsHandler()
     self.tls_cert_path = tls_cert_path
     self.bind_interface = interface
     self.bind_port = port
     if tls_cert_path != None:
         self.use_tls = True
         self.tls_cert = X509Certificate(open(tls_cert_path).read())
         self.tls_key = X509PrivateKey(open(tls_key_path).read())
         self.tls_cred = X509Credentials(self.tls_cert, self.tls_key, [],
             [])
     else:
         self.use_tls = False
     self.socket = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
     self.socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
     if self.use_tls:
         self.tls_session = ServerSessionFactory(self.socket,
             self.tls_cred)
         gnutls.gnutls_transport_set_push_function(
             self.tls_session, self.tls_send)
         gnutls.gnutls_transport_set_pull_function(
             self.tls_session, self.tls_recv)
         self.tls_session.bind((self.bind_interface, port))
         self.tls_session.listen(100)
         self.handler.add_tls_connection(self.socket, self.tls_session,
             server=True)
     else:
         self.socket.bind((self.bind_interface, port))
         self.socket.listen(100)
         self.handler.add_plain_connection(self.socket, server=True)
Beispiel #2
0
 def add_tls_connection(self, socket, tls_session, receive_callback=None,
         server=False):
     wrappedsocket = TCPWrappedSocket(self, socket, tls_session,
         uses_tls=True, server_and_auto_accept=server)
     self.connections.add[tls_session] = wrappedsocket
     self.connections.add[socket] = wrappedsocket
     gnutls.gnutls_transport_set_push_function(
         tls_session, self._tls_custom_io_send)
     gnutls.gnutls_transport_set_pull_function(
         self.tls_session, self._tls_custom_io_recv)
     if receive_callback != None:
         wrappedsocket.set_receive_callback(receive_callback)