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()
Exemple #4
0
    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()
Exemple #5
0
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()
Exemple #6
0
    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()
Exemple #7
0
    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()
Exemple #8
0
    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()  
Exemple #10
0
def clientExit (self, widget, socket):
    ftpc.guicmd('5', 'arg1', 'arg2', self.socket)
    global sair
    sair = True
    Gtk.main_quit()