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)
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')
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)
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')
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')
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)
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)
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')