def Handle(self, args, token=None): if not args.timestamp: age = rdfvalue.RDFDatetime.Now() else: age = rdfvalue.RDFDatetime(args.timestamp) api_client = None if data_store.RelationalDBReadEnabled(): info = data_store.REL_DB.ReadClientFullInfo(str(args.client_id)) if info is None: raise api_call_handler_base.ResourceNotFoundError() if args.timestamp: # Assume that a snapshot for this particular timestamp exists. snapshots = data_store.REL_DB.ReadClientSnapshotHistory( str(args.client_id), timerange=(args.timestamp, args.timestamp)) if snapshots: info.last_snapshot = snapshots[0] info.last_startup_info = snapshots[0].startup_info api_client = ApiClient().InitFromClientInfo(info) else: client = aff4.FACTORY.Open(args.client_id.ToClientURN(), aff4_type=aff4_grr.VFSGRRClient, age=age, token=token) api_client = ApiClient().InitFromAff4Object(client) UpdateClientsFromFleetspeak([api_client]) return api_client
def _GetHuntObj(self, hunt_id, token=None): hunt_urn = hunt_id.ToURN() try: return aff4.FACTORY.Open( hunt_urn, aff4_type=implementation.GRRHunt, token=token) except aff4.InstantiationError: raise api_call_handler_base.ResourceNotFoundError( "Hunt with id %s could not be found" % hunt_id)
def Handle(self, args, token=None): if not args.username: raise ValueError("username can't be empty.") user_urn = aff4.ROOT_URN.Add("users").Add(args.username) try: fd = aff4.FACTORY.Open(user_urn, aff4_type=users.GRRUser, mode="r", token=token) return api_user.ApiGrrUser().InitFromAff4Object(fd) except aff4.InstantiationError: raise api_call_handler_base.ResourceNotFoundError( "GRR user with username '%s' could not be found." % args.username)
def Handle(self, args, token=None): if not args.username: raise ValueError("username can't be empty.") user_urn = aff4.ROOT_URN.Add("users").Add(args.username) events.Events.PublishEvent("Audit", events.AuditEvent(user=token.username, action="USER_DELETE", urn=user_urn), token=token) if not aff4.FACTORY.ExistsWithType( user_urn, aff4_type=users.GRRUser, token=token): raise api_call_handler_base.ResourceNotFoundError( "GRR user with username '%s' could not be found." % args.username) aff4.FACTORY.Delete(user_urn, token=token)
def FailureNotFound(self, args, token=None): raise api_call_handler_base.ResourceNotFoundError()