[BACK]Return to mumble_client.py CVS log [TXT][DIR] Up to [contributed] / MumbleDicebot

Annotation of MumbleDicebot/mumble_client.py, Revision 1.1.1.1

1.1       rubenllo    1: from twisted.internet import ssl, reactor, protocol
                      2:
                      3:
                      4: class MumbleClientFactory(protocol.ClientFactory):
                      5:     protocol = None
                      6:
                      7:     def __init__(self, protocol, nickname, password):
                      8:         self.nickname = nickname
                      9:         self.password = password
                     10:         self.protocol = protocol
                     11:
                     12:     def clientConnectionFailed(self, connector, reason):
                     13:         print "Connection failed"
                     14:         reactor.stop()
                     15:
                     16:     def clientConnectionLost(self, connector, reason):
                     17:         print "Connection lost"
                     18:         reactor.stop()
                     19:
                     20:
                     21: def load_certificate(cert_file):
                     22:     from OpenSSL import crypto, SSL
                     23:     p12 = crypto.load_pkcs12(file(cert_file, 'rb').read())
                     24:
                     25:     class CtxFactory(ssl.ClientContextFactory):
                     26:         def getContext(self):
                     27:             self.method = SSL.SSLv23_METHOD
                     28:             ctx = ssl.ClientContextFactory.getContext(self)
                     29:             ctx.use_certificate(p12.get_certificate())
                     30:             ctx.use_privatekey(p12.get_privatekey())
                     31:             return ctx
                     32:
                     33:     return CtxFactory
                     34:
                     35:
                     36: def create_client(protocol, user, pw=""):
                     37:     return MumbleClientFactory(protocol, user, pw)
                     38:
                     39:
                     40: def start_client(factory, ip, port, certificate=None):
                     41:     # Loads certificate if available
                     42:     if certificate:
                     43:         ctx = load_certificate(certificate)
                     44:     else:
                     45:         ctx = ssl.ClientContextFactory
                     46:
                     47:     reactor.connectSSL(ip, port, factory, ctx())
                     48:     reactor.run()

CVSweb