Advertisement
Guest User

Untitled

a guest
Dec 2nd, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.32 KB | None | 0 0
  1. import json
  2. from _thread import *
  3. import sys, errno
  4. Buffer_size = 1024
  5.  
  6.  
  7. def conta_msg_nlidas(s, user):
  8. fp = open((user + ".txt"), "r")
  9. data = [line.strip() for line in fp]
  10. msg = []
  11. for c in data:
  12. msg.append(c.split())
  13. msg_lidas = []
  14. msg_total = []
  15. conta=0
  16. for c in msg:
  17. msg_total.append(c)
  18. if c[2] == "0":
  19. msg_lidas.append(c)
  20. conta += 1
  21. try:
  22. s.send(str(conta).encode())
  23. except IOError:
  24. print("Cliente off")
  25.  
  26.  
  27. def recebe_nlidas(s):
  28. conta=(s.recv(Buffer_size)).decode()
  29. print("********TEM",conta,"MENSAGENS NAO LIDAS**********")
  30.  
  31.  
  32. def ler_ficheiro():
  33. file = open("client.aut.txt", 'r')
  34. uti = dict()
  35. for line in file:
  36. linha = line.split()
  37. uti.update({linha[0]: linha[1]})
  38. file.close()
  39. return uti
  40.  
  41.  
  42. def multiplasMensagens(lista, emissor, msg):
  43. for i in range(len(lista)):
  44. fp = open(str(lista[i]) + ".txt", 'a')
  45. fp.write(str(emissor) + ' ' + lista[i] + ' ' + '0' + ' ' + str(msg) + '\n')
  46. print("E-mail enviado de " + emissor + " para " + lista[i])
  47. fp.close()
  48.  
  49.  
  50. def lista_users(client, dic):
  51. lista = []
  52. for c in dic.keys():
  53. lista.append(c)
  54. users = json.dumps(lista)
  55. client.send(users.encode())
  56.  
  57.  
  58. def tornaOperador(dic, s, user):
  59. conta = 0
  60.  
  61. for k, v in dic.items():
  62. if k == user and dic[k] == "o":
  63. str = "O utilizador ja e Operador do sistema"
  64. return 0, str
  65. elif k == user and dic[k] == "u":
  66. dic[k] = "o"
  67. conta += 1
  68. if conta == 0:
  69. str = "operador não existe"
  70. return 0,str
  71.  
  72. fp = open("operadores.txt", 'w+')
  73. for k in dic.keys():
  74. fp.write(k + " " + dic[k] + "\n")
  75. fp.close()
  76. if conta == 1:
  77. str = "O utilizador " + user + " foi adicionado como Operador do sistema"
  78. s.send(str.encode())
  79. return 1, str
  80.  
  81.  
  82. def verificaAdmin(username, dic):
  83. conta = 0
  84. for k in dic.keys():
  85. if k == username and dic[k] == "o":
  86. conta += 1
  87. if conta == 1:
  88. return 1, dic
  89. else:
  90. return 0, dic
  91.  
  92.  
  93. def leFicheiroOperador():
  94. fp = open("operadores.txt", 'r+')
  95. uti = dict()
  96. for line in fp:
  97. linha = line.split()
  98. novo = {linha[0]: linha[1]}
  99. uti.update(novo)
  100. fp.close()
  101. return uti
  102.  
  103.  
  104.  
  105. def lista_users_client(server):
  106. data = (server.recv(Buffer_size))
  107. data_arr = json.loads(data.decode())
  108. print("Cliente Autorizados:\n")
  109. for c in data_arr:
  110. print(c)
  111.  
  112.  
  113. def return_menu():
  114. a = 1
  115. while a:
  116. opcao = input("\n\nVoltar ao menu (1) Ou sair(0)?")
  117. if opcao.isdigit() and (opcao == "1" or opcao == "0"):
  118. a = 0
  119. return opcao
  120.  
  121.  
  122. def check_client(client, cred):
  123. lista = []
  124. for i in range(2):
  125. msg = client.recv(Buffer_size).decode()
  126. lista.append(msg)
  127. if cred.get(lista[0]) == lista[1]:
  128. client.send("1".encode())
  129. return lista[0], 1
  130. else:
  131. client.send("0".encode())
  132. return lista[0], 0
  133.  
  134.  
  135. def alteraPass(s):
  136. a = True
  137. while a:
  138. nova_password = input("Nova Password:\n")
  139. if len(nova_password) <= 3:
  140. print("Password demasiado pequena\n")
  141. else:
  142. a = False
  143. nova_password=nova_password[::-1]
  144. s.send(nova_password.encode())
  145. print((s.recv(Buffer_size)).decode())
  146.  
  147.  
  148. def altera_password(dicio, user, s):
  149. fp = open("client.aut.txt", "w")
  150. password = (s.recv(Buffer_size)).decode()
  151. for k, v in dicio.items():
  152. if k == user:
  153. dicio[k] = password
  154. for key in dicio.keys():
  155. fp.write(key + " " + dicio[key] + "\n")
  156. fp.seek(0, 2)
  157. fp.truncate()
  158. fp.close()
  159. nova = "A sua palavra passe foi alterada para " + password[::-1]
  160. s.send(nova.encode())
  161.  
  162.  
  163. def verifica_user(cred, s): #envia lista com os usernames
  164. s.send(str((len(cred))).encode())
  165. lista = []
  166. for c in cred.keys():
  167. lista.append(c)
  168. users = json.dumps(lista)
  169. s.send(users.encode())
  170. check = (s.recv(Buffer_size)).decode()
  171. users = (s.recv(Buffer_size)).decode()
  172. data = json.loads(users)
  173. if check == "1":
  174. return 0, data
  175. else:
  176. return 1, None
  177.  
  178.  
  179. def pede_utilizadores(s):
  180. tam = (s.recv(Buffer_size)).decode()
  181. a = 1
  182. lista = []
  183. while a:
  184. opcao = input("Quantos destinatários deseja adicionar, sendo que existem " + tam + "\n")
  185. if opcao.isdigit() and (1 <= int(opcao) <= int(tam)):
  186. a = 0
  187. a = 1
  188. for i in range(int(opcao)):
  189. a = 1
  190. while a:
  191. novo = input("Destinatário " + str(i + 1) + "\n")
  192. if novo in lista:
  193. print("Destinario já inserido")
  194. a=1
  195. else:
  196. lista.append(novo)
  197. a = 0
  198. return lista
  199.  
  200.  
  201.  
  202. def altera_lidas(s, user):
  203. fp = open((user + ".txt"), "r")
  204. data = [line.strip() for line in fp]
  205. msg = []
  206. for c in data:
  207. msg.append(c.split())
  208. msg_lidas = []
  209. for c in msg:
  210. c[2]="1"
  211. fp.close()
  212. nova=[]
  213. for c in msg:
  214. nova.append(" ".join(str(x) for x in c))
  215. fp = open((user + ".txt"), "w")
  216. for item in nova:
  217. fp.write("%s\n" % item)
  218. fp.close()
  219.  
  220.  
  221. def le_mensagens_lidas(s,user):
  222. fp = open((user+".txt"),"r")
  223. data = [line.strip() for line in fp]
  224. msg = []
  225. for c in data:
  226. msg.append(c.split())
  227. msg_lidas = []
  228. for c in msg:
  229. if c[2] == "1":
  230. msg_lidas.append(c)
  231. s.send(str(len(msg_lidas)).encode())
  232. final = []
  233. for c in msg_lidas:
  234. nova = []
  235. nova.append("Remetente: "+c[0])
  236. text = "Mensagem: "
  237. for i in range(3,len(c)):
  238. if i == (len(c)-1):
  239. text = text + c[i]
  240. else:
  241. text = text+c[i]+" "
  242. nova.append(text)
  243. final.append(nova)
  244. mensagens = json.dumps(final)
  245. s.send(mensagens.encode())
  246. fp.close()
  247.  
  248.  
  249. def le_mensagens_nlidas(s, user):
  250. fp = open((user+".txt"),"r")
  251. data = [line.strip() for line in fp]
  252. msg = []
  253. for c in data:
  254. msg.append(c.split())
  255. msg_lidas = []
  256. for c in msg:
  257. if c[2] == "0":
  258. msg_lidas.append(c)
  259. s.send(str(len(msg_lidas)).encode())
  260. print(msg_lidas)
  261. final = []
  262. for c in msg_lidas:
  263. nova = list()
  264. nova.append("Remetente: "+c[0])
  265. text = "Mensagem: "
  266. for i in range(3, len(c)):
  267. if i == (len(c)-1):
  268. text = text + c[i]
  269. else:
  270. text = text+c[i]+" "
  271. nova.append(text)
  272. final.append(nova)
  273. mensagens = json.dumps(final)
  274. s.send(mensagens.encode())
  275. fp.close()
  276.  
  277.  
  278. def le_mesagens_client(s):
  279. a = (s.recv(Buffer_size)).decode()
  280. conta = int(a)
  281. print(conta)
  282. mens = json.loads(s.recv(Buffer_size).decode())
  283. for c in mens:
  284. print(c[0])
  285. print(c[1])
  286.  
  287.  
  288. def verifica_user_client(s):
  289. lista = pede_utilizadores(s)
  290. users = (s.recv(Buffer_size)).decode()
  291. data = json.loads(users) #recebe a lista de usernames
  292. for c in lista:
  293. if c not in data:
  294. print(c, " nao existente")
  295. s.send("0".encode())
  296. return 1
  297. s.send("1".encode())
  298. users = json.dumps(lista)
  299. s.send(users.encode())
  300. return 0
  301.  
  302.  
  303. def verifica_user(cred, s): #envia lista com os usernames
  304. s.send(str((len(cred))).encode())
  305. lista = []
  306. for c in cred.keys():
  307. lista.append(c)
  308. users = json.dumps(lista)
  309. s.send(users.encode())
  310. check = (s.recv(Buffer_size)).decode()
  311. if check == "1":
  312. users = (s.recv(Buffer_size)).decode()
  313. data = json.loads(users)
  314. return 0, data
  315. else:
  316. return 1, None
  317.  
  318.  
  319. def pedeMensagem(s):
  320. mensagem =input("Mensagem:\n")
  321. s.send(mensagem.encode())
  322.  
  323.  
  324. def verifica_user_client(s):
  325. lista = pede_utilizadores(s)
  326. users = (s.recv(Buffer_size)).decode()
  327. data = json.loads(users) #recebe a lista de usernames
  328. for i in range(len(lista)):
  329. if lista[i] not in data:
  330. print(lista[i], " nao existente")
  331. s.send("0".encode())
  332. return 1
  333. s.send("1".encode())
  334. users = json.dumps(lista)
  335. s.send(users.encode())
  336. return 0
  337.  
  338.  
  339. def mostra_mensagens_lidas(s, user):
  340. fp = open((user+".txt"), "r")
  341. data = [line.strip() for line in fp]
  342. msg= []
  343. for c in data:
  344. msg.append(c.split())
  345. msg_lidas = []
  346. msg_total = []
  347. for c in msg:
  348. msg_total.append(c)
  349. if c[2] == "1":
  350. msg_lidas.append(c)
  351. s.send(str(len(msg_lidas)).encode())
  352. final = []
  353. j = 0
  354. for c in msg_lidas:
  355. nova = []
  356. nova.append(str(j))
  357. nova.append(c[0])
  358. text = ""
  359. for i in range(3,len(c)):
  360. if i == (len(c)-1):
  361. text = text + c[i]
  362. else:
  363. text = text+c[i]+" "
  364. nova.append(text)
  365. final.append(nova)
  366. j += 1
  367. mensagens = json.dumps(final)
  368. s.send(mensagens.encode())
  369. mens = int((s.recv(Buffer_size)).decode())
  370. print("Apagar mensagem", mens)
  371. apagar = msg_lidas[mens]
  372. fp = open((user + ".txt"), "r")
  373. data = [line.strip() for line in fp]
  374. msg = []
  375. for c in data:
  376. msg.append(c.split())
  377. msg_lidas = []
  378. fp.close()
  379. nova = []
  380. for c in msg:
  381. if c != apagar:
  382. nova.append(" ".join(str(x) for x in c))
  383. fp = open((user + ".txt"), "w")
  384. for item in nova:
  385. fp.write("%s\n" % item)
  386. fp.close()
  387.  
  388.  
  389. def le_mes_client(s): #usar no apagar mensagens
  390. a=(s.recv(Buffer_size)).decode()
  391. conta = int(a)
  392. print(conta)
  393. mens = json.loads(s.recv(Buffer_size).decode())
  394. for c in mens:
  395. print("Mensagem numero:", c[0])
  396. print("Remetente:", c[1])
  397. print("Mensagem:", c[2], "\n")
  398. b = True
  399. while b:
  400. opcao = input("Qual a mensagem que deseja apagar:\n")
  401.  
  402. if opcao.isdigit() and 0 <= int(opcao) <= (conta-1):
  403. b = False
  404. s.send(opcao.encode())
  405.  
  406.  
  407. def pedeNovoUtilizador(s):
  408. user = input("Username:")
  409. s.send(user.encode())
  410. password = input("Password:")
  411. password = password[::-1]
  412. s.send(password.encode())
  413.  
  414.  
  415. def verificaNovoUtilizador(username):
  416. if(len(username)> 9):
  417. str ="Username inválido, insira um username com 9 ou menos caracteres\n"
  418. return 0, str
  419. else:
  420. str = "Username válido"
  421. return 1, str
  422.  
  423.  
  424. def adiciona_utili(cred,user,password):
  425. cred.update({user:password})
  426. fp = open("client.aut.txt", "w")
  427. for k, v in cred.items():
  428. if k == user:
  429. cred[k] = password
  430. for key in cred.keys():
  431. fp.write(key + " " + cred[key] + "\n")
  432. fp.seek(0, 2)
  433. fp.truncate()
  434. fp.close()
  435.  
  436.  
  437. def adiciona_oper(user):
  438. dicio = leFicheiroOperador()
  439. dicio.update({user:"u"})
  440. fp = open("operadores.txt", 'w+')
  441. for k in dicio.keys():
  442. fp.write(k + " " + dicio[k] + "\n")
  443. fp.close()
  444. fp = open(user +".txt", 'w')
  445. fp.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement