def Handle(self, args, token=None): """Creates a new hunt.""" # We only create generic hunts with /hunts/create requests. generic_hunt_args = standard.GenericHuntArgs() generic_hunt_args.flow_runner_args.flow_name = args.flow_name generic_hunt_args.flow_args = args.flow_args # Clear all fields marked with HIDDEN, except for output_plugins - they are # marked HIDDEN, because we have a separate UI for them, not because they # shouldn't be shown to the user at all. # # TODO(user): Refactor the code to remove the HIDDEN label from # HuntRunnerArgs.output_plugins. args.hunt_runner_args.ClearFieldsWithLabel( rdf_structs.SemanticDescriptor.Labels.HIDDEN, exceptions="output_plugins") args.hunt_runner_args.hunt_name = standard.GenericHunt.__name__ # Anyone can create the hunt but it will be created in the paused # state. Permissions are required to actually start it. with implementation.GRRHunt.StartHunt( runner_args=args.hunt_runner_args, args=generic_hunt_args, token=token) as hunt: # Nothing really to do here - hunts are always created in the paused # state. logging.info("User %s created a new %s hunt (%s)", token.username, hunt.args.flow_runner_args.flow_name, hunt.urn) return ApiHunt().InitFromAff4Object(hunt, with_full_summary=True)
def ParseHuntArgs(self): """Build the hunt args from the self.request.""" if self.hunt_args is not None: return self.hunt_args flow_runner_args, flow_args = self.ParseFlowArgs() self.hunt_args = standard.GenericHuntArgs( flow_runner_args=flow_runner_args, flow_args=flow_args, output_plugins=self.ParseOutputPlugins()) return self.hunt_args
def Handle(self, args, token=None): """Creates a new hunt.""" # We only create generic hunts with /hunts/create requests. generic_hunt_args = standard.GenericHuntArgs() generic_hunt_args.flow_runner_args.flow_name = args.flow_name generic_hunt_args.flow_args = args.flow_args args.hunt_runner_args.hunt_name = standard.GenericHunt.__name__ # Anyone can create the hunt but it will be created in the paused # state. Permissions are required to actually start it. with implementation.GRRHunt.StartHunt( runner_args=args.hunt_runner_args, args=generic_hunt_args, token=token) as hunt: # Nothing really to do here - hunts are always created in the paused # state. logging.info("User %s created a new %s hunt (%s)", token.username, hunt.args.flow_runner_args.flow_name, hunt.urn) return ApiHunt().InitFromAff4Object(hunt, with_full_summary=True)