关于xmpp协议发送消息,登录认证SSL报错的问题

Q:错误描述如下

  1. Traceback(most recent call last):
    File"/tails-share/features/scripts/otr-bot.py", line 197,in<module>
    otr_bot.serve_forever()
    File"/usr/lib/python2.7/dist-packages/jabberbot.py", line 715,in serve_forever
    conn = self.connect()
    File"/tails-share/features/scripts/otr-bot.py", line 82,in connect
    conres = conn.connect((conn_server, int(conn_port)))
    File"/usr/lib/python2.7/dist-packages/xmpp/client.py", line 205,in connect
    while not self.TLS.starttls and self.Process(1): pass
    File"/usr/lib/python2.7/dist-packages/xmpp/dispatcher.py", line 303,in dispatch
    handler['func'](session,stanza)
    File"/usr/lib/python2.7/dist-packages/xmpp/transports.py", line 330,inStartTLSHandler
    self._startSSL()
    File"/usr/lib/python2.7/dist-packages/xmpp/transports.py", line 309,in _startSSL
    tcpsock._sslIssuer = tcpsock._sslObj.issuer()
    AttributeError:'_ssl._SSLSocket' object has no attribute 'issuer'

该问题是xmpp新版的python中存在的一个bug。可以修改 transports.py 文件进行修复:
修改如下:( - 行标识删除 +行标识添加)

  1. -import socket,select,base64,dispatcher,sys
    +import socket,ssl,select,base64,dispatcher,sys
    from simplexml import ustr
    from client importPlugIn
    from protocol import*
    @@-312,9+312,9@@class TLS(PlugIn):
    """ Immidiatedly switch socket to TLS mode. Used internally."""
    """ Here we should switch pending_data to hint mode."""
    tcpsock=self._owner.Connection
    - tcpsock._sslObj = socket.ssl(tcpsock._sock,None,None)
    - tcpsock._sslIssuer = tcpsock._sslObj.issuer()
    - tcpsock._sslServer = tcpsock._sslObj.server()
    + tcpsock._sslObj = ssl.wrap_socket(tcpsock._sock,None,None)
    + tcpsock._sslIssuer = tcpsock._sslObj.getpeercert().get('issuer')
    + tcpsock._sslServer = tcpsock._sslObj.getpeercert().get('server')
    tcpsock._recv = tcpsock._sslObj.read
    tcpsock._send = tcpsock._sslObj.write

 

转载于:https://www.cnblogs.com/tsbc/p/4611112.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值