def generate_data(self): if self.IS_COMMAND_RESTORED and not self._command_restored_request_sended: self._command_restored_request_sended = True self._load_client_data() if self._file_writer.start_file_size <= _config.package_size: start_from = 0 else: start_from = self._file_writer.start_file_size - _config.package_size self._file_writer.seek(start_from) return generate_packet(CommandIds.DOWNLOAD_COMMAND_ID, ErrorIds.DOWNLOAD_START_FROM, str(start_from)) if self._raise_finished: self._file_writer.close() delete_client_data() print("Download finished") print('time spent: %4fs' % (time.time() - self._start_time)) raise CommandFinished if self._send_approve: self._raise_finished = True return generate_packet(CommandIds.DOWNLOAD_COMMAND_ID, ErrorIds.DOWNLOAD_SUCCESSFUL, "") if self._generate_request_package: self._generate_request_package = False return generate_packet(CommandIds.DOWNLOAD_COMMAND_ID, 0, self._server_file_path) else: return None
def generate_data(self): if self._raise_command_finished: raise CommandFinished if self._send_response_flag: self._send_response_flag = False if self._session_reactivated: self.session_instance.command = self._reactivated_session.command LOG.info('Client %s:%d: logical connection restored' % self.session_instance.client_address) return generate_packet(CommandIds.CONNECT_COMMAND_ID, ErrorIds.CONNECT_SESSION_REACTIVATION, "") self._raise_command_finished = True LOG.info('Client %s:%d: logical connection established' % self.session_instance.client_address) return generate_packet(CommandIds.CONNECT_COMMAND_ID, ErrorIds.SUCCESSFUL, "") return None
def generate_data(self): if self._raise_command_finished: raise CommandFinished self._raise_command_finished = True return generate_packet(CommandIds.TIME_COMMAND_ID, ErrorIds.SUCCESSFUL, str(time.ctime()))
def generate_data(self): if self._wait_for_approve: return if self._send_pointer_moved: self._send_pointer_moved = False return generate_packet(CommandIds.DOWNLOAD_COMMAND_ID, ErrorIds.DOWNLOAD_POINTER_MOVED, "") if self._raise_command_finished: raise CommandFinished if self._send_error: self._raise_command_finished = True return generate_packet(CommandIds.DOWNLOAD_COMMAND_ID, ErrorIds.ERROR, "File not found") # print("{}/{}".format(self._sended_bytes, self._file_size)) if self._generate_first_packet: print("Generate download data") self._generate_first_packet = False header = generate_header(CommandIds.DOWNLOAD_COMMAND_ID, ErrorIds.SUCCESSFUL, self._file_size) if self._file_size + len(header) <= _config.package_size: package = header + self._file_descriptor.read() package = package + bytes(_config.package_size - len(package)) self._wait_for_approve = True return package else: self._sended_bytes += _config.package_size - len(header) package = header + self._file_descriptor.read( _config.package_size - len(header)) return package else: read_data = self._file_descriptor.read(_config.package_size) self._sended_bytes += len(read_data) if len(read_data) < _config.package_size: self._wait_for_approve = True return read_data + bytes(_config.package_size - len(read_data)) else: return read_data
def _initialize(self, args_line): super()._initialize(args_line) self._send_request = True self._finish = False session = SessionManager().get_all_not_inactive_sessions()[0] client_uuid = session.client_uuid self._request = generate_packet(self.get_command_id(), ErrorIds.SUCCESSFUL, client_uuid) session.status = SessionStatus.wait_for_close
def generate_data(self): if self._generate_next: self._generate_next = False client_data = load_client_data() if client_data: LOG.info( 'Last session was ended inappropriately. Trying to restore session' ) self._client_uuid = client_data['uuid'] self._need_reactivation = True else: self._client_uuid = str(uuid.uuid4()) return generate_packet(CommandIds.CONNECT_COMMAND_ID, 0, self._client_uuid) else: return None
def generate_data(self): if self._generate_next: self._generate_next = False return generate_packet(CommandIds.TIME_COMMAND_ID, 0, "") else: return None