コード例 #1
0
    def run(self):

        sks = Device.objects.filter(enabled=True, module='netshark')

        res = []
        for sk in sks:
            sk_dev = DeviceManager.get_device(sk.id)
            for job in sk_dev.get_capture_jobs():

                if_name = job.data['config']['interface_name']

                start = str(nsec_string_to_datetime(job.packet_start_time))
                end = str(nsec_string_to_datetime(job.packet_end_time))

                bpf_filter = job.data['config'].get('bpf_filter', '')

                if len(bpf_filter) > self.MAX_LENGTH:
                    bpf_filter = bpf_filter[:self.MAX_LENGTH - 2] + '...'

                pkts_dropped = job.get_stats()['packets_dropped']
                pkts_written = job.get_stats()['packets_written']

                job_data = dict(netshark=sk.name,
                                job_id=job.data['id'],
                                job_name=job.data['config']['name'],
                                interface=if_name,
                                state=job.data['status']['state'],
                                size=job.data['status']['packet_size'],
                                start_time=start,
                                end_time=end,
                                bpf_filter=bpf_filter,
                                dpi_enabled=str(job.dpi_enabled),
                                index_enabled=str(job.index_enabled),
                                last_sec_dropped=pkts_dropped['last_second'],
                                last_min_dropped=pkts_dropped['last_minute'],
                                last_hr_dropped=pkts_dropped['last_hour'],
                                last_sec_written=pkts_written['last_second'],
                                last_min_written=pkts_written['last_minute'],
                                last_hr_written=pkts_written['last_hour']
                                )
                res.append(job_data)

        return QueryComplete(pandas.DataFrame(res))
コード例 #2
0
    def run(self):

        sks = Device.objects.filter(enabled=True, module='netshark')

        res = []
        for sk in sks:
            sk_dev = DeviceManager.get_device(sk.id)
            for job in sk_dev.get_capture_jobs():

                if_name = job.data['config']['interface_name']

                start = str(nsec_string_to_datetime(job.packet_start_time))
                end = str(nsec_string_to_datetime(job.packet_end_time))

                bpf_filter = job.data['config'].get('bpf_filter', '')

                if len(bpf_filter) > self.MAX_LENGTH:
                    bpf_filter = bpf_filter[:self.MAX_LENGTH - 2] + '...'

                pkts_dropped = job.get_stats()['packets_dropped']
                pkts_written = job.get_stats()['packets_written']

                job_data = dict(netshark=sk.name,
                                job_id=job.data['id'],
                                job_name=job.data['config']['name'],
                                interface=if_name,
                                state=job.data['status']['state'],
                                size=job.data['status']['packet_size'],
                                start_time=start,
                                end_time=end,
                                bpf_filter=bpf_filter,
                                dpi_enabled=str(job.dpi_enabled),
                                index_enabled=str(job.index_enabled),
                                last_sec_dropped=pkts_dropped['last_second'],
                                last_min_dropped=pkts_dropped['last_minute'],
                                last_hr_dropped=pkts_dropped['last_hour'],
                                last_sec_written=pkts_written['last_second'],
                                last_min_written=pkts_written['last_minute'],
                                last_hr_written=pkts_written['last_hour'])
                res.append(job_data)

        return QueryComplete(pandas.DataFrame(res))
コード例 #3
0
ファイル: _view4.py プロジェクト: jr69ss/steelscript-netshark
 def _convert_sample_time(self, sample_timestamp):
     if self.view.timestamp_format == APITimestampFormat.SECOND:
         return timeutils.sec_string_to_datetime(sample_timestamp)
     elif self.view.timestamp_format == APITimestampFormat.MILLISECOND:
         return timeutils.msec_string_to_datetime(sample_timestamp)
     elif self.view.timestamp_format == APITimestampFormat.MICROSECOND:
         return timeutils.usec_string_to_datetime(sample_timestamp)
     elif self.view.timestamp_format == APITimestampFormat.NANOSECOND:
         return timeutils.nsec_string_to_datetime(sample_timestamp)
     else:
         raise ValueError('invalid time format %s' % str(view.timestamp_format))
コード例 #4
0
 def _convert_sample_time(self, sample_timestamp):
     if self.view.timestamp_format == APITimestampFormat.SECOND:
         return timeutils.sec_string_to_datetime(sample_timestamp)
     elif self.view.timestamp_format == APITimestampFormat.MILLISECOND:
         return timeutils.msec_string_to_datetime(sample_timestamp)
     elif self.view.timestamp_format == APITimestampFormat.MICROSECOND:
         return timeutils.usec_string_to_datetime(sample_timestamp)
     elif self.view.timestamp_format == APITimestampFormat.NANOSECOND:
         return timeutils.nsec_string_to_datetime(sample_timestamp)
     else:
         raise ValueError('invalid time format %s' %
                          str(view.timestamp_format))
コード例 #5
0
ファイル: _view4.py プロジェクト: jr69ss/steelscript-netshark
def _to_native(string, legend_entry):
    """ convert `string` to an appropriate native type given `legend_entry` """
    if legend_entry['calculation'] == 'AVG':
        string, den = string.split(':', 1)
        denominator = int(den)
    else:
        denominator = 1

    if legend_entry['type'].startswith('INT') \
      or legend_entry['type'].startswith('UINT') \
      or legend_entry['type'] in ( 'TCP_PORT', 'UDP_PORT'):
        if legend_entry['base'] == 'DEC':
            baseval = 10
        elif legend_entry['base'] == 'HEX':
            baseval = 16
        else:
            raise ValueError('do not know how to handle integer base %s' %
                             legend_entry['base'])
        return int(string, baseval) / denominator

    if legend_entry['type'] == 'DOUBLE':
        return float(string) / denominator

    if legend_entry['type'] == 'BOOLEAN':
        if string.lower() == 'false' or string.lower() == '0':
            return 0
        elif string.lower() == 'true' or string.lower() == '1':
            return 1
        else:
            # Booleans can be a count of successes
            return int(string)

    if legend_entry['type'] == 'ABSOLUTE_TIME':
        return timeutils.nsec_string_to_datetime(string)

    if legend_entry['type'] == 'RELATIVE_TIME':
        return float(string) / denominator

    # XXX anything with IPv4 or ETHER?

    return string
コード例 #6
0
def _to_native(string, legend_entry):
    """ convert `string` to an appropriate native type given `legend_entry` """
    if legend_entry['calculation'] == 'AVG':
        string, den = string.split(':', 1)
        denominator = int(den)
    else:
        denominator = 1

    if (legend_entry['type'].startswith('INT')
            or legend_entry['type'].startswith('UINT')
            or legend_entry['type'] in ('TCP_PORT', 'UDP_PORT')):
        if legend_entry['base'] == 'DEC':
            baseval = 10
        elif legend_entry['base'] == 'HEX':
            baseval = 16
        else:
            raise ValueError('do not know how to handle integer base %s' %
                             legend_entry['base'])
        return int(string, baseval) / denominator

    if legend_entry['type'] == 'DOUBLE':
        return float(string) / denominator

    if legend_entry['type'] == 'BOOLEAN':
        if string.lower() == 'false' or string.lower() == '0':
            return 0
        elif string.lower() == 'true' or string.lower() == '1':
            return 1
        else:
            # Booleans can be a count of successes
            return int(string)

    if legend_entry['type'] == 'ABSOLUTE_TIME':
        return timeutils.nsec_string_to_datetime(string)

    if legend_entry['type'] == 'RELATIVE_TIME':
        return float(string) / denominator

    # XXX anything with IPv4 or ETHER?

    return string