Ejemplo n.º 1
0
    def GetReportData(self, get_report_args, token):
        """Filter the last week of user actions."""
        ret = report_plugins.ApiReportData(
            representation_type=report_plugins.ApiReportData.
            RepresentationType.PIE_CHART)

        try:
            timerange_offset = get_report_args.duration
            timerange_end = get_report_args.start_time + timerange_offset

            counts = {}
            try:
                for event in report_utils.GetAuditLogEntries(
                        timerange_offset, timerange_end, token):
                    counts.setdefault(event.user, 0)
                    counts[event.user] += 1
            except ValueError:  # Couldn't find any logs..
                pass

            ret.pie_chart.data = sorted(
                (report_plugins.ApiReportDataPoint1D(x=count, label=user)
                 for user, count in counts.iteritems()
                 if user not in aff4_users.GRRUser.SYSTEM_USERS),
                key=lambda series: series.label)

        except IOError:
            pass

        return ret
Ejemplo n.º 2
0
  def GetReportData(self, get_report_args, token):
    ret = report_plugins.ApiReportData(
        representation_type=report_plugins.ApiReportData.RepresentationType.
        STACK_CHART)

    database = {
        rdfvalue.RDFDatetime.FromHumanReadable("2012/12/11"): (1, 0),
        rdfvalue.RDFDatetime.FromHumanReadable("2012/12/12"): (2, 1),
        rdfvalue.RDFDatetime.FromHumanReadable("2012/12/13"): (3, 2),
        rdfvalue.RDFDatetime.FromHumanReadable("2012/12/14"): (5, 3),
        rdfvalue.RDFDatetime.FromHumanReadable("2012/12/15"): (8, 4),
        rdfvalue.RDFDatetime.FromHumanReadable("2012/12/16"): (13, 5),
        rdfvalue.RDFDatetime.FromHumanReadable("2012/12/17"): (21, 6),
        rdfvalue.RDFDatetime.FromHumanReadable("2012/12/18"): (34, 7)
    }

    ret.stack_chart.data = [
        report_plugins.ApiReportDataSeries2D(
            label="Bar",
            points=[
                report_plugins.ApiReportDataPoint2D(
                    x=x, y=y) for (t, (x, y)) in sorted(database.iteritems())
                if get_report_args.start_time <= t and t <
                get_report_args.start_time + get_report_args.duration
            ])
    ]

    return ret
Ejemplo n.º 3
0
    def testClientsActivityReportPluginWithNoActivityToReport(self):
        report = server_report_plugins.ClientsActivityReportPlugin()
        api_report_data = report.GetReportData(
            stats_api.ApiGetReportArgs(name=report.__class__.__name__),
            token=self.token)

        self.assertEqual(
            api_report_data,
            report_plugins.ApiReportData(
                representation_type=report_plugins.ApiReportData.
                RepresentationType.STACK_CHART,
                stack_chart=report_plugins.ApiStackChartReportData(data=[])))
Ejemplo n.º 4
0
    def testMostActiveUsersReportPlugin(self):
        with test_lib.FakeTime(
                rdfvalue.RDFDatetime.FromHumanReadable("2012/12/14")):
            AddFakeAuditLog("Fake audit description 14 Dec.",
                            "C.123",
                            "User123",
                            token=self.token)

        with test_lib.FakeTime(
                rdfvalue.RDFDatetime.FromHumanReadable("2012/12/22")):
            for _ in xrange(10):
                AddFakeAuditLog("Fake audit description 22 Dec.",
                                "C.123",
                                "User123",
                                token=self.token)

            AddFakeAuditLog("Fake audit description 22 Dec.",
                            "C.456",
                            "User456",
                            token=self.token)

        with test_lib.FakeTime(
                rdfvalue.RDFDatetime.FromHumanReadable("2012/12/31")):
            report = server_report_plugins.MostActiveUsersReportPlugin()

            now = rdfvalue.RDFDatetime().Now()
            month_duration = rdfvalue.Duration("30d")

            api_report_data = report.GetReportData(stats_api.ApiGetReportArgs(
                name=report.__class__.__name__,
                start_time=now - month_duration,
                duration=month_duration),
                                                   token=self.token)

            # pyformat: disable
            self.assertEqual(
                api_report_data,
                report_plugins.ApiReportData(
                    representation_type=report_plugins.ApiReportData.
                    RepresentationType.PIE_CHART,
                    pie_chart=report_plugins.ApiPieChartReportData(data=[
                        report_plugins.ApiReportDataPoint1D(label="User123",
                                                            x=11),
                        report_plugins.ApiReportDataPoint1D(label="User456",
                                                            x=1)
                    ])))
