Exemple #1
0
 def crear_carpeta(self, cliente, mensaje):
     client, padre, codigo, archivo = mensaje
     persona = get_persona(client, 'Servidor')
     archi = persona.archivos
     camino = persona.camino_archivos
     print(type(padre))
     padre2 = None
     if type(padre) == type(str()):
         padre = persona.archivos.obtener_nodo_nombre(padre)
         print('Este es el padre', padre)
         padre2 = padre.id_nodo
     else:
         padre2 = padre
     print('Creando Carpeta')
     print(archivo.nombre)
     nuevo_id = get_persona('contadorid', 'Servidor')
     archi.agregar_nodo(nuevo_id.cant_guardado,
                        archivo.nombre,
                        valor=None,
                        id_padre=padre2)
     camino.agregar_nodo(nuevo_id.cant_guardado,
                         archivo.nombre,
                         valor='013',
                         id_padre=padre2)
     write_persona(persona, 'Servidor')
     write_persona(nuevo_id, 'Servidor')
     print('nuevo archivo')
     self.actualizar_layout(cliente, client)
Exemple #2
0
 def identificar(self, cliente):
     while cliente[1] is False:
         while self.connection and cliente[1] is False:
             data = cliente[0].recv(1024)
             mensaje = data.decode('utf-8')
             if mensaje.split(': ')[1] == 'quit':
                 self.clientes.remove(cliente[0])
                 cliente[1] = True
             else:
                 s_cliente, codigo, usuario, clave = mensaje.split(':')
                 if codigo == ' 005':
                     print('aqui')
                     if existe_persona(usuario, 'Servidor'):
                         persona = get_persona(usuario, 'Servidor')
                         password, salt = persona.clave.split(':')
                         if password == hashlib.sha256(
                                 salt.encode() +
                                 clave.encode()).hexdigest():
                             cliente[1] = True
                             print('clave correcta')
                             thread_mensajes = threading.Thread(
                                 target=self.recibir_mensajes,
                                 args=(cliente[0], ))
                             thread_mensajes.daemon = True
                             thread_mensajes.start()
                             persona = get_persona(usuario, 'Servidor')
                             camino = persona.camino_archivos
                             msj_final = [self.usuario, '014', camino]
                             pick = pickle.dumps(msj_final)
                             c = self.clientes.index(cliente[0])
                             print(c)
                             self.clientes[int(c)].sendall(
                                 '{}: 014:{}'.format(
                                     self.usuario,
                                     str(len(pick))).encode('utf-8'))
                             self.clientes[int(c)].sendall(pick)
                             self.enviar(cliente[0],
                                         '002: {}'.format(usuario))
                             self.conectados.append(usuario)
                             self.enviar_a_todos()
                         else:
                             self.enviar(cliente[0], '001')
                             print('clave incorrecta')
                     else:
                         self.enviar(cliente[0], '001')
                 elif codigo == ' 003':
                     print('Creando')
                     if existe_persona(usuario, 'Servidor'):
                         self.enviar(cliente[0], '004')
                     else:
                         salt = uuid.uuid4().hex
                         # salt = str(os.urandom(16))
                         clave_encriptada = hashlib.sha256(
                             salt.encode() +
                             clave.encode()).hexdigest() + ':' + salt
                         crear_persona(usuario, usuario, clave_encriptada,
                                       'Servidor')
                         self.enviar(cliente[0], '006')
     print('Acaa')
Exemple #3
0
 def actualizar_layout(self, cliente, client):
     c = self.clientes.index(cliente)
     print(c)
     persona1 = get_persona(client, 'Servidor')
     camino1 = persona1.camino_archivos
     msj_final2 = [self.usuario, '014', camino1]
     pick2 = pickle.dumps(msj_final2)
     self.clientes[int(c)].sendall('{}: 014:{}'.format(
         self.usuario, str(len(pick2))).encode('utf-8'))
     self.clientes[int(c)].sendall(pick2)
Exemple #4
0
 def comprobar_cambios(self):
     if existe_persona(self.usuario, 'Cliente'):
         persona = get_persona(self.usuario, 'Cliente')
         print('archivo usuario:', persona.archivos.nombre)
         print(persona.archivos.hijos)
         print(persona.archivos)
         for i in persona.archivos.hijos:
             print('a revisar')
             self.revisar_archivos(i)
     else:
         crear_persona(self.usuario, self.usuario, '', 'Cliente')
Exemple #5
0
 def comprobar_cambios(self):
     if existe_persona(self.usuario, 'Cliente'):
         persona = get_persona(self.usuario, 'Cliente')
         print('archivo usuario:',persona.archivos.nombre)
         print(persona.archivos.hijos)
         print(persona.archivos)
         for i in persona.archivos.hijos:
             print('a revisar')
             self.revisar_archivos(i)
     else:
         crear_persona(self.usuario, self.usuario,'','Cliente')
