def fazLogin(con): # recepcao dos dados login = con.recv(1024) con.send('OK') senha = con.recv(1024) # validacao dos dados conexao = getConexao() cursor = conexao.cursor() cursor.execute('select senha from usuario where login = %s', (login,)) res = cursor.fetchall() conexao.close() #retorno ao cliente if len(res) == 0: con.send(LOGIN_USUARIO_INCORRETO) con.recv(1024) #aguarda ok do cliente elif res[0][0] != senha: con.send(LOGIN_SENHA_INCORRETA) con.recv(1024) #aguarda ok do cliente else: con.send(LOGIN_OK) con.recv(1024) #aguarda ok do cliente atualizaIp(con.getpeername()[0], login)#atualiza IP do cliente no banco de dados atualizaPresenca(login, STATUS_ONLINE)#atualiza o status do cliente return login #devolve o login para a thread return None #se nao fizer login, devolve nada para athread
def atualizaPresenca(login, status): sql = """update usuario set status = %s where login = %s""" conexao = getConexao() cursor = conexao.cursor() cursor.execute(sql, (status,login,)) conexao.commit() conexao.close()
def addContato(login, contato): sql = """select * from usuario where login = %s""" conexao = getConexao() loginId = conexao.cursor() loginId.execute(sql, (login,)) contatoId = conexao.cursor() contadoId.execute(sql, (contato,)) sql = """insert into contato (usuario_id, amigo_id) values (%s, %s)""" # TODO: daqui meu SQL eh muito enferrujado pra continuar conexao.commit() conexao.close()
def getListaContatos(login): contatos = [] #busca a lista de contatos (apenas os que estao online) no BD sql = """select u.login, u.ip, u.status from contato c inner join usuario u on u.id = c.amigo_id where c.usuario_id = (select id from usuario where login = %s) and u.status = 1""" conexao = getConexao() cursor = conexao.cursor() cursor.execute(sql,(login,)) for contato in cursor: c = {} c['nome'] = contato[0] c['ip'] = contato[1] contatos.append(c) conexao.close() return contatos
def atualizaIp(ip, login): conexao = getConexao() cursor = conexao.cursor() cursor.execute('update usuario set ip = %s where login = %s', (ip,login,)) conexao.commit() conexao.close()