gdata.tlslite.integration.TLSSocketServerMixIn | index /usr/local/google/home/afshar/src/external-gdata-release/google3/src/gdata/tlslite/integration/TLSSocketServerMixIn.py

`TLS Lite + SocketServer.`

Classes

``

TLSSocketServerMixIn

class TLSSocketServerMixIn

``

`This class can be mixed in with any L{SocketServer.TCPServer} to
add TLS support.
To use this class, define a new class that inherits from it and
some L{SocketServer.TCPServer} (with the mix-in first). Then
implement the handshake() method, doing some sort of server
handshake on the connection argument. If the handshake method
returns True, the RequestHandler will be triggered. Below is a
complete example of a threaded HTTPS server::
from SocketServer import *
from BaseHTTPServer import *
from SimpleHTTPServer import *
from tlslite.api import *
s = open("./serverX509Cert.pem").read()
x509 = X509()
x509.parse(s)
certChain = X509CertChain([x509])
s = open("./serverX509Key.pem").read()
privateKey = parsePEMKey(s, private=True)
sessionCache = SessionCache()
class MyHTTPServer(ThreadingMixIn, TLSSocketServerMixIn,
HTTPServer):
def handshake(self, tlsConnection):
try:
tlsConnection.handshakeServer(certChain=certChain,
privateKey=privateKey,
sessionCache=sessionCache)
tlsConnection.ignoreAbruptClose = True
return True
except TLSError, error:
print "Handshake failure:", str(error)
return False
httpd = MyHTTPServer(('localhost', 443), SimpleHTTPRequestHandler)
httpd.serve_forever()
`

Methods defined here:

finish_request(self, sock, client_address)

handshake(self, tlsConnection)
  `#Implement this method to do some form of handshaking. Return True
  #if the handshake finishes properly and the request is authorized.`