def testRegexForStringifiedValueMatchMatchesLabelsInList(self): labels_list = rdf_aff4.AFF4ObjectLabelsList() labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="ein", owner="GRR")) labels_list.AddLabel( rdf_aff4.AFF4ObjectLabel(name="zwei", owner="test")) labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="drei", owner="GRR")) labels_list.AddLabel( rdf_aff4.AFF4ObjectLabel(name="vier", owner="test")) self.assertTrue( re.match( rdf_aff4.AFF4ObjectLabelsList.RegexForStringifiedValueMatch( "ein"), str(labels_list))) self.assertTrue( re.match( rdf_aff4.AFF4ObjectLabelsList.RegexForStringifiedValueMatch( "zwei"), str(labels_list))) self.assertTrue( re.match( rdf_aff4.AFF4ObjectLabelsList.RegexForStringifiedValueMatch( "drei"), str(labels_list))) self.assertTrue( re.match( rdf_aff4.AFF4ObjectLabelsList.RegexForStringifiedValueMatch( "vier"), str(labels_list)))
def testStringifiedRepresentationIsSorted(self): labels_list = rdf_aff4.AFF4ObjectLabelsList() labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="foo", owner="GRR")) labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="bar", owner="test")) self.assertEqual(utils.SmartStr(labels_list), "bar,foo")
def testStringifiedValueIsLabelsNamesWithoutOwners(self): labels_list = rdf_aff4.AFF4ObjectLabelsList() labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="bar", owner="GRR")) labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="foo", owner="test")) self.assertEqual(utils.SmartStr(labels_list), "bar,foo")
def testAddLabelAddsLabelWithSameNameButDifferentOwner(self): labels_list = rdf_aff4.AFF4ObjectLabelsList() labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="foo", owner="test")) self.assertEqual(len(labels_list.labels), 1) labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="foo", owner="GRR")) self.assertEqual(len(labels_list.labels), 2)
def testStringifiedValueDoesNotHaveDuplicates(self): labels_list = rdf_aff4.AFF4ObjectLabelsList() labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="foo", owner="GRR")) labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="bar", owner="GRR")) labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="foo", owner="test")) self.assertEqual(utils.SmartStr(labels_list), "bar,foo")
def testAddLabelDoesNotAddLabelWithSameNameAndOwner(self): labels_list = rdf_aff4.AFF4ObjectLabelsList() labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="foo", owner="test")) self.assertEqual(len(labels_list.labels), 1) labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="foo", owner="test")) self.assertEqual(len(labels_list.labels), 1)
def GenerateSample(self, number=0): label1 = rdf_aff4.AFF4ObjectLabel( name="foo_%d" % number, owner="test", timestamp=rdfvalue.RDFDatetime.FromSecondsSinceEpoch(42)) label2 = rdf_aff4.AFF4ObjectLabel( name="bar_%d" % number, owner="test", timestamp=rdfvalue.RDFDatetime.FromSecondsSinceEpoch(42)) return rdf_aff4.AFF4ObjectLabelsList(labels=[label1, label2])
def testGetSortedLabelSet(self): labels_list = rdf_aff4.AFF4ObjectLabelsList() labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="foo", owner="test")) labels_list.AddLabel( rdf_aff4.AFF4ObjectLabel(name="foo2", owner="test2")) labels_list.AddLabel( rdf_aff4.AFF4ObjectLabel(name="foo3", owner="test2")) self.assertItemsEqual(labels_list.GetLabelNames(), ["foo", "foo2", "foo3"]) self.assertItemsEqual(labels_list.GetLabelNames(owner="test2"), ["foo2", "foo3"]) self.assertEqual(labels_list.GetLabelNames(owner="test4"), [])
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, token=self.token): label = fleetspeak_utils.GetLabelFromFleetspeak(self.client_id) # A FS enabled GRR shouldn't provide a label, but if it does prefer # it to an unrecognized FS label. # # TODO(user): Remove condition once we are confident in FS labeling. if label != fleetspeak_connector.unknown_label or not response.labels: response.labels = [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 if data_store.AFF4Enabled(): # AFF4 client. with self._OpenClient(mode="rw") as client: client.Set(client.Schema.CLIENT_INFO(response)) client.AddLabels(response.labels, owner="GRR") # rdf_objects.ClientSnapshot. self.state.client.startup_info.client_info = response
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): label = fleetspeak_utils.GetLabelFromFleetspeak(self.client_id) # A FS enabled GRR shouldn't provide a label, but if it does prefer # it to an unrecognized FS label. # # TODO(user): Remove condition once we are confident in FS labeling. if label != fleetspeak_connector.unknown_label or not response.labels: response.labels = [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 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: 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 testRegexForStringifiedValueDoesNotMatchLabelsNotInList(self): labels_list = rdf_aff4.AFF4ObjectLabelsList() labels_list.AddLabel(rdf_aff4.AFF4ObjectLabel(name="ein", owner="GRR")) labels_list.AddLabel( rdf_aff4.AFF4ObjectLabel(name="zwei", owner="test")) self.assertNotRegexpMatches( str(labels_list), rdf_aff4.AFF4ObjectLabelsList.RegexForStringifiedValueMatch("e")) self.assertNotRegexpMatches( str(labels_list), rdf_aff4.AFF4ObjectLabelsList.RegexForStringifiedValueMatch("in")) self.assertNotRegexpMatches( str(labels_list), rdf_aff4.AFF4ObjectLabelsList.RegexForStringifiedValueMatch( "a.zwer")) self.assertNotRegexpMatches( str(labels_list), rdf_aff4.AFF4ObjectLabelsList.RegexForStringifiedValueMatch( "ein."))
def GenerateSample(self, number=0): return rdf_aff4.AFF4ObjectLabel( name="label%d" % number, owner="test", timestamp=rdfvalue.RDFDatetime.FromSecondsSinceEpoch(42))
def testAlphanumericCharactersAreAllowed(self): rdf_aff4.AFF4ObjectLabel(name="label42", owner="test")
def testColonIsAllowed(self): rdf_aff4.AFF4ObjectLabel(name="label.42:1", owner="test")
def testDotIsAllowed(self): rdf_aff4.AFF4ObjectLabel(name="label.42", owner="test")
def testForwardSlashIsAllowed(self): rdf_aff4.AFF4ObjectLabel(name="b/label.42:1", owner="test")