Example #1
0
def advanced_search(request):
    if request.method == "GET":
        search_string = urllib.unquote(request.GET.get('query', None))
        size = int(request.GET.get('size', 20))
        page = int(request.GET.get('page', 1)) 
        if settings.ES_SCRIPTING_ENABLED:
            unique = request.GET.get('unique', 'false')
        else:
            unique = 'false'
    else:
        return __renderErrorJSON__('Unsupported Method')

    if unique.lower() == 'true':
        unique = True
    else:
        unique = False

    if search_string is None:
        return __renderErrorJSON__("Query required")
        
    skip = (page - 1) * size
    results = handler.advanced_search(search_string, skip, size, unique)
    if results['success'] == False:
        return __renderErrorJSON__(results['message'])

    return HttpResponse(json.dumps(results), content_type='application/json')
Example #2
0
def advanced_search(request):
    if request.method == "GET":
        search_string = urllib.unquote(request.GET.get('query', None))
        size = int(request.GET.get('size', 20))
        page = int(request.GET.get('page', 1))
        if settings.ES_SCRIPTING_ENABLED:
            unique = request.GET.get('unique', 'false')
        else:
            unique = 'false'
    else:
        return __renderErrorJSON__('Unsupported Method')

    if unique.lower() == 'true':
        unique = True
    else:
        unique = False

    if search_string is None:
        return __renderErrorJSON__("Query required")

    skip = (page - 1) * size
    results = handler.advanced_search(search_string, skip, size, unique)
    if results['success'] == False:
        return __renderErrorJSON__(results['message'])

    return HttpResponse(json.dumps(results), content_type='application/json')
Example #3
0
def advdomains(request):
    if request.method == "POST":
        search_f = advdomain_form(request.POST)
    elif request.method == "GET":
        search_f = advdomain_form(QueryDict(''))
        search_f.data['query'] = request.GET.get('query', None)
        search_f.data['fmt'] = request.GET.get('fmt', 'normal')
        search_f.data['limit'] = request.GET.get('limit', settings.LIMIT)
        search_f.data['filt'] = request.GET.get('filt',
                                                settings.SEARCH_KEYS[0][0])
        if settings.ES_SCRIPTING_ENABLED:
            search_f.data['unique'] = request.GET.get('unique', False)
    else:
        #return __renderErrorPage__(request, 'Bad Method')
        return __renderErrorResponse__(request, 'domain.html', 'Bad Method')

    if not search_f.is_valid():
        return __renderErrorResponse__(request, 'domain.html', '', {
            'advdomain_form': search_f,
            'legacy_search': False
        })
        #return __renderErrorPage__(request, '', {'advdomain_form': search_f})
        #context = __createRequestContext__(request, data = { 'advdomain_form': search_f } )
        #return render_to_response('domain.html', context)

    fmt = search_f.cleaned_data['fmt'] or 'normal'
    search_string = search_f.cleaned_data['query']
    if settings.ES_SCRIPTING_ENABLED:
        query_unique = str(search_f.cleaned_data['unique']).lower()
    else:
        query_unique = 'false'

    if fmt == 'normal':
        context = __createRequestContext__(request,
                                           data={
                                               'search_string':
                                               urllib.quote(search_string)
                                               or '',
                                               'query_unique':
                                               query_unique,
                                               'advdomain_form':
                                               search_f,
                                               'legacy_search':
                                               False,
                                           })

        return render_to_response('domain_results.html', context)
    else:
        filt_key = search_f.cleaned_data['filt']
        try:
            limit = int(search_f.cleaned_data.get('limit', settings.LIMIT))
        except:
            limit = settings.LIMIT

        filt = None
        if fmt == 'list':  #Only filter if a list was requested
            filt = filt_key

        if query_unique == 'true':
            query_unique = True
        else:
            query_unique = False
        results = handler.advanced_search(search_string, 0, limit,
                                          query_unique)
        if not results['success']:
            #return __renderErrorPage__(request, results['message'])
            return __renderErrorResponse__(request, 'domain.html',
                                           results['message'])
        if fmt == 'json':
            return HttpResponse(json.dumps(results),
                                content_type='application/json')
        elif fmt == 'list':
            data = '\n'.join([d[filt_key] for d in results['data']])
            return HttpResponse(data, content_type='text/plain')
        else:
            #return __renderErrorPage__(request, 'Invalid Format.')
            return __renderErrorResponse__(request, 'domain.html',
                                           'Invalid Format')
