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')
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')
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)
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')