Seite 1 von 1

SSL + asyncore und asynchat

Verfasst: Donnerstag 25. November 2004, 15:51
von Sorgenkind
Hallo...

Hab mal versucht eine ssl verbindung über asynchat aufzubaun
getestet hab ich das mit einem ssl fähigen ircserver... ging einwandfrei

bin mir aber net sicher wie sicher diese einfache version ist oder ob sie uneingeschränkt funktioniert... könnte mir wer testen helfen?

Code: Alles auswählen

class SSLasync:
    def send(self,data):
        try:
            result = self.ssl.write(data)
            return result
        except AttributeError:
            self.ssl=socket.ssl(self.socket)
            self.send(data)
        except sslerror, why:
            if why[0] == asyncore.EWOULDBLOCK:
                return 0
            else:
                raise sslerror, why
            return 0

    def recv(self, buffer_size):
        try:
            data = self.ssl.read(buffer_size)
            if not data:
                self.handle_close()
                return ''
            return data
        except AttributeError:
            self.ssl=socket.ssl(self.socket)
            return self.recv(buffer_size)
        except sslerror, why:
            if why[0] in [asyncore.ECONNRESET, asyncore.ENOTCONN, asyncore.ESHUTDOWN]:
                self.handle_close()
                return ''
            raise sslerror, why
verwenden kann mans einfach in seiner asynchat subclass zb:

class ircclient(asynchat.async_chat):
...
class ircclientssl(ircclient,SSLasync):
...

dürfte als server in kombination mit asyncore auch funktionieren aber wäre, wie gesagt, dankbar wenn mir wer testen helfen könnte...