]> gitweb.pimeys.fr Git - NK2015_Client_Python_Alpha.git/blobdiff - client.py
Nouveau protocole
[NK2015_Client_Python_Alpha.git] / client.py
index 50da2402fc4a8b22c2c6b0625c6d79e8f0aaaca9..297e76d741a4179cafc3df4b18a4efb0ad454e24 100755 (executable)
--- a/client.py
+++ b/client.py
@@ -19,15 +19,22 @@ from pprint import pprint
 sys.path.append(client_config.rsa_path)
 import monRSA
 
+class DeadServer(Exception):
+    pass
+
 def full_read(sock):
     """Lit sur la socket jusqu'à ce que l'output soit déJSON-izable"""
     output=""
+    i = 0
     while True:
         output+=sock.read()
+        i += 1
         try:
             return json.loads(output)
         except:
             pass
+        if i==10 and output=="":
+            raise DeadServer
 
 def connect(sock,where,port=None):
     if port==None:
@@ -57,22 +64,22 @@ def checkidentity(a):
         raise KeyboardInterrupt("Imposteur !")
 
 def hello(socket,version):
-    socket.send('hello "%s"'%(version))
+    socket.send('["hello", "%s"]' % (version))
     return lit(a)
 
 def login(socket,user,mdp="",typ="bdd"):
-    if user in ["20-100","moibdd"]:
-        a.write('login ["20-100","plop","bdd",[["all"],["all"],true]]')
+    if user in ["20-100","moibdd","#1"]:
+        a.write('["login", ["#1","plop","bdd",[[],[],false]]]')
     elif user in ["vincent","moi"]:
-        a.write('login ["vincent","plop","special",["all"]]')
+        a.write('["login", ["vincent","plop","special",[]]]')
     elif user in ["toto"]:
-        a.write('login ["toto","plop","bdd",[["all"],["all"],true]]')
+        a.write('["login", ["toto","plop","bdd",[[],[],false]]]')
     else:
-        a.write('login ["%s","%s","%s",[["all"],["all"],true]]'%(user,mdp,typ))
+        a.write('["login", ["%s","%s","%s",[[],[],false]]]'%(user,mdp,typ))
     return lit(a)
     
 def search(socket,term):
-    a.write("search %s"%(term))
+    a.write('["search", %s]' % (term))
     return lit(a)
 
 def lit(socket):
@@ -84,9 +91,9 @@ def lit(socket):
           print obj["errmsg"]
           return obj["msg"]
     except ssl.SSLError:
-        return "Rien à lire"
-    except ValueError:
-        return "Serveur mort ?"
+        print "Rien à lire"
+    except DeadServer:
+        print "Serveur down ?"
 
 if __name__=="__main__":
     where=raw_input("quel serveur ?")