Exemple #1
0
    def ClientInfo(self, responses):
        """Obtain some information about the GRR client running."""
        if not responses.success:
            self.Log("Could not get ClientInfo.")
            return

        response = responses.First()

        if fleetspeak_utils.IsFleetspeakEnabledClient(self.client_id):
            # Fetch labels for the client from Fleetspeak. If Fleetspeak doesn't
            # have any labels for the GRR client, fall back to labels reported by
            # the client.
            fleetspeak_labels = fleetspeak_utils.GetLabelsFromFleetspeak(
                self.client_id)
            if fleetspeak_labels:
                response.labels = fleetspeak_labels
            else:
                FLEETSPEAK_UNLABELED_CLIENTS.Increment()
                logging.warning(
                    "Failed to get labels for Fleetspeak client %s.",
                    self.client_id)

        sanitized_labels = []
        for label in response.labels:
            try:
                self._ValidateLabel(label)
                sanitized_labels.append(label)
            except ValueError:
                self.Log("Got invalid label: %s", label)

        response.labels = sanitized_labels

        self.state.client.startup_info.client_info = response
Exemple #2
0
 def testGetLabelsFromFleetspeak_NoLabels(self):
     conn = _MockConnReturningClient(_TEST_CLIENT_ID,
                                     [("service-1", "foo-3")])
     with mock.patch.object(fleetspeak_connector, "CONN", conn):
         fleetspeak_connector.Init(conn)
         self.assertEmpty(
             fleetspeak_utils.GetLabelsFromFleetspeak(_TEST_CLIENT_ID))
Exemple #3
0
 def testGetLabelsFromFleetspeak_UnknownClient(self):
   conn = mock.MagicMock()
   conn.outgoing.ListClients.return_value = admin_pb2.ListClientsResponse()
   with mock.patch.object(fleetspeak_connector, "CONN", conn):
     fleetspeak_connector.Init(conn)
     self.assertEmpty(
         fleetspeak_utils.GetLabelsFromFleetspeak(_TEST_CLIENT_ID))
 def testGetLabelsFromFleetspeak_UnknownClient(self):
     conn = mock.MagicMock()
     conn.outgoing.ListClients.return_value = admin_pb2.ListClientsResponse(
     )
     with fleetspeak_test_lib.ConnectionOverrider(conn):
         self.assertEmpty(
             fleetspeak_utils.GetLabelsFromFleetspeak(_TEST_CLIENT_ID))
Exemple #5
0
    def ClientInfo(self, responses):
        """Obtain some information about the GRR client running."""
        if not responses.success:
            self.Log("Could not get ClientInfo.")
            return

        response = responses.First()

        if fleetspeak_utils.IsFleetspeakEnabledClient(self.client_id):
            # Fetch labels for the client from Fleetspeak. If Fleetspeak doesn't
            # have any labels for the GRR client, fall back to labels reported by
            # the client.
            fleetspeak_labels = fleetspeak_utils.GetLabelsFromFleetspeak(
                self.client_id)
            if fleetspeak_labels:
                response.labels = fleetspeak_labels
            elif not response.labels:
                response.labels = [fleetspeak_connector.unknown_label]

        sanitized_labels = []
        for label in response.labels:
            try:
                rdf_aff4.AFF4ObjectLabel(name=label)
                sanitized_labels.append(label)
            except type_info.TypeValueError:
                self.Log("Got invalid label: %s", label)

        response.labels = sanitized_labels

        self.state.client.startup_info.client_info = response
    def testGetLabelsFromFleetspeak_NoPrefix(self):
        conn = _MockConnReturningClient(_TEST_CLIENT_ID, [
            ("client", "foo-1"),
            ("client", "bar-2"),
            ("service-1", "foo-3"),
            ("service-1", "foo-4"),
            ("client", "foo-5"),
        ])

        with test_lib.ConfigOverrider({
                "Server.fleetspeak_label_map": ["foo-5:baz-5"],
        }):
            with fleetspeak_test_lib.ConnectionOverrider(conn):
                self.assertListEqual(
                    fleetspeak_utils.GetLabelsFromFleetspeak(_TEST_CLIENT_ID),
                    ["foo-1", "bar-2", "baz-5"])
Exemple #7
0
  def testGetLabelsFromFleetspeak_Prefix(self):
    conn = _MockConnReturningClient(_TEST_CLIENT_ID, [
        ("client", "foo-1"),
        ("client", "bar-2"),
        ("service-1", "foo-3"),
        ("service-1", "foo-4"),
        ("client", "foo-5"),
    ])

    with test_lib.ConfigOverrider({
        "Server.fleetspeak_label_prefix": "foo",
        "Server.fleetspeak_label_map": ["foo-5: baz-5"],
    }):
      with mock.patch.object(fleetspeak_connector, "CONN", conn):
        fleetspeak_connector.Init(conn)
        self.assertListEqual(
            fleetspeak_utils.GetLabelsFromFleetspeak(_TEST_CLIENT_ID),
            ["foo-1", "baz-5"])
 def testGetLabelsFromFleetspeak_NoLabels(self):
     conn = _MockConnReturningClient(_TEST_CLIENT_ID,
                                     [("service-1", "foo-3")])
     with fleetspeak_test_lib.ConnectionOverrider(conn):
         self.assertEmpty(
             fleetspeak_utils.GetLabelsFromFleetspeak(_TEST_CLIENT_ID))