Example #4
0
def advdomains(request):
    if request.method == "POST":
        search_f = advdomain_form(request.POST)
    elif request.method == "GET":
        search_f = advdomain_form(QueryDict(''))
        search_f.data['query'] = request.GET.get('query', None)
        search_f.data['fmt'] = request.GET.get('fmt','none')
        search_f.data['limit'] = request.GET.get('limit', settings.LIMIT)
        search_f.data['filt'] = request.GET.get('filt', settings.SEARCH_KEYS[0][0])
        search_f.data['unique'] = request.GET.get('unique', False)
    else:
        return __renderErrorResponse__(
                                        request,
                                        'domain.html',
                                        'Bad Method')

    if not search_f.is_valid():
        return __renderErrorResponse__(
                                        request,
                                        'domain.html',
                                        '',
                                        {'advdomain_form': search_f, 'legacy_search': False})

    fmt = search_f.cleaned_data['fmt'] or 'none'
    search_string = search_f.cleaned_data['query']
    query_unique = str(search_f.cleaned_data['unique']).lower()
    
    if fmt == 'none':
        context = __createRequestContext__(data = {'search_string': urllib.quote(search_string) or '',
                                                   'query_unique': query_unique,
                                                   'advdomain_form': search_f,
                                                   'legacy_search': False,
                                                   'fmt': fmt})

        return render(request, 'domain_results.html', context=context)
    else:
        filt_key = search_f.cleaned_data['filt']
        try:
            limit = int(search_f.cleaned_data.get('limit', settings.LIMIT))
        except:
            limit = settings.LIMIT

        filt = None
        if fmt == 'list': #Only filter if a list was requested
            filt = filt_key

        if query_unique == 'true':
            query_unique = True
        else:
            query_unique = False
        results = handler.advanced_search(
                                            search_string,
                                            0,
                                            limit,
                                            query_unique)
        if not results['success']:
            return __renderErrorResponse__(
                                            request,
                                            'domain.html',
                                            results['message'])

        if len(results['data']) == 0:
            return __renderErrorResponse__(request, 'domain.html', 'No results')

        if fmt =='json':
            data = [json.dumps(d) for d in results['data']]
        elif fmt == 'list':
            data = [d[filt_key] for d in results['data']]
        elif fmt == 'csv':
            raw_data = results['data']
            header_keys = set()
            for row in raw_data:
                header_keys = header_keys.union(set(row.keys()))
            csv_out = cStringIO.StringIO()
            writer = csv.DictWriter(csv_out, sorted(list(header_keys)))
            writer.writeheader()
            writer.writerows(raw_data)
            csv_data = csv_out.getvalue()
            csv_out.close()
            data = csv_data.split('\n')
        else:
            return __renderErrorResponse__(request,
                                           'domain.html',
                                           'Invalid Format')

        context = __createRequestContext__(data={'search_string': urllib.quote(search_string) or '',
                                                 'query_unique': str(query_unique).lower(),
                                                 'advdomain_form': search_f,
                                                 'legacy_search': False,
                                                 'fmt': fmt,
                                                 'data': data})

        return render(request, 'domain_results.html', context=context)
Example #5
0
def advdomains(request):
    if request.method == "POST":
        search_f = advdomain_form(request.POST)
    elif request.method == "GET":
        search_f = advdomain_form(QueryDict(''))
        search_f.data['query'] = request.GET.get('query', None)
        search_f.data['fmt'] = request.GET.get('fmt','normal')
        search_f.data['limit'] = request.GET.get('limit', settings.LIMIT)
        search_f.data['filt'] = request.GET.get('filt', settings.SEARCH_KEYS[0][0])
        if settings.ES_SCRIPTING_ENABLED:
            search_f.data['unique'] = request.GET.get('unique', False)
    else:
        #return __renderErrorPage__(request, 'Bad Method')
        return __renderErrorResponse__(request, 'domain.html', 'Bad Method')

    if not search_f.is_valid():
        return __renderErrorResponse__(request, 'domain.html', '', {'advdomain_form': search_f, 'legacy_search': False})
        #return __renderErrorPage__(request, '', {'advdomain_form': search_f})
        #context = __createRequestContext__(request, data = { 'advdomain_form': search_f } )
        #return render_to_response('domain.html', context)

    fmt = search_f.cleaned_data['fmt'] or 'normal'
    search_string = search_f.cleaned_data['query']
    if settings.ES_SCRIPTING_ENABLED:
        query_unique = str(search_f.cleaned_data['unique']).lower()
    else:
        query_unique = 'false'

    
    if fmt == 'normal':
        context = __createRequestContext__(request, data = { 'search_string': urllib.quote(search_string) or '',
                                                             'query_unique': query_unique,
                                                             'advdomain_form': search_f,
                                                             'legacy_search': False,
               })

        return render_to_response('domain_results.html', context)
    else:
        filt_key = search_f.cleaned_data['filt']
        try:
            limit = int(search_f.cleaned_data.get('limit', settings.LIMIT))
        except:
            limit = settings.LIMIT

        filt = None
        if fmt == 'list': #Only filter if a list was requested
            filt = filt_key

        if query_unique == 'true':
            query_unique = True
        else:
            query_unique = False
        results = handler.advanced_search(search_string, 0, limit, query_unique)
        if not results['success']:
            #return __renderErrorPage__(request, results['message'])
            return __renderErrorResponse__(request, 'domain.html', results['message'])
        if fmt=='json':
            return HttpResponse(json.dumps(results), content_type='application/json')
        elif fmt == 'list':
            data = '\n'.join([d[filt_key] for d in results['data']])
            return HttpResponse(data, content_type='text/plain')
        else:
            #return __renderErrorPage__(request, 'Invalid Format.')
            return __renderErrorResponse__(request, 'domain.html',  'Invalid Format')