Example #1
0
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)
Example #2
0
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
Example #3
0
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
Example #4
0
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)
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')
Example #6
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})

    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)
Example #7
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 #8
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')