Ejemplo n.º 5
0
    def testMostActiveUsersReportPluginWithNoActivityToReport(self):
        report = server_report_plugins.MostActiveUsersReportPlugin()

        now = rdfvalue.RDFDatetime().Now()
        month_duration = rdfvalue.Duration("30d")

        api_report_data = report.GetReportData(stats_api.ApiGetReportArgs(
            name=report.__class__.__name__,
            start_time=now - month_duration,
            duration=month_duration),
                                               token=self.token)

        self.assertEqual(
            api_report_data,
            report_plugins.ApiReportData(
                representation_type=report_plugins.ApiReportData.
                RepresentationType.PIE_CHART,
                pie_chart=report_plugins.ApiPieChartReportData(data=[])))
Ejemplo n.º 6
0
    def GetReportData(self, get_report_args, token):
        """Filter the last week of flows."""
        ret = report_plugins.ApiReportData(
            representation_type=report_plugins.ApiReportData.
            RepresentationType.STACK_CHART)

        try:
            now = rdfvalue.RDFDatetime().Now()
            week_duration = rdfvalue.Duration("7d")
            offset = week_duration * ClientsActivityReportPlugin.WEEKS
            client_activity = {}

            try:
                logs_gen = report_utils.GetAuditLogFiles(offset, now, token)
            except ValueError:  # Couldn't find any logs..
                logs_gen = iter(())

            for fd in logs_gen:
                for week in range(ClientsActivityReportPlugin.WEEKS):
                    start = now - week * week_duration
                    for event in fd.GenerateItems():
                        if start <= event.timestamp < (start + week_duration):
                            weekly_activity = client_activity.setdefault(
                                event.client, [[x, 0] for x in range(
                                    -ClientsActivityReportPlugin.WEEKS, 0, 1)])
                            weekly_activity[-week][1] += 1

            ret.stack_chart.data = sorted(
                (report_plugins.ApiReportDataSeries2D(
                    label=str(client),
                    points=[
                        report_plugins.ApiReportDataPoint2D(x=x, y=y)
                        for x, y in client_data
                    ]) for client, client_data in client_activity.iteritems()
                 if client),
                key=lambda series: series.label)

        except IOError:
            pass

        return ret
Ejemplo n.º 7
0
    def testClientsActivityReportPlugin(self):
        with test_lib.FakeTime(
                rdfvalue.RDFDatetime.FromHumanReadable("2012/12/14")):
            AddFakeAuditLog("Fake audit description 14 Dec.",
                            "C.123",
                            token=self.token)

        with test_lib.FakeTime(
                rdfvalue.RDFDatetime.FromHumanReadable("2012/12/22")):
            for _ in xrange(10):
                AddFakeAuditLog("Fake audit description 22 Dec.",
                                "C.123",
                                token=self.token)
            AddFakeAuditLog("Fake audit description 22 Dec.",
                            "C.456",
                            token=self.token)

        with test_lib.FakeTime(
                rdfvalue.RDFDatetime.FromHumanReadable("2012/12/31")):
            report = server_report_plugins.ClientsActivityReportPlugin()
            api_report_data = report.GetReportData(
                stats_api.ApiGetReportArgs(name=report.__class__.__name__),
                token=self.token)

            # pyformat: disable
            self.assertEqual(
                api_report_data,
                report_plugins.ApiReportData(
                    representation_type=report_plugins.ApiReportData.
                    RepresentationType.STACK_CHART,
                    stack_chart=report_plugins.ApiStackChartReportData(data=[
                        report_plugins.ApiReportDataSeries2D(
                            label="aff4:/C.123",
                            points=[
                                report_plugins.ApiReportDataPoint2D(x=-10,
                                                                    y=0),
                                report_plugins.ApiReportDataPoint2D(x=-9, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-8, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-7, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-6, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-5, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-4, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-3, y=1),
                                report_plugins.ApiReportDataPoint2D(x=-2,
                                                                    y=10),
                                report_plugins.ApiReportDataPoint2D(x=-1, y=0)
                            ]),
                        report_plugins.ApiReportDataSeries2D(
                            label="aff4:/C.456",
                            points=[
                                report_plugins.ApiReportDataPoint2D(x=-10,
                                                                    y=0),
                                report_plugins.ApiReportDataPoint2D(x=-9, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-8, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-7, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-6, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-5, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-4, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-3, y=0),
                                report_plugins.ApiReportDataPoint2D(x=-2, y=1),
                                report_plugins.ApiReportDataPoint2D(x=-1, y=0)
                            ])
                    ])))