예제 #1
0
파일: hunt_view.py 프로젝트: zzzzpaul/grr
    def Layout(self, request, response):
        """Display the overview."""
        if not self.hunt_id:
            self.hunt_id = request.REQ.get("hunt_id")

        h = dict(main="ManageHuntsClientView", hunt_id=self.hunt_id)
        self.hash = urllib.urlencode(sorted(h.items()))
        self.data = {}
        self.args_str = ""

        if self.hunt_id:
            try:
                self.hunt = aff4.FACTORY.Open(self.hunt_id,
                                              aff4_type="GRRHunt",
                                              token=request.token)

                if self.hunt.state.Empty():
                    raise IOError("No valid state could be found.")

                hunt_stats = self.hunt.state.context.usage_stats
                self.cpu_sum = "%.2f" % hunt_stats.user_cpu_stats.sum
                self.net_sum = hunt_stats.network_bytes_sent_stats.sum

                (self.all_clients_count, self.completed_clients_count,
                 _) = self.hunt.GetClientsCounts()
                self.outstanding_clients_count = (self.all_clients_count -
                                                  self.completed_clients_count)

                runner = self.hunt.GetRunner()
                self.hunt_name = runner.args.hunt_name
                self.hunt_creator = runner.context.creator

                self.data = py_collections.OrderedDict()
                self.data["Start Time"] = runner.context.start_time
                self.data["Expiry Time"] = runner.context.expires
                self.data["Status"] = self.hunt.Get(self.hunt.Schema.STATE)

                self.client_limit = runner.args.client_limit
                self.client_rate = runner.args.client_rate

                self.args_str = renderers.DictRenderer(
                    self.hunt.state, filter_keys=["context"]).RawHTML(request)

                if runner.args.regex_rules:
                    self.regex_rules = foreman.RegexRuleArray(
                        runner.args.regex_rules).RawHTML(request)
                else:
                    self.regex_rules = "None"

                if runner.args.integer_rules:
                    self.integer_rules = foreman.IntegerRuleArray(
                        runner.args.integer_rules).RawHTML(request)
                else:
                    self.integer_rules = "None"

            except IOError:
                self.layout_template = self.error_template

        return super(AbstractLogRenderer, self).Layout(request, response)
예제 #2
0
    def Layout(self, request, response):
        """Display hunt's context presented as dict."""
        if not hasattr(self, "hunt_id"):
            self.hunt_id = request.REQ.get("hunt_id")
        self.hunt = aff4.FACTORY.Open(self.hunt_id,
                                      aff4_type=implementation.GRRHunt,
                                      token=request.token)

        self.args_str = renderers.DictRenderer(
            self.hunt.context).RawHTML(request)

        return super(HuntContextView, self).Layout(request, response)
예제 #3
0
    def Layout(self, request, response):
        """Display the overview."""
        if not self.hunt_id:
            self.hunt_id = request.REQ.get("hunt_id")

        h = dict(main="ManageHuntsClientView", hunt_id=self.hunt_id)
        self.hash = urllib.urlencode(sorted(h.items()))
        self.data = {}
        self.args_str = ""
        self.client_limit = None

        if self.hunt_id:
            try:
                self.hunt = aff4.FACTORY.Open(self.hunt_id,
                                              aff4_type="GRRHunt",
                                              token=request.token,
                                              age=aff4.ALL_TIMES)

                if self.hunt.state.Empty():
                    raise IOError("No valid state could be found.")

                # TODO(user): This is too expensive to do here. We should keep
                # running stats in the hunt itself.
                resources = self.hunt.GetValuesForAttribute(
                    self.hunt.Schema.RESOURCES)
                self.cpu_sum, self.net_sum = 0, 0

                for resource in resources:
                    self.cpu_sum += resource.cpu_usage.user_cpu_time
                    self.net_sum += resource.network_bytes_sent

                self.cpu_sum = "%.2f" % self.cpu_sum

                with self.hunt.GetRunner() as runner:
                    self.hunt_name = runner.args.hunt_name
                    self.hunt_creator = runner.context.creator

                    self.data = py_collections.OrderedDict()
                    self.data["Start Time"] = runner.context.start_time
                    self.data["Expiry Time"] = runner.context.expires
                    self.data["Status"] = self.hunt.Get(self.hunt.Schema.STATE)

                    self.client_limit = runner.args.client_limit

                    self.args_str = renderers.DictRenderer(self.hunt.state,
                                                           filter_keys=[
                                                               "context"
                                                           ]).RawHTML(request)
            except IOError:
                self.layout_template = self.error_template

        return super(AbstractLogRenderer, self).Layout(request, response)
예제 #4
0
  def Layout(self, request, response):
    """Display hunt's context presented as dict."""
    if not hasattr(self, "hunt_id"):
      self.hunt_id = request.REQ.get("hunt_id")
    self.hunt = aff4.FACTORY.Open(self.hunt_id, aff4_type="GRRHunt",
                                  token=request.token)
    if self.hunt.state.Empty():
      raise IOError("No valid state could be found.")

    self.args_str = renderers.DictRenderer(
        self.hunt.state.context).RawHTML(request)

    return super(HuntContextView, self).Layout(request, response)