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)
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)
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)
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)