def rawDataReceived(self, data): filename = self.file_data[0] file_path = os.path.join(self.factory.files_path, filename) print 'Receiving file chunk (%d KB)' % (len(data)) if not self.file_handler: self.file_handler = open(file_path, 'wb') if data.endswith('\r\n'): # Last chunk data = data[:-2] self.file_handler.write(data) self.setLineMode() self.file_handler.close() self.file_handler = None if validate_file_md5_hash(file_path, self.file_data[1]): print 'File %s has been successfully transfered and saved' % (filename) else: os.unlink(file_path) print 'File %s has been successfully transfered, but deleted due to invalid MD5 hash' % (filename) else: self.file_handler.write(data)
def rawDataReceived(self, data): filename = self.file_data[0] file_path = os.path.join(self.factory.files_path, filename) display_message('Receiving file chunk (%d KB)' % (len(data))) if not self.file_handler: self.file_handler = open(file_path, 'wb') if data.endswith('\r\n'): # Last chunk data = data[:-2] self.file_handler.write(data) self.setLineMode() self.file_handler.close() self.file_handler = None self.transport.loseConnection() if validate_file_md5_hash(file_path, self.file_data[1]): self.transport.write('put-ok\n') display_message('File %s has been successfully transfered' % (filename)) else: os.unlink(file_path) self.transport.write('put-fail\n') display_message('File %s has been successfully transfered, but deleted due to invalid MD5 hash' % (filename)) else: self.file_handler.write(data)
def rawDataReceived(self, data): filename = self.file_data[0] file_path = os.path.join(self.factory.files_path, filename) print 'Receiving file chunk (%d KB)' % (len(data)) if not self.file_handler: self.file_handler = open(file_path, 'wb') if data.endswith('\r\n'): # Last chunk data = data[:-2] self.file_handler.write(data) self.setLineMode() self.file_handler.close() self.file_handler = None print 'gen hash:', get_file_md5_hash(file_path) print 'rcv hash:', self.file_data[1] if validate_file_md5_hash(file_path, self.file_data[1]): print 'File %s has been successfully transfered and saved' % (filename) try: self.factory.client.process_restore_folder() except AttributeError: return else: os.unlink(file_path) print 'File %s has been successfully transfered, but deleted due to invalid MD5 hash' % (filename) self.transport.loseConnection() else: self.file_handler.write(data)
def rawDataReceived(self, data): filename = self.file_data[0] file_path = os.path.join(self.factory.files_path, filename) display_message('%s : Receiving file chunk (%d KB)' % (self.nick,len(data))) log_message('%s : Receiving file chunk (%d KB)' % (self.nick,len(data)),self.factory.log) if not self.file_handler: self.file_handler = open(file_path, 'wb') if data.endswith('\r\n'): # Last chunk data = data[:-2] self.file_handler.write(data) self.setLineMode() self.file_handler.close() self.file_handler = None if validate_file_md5_hash(file_path, self.file_data[1]): self.transport.write('File was successfully transfered and saved\n') self.transport.write('ENDMSG\n') display_message('%s : File %s has been successfully transfered' % (self.nick,filename)) log_message('%s : File %s has been successfully transfered' % (self.nick,filename),self.factory.log) else: os.unlink(file_path) self.transport.write('File was successfully transfered but not saved, due to invalid MD5 hash\n') self.transport.write('ENDMSG\n') display_message('%s : File %s has been successfully transfered, but deleted due to invalid MD5 hash' % (self.nick,filename)) log_message('%s File %s has been successfully transfered, but deleted due to invalid MD5 hash' % (self.nick,filename),self.factory.log) else: self.file_handler.write(data)
def rawDataReceived(self, data): filename = self.file_data[0] file_path = os.path.join(self.factory.files_path, filename) display_message('Receiving file chunk (%d KB)' % (len(data))) if not self.file_handler: self.file_handler = open(file_path, 'wb') if data.endswith('\r\n'): # Last chunk data = data[:-2] self.file_handler.write(data) self.setLineMode() self.file_handler.close() self.file_handler = None if validate_file_md5_hash(file_path, self.file_data[1]): print 'md5 Validate Passed for file: %s' % file_path if filename in new_files and new_files[filename][0].verify(self.file_data[1],self.file_data[2]): self.transport.write('Successful Transfer\n') self.transport.write('ENDMSG\n') display_message('File %s has been successfully transfered' % (filename)) self.factory.message_siblings(new_files[filename][2], ('FILESENT', filename)) del new_files[filename] else: display_message('Public Key Signature not valid') self.transport.write('Invalid Public Key Signature\n') else: os.unlink(file_path) self.transport.write('File was successfully transfered but not saved, due to invalid MD5 hash\n') self.transport.write('ENDMSG\n') display_message('File %s has been successfully transfered, but deleted due to invalid MD5 hash' % (filename)) else: self.file_handler.write(data)
def rawDataReceived(self, data): filename = self.file_data[0] file_path = os.path.join(self.factory.files_path, filename) display_message('Receiving file chunk (%d KB)' % (len(data))) if not self.file_handler: self.file_handler = open(file_path, 'wb') if data.endswith('\r\n'): # Last chunk data = data[:-2] self.file_handler.write(data) self.setLineMode() self.file_handler.close() self.file_handler = None if validate_file_md5_hash(file_path, self.file_data[1]): self.transport.write('File was successfully transfered and saved\n') self.transport.write('ENDMSG\n') display_message('File %s has been successfully transfered' % (filename)) else: os.unlink(file_path) self.transport.write('File was successfully transfered but not saved, due to invalid MD5 hash\n') self.transport.write('ENDMSG\n') display_message('File %s has been successfully transfered, but deleted due to invalid MD5 hash' % (filename)) else: self.file_handler.write(data)
def rawDataReceived(self, data): key = "%s:%s" % (str( self.transport.getPeer().host), str(self.transport.getPeer().port)) if not self.file_data.has_key(key): return filename = self.file_data[key]['filename'] timeStamp = time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime()) if not self.file_data[key].has_key('id'): file_path = os.path.join(self.factory.files_path, "%s_%s" % (timeStamp, filename)) else: path_tmp = os.path.join(self.factory.files_path, "Log", str(self.file_data[key]['id'])) if not os.path.isdir(path_tmp): os.mkdir(path_tmp) file_path = os.path.join(path_tmp, "%s_%s" % (timeStamp, filename)) display_message( self.prv_logger, 'Receiving file chunk (%d KB) from (%s)' % (len(data) / 1024, key)) if not self.file_data[key].has_key( 'file_handler') and not self.file_data[key].has_key( 'file_path'): self.file_data[key]['file_handler'] = open(file_path, 'wb') self.file_data[key]['file_path'] = file_path if data.endswith('\r\r\r\r\n'): # Last chunk data = data[:-2] self.file_data[key]['file_handler'].write(data) self.setLineMode() self.file_data[key]['file_handler'].close() #self.file_data[key]['file_handler'] = None file_path = self.file_data[key]['file_path'] file_hash = self.file_data[key]['file_hash'] del self.file_data[key] #self.file_data[key]['file_path'] = None if validate_file_md5_hash(file_path, file_hash): self.transport.write( 'File was successfully transfered and saved\n') self.transport.write('put_done\n') self.transport.write('ENDMSG\n') display_message( self.prv_logger, 'File %s has been successfully transfered' % (filename)) else: #os.unlink(file_path) self.transport.write( 'File was successfully transfered but not saved, due to invalid MD5 hash\n' ) self.transport.write('put_done\n') self.transport.write('ENDMSG\n') display_message( self.prv_logger, 'File %s has been successfully transfered, but deleted due to invalid MD5 hash' % (filename)) else: self.file_data[key]['file_handler'].write(data)