Compare commits
10 Commits
sleek-1.1.
...
1.1.4
Author | SHA1 | Date | |
---|---|---|---|
![]() |
0e36a01354 | ||
![]() |
c39ad7dfbb | ||
![]() |
b92ae706e9 | ||
![]() |
6997261c6b | ||
![]() |
6cfb5cb14c | ||
![]() |
8567d6034f | ||
![]() |
e06368f8cd | ||
![]() |
4b37a4706f | ||
![]() |
7b1564947d | ||
![]() |
f5652a667b |
@@ -45,7 +45,7 @@ The latest source code for SleekXMPP may be found on `Github
|
||||
``develop`` branch.
|
||||
|
||||
**Latest Release**
|
||||
- `1.1.2 <http://github.com/fritzy/SleekXMPP/zipball/1.1.2>`_
|
||||
- `1.1.4 <http://github.com/fritzy/SleekXMPP/zipball/1.1.4>`_
|
||||
|
||||
**Develop Releases**
|
||||
- `Latest Develop Version <http://github.com/fritzy/SleekXMPP/zipball/develop>`_
|
||||
|
@@ -737,7 +737,8 @@ class BaseXMPP(XMLStream):
|
||||
if not self.is_component and not presence['to'].bare:
|
||||
presence['to'] = self.boundjid
|
||||
|
||||
self.event("presence_%s" % presence['type'], presence)
|
||||
self.event('presence', presence)
|
||||
self.event('presence_%s' % presence['type'], presence)
|
||||
|
||||
# Check for changes in subscription state.
|
||||
if presence['type'] in ('subscribe', 'subscribed',
|
||||
|
@@ -79,7 +79,7 @@ class ComponentXMPP(BaseXMPP):
|
||||
self._handle_probe)
|
||||
|
||||
def connect(self, host=None, port=None, use_ssl=False,
|
||||
use_tls=True, reattempt=True):
|
||||
use_tls=False, reattempt=True):
|
||||
"""Connect to the server.
|
||||
|
||||
Setting ``reattempt`` to ``True`` will cause connection attempts to
|
||||
@@ -104,10 +104,13 @@ class ComponentXMPP(BaseXMPP):
|
||||
|
||||
self.server_name = self.boundjid.host
|
||||
|
||||
if use_tls:
|
||||
log.info("XEP-0114 components can not use TLS")
|
||||
|
||||
log.debug("Connecting to %s:%s", host, port)
|
||||
return XMLStream.connect(self, host=host, port=port,
|
||||
use_ssl=use_ssl,
|
||||
use_tls=use_tls,
|
||||
use_tls=False,
|
||||
reattempt=reattempt)
|
||||
|
||||
def incoming_filter(self, xml):
|
||||
|
@@ -182,11 +182,6 @@ class StaticDisco(object):
|
||||
data = {'local': data.get('local', False),
|
||||
'cached': data.get('cached', True)}
|
||||
|
||||
if node in (None, ''):
|
||||
info = self.caps.get_caps(jid)
|
||||
if info and identity in info['identities']:
|
||||
return True
|
||||
|
||||
try:
|
||||
info = self.disco.get_info(jid=jid, node=node,
|
||||
ifrom=ifrom, **data)
|
||||
|
@@ -9,5 +9,5 @@
|
||||
# We don't want to have to import the entire library
|
||||
# just to get the version info for setup.py
|
||||
|
||||
__version__ = '1.1.2'
|
||||
__version_info__ = (1, 1, 2, '', 0)
|
||||
__version__ = '1.1.4'
|
||||
__version_info__ = (1, 1, 4, '', 0)
|
||||
|
@@ -317,7 +317,7 @@ class XMLStream(object):
|
||||
self.dns_service = None
|
||||
|
||||
self.add_event_handler('connected', self._handle_connected)
|
||||
self.add_event_handler('disconnected', self._end_keepalive)
|
||||
self.add_event_handler('disconnected', self._remove_schedules)
|
||||
self.add_event_handler('session_start', self._start_keepalive)
|
||||
self.add_event_handler('session_start', self._cert_expiration)
|
||||
|
||||
@@ -493,7 +493,8 @@ class XMLStream(object):
|
||||
|
||||
ssl_socket = ssl.wrap_socket(self.socket,
|
||||
ca_certs=self.ca_certs,
|
||||
cert_reqs=cert_policy)
|
||||
cert_reqs=cert_policy,
|
||||
do_handshake_on_connect=False)
|
||||
|
||||
if hasattr(self.socket, 'socket'):
|
||||
# We are using a testing socket, so preserve the top
|
||||
@@ -511,6 +512,16 @@ class XMLStream(object):
|
||||
self.socket.connect(self.address)
|
||||
|
||||
if self.use_ssl and self.ssl_support:
|
||||
try:
|
||||
self.socket.do_handshake()
|
||||
except (Socket.error, ssl.SSLError):
|
||||
log.error('CERT: Invalid certificate trust chain.')
|
||||
if not self.event_handled('ssl_invalid_chain'):
|
||||
self.disconnect(self.auto_reconnect, send_close=False)
|
||||
else:
|
||||
self.event('ssl_invalid_chain', direct=True)
|
||||
return False
|
||||
|
||||
self._der_cert = self.socket.getpeercert(binary_form=True)
|
||||
pem_cert = ssl.DER_cert_to_PEM_cert(self._der_cert)
|
||||
log.debug('CERT: %s', pem_cert)
|
||||
@@ -520,8 +531,10 @@ class XMLStream(object):
|
||||
cert.verify(self._expected_server_name, self._der_cert)
|
||||
except cert.CertificateError as err:
|
||||
log.error(err.message)
|
||||
self.event('ssl_invalid_cert', cert, direct=True)
|
||||
self.disconnect(send_close=False)
|
||||
if not self.event_handled('ssl_invalid_cert'):
|
||||
self.disconnect(send_close=False)
|
||||
else:
|
||||
self.event('ssl_invalid_cert', cert, direct=True)
|
||||
|
||||
self.set_socket(self.socket, ignore=True)
|
||||
#this event is where you should set your application state
|
||||
@@ -788,10 +801,12 @@ class XMLStream(object):
|
||||
|
||||
try:
|
||||
self.socket.do_handshake()
|
||||
except:
|
||||
except (Socket.error, ssl.SSLError):
|
||||
log.error('CERT: Invalid certificate trust chain.')
|
||||
self.event('ssl_invalid_chain', direct=True)
|
||||
self.disconnect(self.auto_reconnect, send_close=False)
|
||||
if not self.event_handled('ssl_invalid_chain'):
|
||||
self.disconnect(self.auto_reconnect, send_close=False)
|
||||
else:
|
||||
self.event('ssl_invalid_chain', direct=True)
|
||||
return False
|
||||
|
||||
self._der_cert = self.socket.getpeercert(binary_form=True)
|
||||
@@ -803,9 +818,10 @@ class XMLStream(object):
|
||||
cert.verify(self._expected_server_name, self._der_cert)
|
||||
except cert.CertificateError as err:
|
||||
log.error(err.message)
|
||||
self.event('ssl_invalid_cert', cert, direct=True)
|
||||
if not self.event_handled('ssl_invalid_cert'):
|
||||
self.disconnect(self.auto_reconnect, send_close=False)
|
||||
else:
|
||||
self.event('ssl_invalid_cert', cert, direct=True)
|
||||
|
||||
self.set_socket(self.socket)
|
||||
return True
|
||||
@@ -819,9 +835,17 @@ class XMLStream(object):
|
||||
if not self.use_tls and not self.use_ssl:
|
||||
return
|
||||
|
||||
if not self._der_cert:
|
||||
log.warn("TLS or SSL was enabled, but no certificate was found.")
|
||||
return
|
||||
|
||||
def restart():
|
||||
log.warn("The server certificate has expired. Restarting.")
|
||||
self.reconnect()
|
||||
if not self.event_handled('ssl_expired_cert'):
|
||||
log.warn("The server certificate has expired. Restarting.")
|
||||
self.reconnect()
|
||||
else:
|
||||
pem_cert = ssl.DER_cert_to_PEM_cert(self._der_cert)
|
||||
self.event('ssl_expired_cert', pem_cert)
|
||||
|
||||
cert_ttl = cert.get_ttl(self._der_cert)
|
||||
if cert_ttl is None:
|
||||
@@ -854,9 +878,10 @@ class XMLStream(object):
|
||||
kwargs = {'now': True},
|
||||
repeat=True)
|
||||
|
||||
def _end_keepalive(self, event):
|
||||
"""Stop sending whitespace keepalives"""
|
||||
def _remove_schedules(self, event):
|
||||
"""Remove whitespace keepalive and certificate expiration schedules."""
|
||||
self.scheduler.remove('Whitespace Keepalive')
|
||||
self.scheduler.remove('Certificate Expiration')
|
||||
|
||||
def start_stream_handler(self, xml):
|
||||
"""Perform any initialization actions, such as handshakes,
|
||||
|
Reference in New Issue
Block a user