示例#1
0
  def Run(self, args):
    """Delete all the GRR temp files in path.

    If path is a directory, look in the top level for filenames beginning with
    Client.tempfile_prefix, and delete them.

    If path is a regular file and starts with Client.tempfile_prefix delete it.

    Args:
      args: pathspec pointing to directory containing temp files to be
            deleted, or a single file to be deleted.
    Returns:
      deleted: array of filename strings that were deleted
    Raises:
      ErrorBadPath: if path doesn't exist or is not a regular file or directory
    """

    # Normalize the path, so DeleteGRRTempFile can correctly check if
    # it is within Client.tempdir.
    if args.path:
      path = client_utils.CanonicalPathToLocalPath(
          utils.NormalizePath(args.path))
    else:
      path = config_lib.CONFIG["Client.tempdir"]

    deleted = []
    if os.path.isdir(path):
      for filename in os.listdir(path):
        abs_filename = os.path.join(path, filename)

        try:
          DeleteGRRTempFile(abs_filename)
          deleted.append(abs_filename)
        except ErrorNotTempFile:
          pass

    elif os.path.isfile(path):
      DeleteGRRTempFile(path)
      deleted = [path]

    elif not os.path.exists(path):
      raise ErrorBadPath("File %s does not exist" % path)
    else:
      raise ErrorBadPath("Not a regular file or directory: %s" % path)

    out_rdfvalue = rdfvalue.LogMessage(data="Deleted: %s" % deleted)
    self.SendReply(out_rdfvalue)
示例#2
0
    def testHandleMessage(self):
        """Test handling of a normal request with a response."""
        args = rdfvalue.LogMessage(data="hello")
        # Push a request on it
        message = rdfvalue.GrrMessage(
            name="MockAction",
            session_id=self.session_id,
            auth_state=rdfvalue.GrrMessage.AuthorizationState.AUTHENTICATED,
            payload=args,
            request_id=1)

        self.context.HandleMessage(message)

        # Check the response - one data and one status

        message_list = self.context.Drain().job

        self.assertEqual(message_list[0].session_id, self.session_id)
        self.assertEqual(message_list[0].response_id, 1)
        self.assert_("hello" in message_list[0].args)
        self.assertEqual(message_list[1].response_id, 2)
        self.assertEqual(message_list[1].type, rdfvalue.GrrMessage.Type.STATUS)
示例#3
0
 def MockSendReply(unused_self, reply=None, **kwargs):
     results.append(reply or rdfvalue.LogMessage(**kwargs))