Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/python-nbxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2013-01-02 16:17:03 +0400
committerYann Leboulanger <asterix@lagaule.org>2013-01-02 16:17:03 +0400
commit8e9d51df59c11d93c0995a086c6ab6a6009ce10e (patch)
tree91148e40e4a45810bf5c83632a2729afe6135f24
parent27eabadd7f87f128de87038fa485e52d4cde6e7c (diff)
port code to python3
-rw-r--r--nbxmpp/__init__.py12
-rw-r--r--nbxmpp/auth_nb.py24
-rw-r--r--nbxmpp/bosh.py6
-rw-r--r--nbxmpp/c14n.py2
-rw-r--r--nbxmpp/client_nb.py8
-rw-r--r--nbxmpp/dispatcher_nb.py30
-rw-r--r--nbxmpp/features_nb.py2
-rw-r--r--nbxmpp/idlequeue.py16
-rw-r--r--nbxmpp/protocol.py12
-rw-r--r--nbxmpp/proxy_connectors.py2
-rw-r--r--nbxmpp/roster_nb.py4
-rw-r--r--nbxmpp/simplexml.py10
-rw-r--r--nbxmpp/smacks.py4
-rw-r--r--nbxmpp/stringprepare.py6
-rw-r--r--nbxmpp/tls_nb.py64
-rw-r--r--nbxmpp/transports_nb.py28
16 files changed, 115 insertions, 115 deletions
diff --git a/nbxmpp/__init__.py b/nbxmpp/__init__.py
index f7a0ba5..4b16783 100644
--- a/nbxmpp/__init__.py
+++ b/nbxmpp/__init__.py
@@ -10,9 +10,9 @@ Most of the xmpp classes are ancestors of PlugIn class to share a single set of
Thanks and credits to the xmpppy developers. See: http://xmpppy.sourceforge.net/
"""
-from protocol import *
-import simplexml, protocol, auth_nb, transports_nb, roster_nb
-import dispatcher_nb, features_nb, idlequeue, bosh, tls_nb, proxy_connectors
-from client_nb import NonBlockingClient
-from plugin import PlugIn
-from smacks import Smacks
+from .protocol import *
+from . import simplexml, protocol, auth_nb, transports_nb, roster_nb
+from . import dispatcher_nb, features_nb, idlequeue, bosh, tls_nb, proxy_connectors
+from .client_nb import NonBlockingClient
+from .plugin import PlugIn
+from .smacks import Smacks
diff --git a/nbxmpp/auth_nb.py b/nbxmpp/auth_nb.py
index 22f56b0..a77fe96 100644
--- a/nbxmpp/auth_nb.py
+++ b/nbxmpp/auth_nb.py
@@ -21,15 +21,15 @@ Can be used both for client and transport authentication
See client_nb.py
"""
-from protocol import NS_SASL, NS_SESSION, NS_STREAMS, NS_BIND, NS_AUTH
-from protocol import NS_STREAM_MGMT
-from protocol import Node, NodeProcessed, isResultNode, Iq, Protocol, JID
-from plugin import PlugIn
-from smacks import Smacks
+from .protocol import NS_SASL, NS_SESSION, NS_STREAMS, NS_BIND, NS_AUTH
+from .protocol import NS_STREAM_MGMT
+from .protocol import Node, NodeProcessed, isResultNode, Iq, Protocol, JID
+from .plugin import PlugIn
+from .smacks import Smacks
import base64
import random
import itertools
-import dispatcher_nb
+from . import dispatcher_nb
import hashlib
import hmac
import hashlib
@@ -218,7 +218,7 @@ class SASL(PlugIn):
raise NodeProcessed
if "EXTERNAL" in self.mecs:
self.mecs.remove('EXTERNAL')
- sasl_data = u'%s@%s' % (self.username, self._owner.Server)
+ sasl_data = '%s@%s' % (self.username, self._owner.Server)
sasl_data = sasl_data.encode('utf-8').encode('base64').replace(
'\n', '')
node = Node('auth', attrs={'xmlns': NS_SASL,
@@ -241,7 +241,7 @@ class SASL(PlugIn):
self.startsasl = SASL_IN_PROCESS
self._owner.send(str(node))
raise NodeProcessed
- except kerberos.GSSError, e:
+ except kerberos.GSSError as e:
log.info('GSSAPI authentication failed: %s' % str(e))
if 'SCRAM-SHA-1' in self.mecs:
self.mecs.remove('SCRAM-SHA-1')
@@ -486,19 +486,19 @@ class SASL(PlugIn):
self.resp['nc'], self.resp['cnonce'], self.resp['qop'],
HH(A2)]))
self.resp['response'] = response
- sasl_data = u''
+ sasl_data = ''
for key in ('charset', 'username', 'realm', 'nonce', 'nc', 'cnonce',
'digest-uri', 'response', 'qop'):
if key in ('nc', 'qop', 'response', 'charset'):
- sasl_data += u"%s=%s," % (key, self.resp[key])
+ sasl_data += "%s=%s," % (key, self.resp[key])
else:
- sasl_data += u'%s="%s",' % (key, self.resp[key])
+ sasl_data += '%s="%s",' % (key, self.resp[key])
sasl_data = sasl_data[:-1].encode('utf-8').encode('base64').replace(
'\r', '').replace('\n', '')
node = Node('response', attrs={'xmlns': NS_SASL},
payload=[sasl_data])
elif self.mechanism == 'PLAIN':
- sasl_data = u'\x00%s\x00%s' % (self.username, self.password)
+ sasl_data = '\x00%s\x00%s' % (self.username, self.password)
sasl_data = sasl_data.encode('utf-8').encode('base64').replace(
'\n', '')
node = Node('auth', attrs={'xmlns': NS_SASL, 'mechanism': 'PLAIN'},
diff --git a/nbxmpp/bosh.py b/nbxmpp/bosh.py
index 01145cc..43a3f3f 100644
--- a/nbxmpp/bosh.py
+++ b/nbxmpp/bosh.py
@@ -20,11 +20,11 @@
import locale, random
from hashlib import sha1
-from transports_nb import NonBlockingTransport, NonBlockingHTTPBOSH,\
+from .transports_nb import NonBlockingTransport, NonBlockingHTTPBOSH,\
CONNECTED, CONNECTING, DISCONNECTED, DISCONNECTING,\
urisplit, DISCONNECT_TIMEOUT_SECONDS
-from protocol import BOSHBody, Protocol, NS_CLIENT
-from simplexml import Node
+from .protocol import BOSHBody, Protocol, NS_CLIENT
+from .simplexml import Node
import logging
log = logging.getLogger('nbxmpp.bosh')
diff --git a/nbxmpp/c14n.py b/nbxmpp/c14n.py
index 0d318a3..764ecd8 100644
--- a/nbxmpp/c14n.py
+++ b/nbxmpp/c14n.py
@@ -22,7 +22,7 @@
XML canonicalisation methods (for XEP-0116)
"""
-from simplexml import ustr
+from .simplexml import ustr
def c14n(node, is_buggy):
s = "<" + node.name
diff --git a/nbxmpp/client_nb.py b/nbxmpp/client_nb.py
index a128cd4..76137a8 100644
--- a/nbxmpp/client_nb.py
+++ b/nbxmpp/client_nb.py
@@ -21,8 +21,8 @@ Client class establishs connection to XMPP Server and handles authentication
"""
import socket
-import transports_nb, dispatcher_nb, auth_nb, roster_nb, protocol, bosh
-from protocol import NS_TLS
+from . import transports_nb, dispatcher_nb, auth_nb, roster_nb, protocol, bosh
+from .protocol import NS_TLS
import logging
log = logging.getLogger('nbxmpp.client_nb')
@@ -249,9 +249,9 @@ class NonBlockingClient:
try:
self.ip_addresses = socket.getaddrinfo(hostname, port,
socket.AF_UNSPEC, socket.SOCK_STREAM)
- except socket.gaierror, (errnum, errstr):
+ except socket.gaierror as exc:
self.disconnect(message='Lookup failure for %s:%s, hostname: %s - %s' %
- (self.Server, self.Port, hostname, errstr))
+ (self.Server, self.Port, hostname, str(exc)))
else:
on_success()
diff --git a/nbxmpp/dispatcher_nb.py b/nbxmpp/dispatcher_nb.py
index a5b66a6..5d48ff7 100644
--- a/nbxmpp/dispatcher_nb.py
+++ b/nbxmpp/dispatcher_nb.py
@@ -20,11 +20,13 @@ Main xmpp decision making logic. Provides library with methods to assign
different handlers to different XMPP stanzas and namespaces
"""
-import simplexml, sys, locale
+from . import simplexml
+import sys
+import locale
import re
from xml.parsers.expat import ExpatError
-from plugin import PlugIn
-from protocol import (NS_STREAMS, NS_XMPP_STREAMS, NS_HTTP_BIND, Iq, Presence,
+from .plugin import PlugIn
+from .protocol import (NS_STREAMS, NS_XMPP_STREAMS, NS_HTTP_BIND, Iq, Presence,
Message, Protocol, Node, Error, ERR_FEATURE_NOT_IMPLEMENTED, StreamError)
import logging
log = logging.getLogger('nbxmpp.dispatcher_nb')
@@ -95,17 +97,17 @@ class XMPPDispatcher(PlugIn):
self.sm = None
# \ufddo -> \ufdef range
- c = u'\ufdd0'
+ c = '\ufdd0'
r = c.encode('utf8')
- while (c < u'\ufdef'):
+ while (c < '\ufdef'):
c = unichr(ord(c) + 1)
r += '|' + c.encode('utf8')
# \ufffe-\uffff, \u1fffe-\u1ffff, ..., \u10fffe-\u10ffff
- c = u'\ufffe'
+ c = '\ufffe'
r += '|' + c.encode('utf8')
r += '|' + unichr(ord(c) + 1).encode('utf8')
- while (c < u'\U0010fffe'):
+ while (c < '\U0010fffe'):
c = unichr(ord(c) + 0x10000)
r += '|' + c.encode('utf8')
r += '|' + unichr(ord(c) + 1).encode('utf8')
@@ -198,7 +200,7 @@ class XMPPDispatcher(PlugIn):
% (tag, ns))
def replace_non_character(self, data):
- return re.sub(self.invalid_chars_re, u'\ufffd'.encode('utf-8'), data)
+ return re.sub(self.invalid_chars_re, '\ufffd'.encode('utf-8'), data)
def ProcessNonBlocking(self, data):
"""
@@ -220,7 +222,7 @@ class XMPPDispatcher(PlugIn):
handler(self)
if len(self._pendingExceptions) > 0:
_pendingException = self._pendingExceptions.pop()
- raise _pendingException[0], _pendingException[1], _pendingException[2]
+ raise _pendingException
try:
self.Stream.Parse(data)
# end stream:stream tag received
@@ -231,13 +233,13 @@ class XMPPDispatcher(PlugIn):
log.error('Invalid XML received from server. Forcing disconnect.')
self._owner.Connection.disconnect()
return 0
- except ValueError, e:
+ except ValueError as e:
log.debug('ValueError: %s' % str(e))
self._owner.Connection.pollend()
return 0
if len(self._pendingExceptions) > 0:
_pendingException = self._pendingExceptions.pop()
- raise _pendingException[0], _pendingException[1], _pendingException[2]
+ raise _pendingException
if len(data) == 0:
return '0'
return len(data)
@@ -474,7 +476,7 @@ class XMPPDispatcher(PlugIn):
(cb, args))
try:
cb(session,stanza,**args)
- except Exception, typ:
+ except Exception as typ:
if typ.__class__.__name__ != 'NodeProcessed':
raise
else:
@@ -486,7 +488,7 @@ class XMPPDispatcher(PlugIn):
if user or handler['system']:
try:
handler['func'](session, stanza)
- except Exception, typ:
+ except Exception as typ:
if typ.__class__.__name__ != 'NodeProcessed':
self._pendingExceptions.insert(0, sys.exc_info())
return
@@ -552,7 +554,7 @@ class XMPPDispatcher(PlugIn):
sure stanzas get ID and from tag.
"""
ID = None
- if type(stanza) not in [type(''), type(u'')]:
+ if type(stanza) != str:
if isinstance(stanza, Protocol):
ID = stanza.getID()
if ID is None:
diff --git a/nbxmpp/features_nb.py b/nbxmpp/features_nb.py
index 9dd3908..3d9c5c9 100644
--- a/nbxmpp/features_nb.py
+++ b/nbxmpp/features_nb.py
@@ -20,7 +20,7 @@ Different stuff that wasn't worth separating it into modules
(Registration, Privacy Lists, ...)
"""
-from protocol import NS_REGISTER, NS_PRIVACY, NS_DATA, Iq, isResultNode, Node
+from .protocol import NS_REGISTER, NS_PRIVACY, NS_DATA, Iq, isResultNode, Node
def _on_default_response(disp, iq, cb):
def _on_response(resp):
diff --git a/nbxmpp/idlequeue.py b/nbxmpp/idlequeue.py
index e9ca125..b66d6b0 100644
--- a/nbxmpp/idlequeue.py
+++ b/nbxmpp/idlequeue.py
@@ -25,7 +25,7 @@ log = logging.getLogger('nbxmpp.idlequeue')
# needed for get_idleqeue
try:
- import gobject
+ from gi.repository import GObject
HAVE_GOBJECT = True
except ImportError:
HAVE_GOBJECT = False
@@ -190,7 +190,7 @@ class IdleCommand(IdleObject):
def pollin(self):
try:
res = self.pipe.read()
- except Exception, e:
+ except Exception as e:
res = ''
if res == '':
return self.pollend()
@@ -424,7 +424,7 @@ class IdleQueue:
return True
try:
waiting_descriptors = self.selector.poll(0)
- except select.error, e:
+ except select.error as e:
waiting_descriptors = []
if e[0] != 4: # interrupt
raise
@@ -480,7 +480,7 @@ class SelectIdleQueue(IdleQueue):
try:
waiting_descriptors = select.select(self.read_fds.keys(),
self.write_fds.keys(), self.error_fds.keys(), 0)
- except select.error, e:
+ except select.error as e:
waiting_descriptors = ((), (), ())
if e[0] != 4: # interrupt
raise
@@ -517,15 +517,15 @@ class GlibIdleQueue(IdleQueue):
self.events = {}
# time() is already called in glib, we just get the last value
# overrides IdleQueue.current_time()
- self.current_time = gobject.get_current_time
+ self.current_time = GObject.get_current_time
def _add_idle(self, fd, flags):
"""
This method is called when we plug a new idle object. Start listening for
events from fd
"""
- res = gobject.io_add_watch(fd, flags, self._process_events,
- priority=gobject.PRIORITY_LOW)
+ res = GObject.io_add_watch(fd, flags, self._process_events,
+ priority=GObject.PRIORITY_LOW)
# store the id of the watch, so that we can remove it on unplug
self.events[fd] = res
@@ -544,7 +544,7 @@ class GlibIdleQueue(IdleQueue):
"""
if not fd in self.events:
return
- gobject.source_remove(self.events[fd])
+ GObject.source_remove(self.events[fd])
del(self.events[fd])
def process(self):
diff --git a/nbxmpp/protocol.py b/nbxmpp/protocol.py
index 0c79f46..2c5f363 100644
--- a/nbxmpp/protocol.py
+++ b/nbxmpp/protocol.py
@@ -20,15 +20,13 @@ data structures, including jabber-objects like JID or different stanzas and
sub- stanzas) handling routines
"""
-from simplexml import Node, NodeBuilder
+from .simplexml import Node, NodeBuilder
import time
import string
import hashlib
def ascii_upper(s):
- trans_table = string.maketrans(string.ascii_lowercase,
- string.ascii_uppercase)
- return s.translate(trans_table)
+ return s.upper()
NS_ACTIVITY = 'http://jabber.org/protocol/activity' # XEP-0108
NS_ADDRESS = 'http://jabber.org/protocol/address' # XEP-0033
@@ -663,7 +661,7 @@ class Protocol(Node):
else:
error = ErrorNode(ERR_UNDEFINED_CONDITION, code=code,
typ='cancel', text=error)
- elif type(error) in [type(''), type(u'')]:
+ elif type(error) == str:
error=ErrorNode(error)
self.setType('error')
self.addChild(node=error)
@@ -776,8 +774,8 @@ class Message(Protocol):
self.getTag('html').addChild(node=dom)
else:
self.setTag('html', namespace=NS_XHTML_IM).addChild(node=dom)
- except Exception, e:
- print "Error", e
+ except Exception as e:
+ print("Error" + str(e))
# FIXME: log. we could not set xhtml (parse error, whatever)
def setSubject(self, val):
diff --git a/nbxmpp/proxy_connectors.py b/nbxmpp/proxy_connectors.py
index 504ba93..a50f822 100644
--- a/nbxmpp/proxy_connectors.py
+++ b/nbxmpp/proxy_connectors.py
@@ -108,7 +108,7 @@ class HTTPCONNECTConnector(ProxyConnector):
#traceback.print_exc()
self.on_failure('Invalid proxy reply')
return
- if code <> '200':
+ if code != '200':
log.error('Invalid proxy reply: %s %s %s' % (proto, code, desc))
self.on_failure('Invalid proxy reply')
return
diff --git a/nbxmpp/roster_nb.py b/nbxmpp/roster_nb.py
index c07fa25..34b7f7b 100644
--- a/nbxmpp/roster_nb.py
+++ b/nbxmpp/roster_nb.py
@@ -22,8 +22,8 @@ Simple roster implementation. Can be used though for different tasks like
mass-renaming of contacts.
"""
-from protocol import JID, Iq, Presence, Node, NodeProcessed, NS_MUC_USER, NS_ROSTER
-from plugin import PlugIn
+from .protocol import JID, Iq, Presence, Node, NodeProcessed, NS_MUC_USER, NS_ROSTER
+from .plugin import PlugIn
import logging
log = logging.getLogger('nbxmpp.roster_nb')
diff --git a/nbxmpp/simplexml.py b/nbxmpp/simplexml.py
index ad907be..6435de5 100644
--- a/nbxmpp/simplexml.py
+++ b/nbxmpp/simplexml.py
@@ -30,7 +30,7 @@ def XMLescape(txt):
entities
"""
# replace also FORM FEED and ESC, because they are not valid XML chars
- return txt.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace('"', "&quot;").replace(u'\x0C', "").replace(u'\x1B', "")
+ return txt.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;").replace('"', "&quot;").replace('\x0C', "").replace('\x1B', "")
ENCODING='utf-8'
@@ -111,7 +111,7 @@ class Node(object):
for k, v in nsp.items(): self.nsp_cache[k] = v
for attr, val in attrs.items():
if attr == 'xmlns':
- self.nsd[u''] = val
+ self.nsd[''] = val
elif attr.startswith('xmlns:'):
self.nsd[attr[6:]] = val
self.attrs[attr]=attrs[attr]
@@ -566,7 +566,7 @@ class NodeBuilder:
"""
self.check_data_buffer()
self._inc_depth()
- log.info("STARTTAG.. DEPTH -> %i , tag -> %s, attrs -> %s" % (self.__depth, tag, `attrs`))
+ log.info("STARTTAG.. DEPTH -> %i , tag -> %s, attrs -> %s" % (self.__depth, tag, attrs))
if self.__depth == self._dispatch_depth:
if not self._mini_dom :
self._mini_dom = Node(tag=tag, attrs=attrs, nsp = self._document_nsp, node_built=True)
@@ -582,7 +582,7 @@ class NodeBuilder:
nsp, name = (['']+tag.split(':'))[-2:]
for attr, val in attrs.items():
if attr == 'xmlns':
- self._document_nsp[u''] = val
+ self._document_nsp[''] = val
elif attr.startswith('xmlns:'):
self._document_nsp[attr[6:]] = val
else:
@@ -590,7 +590,7 @@ class NodeBuilder:
ns = self._document_nsp.get(nsp, 'http://www.gajim.org/xmlns/undeclared-root')
try:
self.stream_header_received(ns, name, attrs)
- except ValueError, e:
+ except ValueError as e:
self._document_attrs = None
raise ValueError(str(e))
if not self.last_is_data and self._ptr.parent:
diff --git a/nbxmpp/smacks.py b/nbxmpp/smacks.py
index d97b04b..20d3be5 100644
--- a/nbxmpp/smacks.py
+++ b/nbxmpp/smacks.py
@@ -1,5 +1,5 @@
-from protocol import Acks
-from protocol import NS_STREAM_MGMT
+from .protocol import Acks
+from .protocol import NS_STREAM_MGMT
import logging
log = logging.getLogger('nbxmpp.smacks')
diff --git a/nbxmpp/stringprepare.py b/nbxmpp/stringprepare.py
index 5e3d343..6edca6f 100644
--- a/nbxmpp/stringprepare.py
+++ b/nbxmpp/stringprepare.py
@@ -118,7 +118,7 @@ class Profile:
if result_c is not None:
result.append(result_c)
- return u"".join(result)
+ return "".join(result)
def check_prohibiteds(self, string):
for c in string:
@@ -228,8 +228,8 @@ B_2 = MappingTableFromFunction(stringprep.map_table_b2)
nodeprep = Profile(mappings=[B_1, B_2],
prohibiteds=[C_11, C_12, C_21, C_22,
C_3, C_4, C_5, C_6, C_7, C_8, C_9,
- LookupTable([u'"', u'&', u"'", u'/',
- u':', u'<', u'>', u'@'])])
+ LookupTable(['"', '&', "'", '/',
+ ':', '<', '>', '@'])])
resourceprep = Profile(mappings=[B_1,],
prohibiteds=[C_12, C_21, C_22,
diff --git a/nbxmpp/tls_nb.py b/nbxmpp/tls_nb.py
index b2db33e..5c954d8 100644
--- a/nbxmpp/tls_nb.py
+++ b/nbxmpp/tls_nb.py
@@ -16,7 +16,7 @@
## GNU General Public License for more details.
import socket
-from plugin import PlugIn
+from .plugin import PlugIn
import sys
import os
@@ -42,9 +42,9 @@ except ImportError:
log.debug("Import of PyOpenSSL failed:", exc_info=True)
# FIXME: Remove these prints before release, replace with a warning dialog.
- print >> sys.stderr, "=" * 79
- print >> sys.stderr, "PyOpenSSL not found, falling back to Python builtin SSL objects (insecure)."
- print >> sys.stderr, "=" * 79
+ print("=" * 79, file=sys.stderr)
+ print("PyOpenSSL not found, falling back to Python builtin SSL objects (insecure).", file=sys.stderr)
+ print("=" * 79, file=sys.stderr)
def gattr(obj, attr, default=None):
try:
@@ -167,17 +167,17 @@ class PyOpenSSLWrapper(SSLWrapper):
retval = self.sslobj.recv(bufsize)
else:
retval = self.sslobj.recv(bufsize, flags)
- except (OpenSSL.SSL.WantReadError, OpenSSL.SSL.WantWriteError), e:
+ except (OpenSSL.SSL.WantReadError, OpenSSL.SSL.WantWriteError) as e:
log.debug("Recv: Want-error: " + repr(e))
- except OpenSSL.SSL.SysCallError, e:
+ except OpenSSL.SSL.SysCallError as e:
log.debug("Recv: Got OpenSSL.SSL.SysCallError: " + repr(e),
exc_info=True)
raise SSLWrapper.Error(self.sock or self.sslobj, e)
- except OpenSSL.SSL.ZeroReturnError, e:
+ except OpenSSL.SSL.ZeroReturnError as e:
# end-of-connection raises ZeroReturnError instead of having the
# connection's .recv() method return a zero-sized result.
raise SSLWrapper.Error(self.sock or self.sslobj, e, -1)
- except OpenSSL.SSL.Error, e:
+ except OpenSSL.SSL.Error as e:
if self.is_numtoolarge(e):
# warn, but ignore this exception
log.warning("Recv: OpenSSL: asn1enc: first num too large (ignored)")
@@ -192,14 +192,14 @@ class PyOpenSSLWrapper(SSLWrapper):
return self.sslobj.send(data)
else:
return self.sslobj.send(data, flags)
- except (OpenSSL.SSL.WantReadError, OpenSSL.SSL.WantWriteError), e:
+ except (OpenSSL.SSL.WantReadError, OpenSSL.SSL.WantWriteError) as e:
#log.debug("Send: " + repr(e))
time.sleep(0.1) # prevent 100% CPU usage
- except OpenSSL.SSL.SysCallError, e:
+ except OpenSSL.SSL.SysCallError as e:
log.error("Send: Got OpenSSL.SSL.SysCallError: " + repr(e),
exc_info=True)
raise SSLWrapper.Error(self.sock or self.sslobj, e)
- except OpenSSL.SSL.Error, e:
+ except OpenSSL.SSL.Error as e:
if self.is_numtoolarge(e):
# warn, but ignore this exception
log.warning("Send: OpenSSL: asn1enc: first num too large (ignored)")
@@ -222,7 +222,7 @@ class StdlibSSLWrapper(SSLWrapper):
# we simply ignore flags since ssl object doesn't support it
try:
return self.sslobj.read(bufsize)
- except socket.sslerror, e:
+ except socket.sslerror as e:
log.debug("Recv: Caught socket.sslerror: " + repr(e), exc_info=True)
if e.args[0] not in (socket.SSL_ERROR_WANT_READ, socket.SSL_ERROR_WANT_WRITE):
raise SSLWrapper.Error(self.sock or self.sslobj, e)
@@ -232,7 +232,7 @@ class StdlibSSLWrapper(SSLWrapper):
# we simply ignore flags since ssl object doesn't support it
try:
return self.sslobj.write(data)
- except socket.sslerror, e:
+ except socket.sslerror as e:
log.debug("Send: Caught socket.sslerror:", exc_info=True)
if e.args[0] not in (socket.SSL_ERROR_WANT_READ, socket.SSL_ERROR_WANT_WRITE):
raise SSLWrapper.Error(self.sock or self.sslobj, e)
@@ -271,32 +271,32 @@ class NonBlockingTLS(PlugIn):
log.info('Starting TLS estabilishing')
try:
res = self._startSSL()
- except Exception, e:
+ except Exception as e:
log.error("PlugIn: while trying _startSSL():", exc_info=True)
return False
return res
def _dumpX509(self, cert, stream=sys.stderr):
- print >> stream, "Digest (SHA-1):", cert.digest("sha1")
- print >> stream, "Digest (MD5):", cert.digest("md5")
- print >> stream, "Serial #:", cert.get_serial_number()
- print >> stream, "Version:", cert.get_version()
- print >> stream, "Expired:", ("Yes" if cert.has_expired() else "No")
- print >> stream, "Subject:"
+ print("Digest (SHA-1):" + cert.digest("sha1"), file=stream)
+ print("Digest (MD5):" + cert.digest("md5"), file=stream)
+ print("Serial #:" + cert.get_serial_number(), file=stream)
+ print("Version:" + cert.get_version(), file=stream)
+ print("Expired:" + ("Yes" if cert.has_expired() else "No"), file=stream)
+ print("Subject:", file=stream)
self._dumpX509Name(cert.get_subject(), stream)
- print >> stream, "Issuer:"
+ print("Issuer:", file=stream)
self._dumpX509Name(cert.get_issuer(), stream)
self._dumpPKey(cert.get_pubkey(), stream)
def _dumpX509Name(self, name, stream=sys.stderr):
- print >> stream, "X509Name:", str(name)
+ print("X509Name:" + str(name), file=stream)
def _dumpPKey(self, pkey, stream=sys.stderr):
typedict = {OpenSSL.crypto.TYPE_RSA: "RSA",
OpenSSL.crypto.TYPE_DSA: "DSA"}
- print >> stream, "PKey bits:", pkey.bits()
- print >> stream, "PKey type: %s (%d)" % (typedict.get(pkey.type(),
- "Unknown"), pkey.type())
+ print("PKey bits:" + pkey.bits(), file=stream)
+ print("PKey type: %s (%d)" % (typedict.get(pkey.type(),
+ "Unknown"), pkey.type()), file=stream)
def _startSSL(self):
"""
@@ -320,7 +320,7 @@ class NonBlockingTLS(PlugIn):
return
try:
f = open(cert_path)
- except IOError, e:
+ except IOError as e:
log.warning('Unable to open certificate file %s: %s' % \
(cert_path, str(e)))
return
@@ -336,7 +336,7 @@ class NonBlockingTLS(PlugIn):
x509cert = OpenSSL.crypto.load_certificate(
OpenSSL.crypto.FILETYPE_PEM, cert)
cert_store.add_cert(x509cert)
- except OpenSSL.crypto.Error, exception_obj:
+ except OpenSSL.crypto.Error as exception_obj:
if logg:
log.warning('Unable to load a certificate from file %s: %s' %\
(cert_path, exception_obj.args[0][0][2]))
@@ -361,7 +361,7 @@ class NonBlockingTLS(PlugIn):
try:
p12 = OpenSSL.crypto.load_pkcs12(open(conn.client_cert).read(),
conn.client_cert_passphrase)
- except OpenSSL.crypto.Error, exception_obj:
+ except OpenSSL.crypto.Error as exception_obj:
log.warning('Unable to load client pkcs12 certificate from '
'file %s: %s ... Is it a valid PKCS12 cert?' % \
(conn.client_cert, exception_obj.args))
@@ -374,10 +374,10 @@ class NonBlockingTLS(PlugIn):
tcpsock._sslContext.use_certificate(p12.get_certificate())
tcpsock._sslContext.use_privatekey(p12.get_privatekey())
log.info('p12 cert and key loaded')
- except OpenSSL.crypto.Error, exception_obj:
+ except OpenSSL.crypto.Error as exception_obj:
log.warning('Unable to extract client certificate from '
'file %s' % conn.client_cert)
- except Exception, msg:
+ except Exception as msg:
log.warning('Unknown error extracting client certificate '
'from file %s: %s' % (conn.client_cert, msg))
else:
@@ -388,7 +388,7 @@ class NonBlockingTLS(PlugIn):
flags = OpenSSL.SSL.OP_NO_SSLv2
try:
flags |= OpenSSL.SSL.OP_NO_TICKET
- except AttributeError, e:
+ except AttributeError as e:
# py-OpenSSL < 0.9 or old OpenSSL
flags |= 16384
tcpsock._sslContext.set_options(flags)
@@ -420,7 +420,7 @@ class NonBlockingTLS(PlugIn):
log.debug("Initiating handshake...")
try:
tcpsock._sslObj.do_handshake()
- except (OpenSSL.SSL.WantReadError, OpenSSL.SSL.WantWriteError), e:
+ except (OpenSSL.SSL.WantReadError, OpenSSL.SSL.WantWriteError) as e:
pass
except:
log.error('Error while TLS handshake: ', exc_info=True)
diff --git a/nbxmpp/transports_nb.py b/nbxmpp/transports_nb.py
index e4101bd..0558cc1 100644
--- a/nbxmpp/transports_nb.py
+++ b/nbxmpp/transports_nb.py
@@ -24,18 +24,18 @@ Transports are not aware of XMPP stanzas and only responsible for low-level
connection handling.
"""
-from simplexml import ustr
-from plugin import PlugIn
-from idlequeue import IdleObject
-import proxy_connectors
-import tls_nb
+from .simplexml import ustr
+from .plugin import PlugIn
+from .idlequeue import IdleObject
+from . import proxy_connectors
+from . import tls_nb
import socket
import errno
import time
import traceback
import base64
-import urlparse
+from urllib.parse import urlparse
import logging
log = logging.getLogger('nbxmpp.transports_nb')
@@ -47,7 +47,7 @@ def urisplit(uri):
'httpcm.jabber.org', 123, '/webclient') return 443 as default port if proto
is https else 80
"""
- splitted = urlparse.urlsplit(uri)
+ splitted = urlparse(uri)
proto, host, path = splitted.scheme, splitted.hostname, splitted.path
try:
port = splitted.port
@@ -330,9 +330,9 @@ class NonBlockingTCP(NonBlockingTransport, IdleObject):
try:
self._sock = socket.socket(*conn_5tuple[:3])
- except socket.error, (errnum, errstr):
+ except socket.error as e:
self._on_connect_failure('NonBlockingTCP Connect: Error while creating\
- socket: %s %s' % (errnum, errstr))
+ socket: %s' % atr(e))
return
self._send = self._sock.send
@@ -356,7 +356,7 @@ class NonBlockingTCP(NonBlockingTransport, IdleObject):
try:
self._sock.setblocking(False)
self._sock.connect((self.server, self.port))
- except Exception, exc:
+ except Exception as exc:
errnum, errstr = exc.args
if errnum in (errno.EINPROGRESS, errno.EALREADY, errno.EWOULDBLOCK):
@@ -458,8 +458,8 @@ class NonBlockingTCP(NonBlockingTransport, IdleObject):
try:
self._sock.shutdown(socket.SHUT_RDWR)
self._sock.close()
- except socket.error, (errnum, errstr):
- log.info('Error while disconnecting socket: %s' % errstr)
+ except socket.error as e:
+ log.info('Error while disconnecting socket: %s' % str(e))
self.fd = -1
NonBlockingTransport.disconnect(self, do_callback)
@@ -565,9 +565,9 @@ class NonBlockingTCP(NonBlockingTransport, IdleObject):
try:
# get as many bites, as possible, but not more than RECV_BUFSIZE
received = self._recv(RECV_BUFSIZE)
- except socket.error, (errnum, errstr):
+ except socket.error as e:
log.info("_do_receive: got %s:" % received, exc_info=True)
- except tls_nb.SSLWrapper.Error, e:
+ except tls_nb.SSLWrapper.Error as e:
log.info("_do_receive, caught SSL error, got %s:" % received,
exc_info=True)
errnum, errstr = e.errno, e.strerror