示例#1
0
    def Handle(self, args, token=None):
        subject_id = None
        if args.client_id:
            subject_id = str(args.client_id)

        approvals = sorted(data_store.REL_DB.ReadApprovalRequests(
            token.username,
            rdf_objects.ApprovalRequest.ApprovalType.APPROVAL_TYPE_CLIENT,
            subject_id=subject_id,
            include_expired=True),
                           key=lambda ar: ar.timestamp,
                           reverse=True)
        approvals = self._FilterRelationalApprovalRequests(
            approvals,
            lambda ar: ApiClientApproval().InitFromDatabaseObject(ar),
            args.state)

        if not args.count:
            end = None
        else:
            end = args.offset + args.count
        items = list(itertools.islice(approvals, args.offset, end))
        api_client.UpdateClientsFromFleetspeak([a.subject for a in items])

        return ApiListClientApprovalsResult(items=items)
示例#2
0
文件: client_test.py 项目: 4ndygu/grr
 def testUpdateClientsFromFleetspeak(self):
     client_id_1 = client_plugin.ApiClientId("C." + "1" * 16)
     client_id_2 = client_plugin.ApiClientId("C." + "2" * 16)
     client_id_3 = client_plugin.ApiClientId("C." + "3" * 16)
     clients = [
         client_plugin.ApiClient(client_id=client_id_1,
                                 fleetspeak_enabled=True),
         client_plugin.ApiClient(client_id=client_id_2,
                                 fleetspeak_enabled=True),
         client_plugin.ApiClient(client_id=client_id_3,
                                 fleetspeak_enabled=False),
     ]
     conn = mock.MagicMock()
     conn.outgoing.ListClients.return_value = admin_pb2.ListClientsResponse(
         clients=[
             admin_pb2.Client(
                 client_id=fleetspeak_utils.GRRIDToFleetspeakID(
                     client_id_1),
                 last_contact_time=TSProtoFromString(
                     "2018-01-01T00:00:01Z"),
                 last_clock=TSProtoFromString("2018-01-01T00:00:02Z")),
             admin_pb2.Client(
                 client_id=fleetspeak_utils.GRRIDToFleetspeakID(
                     client_id_2),
                 last_contact_time=TSProtoFromString(
                     "2018-01-02T00:00:01Z"),
                 last_clock=TSProtoFromString("2018-01-02T00:00:02Z"))
         ])
     with mock.patch.object(fleetspeak_connector, "CONN", conn):
         client_plugin.UpdateClientsFromFleetspeak(clients)
     self.assertEqual(clients, [
         client_plugin.ApiClient(
             client_id=client_id_1,
             fleetspeak_enabled=True,
             last_seen_at=rdfvalue.RDFDatetime.FromHumanReadable(
                 "2018-01-01T00:00:01Z"),
             last_clock=rdfvalue.RDFDatetime.FromHumanReadable(
                 "2018-01-01T00:00:02Z")),
         client_plugin.ApiClient(
             client_id=client_id_2,
             fleetspeak_enabled=True,
             last_seen_at=rdfvalue.RDFDatetime.FromHumanReadable(
                 "2018-01-02T00:00:01Z"),
             last_clock=rdfvalue.RDFDatetime.FromHumanReadable(
                 "2018-01-02T00:00:02Z")),
         client_plugin.ApiClient(client_id=client_id_3,
                                 fleetspeak_enabled=False),
     ])