def __createRequestContext__(request, data=None): #Default to adding search forms to every context search_f = domain_form() pdns_f = pdns_form() pdns_r_f = pdns_r_form() advdomain_f = advdomain_form() ctx_var = { 'domain_form': search_f, 'advdomain_form': advdomain_f, 'pdns_form': pdns_f, 'pdns_r_form': pdns_r_f, 'latest_version': handler.lastVersion(), 'handler': settings.HANDLER } if settings.HANDLER == 'es': ctx_var['health'] = handler.cluster_health().capitalize() ctx_var['record_count'] = handler.record_count() ctx_var['last_import'] = handler.lastVersion() ctx_var['scripting'] = settings.ES_SCRIPTING_ENABLED if data is not None: ctx_var.update(data) if 'active' not in data: if 'pdns_form' in data: ctx_var['active'] = 1 elif 'pdns_r_form' in data: ctx_var['active'] = 2 else: ctx_var['active'] = 0 return RequestContext(request, ctx_var)
def __createRequestContext__(data=None, include_es=True): # Default to adding search forms to every context search_f = domain_form() pdns_f_dyn = pdns_form_dynamic() rpdns_f_dyn = rpdns_form_dynamic() advdomain_f = advdomain_form() ctx_var = {'domain_form': search_f, 'advdomain_form': advdomain_f, 'pdns_form_dynamic': pdns_f_dyn, 'rpdns_form_dynamic': rpdns_f_dyn, 'pdns_sources': [ mod_data.config for mod_data in passive.PDNS_HANDLER_MODS.values()]} if include_es: ctx_var['latest_version'] = handler.lastVersion() ctx_var['health'] = handler.cluster_health().capitalize() ctx_var['record_count'] = handler.record_count() ctx_var['last_import'] = handler.lastUpdate() if data is not None: ctx_var.update(data) if 'active' not in data: if 'pdns_form' in data: ctx_var['active'] = 1 elif 'pdns_r_form' in data: ctx_var['active'] = 2 else: ctx_var['active'] = 0 return ctx_var
def __createRequestContext__(data=None): #Default to adding search forms to every context search_f = domain_form() pdns_f_dyn = pdns_form_dynamic() rpdns_f_dyn = rpdns_form_dynamic() advdomain_f = advdomain_form() ctx_var = { 'domain_form': search_f, 'advdomain_form': advdomain_f, 'pdns_form_dynamic': pdns_f_dyn, 'rpdns_form_dynamic': rpdns_f_dyn, 'latest_version': handler.lastVersion(), 'handler': settings.HANDLER, 'pdns_sources':[mod_data.config for mod_data in passive.PDNS_HANDLER_MODS.values()] } if settings.HANDLER == 'es': ctx_var['health'] = handler.cluster_health().capitalize() ctx_var['record_count'] = handler.record_count() ctx_var['last_import'] = handler.lastUpdate() if data is not None: ctx_var.update(data) if 'active' not in data: if 'pdns_form' in data: ctx_var['active'] = 1 elif 'pdns_r_form' in data: ctx_var['active'] = 2 else: ctx_var['active'] = 0 return ctx_var
def __createRequestContext__(request, data = None): #Default to adding search forms to every context search_f = domain_form() pdns_f = pdns_form() pdns_r_f = pdns_r_form() advdomain_f = advdomain_form() ctx_var = { 'domain_form' : search_f, 'advdomain_form': advdomain_f, 'pdns_form': pdns_f, 'pdns_r_form': pdns_r_f, 'latest_version': handler.lastVersion(), 'handler': settings.HANDLER } if settings.HANDLER == 'es': ctx_var['health'] = handler.cluster_health().capitalize() ctx_var['record_count'] = handler.record_count() ctx_var['last_import'] = handler.lastVersion() ctx_var['scripting'] = settings.ES_SCRIPTING_ENABLED if data is not None: ctx_var.update(data) if 'active' not in data: if 'pdns_form' in data: ctx_var['active'] = 1 elif 'pdns_r_form' in data: ctx_var['active'] = 2 else: ctx_var['active'] = 0 return RequestContext(request, ctx_var)
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}) 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, '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 Exception as e: 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, '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','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')