예제 #1
0
파일: access.py 프로젝트: maximerobin/Ufwi
 def _createRules(self, unused, netcfg, context):
     defer_list = []
     for service, networks in self.access_cfg.permissions.iteritems():
         ports = self.services[service]
         for port in ports:
             for interface, network in networks:
                 protocol = port['proto']
                 ipv6 = (network.version() == 6)
                 rule = {
                     'chain': 'INPUT',
                     'decision': 'ACCEPT',
                     'ipv6': ipv6,
                     'protocol': protocol,
                     'sources': [unicode(network)],
                     'input': interface,
                 }
                 if protocol == 'icmp':
                     if ipv6:
                         # ICMP is for IPv4
                         continue
                     rule['icmp_type'] = port['icmp_type']
                 elif protocol == 'icmpv6':
                     if not ipv6:
                         # ICMPv6 is for IPv6
                         continue
                     rule['icmpv6_type'] = port['icmpv6_type']
                 elif 'port' in port:
                     rule['dport'] = port['port']
                 defer = self.core.callService(context, 'localfw', 'addFilterRule', rule)
                 defer_list.append(defer)
     return gatherResults(defer_list)
예제 #2
0
파일: streams.py 프로젝트: maximerobin/Ufwi
    def __call__(self, **args):

        sql = []
        sql.append(self._sql_query(args, "count_average", 1).addCallback(self.decimal2str))
        sql.append(self._sql_query(args, "count_average", 5).addCallback(self.decimal2str))
        sql.append(self._sql_query(args, "count_average", 15).addCallback(self.decimal2str))
        sql.append(self._sql_query(args, "count_packets").addCallback(self.decimal2int))

        return gatherResults(sql).addCallback(self._returnPacket)
예제 #3
0
파일: access.py 프로젝트: maximerobin/Ufwi
 def _updatePorts(self, unused, context):
     defer_list = []
     for service in self.services:
         try:
             self.services[service] = self.HARDCODED_SERVICES[service]
         except KeyError:
             defer = self.core.callService(context, service, "getPorts")
             defer.addCallback(self._updatePort, service)
             defer_list.append(defer)
     return gatherResults(defer_list)
예제 #4
0
    def appendTop_cb(self, result, ctx, report, title, filter, table2, args2):
        table = result['table']
        i = result['columns'].index(filter)
        deferreds = []
        for line in table:
            if isinstance(line[i], (list, tuple)):
                value = line[i][1]
            else:
                value = line[i]
            args2[filter] = value
            d = self.ufwi_rpcd_core.callService(ctx, 'ufwi_log', 'table', table2, args2)
            deferreds.append(d)

        return gatherResults(deferreds).addCallback(self.appendTop_cb2, report, title, result)
예제 #5
0
파일: table.py 프로젝트: maximerobin/Ufwi
    def __call__(self, **args):
        self._arg_int(args, 'limit')
        args.pop('limit', None)
        self._arg_int(args, 'start')
        args.pop('start', None)
        self._arg_int(args, 'interval')
        args.pop('interval', None)
        self._arg_int(args, 'start_time')
        args.pop('start_time', None)
        self._arg_int(args, 'end_time')
        args.pop('end_time', None)
        self._arg_in (args, 'sortby', ('oob_time_sec', 'packets'))
        args.pop('sortby', None)
        self._arg_in (args, 'sort',   ('DESC', 'ASC'))
        args.pop('sort', None)
        self._arg_bool (args, 'count')
        args.pop('count', None)

        if self.args['count']:
            return 0

        defers = []
        ts = self.args['start_time']
        while ts < self.args['end_time']:
            start = ts
            end = ts + self.args['interval']
            if end > self.args['end_time']:
                end = self.args['end_time']

            args['start_time'] = start
            args['end_time'] = end

            table = self.PacketsCountSingleTable(self.ctx, self.database)
            defers.append(table(ts, **args))

            ts = end

        return gatherResults(defers).addCallback(self.first_cb).addCallback(self._print_result)