Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- from _thread import *
- import sys, errno
- Buffer_size = 1024
- def conta_msg_nlidas(s, user):
- fp = open((user + ".txt"), "r")
- data = [line.strip() for line in fp]
- msg = []
- for c in data:
- msg.append(c.split())
- msg_lidas = []
- msg_total = []
- conta=0
- for c in msg:
- msg_total.append(c)
- if c[2] == "0":
- msg_lidas.append(c)
- conta += 1
- try:
- s.send(str(conta).encode())
- except IOError:
- print("Cliente off")
- def recebe_nlidas(s):
- conta=(s.recv(Buffer_size)).decode()
- print("********TEM",conta,"MENSAGENS NAO LIDAS**********")
- def ler_ficheiro():
- file = open("client.aut.txt", 'r')
- uti = dict()
- for line in file:
- linha = line.split()
- uti.update({linha[0]: linha[1]})
- file.close()
- return uti
- def multiplasMensagens(lista, emissor, msg):
- for i in range(len(lista)):
- fp = open(str(lista[i]) + ".txt", 'a')
- fp.write(str(emissor) + ' ' + lista[i] + ' ' + '0' + ' ' + str(msg) + '\n')
- print("E-mail enviado de " + emissor + " para " + lista[i])
- fp.close()
- def lista_users(client, dic):
- lista = []
- for c in dic.keys():
- lista.append(c)
- users = json.dumps(lista)
- client.send(users.encode())
- def tornaOperador(dic, s, user):
- conta = 0
- for k, v in dic.items():
- if k == user and dic[k] == "o":
- str = "O utilizador ja e Operador do sistema"
- return 0, str
- elif k == user and dic[k] == "u":
- dic[k] = "o"
- conta += 1
- if conta == 0:
- str = "operador não existe"
- return 0,str
- fp = open("operadores.txt", 'w+')
- for k in dic.keys():
- fp.write(k + " " + dic[k] + "\n")
- fp.close()
- if conta == 1:
- str = "O utilizador " + user + " foi adicionado como Operador do sistema"
- s.send(str.encode())
- return 1, str
- def verificaAdmin(username, dic):
- conta = 0
- for k in dic.keys():
- if k == username and dic[k] == "o":
- conta += 1
- if conta == 1:
- return 1, dic
- else:
- return 0, dic
- def leFicheiroOperador():
- fp = open("operadores.txt", 'r+')
- uti = dict()
- for line in fp:
- linha = line.split()
- novo = {linha[0]: linha[1]}
- uti.update(novo)
- fp.close()
- return uti
- def lista_users_client(server):
- data = (server.recv(Buffer_size))
- data_arr = json.loads(data.decode())
- print("Cliente Autorizados:\n")
- for c in data_arr:
- print(c)
- def return_menu():
- a = 1
- while a:
- opcao = input("\n\nVoltar ao menu (1) Ou sair(0)?")
- if opcao.isdigit() and (opcao == "1" or opcao == "0"):
- a = 0
- return opcao
- def check_client(client, cred):
- lista = []
- for i in range(2):
- msg = client.recv(Buffer_size).decode()
- lista.append(msg)
- if cred.get(lista[0]) == lista[1]:
- client.send("1".encode())
- return lista[0], 1
- else:
- client.send("0".encode())
- return lista[0], 0
- def alteraPass(s):
- a = True
- while a:
- nova_password = input("Nova Password:\n")
- if len(nova_password) <= 3:
- print("Password demasiado pequena\n")
- else:
- a = False
- nova_password=nova_password[::-1]
- s.send(nova_password.encode())
- print((s.recv(Buffer_size)).decode())
- def altera_password(dicio, user, s):
- fp = open("client.aut.txt", "w")
- password = (s.recv(Buffer_size)).decode()
- for k, v in dicio.items():
- if k == user:
- dicio[k] = password
- for key in dicio.keys():
- fp.write(key + " " + dicio[key] + "\n")
- fp.seek(0, 2)
- fp.truncate()
- fp.close()
- nova = "A sua palavra passe foi alterada para " + password[::-1]
- s.send(nova.encode())
- def verifica_user(cred, s): #envia lista com os usernames
- s.send(str((len(cred))).encode())
- lista = []
- for c in cred.keys():
- lista.append(c)
- users = json.dumps(lista)
- s.send(users.encode())
- check = (s.recv(Buffer_size)).decode()
- users = (s.recv(Buffer_size)).decode()
- data = json.loads(users)
- if check == "1":
- return 0, data
- else:
- return 1, None
- def pede_utilizadores(s):
- tam = (s.recv(Buffer_size)).decode()
- a = 1
- lista = []
- while a:
- opcao = input("Quantos destinatários deseja adicionar, sendo que existem " + tam + "\n")
- if opcao.isdigit() and (1 <= int(opcao) <= int(tam)):
- a = 0
- a = 1
- for i in range(int(opcao)):
- a = 1
- while a:
- novo = input("Destinatário " + str(i + 1) + "\n")
- if novo in lista:
- print("Destinario já inserido")
- a=1
- else:
- lista.append(novo)
- a = 0
- return lista
- def altera_lidas(s, user):
- fp = open((user + ".txt"), "r")
- data = [line.strip() for line in fp]
- msg = []
- for c in data:
- msg.append(c.split())
- msg_lidas = []
- for c in msg:
- c[2]="1"
- fp.close()
- nova=[]
- for c in msg:
- nova.append(" ".join(str(x) for x in c))
- fp = open((user + ".txt"), "w")
- for item in nova:
- fp.write("%s\n" % item)
- fp.close()
- def le_mensagens_lidas(s,user):
- fp = open((user+".txt"),"r")
- data = [line.strip() for line in fp]
- msg = []
- for c in data:
- msg.append(c.split())
- msg_lidas = []
- for c in msg:
- if c[2] == "1":
- msg_lidas.append(c)
- s.send(str(len(msg_lidas)).encode())
- final = []
- for c in msg_lidas:
- nova = []
- nova.append("Remetente: "+c[0])
- text = "Mensagem: "
- for i in range(3,len(c)):
- if i == (len(c)-1):
- text = text + c[i]
- else:
- text = text+c[i]+" "
- nova.append(text)
- final.append(nova)
- mensagens = json.dumps(final)
- s.send(mensagens.encode())
- fp.close()
- def le_mensagens_nlidas(s, user):
- fp = open((user+".txt"),"r")
- data = [line.strip() for line in fp]
- msg = []
- for c in data:
- msg.append(c.split())
- msg_lidas = []
- for c in msg:
- if c[2] == "0":
- msg_lidas.append(c)
- s.send(str(len(msg_lidas)).encode())
- print(msg_lidas)
- final = []
- for c in msg_lidas:
- nova = list()
- nova.append("Remetente: "+c[0])
- text = "Mensagem: "
- for i in range(3, len(c)):
- if i == (len(c)-1):
- text = text + c[i]
- else:
- text = text+c[i]+" "
- nova.append(text)
- final.append(nova)
- mensagens = json.dumps(final)
- s.send(mensagens.encode())
- fp.close()
- def le_mesagens_client(s):
- a = (s.recv(Buffer_size)).decode()
- conta = int(a)
- print(conta)
- mens = json.loads(s.recv(Buffer_size).decode())
- for c in mens:
- print(c[0])
- print(c[1])
- def verifica_user_client(s):
- lista = pede_utilizadores(s)
- users = (s.recv(Buffer_size)).decode()
- data = json.loads(users) #recebe a lista de usernames
- for c in lista:
- if c not in data:
- print(c, " nao existente")
- s.send("0".encode())
- return 1
- s.send("1".encode())
- users = json.dumps(lista)
- s.send(users.encode())
- return 0
- def verifica_user(cred, s): #envia lista com os usernames
- s.send(str((len(cred))).encode())
- lista = []
- for c in cred.keys():
- lista.append(c)
- users = json.dumps(lista)
- s.send(users.encode())
- check = (s.recv(Buffer_size)).decode()
- if check == "1":
- users = (s.recv(Buffer_size)).decode()
- data = json.loads(users)
- return 0, data
- else:
- return 1, None
- def pedeMensagem(s):
- mensagem =input("Mensagem:\n")
- s.send(mensagem.encode())
- def verifica_user_client(s):
- lista = pede_utilizadores(s)
- users = (s.recv(Buffer_size)).decode()
- data = json.loads(users) #recebe a lista de usernames
- for i in range(len(lista)):
- if lista[i] not in data:
- print(lista[i], " nao existente")
- s.send("0".encode())
- return 1
- s.send("1".encode())
- users = json.dumps(lista)
- s.send(users.encode())
- return 0
- def mostra_mensagens_lidas(s, user):
- fp = open((user+".txt"), "r")
- data = [line.strip() for line in fp]
- msg= []
- for c in data:
- msg.append(c.split())
- msg_lidas = []
- msg_total = []
- for c in msg:
- msg_total.append(c)
- if c[2] == "1":
- msg_lidas.append(c)
- s.send(str(len(msg_lidas)).encode())
- final = []
- j = 0
- for c in msg_lidas:
- nova = []
- nova.append(str(j))
- nova.append(c[0])
- text = ""
- for i in range(3,len(c)):
- if i == (len(c)-1):
- text = text + c[i]
- else:
- text = text+c[i]+" "
- nova.append(text)
- final.append(nova)
- j += 1
- mensagens = json.dumps(final)
- s.send(mensagens.encode())
- mens = int((s.recv(Buffer_size)).decode())
- print("Apagar mensagem", mens)
- apagar = msg_lidas[mens]
- fp = open((user + ".txt"), "r")
- data = [line.strip() for line in fp]
- msg = []
- for c in data:
- msg.append(c.split())
- msg_lidas = []
- fp.close()
- nova = []
- for c in msg:
- if c != apagar:
- nova.append(" ".join(str(x) for x in c))
- fp = open((user + ".txt"), "w")
- for item in nova:
- fp.write("%s\n" % item)
- fp.close()
- def le_mes_client(s): #usar no apagar mensagens
- a=(s.recv(Buffer_size)).decode()
- conta = int(a)
- print(conta)
- mens = json.loads(s.recv(Buffer_size).decode())
- for c in mens:
- print("Mensagem numero:", c[0])
- print("Remetente:", c[1])
- print("Mensagem:", c[2], "\n")
- b = True
- while b:
- opcao = input("Qual a mensagem que deseja apagar:\n")
- if opcao.isdigit() and 0 <= int(opcao) <= (conta-1):
- b = False
- s.send(opcao.encode())
- def pedeNovoUtilizador(s):
- user = input("Username:")
- s.send(user.encode())
- password = input("Password:")
- password = password[::-1]
- s.send(password.encode())
- def verificaNovoUtilizador(username):
- if(len(username)> 9):
- str ="Username inválido, insira um username com 9 ou menos caracteres\n"
- return 0, str
- else:
- str = "Username válido"
- return 1, str
- def adiciona_utili(cred,user,password):
- cred.update({user:password})
- fp = open("client.aut.txt", "w")
- for k, v in cred.items():
- if k == user:
- cred[k] = password
- for key in cred.keys():
- fp.write(key + " " + cred[key] + "\n")
- fp.seek(0, 2)
- fp.truncate()
- fp.close()
- def adiciona_oper(user):
- dicio = leFicheiroOperador()
- dicio.update({user:"u"})
- fp = open("operadores.txt", 'w+')
- for k in dicio.keys():
- fp.write(k + " " + dicio[k] + "\n")
- fp.close()
- fp = open(user +".txt", 'w')
- fp.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement