[projects/pld-ftp-admin] Send and receive bytes over sockets (python3 compat)

baggins baggins at pld-linux.org
Sun Jan 17 11:46:17 CET 2021


commit 8d9e10143107c972aa7f35f1d2cc51cc2b111684
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sun Jan 17 11:01:48 2021 +0100

    Send and receive bytes over sockets (python3 compat)

 modules/cmds.py  | 32 ++++++++++++++++----------------
 modules/cons.py  |  2 +-
 modules/ftpio.py | 36 ++++++++++++++++++------------------
 3 files changed, 35 insertions(+), 35 deletions(-)
---
diff --git a/modules/cmds.py b/modules/cmds.py
index d82b35a..e7dc879 100644
--- a/modules/cmds.py
+++ b/modules/cmds.py
@@ -38,18 +38,18 @@ def parse(con):
 def lock(con, arg, hard):
     if arg not in locks:
         locks[arg]={'hard': hard, 'name': con.name, 'time': int(time.time())}
-        con.sock.send("OK")
+        con.sock.send(bytearray("OK", encoding='utf-8'))
     elif locks[arg]['hard']:
-        con.sock.send("HARD") # Hard lock - you can go get a cup of tea
+        con.sock.send(bytearray("HARD", encoding='utf-8')) # Hard lock - you can go get a cup of tea
     else:
-        con.sock.send("SOFT") # Soft lock - try in a second or two
+        con.sock.send(bytearray("SOFT", encoding='utf-8')) # Soft lock - try in a second or two
 
 def cmd_unlock(con, arg):
     if arg in locks:
         del locks[arg]
-        con.sock.send("OK")
+        con.sock.send(bytearray("OK", encoding='utf-8'))
     else:
-        con.sock.send("FAIL")
+        con.sock.send(bytearray("FAIL", encoding='utf-8'))
 
 def cmd_lock_soft(con, arg):
     lock(con, arg, False)
@@ -67,11 +67,11 @@ def cmd_show_locks(con):
                     tree, data['name'], data['hard'], time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(data['time'])))
             cmd_log(con, msg)
             res = res + msg
-#        con.sock.send("BLOB:%d" % len(res))
-        con.sock.send(res)
+#        con.sock.send(bytearray("BLOB:%d" % len(res), encoding='utf-8')))
+        con.sock.send(bytearray(res, encoding='utf-8'))
     else:
-        cmd_log(con, "No locks found.");
-        con.sock.send("NLCK");
+        cmd_log(con, "No locks found.")
+        con.sock.send(bytearray("NLCK", encoding='utf-8'))
 
 def cmd_log(con, msg):
     logfile.write('%s [%s] -- %s\n' % (time.strftime('%Y-%m-%d %H:%M:%S'), con.name, msg))
@@ -122,10 +122,10 @@ def cmd_login_passwd(con, data):
         write_cookies()
         con.username=login
         con.authorized=True
-        con.sock.send('OK '+cookie)
+        con.sock.send(bytearray('OK '+cookie, encoding='utf-8'))
     else:
         # TODO: log this
-        con.sock.send('FAIL')
+        con.sock.send(bytearray('FAIL', encoding='utf-8'))
         raise BailOut()
 
 def cmd_login_cookie(con, cookie):
@@ -133,10 +133,10 @@ def cmd_login_cookie(con, cookie):
         con.cookie=cookie
         con.authorized=True
         con.username=cookies[cookie]
-        con.sock.send('OK '+cookies[cookie])
+        con.sock.send(bytearray('OK '+cookies[cookie], encoding='utf-8'))
     else:
         # TODO: log this (or not)
-        con.sock.send('FAIL')
+        con.sock.send(bytearray('FAIL'))
 
 def cmd_logout(con):
     if con.cookie in cookies:
@@ -165,10 +165,10 @@ def cmd_gettree(con):
             line=line+'\n0'
         buf=buf+'\0'+line
     if buf:
-        con.sock.send('%.6d' % (len(buf)-1))
-        con.sock.send(buf[1:])
+        con.sock.send(bytearray('%.6d' % (len(buf)-1), encoding='utf-8'))
+        con.sock.send(bytearray(buf[1:], encoding='utf-8'))
     else:
