示例#1
0
文件: checks.py 项目: x35029/grr
 def __init__(self, initializer=None, age=None, reformat=True, **kwargs):
     if isinstance(initializer, dict):
         conf = initializer
         initializer = None
     else:
         conf = kwargs
     super(Hint, self).__init__(initializer=initializer, age=age, **conf)
     if not self.max_results:
         self.max_results = config.CONFIG.Get("Checks.max_results")
     if reformat:
         self.hinter = hints.Hinter(self.format)
     else:
         self.hinter = hints.Hinter()
示例#2
0
    def testRdfFormatter(self):
        """Hints format RDF values with arbitrary values and attributes."""
        # Create a complex RDF value
        rdf = rdf_client.ClientSummary()
        rdf.system_info.system = "Linux"
        rdf.system_info.fqdn = "coreai.skynet.com"
        # Users (repeated)
        rdf.users = [rdf_client.User(username=u) for u in ("root", "jconnor")]
        # Interface (nested, repeated)
        addresses = [
            rdf_client_network.NetworkAddress(human_readable_address=a)
            for a in ("1.1.1.1", "2.2.2.2", "3.3.3.3")
        ]
        eth0 = rdf_client_network.Interface(ifname="eth0",
                                            addresses=addresses[:2])
        ppp0 = rdf_client_network.Interface(ifname="ppp0",
                                            addresses=addresses[2:3])
        rdf.interfaces = [eth0, ppp0]

        template = (
            "{system_info.system} {users.username} {interfaces.ifname} "
            "{interfaces.addresses.human_readable_address}\n")
        hinter = hints.Hinter(template=template)
        expected = "Linux root,jconnor eth0,ppp0 1.1.1.1,2.2.2.2,3.3.3.3"
        result = hinter.Render(rdf)
        self.assertEqual(expected, result)
示例#3
0
 def testStatModeFormat(self):
     rdf = rdf_client_fs.StatEntry(st_mode=33204)
     expected = "-rw-rw-r--"
     template = "{st_mode}"
     hinter = hints.Hinter(template=template)
     result = hinter.Render(rdf)
     self.assertEqual(expected, result)
示例#4
0
 def testRdfFormatterAttributedDict(self):
     sshd = rdf_config_file.SshdConfig()
     sshd.config = rdf_protodict.AttributedDict(skynet="operational")
     template = "{config.skynet}"
     hinter = hints.Hinter(template=template)
     expected = "operational"
     result = hinter.Render(sshd)
     self.assertEqual(expected, result)
示例#5
0
 def testRdfFormatterHandlesKeyValuePair(self):
     """rdfvalue.KeyValue items need special handling to expand k and v."""
     key = rdf_protodict.DataBlob().SetValue("skynet")
     value = rdf_protodict.DataBlob().SetValue([1997])
     rdf = rdf_protodict.KeyValue(k=key, v=value)
     template = "{k}: {v}"
     hinter = hints.Hinter(template=template)
     expected = "skynet: 1997"
     result = hinter.Render(rdf)
     self.assertEqual(expected, result)
示例#6
0
 def testRdfFormatterFanOut(self):
     rdf = rdf_protodict.Dict()
     user1 = rdf_client.User(username="******")
     user2 = rdf_client.User(username="******")
     rdf["cataclysm"] = "GreyGoo"
     rdf["thinkers"] = [user1, user2]
     rdf["reference"] = {
         "ecophage": ["bots", ["nanobots", ["picobots"]]],
         "doomsday": {
             "books": ["cats cradle", "prey"]
         }
     }
     template = ("{cataclysm}; {thinkers.username}; {reference.ecophage}; "
                 "{reference.doomsday}\n")
     hinter = hints.Hinter(template=template)
     expected = ("GreyGoo; drexler,joy; bots,nanobots,picobots; "
                 "books:cats cradle,prey")
     result = hinter.Render(rdf)
     self.assertEqual(expected, result)