Exemplo n.º 1
0
    def handle(self, input):
        match = self._rx.match(input)
        if match is not None:
            parsed = self.parse_query(match.group('query'))
            if parsed is not None:
                result = OrderedDict()
                result['stats'] = self.parse_line_stats(match.group('stats'))
                result['stats']['millis'] = match.group('query_time')

                command = parsed.keys()[0]

                toMask = OrderedDict()

                result['command'] = command
                result['supported'] = True
                if command.lower() == 'count':
                    result['ns'] = match.group('db') + '.'
                    result['ns'] += parsed[command]
                    query = self.standardize_query(parsed['query'])
                    result['query'] = query['$query']
                    toMask = query
                elif command.lower() == 'findandmodify':
                    if 'sort' in parsed:
                        result['orderby'] = parsed['sort']
                        toMask['$orderby'] = parsed['sort']
                    result['ns'] = match.group('db') + '.'
                    result['ns'] += parsed[command]
                    query = self.standardize_query(parsed['query'])
                    result['query'] = query['$query']
                    if 'sort' in parsed:
                        result['orderby'] = parsed['sort']
                        toMask['$orderby'] = parsed['sort']
                    toMask['$query'] = query
                elif command.lower() == 'geonear':
                    result['ns'] = match.group('db') + '.'
                    result['ns'] += parsed[command]
                    query = self.standardize_query(parsed['search'])
                    result['query'] = query
                    toMask = query
                else:
                    result['supported'] = False
                    result['ns'] = match.group('db') + '.$cmd'

                result['command'] = command
                toMask['$cmd'] = command
                result['queryMask'] = small_json(toMask)

                return result
        return None
Exemplo n.º 2
0
    def do_handle(self, input):
        match = self._rx.match(input)
        if match is not None:
            parsed = self.parse_query(match.group('query'))
            if parsed is not None:
                result = OrderedDict()
                result['stats'] = self.parse_line_stats(match.group('stats'))
                result['stats']['millis'] = match.group('query_time')

                command = parsed.keys()[0]

                toMask = OrderedDict()

                result['command'] = command
                result['supported'] = True
                if command.lower() == 'count':
                    result['ns'] = match.group('db') + '.'
                    result['ns'] += parsed[command]
                    query = self.standardize_query(parsed['query'])
                    result['query'] = query['$query']
                    toMask = query
                elif command.lower() == 'findandmodify':
                    if 'sort' in parsed:
                        result['orderby'] = parsed['sort']
                        toMask['$orderby'] = parsed['sort']
                    result['ns'] = match.group('db') + '.'
                    result['ns'] += parsed[command]
                    query = self.standardize_query(parsed['query'])
                    result['query'] = query['$query']
                    if 'sort' in parsed:
                        result['orderby'] = parsed['sort']
                        toMask['$orderby'] = parsed['sort']
                    toMask['$query'] = query
                elif command.lower() == 'geonear':
                    result['ns'] = match.group('db') + '.'
                    result['ns'] += parsed[command]
                    query = self.standardize_query(parsed['search'])
                    result['query'] = query
                    toMask = query
                else:
                    result['supported'] = False
                    result['ns'] = match.group('db') + '.$cmd'

                result['command'] = command
                toMask['$cmd'] = command
                result['queryMask'] = small_json(toMask)

                return result
        return None
Exemplo n.º 3
0
 def handle(self, input):
     match = self._rx.match(input)
     if match is not None:
         parsed = self.parse_query(match.group('query'))
         if parsed is not None:
             result = OrderedDict()
             scrubbed = self.standardize_query(parsed)
             result['query'] = scrubbed['$query']
             if '$orderby' in scrubbed:
                 result['orderby'] = scrubbed['$orderby']
             result['queryMask'] = small_json(scrubbed)
             result['ns'] = match.group('ns')
             result['stats'] = self.parse_line_stats(match.group('stats'))
             result['stats']['millis'] = match.group('query_time')
             result['supported'] = True
             return result
     return None
Exemplo n.º 4
0
 def do_handle(self, input):
     match = self._rx.match(input)
     if match is not None:
         parsed = self.parse_query(match.group('query'))
         if parsed is not None:
             result = OrderedDict()
             scrubbed = self.standardize_query(parsed)
             result['query'] = scrubbed['$query']
             if '$orderby' in scrubbed:
                 result['orderby'] = scrubbed['$orderby']
             result['queryMask'] = small_json(scrubbed)
             result['ns'] = match.group('ns')
             result['stats'] = self.parse_line_stats(match.group('stats'))
             result['stats']['millis'] = match.group('query_time')
             result['supported'] = True
             return result
     return None
Exemplo n.º 5
0
        def handle(self, input):
            result = OrderedDict()
            query = None
            orderby = None

            if (input is not None) and (input.has_key('op')):
                if input['op'] == 'query':
                    if input['query'].has_key('$query'):
                        query = input['query']['$query']
                        if input['query'].has_key('$orderby'):
                            orderby = input['query']['$orderby']
                    else:
                        query = input['query']
                    result['ns'] = input['ns']
                elif input['op'] == 'update':
                    query = input['query']
                    if input.has_key('updateobj'):
                        if input['updateobj'].has_key('orderby'):
                            orderby = input['updateobj']['orderby']
                    result['ns'] = input['ns']
                elif ((input['op'] == 'command')
                      and ((input['command'].has_key('count')) or
                           (input['command'].has_key('findAndModify')))):
                    query = input['command']['query']
                    db = input['ns'][0:input['ns'].rfind('.')]
                    result['ns'] = db + "." + input['command']['count']
                else:
                    return None

                toMask = OrderedDict()

                if orderby is not None:
                    result['orderby'] = orderby
                    toMask['$orderby'] = orderby
                result['query'] = scrub(query)
                toMask['$query'] = query

                result['queryMask'] = small_json(toMask)
                result['stats'] = {'millis': input['millis']}
                return result
            else:
                return None
Exemplo n.º 6
0
        def handle(self, input):
            result = OrderedDict()
            query = None
            orderby = None

            if (input is not None) and (input.has_key('op')):
                if input['op'] == 'query':
                    if input['query'].has_key('$query'):
                        query = input['query']['$query']
                        if input['query'].has_key('$orderby'):
                            orderby = input['query']['$orderby']
                    else:
                        query = input['query']
                    result['ns'] = input['ns']
                elif input['op'] == 'update':
                    query = input['query']
                    if input.has_key('updateobj'):
                        if input['updateobj'].has_key('orderby'):
                            orderby = input['updateobj']['orderby']
                    result['ns'] = input['ns']
                elif ((input['op'] == 'command') and
                          ((input['command'].has_key('count')) or
                               (input['command'].has_key('findAndModify')))):
                    query = input['command']['query']
                    db = input['ns'][0:input['ns'].rfind('.')]
                    result['ns'] = db + "." + input['command']['count']
                else:
                    return None

                toMask = OrderedDict()

                if orderby is not None:
                    result['orderby'] = orderby
                    toMask['$orderby'] = orderby
                result['query'] = scrub(query)
                toMask['$query'] = query

                result['queryMask'] = small_json(toMask)
                result['stats'] = {'millis': input['millis']}
                return result
            else:
                return None
Exemplo n.º 7
0
def mask(parsed):
    return small_json(parsed)