def envArquivo(self, widget, socket): if self.arquivo != '': tamanho = os.path.getsize(self.arquivo_path) ftpclient.guicmd('2', self.arquivo, str(tamanho), self.socket) try: arq = open(self.arquivo_path, "rb") brestantes = int(tamanho) while brestantes > 0: # Leio um pedaço do arquivo # O tamanho do pedaço será o tamanho do meu chunk ou a quantidade de bites restantes do arquivo dados = arq.read(min(MAX, int(brestantes))) self.socket.sendall(dados) brestantes -= len(dados) aux = (float(tamanho)-brestantes)/float(tamanho)*100 #print("Enviando... - "+str(aux)[:3]+"%") print("Enviando... - "+"{0:.2f}".format(aux)+"%", end='\r') arq.close() except Exception as e: print(e) self.socket.recv(MAX) self.constroiListaArquivos() self.show_all()
def constroiListaArquivos(self): self.liststore.clear() ftpclient.guicmd('4', '', '', self.socket) resposta = (self.socket.recv(MAX)).decode() resposta = [x for x in (resposta.split('\n'))[:-1]] if len(resposta) > 0: for r in resposta: temp = r.split(' ') self.liststore.append([temp[0], temp[1], False])
def click(self, widget, socket): if widget.get_label() == "Cadastrar-se": print('Cadastrou') elif widget.get_label() == "Entrar": print('Fez login') endereco = (self.entradaHost.get_text(), int(self.entradaPorta.get_text())) ftpclient.guiconnect(endereco, self.socket) ftpclient.guicmd('1', self.entradaLogin.get_text(), self.entradaSenha.get_text(), self.socket) resposta = (self.socket.recv(MAX)).decode() print(resposta) if 'Login efetuado com sucesso!' in resposta: self.constroiTelaPrincipal() self.constroiJanelaArquivos() self.show_all()
def clickBaixar(self, widget): lista = [] for a in self.liststore: if a[2] == True: lista.append(a[0]) for a in lista: ftpclient.guicmd('3', a, '', self.socket) tamanho = (self.socket.recv(MAX)).decode() tamanho = tamanho.split('\x00')[0] print(tamanho) tamanho = int(tamanho) if tamanho == -1: return brestantes = tamanho brecebidos = 0 try: arq = open('Downloads/'+a, "wb") # Recebe o arquivo em pedaços e salva em outro arquivo while brestantes > 0: dados = self.socket.recv(min(MAX, brestantes)) blidos = len(dados) # Salva os dados recebidos no arquivo criado arq.write(dados) brestantes -= blidos brecebidos += blidos aux = brecebidos/tamanho*100 print("Recebendo... - "+"{0:.2f}".format(aux)+"%", end='\r') arq.close() except Exception as e: print(e) os.remove('Downloads/'+a) self.socket.recv(MAX) self.constroiListaArquivos() self.show_all()
def main(host, port): while (True): # Cria um socket TCP sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setblocking(True) ftpc.guiconnect( (host, port), sock ) global sair logado = False jl = JanelaLogin(sock) jl.connect("delete-event", clientExit, sock) jl.show_all() Gtk.main() logado = jl.logado user = jl.entradaLogin.get_text() senha = jl.entradaSenha.get_text() jl.destroy() if logado: jp = JanelaPrincipal(sock, user, senha) jp.connect("delete-event", clientExit, sock) jp.show_all() Gtk.main() jp.destroy() print(sair) if sair: break else: ftpc.guicmd('5', 'arg1', 'arg2', sock) sock.close() sock.close()
def click(self, widget, socket): if widget.get_label() == "Cadastrar-se": ftpclient.guicmd('6', self.entradaLogin.get_text(), self.entradaSenha.get_text(), self.socket) resposta = (self.socket.recv(ftpclient.MAX)).decode() resposta = resposta.split('\x00')[0] p = PopUp(self, resposta) p.run() p.destroy() elif widget.get_label() == "Entrar": print('Fez login') ftpclient.guicmd('1', self.entradaLogin.get_text(), self.entradaSenha.get_text(), self.socket) resposta = (self.socket.recv(ftpclient.MAX)).decode() resposta = resposta.split('\x00')[0] if 'Login efetuado com sucesso!' in resposta: self.logado = True Gtk.main_quit() else: p = PopUp(self, resposta) p.run() p.destroy()
def thread_put(self, socket): if self.arquivo != '': tamanho = os.path.getsize(self.arquivo_path) ftpclient.guicmd('2', self.arquivo, str(tamanho), self.socket) try: arq = open(self.arquivo_path, "rb") brestantes = int(tamanho) self.barraProg.set_fraction(0.0) while brestantes > 0: # Leio um pedaço do arquivo # O tamanho do pedaço será o tamanho do meu chunk ou a quantidade de bites restantes do arquivo dados = arq.read(min(MAX, int(brestantes))) self.socket.sendall(dados) brestantes -= len(dados) aux = (float(tamanho)-brestantes)/float(tamanho) #print("Enviando... - "+str(aux)[:3]+"%") self.barraProg.set_fraction(aux) print("Enviando... - "+"{0:.2f}".format(aux)+"%", end='\r') arq.close() msg = msg.split('\x00')[0] p = PopUp(self, msg) p.run() self.barraProg.set_fraction(0.0) p.destroy() except Exception as e: print(e) msg = self.socket.recv(MAX).decode() self.constroiListaArquivos() self.show_all()
def clickMenuItem(self, widget): if widget.get_label() == "Sair": Gtk.main_quit() elif widget.get_label() == "Alterar senha": while (True): d = MudaSenhaDialog(self) r = d.run() senha1 = d.senhaEntry.get_text() senha2 = d.senhaEntry2.get_text() d.destroy() if r == Gtk.ResponseType.OK: if senha1 == '' or senha2 == '': p = PopUp(self, 'Preencha todos os campos!') p.run() p.destroy() elif senha1 != senha2: p = PopUp(self, 'As senhas digitadas são diferentes!') p.run() p.destroy() else: ftpclient.guicmd('8', senha1, '', self.socket) resp = self.socket.recv(MAX).decode() resp = resp.split('\x00')[0] p = PopUp(self, resp) p.run() p.destroy() break else: break elif widget.get_label() == "Excluir usuário": d = CertezaDialog(self) r = d.run() d.destroy() if r == Gtk.ResponseType.OK: ftpclient.guicmd('7', self.senha, '', self.socket) resp = self.socket.recv(MAX).decode() resp = resp.split('\x00')[0] p = PopUp(self, resp) p.run() p.destroy() ftpclient.guicmd('5', 'arg1', 'arg2', self.socket) Gtk.main_quit()
def clientExit (self, widget, socket): ftpclient.guicmd('5', 'arg1', 'arg2', self.socket) Gtk.main_quit()
def clientExit (self, widget, socket): ftpc.guicmd('5', 'arg1', 'arg2', self.socket) global sair sair = True Gtk.main_quit()