Example #1
0
    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)
Example #2
0
	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)
Example #3
0
	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)
Example #4
0
	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)
Example #5
0
	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)
Example #6
0
	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)
Example #7
0
    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)