Exemple #6
0
 def botonnueva_carpeta(self):
     fileName = QFileDialog.getExistingDirectory(self, 'Escoger Carpeta', QDir.rootPath())
     if fileName:
         self.enviar_carpeta(fileName)
         persona=get_persona(self.cliente.usuario,'Cliente')
         print('Esta es la carpeta:',fileName)
         nombrecarpeta=fileName.split('\\')
         persona.archivos.agregar_nodo(fileName,fileName,valor='013',id_padre=None)
         self.mandar_todo_carpeta(fileName,persona.archivos,nombrecarpeta[-1])
         print(persona.archivos)
         lista=self.agregar_carpeta(fileName)
         for i in range(len(lista)):
             persona.archivos.agregar_nodo(lista[i][0],lista[i][0],lista[i][1],lista[i][2])
         print(lista)
         write_persona(persona,'Cliente')
         self.statusBar().showMessage('Listo')
         print(fileName)
Exemple #7
0
 def botonnueva_carpeta(self):
     fileName = QFileDialog.getExistingDirectory(self, 'Escoger Carpeta',
                                                 QDir.rootPath())
     if fileName:
         self.enviar_carpeta(fileName)
         persona = get_persona(self.cliente.usuario, 'Cliente')
         print('Esta es la carpeta:', fileName)
         nombrecarpeta = fileName.split('\\')
         persona.archivos.agregar_nodo(fileName,
                                       fileName,
                                       valor='013',
                                       id_padre=None)
         self.mandar_todo_carpeta(fileName, persona.archivos,
                                  nombrecarpeta[-1])
         print(persona.archivos)
         lista = self.agregar_carpeta(fileName)
         for i in range(len(lista)):
             persona.archivos.agregar_nodo(lista[i][0], lista[i][0],
                                           lista[i][1], lista[i][2])
         print(lista)
         write_persona(persona, 'Cliente')
         self.statusBar().showMessage('Listo')
         print(fileName)
Exemple #8
0
    def recibir_mensajes(self, cliente):
        salir = True
        while self.connection and salir is True:
            print('En recibir mensajes')
            data = cliente.recv(1024)
            mensaje = data.decode('utf-8')
            if mensaje.split(': ')[1] == 'quit':
                self.clientes.remove(cliente)
                self.conectados.remove(mensaje.split(': ')[0])
                self.enviar_a_todos()
                salir = False
            else:
                s_cliente, codigo, largo = mensaje.split(':')
                if codigo == ' 009':
                    data = b''
                    l = int(largo)
                    while l > 0:
                        d = cliente.recv(l)
                        l -= len(d)
                        data += d
                    mensaje = pickle.loads(data)
                    self.crear_archivo(cliente, mensaje)

                elif codigo == ' 011':
                    data = b''
                    l = int(largo)
                    while l > 0:
                        d = cliente.recv(l)
                        l -= len(d)
                        data += d
                    mensaje = pickle.loads(data)
                    self.crear_carpeta(cliente, mensaje)
                elif codigo == ' 015':
                    data = b''
                    l = int(largo)
                    while l > 0:
                        d = cliente.recv(l)
                        l -= len(d)
                        data += d
                    mensaje = data.decode('utf-8')
                    idnodo, path = mensaje.split(',')
                    c = self.clientes.index(cliente)
                    persona1 = get_persona(s_cliente, 'Servidor')
                    print('aqui buscando nodo')
                    archivo = persona1.archivos.obtener_nodo(int(idnodo))
                    print(archivo)
                    msj_final = [self.usuario, '010', path, archivo.valor]
                    pick = pickle.dumps(msj_final)
                    print(c)
                    self.clientes[int(c)].sendall('{}: 010:{}'.format(
                        self.usuario, str(len(pick))).encode('utf-8'))
                    self.clientes[int(c)].sendall(pick)
                    print('{}: 010:{}'.format(self.usuario, len(pick)))
                elif codigo == ' 016':
                    persona1 = get_persona(s_cliente, 'Servidor')
                    try:
                        largo = int(largo)
                    except:
                        pass
                    if type(largo) == type(str()):
                        padre2 = persona1.archivos.obtener_nodo_nombre(largo)
                    else:
                        padre2 = persona1.archivos.obtener_nodo(int(largo))
                    self.borrar_archivo(persona1, padre2, cliente, s_cliente)
                    print('s_cliente', s_cliente)
            print(mensaje)
            print('conectado')