-        con.sock.send('000000')
+        con.sock.send(bytearray('000000', encoding='utf-8'))
 
 
 cmdlist_args={'lcks':cmd_lock_soft, 'lckh':cmd_lock_hard, 'ulck':cmd_unlock,
diff --git a/modules/cons.py b/modules/cons.py
index 8213c68..dae0587 100644
--- a/modules/cons.py
+++ b/modules/cons.py
@@ -30,7 +30,7 @@ class Connection:
         if not newdata:
             self.destroy()
         else:
-            self.data = self.data + newdata
+            self.data = self.data + newdata.decode("utf-8")
 
         try:
             cmds.parse(self)
diff --git a/modules/ftpio.py b/modules/ftpio.py
index 2529cee..59cb55c 100644
--- a/modules/ftpio.py
+++ b/modules/ftpio.py
@@ -20,12 +20,12 @@ def connect(name=None):
     sock.connect(socketname)
     if not name:
         name = "pid_%d_name_%s" % (os.getpid(), sys.argv[0])
-    sock.send('name %s\0' % name)
+    sock.send(bytearray('name %s\0' % name, encoding='utf-8'))
 
 def login_passwd(login, passwd):
     'Return cookie if ok'
-    sock.send('linp %s\n%s\0' % (login, passwd))
-    retval=sock.recv(256)
+    sock.send(bytearray('linp %s\n%s\0' % (login, passwd), encoding='utf-8'))
+    retval=sock.recv(256).decode("utf-8")
     if retval=='FAIL':
         return ''
     else:
@@ -33,23 +33,23 @@ def login_passwd(login, passwd):
 
 def login_cookie(cookie):
     'Return login if ok'
-    sock.send('linc %s\0' % cookie)
-    retval=sock.recv(256)
+    sock.send(bytearray('linc %s\0' % cookie, encoding='utf-8'))
+    retval=sock.recv(256).decode('utf-8')
     if retval=='FAIL':
         return ''
     else:
         return retval[3:]
 
 def logout():
-    sock.send('lout\0')
+    sock.send(bytearray('lout\0', encoding='utf-8'))
 
 def lock(path, hard=False):
     def dolock():
         if hard:
-            sock.send('lckh %s\0' % path)
+            sock.send(bytearray('lckh %s\0' % path, encoding='utf-8'))
         else:
-            sock.send('lcks %s\0' % path)
-        return sock.recv(20)
+            sock.send(bytearray('lcks %s\0' % path, encoding='utf-8'))
+        return sock.recv(20).decode("utf-8")
     for i in range(3):
         retcode=dolock()
         if retcode=="OK":
@@ -61,31 +61,31 @@ def lock(path, hard=False):
     return False
     
 def unlock(path):
-    sock.send('ulck %s\0' % path)
-    ret = sock.recv(20)
+    sock.send(bytearray('ulck %s\0' % path, encoding='utf-8'))
+    ret = sock.recv(20).decode("utf-8")
     if ret == "OK":
         return True
     return False
 
 def log(msg):
-    sock.send('log1 %s\0' % msg)
+    sock.send(bytearray('log1 %s\0' % msg, encoding='utf-8'))
 
 def locks_dump():
-    sock.send('slck\0')
-    ret = sock.recv(4096)
+    sock.send(bytearray('slck\0', encoding='utf-8'))
+    ret = sock.recv(4096).decode("utf-8")
     if ret == "NLCK":
         return "No locks held"
 
 #    nbytes = int(ret.split("BLOB:")[1])
-#    ret = sock.recv(nbytes)
+#    ret = sock.recv(nbytes).decode("utf-8")
     return ret
 
 def gettree():
-    sock.send('gett\0')
+    sock.send(bytearray('gett\0', encoding='utf-8'))
     pkgs=[]
-    len=int(sock.recv(6))
+    len=int(sock.recv(6).decode("utf-8"))
     if len:
-        for pkg in sock.recv(len).split('\0'):
+        for pkg in sock.recv(len).decode("utf-8").split('\0'):
             tmp=pkg.split('\n')
             pkgs.append((tmp[0], int(tmp[1]), int(tmp[2])))
     return pkgs
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/projects/pld-ftp-admin.git/commitdiff/7aec4c36547d10c790a119a1ac203eee13755a6d



More information about the pld-cvs-commit mailing list