connectors/PYRO/PSK_Adapter.py
changeset 2492 7dd551ac2fa0
parent 2325 71593d3f880b
child 2536 2747d6e72eb8
--- a/connectors/PYRO/PSK_Adapter.py	Thu Mar 07 21:57:18 2019 +0100
+++ b/connectors/PYRO/PSK_Adapter.py	Mon Mar 11 01:03:32 2019 +0100
@@ -7,11 +7,11 @@
 import ssl
 import Pyro
 from Pyro.core import PyroURI
-from Pyro.protocol import _connect_socket,TCPConnection,PYROAdapter
+from Pyro.protocol import _connect_socket, TCPConnection, PYROAdapter
 from Pyro.errors import ConnectionDeniedError, ProtocolError
 from Pyro.util import Log
 
-#
+
 # The TLS-PSK adapter that handles SSL connections instead of regular sockets,
 # but using Pre Shared Keys instead of Certificates
 #
@@ -19,67 +19,76 @@
     # This is essentialy the same as in Pyro/protocol.py
     # only raw_sock wrapping into sock through sslpsk.wrap_socket was added
     # Pyro unfortunately doesn't allow cleaner customization
-    def bindToURI(self,URI):
+    def bindToURI(self, URI):
         with self.lock:   # only 1 thread at a time can bind the URI
             try:
-                self.URI=URI
+                self.URI = URI
 
                 # This are the statements that differ from Pyro/protocol.py
                 raw_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                 _connect_socket(raw_sock, URI.address, URI.port, self.timeout)
                 sock = sslpsk.wrap_socket(
                     raw_sock, psk=Pyro.config.PYROPSK, server_side=False,
-                    ciphers="PSK-AES256-CBC-SHA", # available in openssl 1.0.2 
+                    ciphers="PSK-AES256-CBC-SHA",  # available in openssl 1.0.2
                     ssl_version=ssl.PROTOCOL_TLSv1)
-                # all the rest is the same as in Pyro/protocol.py 
+                # all the rest is the same as in Pyro/protocol.py
 
-                conn=TCPConnection(sock, sock.getpeername())
+                conn = TCPConnection(sock, sock.getpeername())
                 # receive the authentication challenge string, and use that to build the actual identification string.
                 try:
-                    authChallenge=self.recvAuthChallenge(conn)
-                except ProtocolError,x:
+                    authChallenge = self.recvAuthChallenge(conn)
+                except ProtocolError, x:
                     # check if we were denied
-                    if hasattr(x,"partialMsg") and x.partialMsg[:len(self.denyMSG)]==self.denyMSG:
+                    if hasattr(x, "partialMsg") and x.partialMsg[:len(self.denyMSG)] == self.denyMSG:
                         raise ConnectionDeniedError(Pyro.constants.deniedReasons[int(x.partialMsg[-1])])
                     else:
                         raise
                 # reply with our ident token, generated from the ident passphrase and the challenge
-                msg = self._sendConnect(sock,self.newConnValidator.createAuthToken(self.ident, authChallenge, conn.addr, self.URI, None) )
-                if msg==self.acceptMSG:
-                    self.conn=conn
-                    self.conn.connected=1
-                    Log.msg('PYROAdapter','connected to',str(URI))
-                    if URI.protocol=='PYROLOCPSK':
-                        self.resolvePYROLOC_URI("PYROPSK") # updates self.URI
-                elif msg[:len(self.denyMSG)]==self.denyMSG:
+                msg = self._sendConnect(sock, self.newConnValidator.createAuthToken(self.ident, authChallenge, conn.addr, self.URI, None))
+                if msg == self.acceptMSG:
+                    self.conn = conn
+                    self.conn.connected = 1
+                    Log.msg('PYROAdapter', 'connected to', str(URI))
+                    if URI.protocol == 'PYROLOCPSK':
+                        self.resolvePYROLOC_URI("PYROPSK")  # updates self.URI
+                elif msg[:len(self.denyMSG)] == self.denyMSG:
                     try:
                         raise ConnectionDeniedError(Pyro.constants.deniedReasons[int(msg[-1])])
-                    except (KeyError,ValueError):
+                    except (KeyError, ValueError):
                         raise ConnectionDeniedError('invalid response')
             except socket.error:
-                Log.msg('PYROAdapter','connection failed to URI',str(URI))
+                Log.msg('PYROAdapter', 'connection failed to URI', str(URI))
                 raise ProtocolError('connection failed')
 
+
 _getProtocolAdapter = Pyro.protocol.getProtocolAdapter
+
+
 def getProtocolAdapter(protocol):
     if protocol in ('PYROPSK', 'PYROLOCPSK'):
         return PYROPSKAdapter()
     return _getProtocolAdapter(protocol)
 
+
 Pyro.protocol.getProtocolAdapter = getProtocolAdapter
 
+
 _processStringURI = Pyro.core.processStringURI
+
+
 def processStringURI(URI):
-    x=re.match(r'(?P<protocol>PYROLOCPSK)://(?P<hostname>[^\s:]+):?(?P<port>\d+)?/(?P<name>\S*)',URI)
+    x = re.match(r'(?P<protocol>PYROLOCPSK)://(?P<hostname>[^\s:]+):?(?P<port>\d+)?/(?P<name>\S*)', URI)
     if x:
-        protocol=x.group('protocol')
-        hostname=x.group('hostname')
-        port=x.group('port')
+        protocol = x.group('protocol')
+        hostname = x.group('hostname')
+        port = x.group('port')
         if port:
-            port=int(port)
+            port = int(port)
         else:
-            port=0
-        name=x.group('name')
-        return PyroURI(hostname,name,port,protocol)
+            port = 0
+        name = x.group('name')
+        return PyroURI(hostname, name, port, protocol)
     return _processStringURI(URI)
+
+
 Pyro.core.processStringURI = processStringURI