def ip_search(request): """Controller for ip search""" if 'ip_range' in request.GET: return ip_do_search(request) info_dict = {'form': forms.IpTrackerForm()} info_dict.update(IP_DEFAULTS) return render(request, 'machinetracker/ip_search.html', info_dict)
def ip_search(request): """Controller for ip search""" if 'ip_range' in request.GET or 'prefixid' in request.GET: return ip_do_search(request) info_dict = {'form': forms.IpTrackerForm()} info_dict.update(IP_DEFAULTS) return render_to_response('machinetracker/ip_search.html', info_dict, RequestContext(request))
def ip_do_search(request): """Search cam and arp based on prefixid or ip range""" querydict = ProcessInput(request.GET).ip() form = forms.IpTrackerForm(querydict) tracker = None form_data = {} row_count = 0 from_ip = None to_ip = None if form.is_valid(): form_data = form.cleaned_data ip_range = form.cleaned_data['ip_range'] from_ip, to_ip = (ip_range[0], ip_range[-1]) period_filter = form.cleaned_data['period_filter'] active = inactive = False if period_filter in ['active', 'both']: active = True if period_filter in ['inactive', 'both']: inactive = True if (to_ip.int() - from_ip.int()) > ADDRESS_LIMIT: inactive = False ip_result = get_result(form.cleaned_data['days'], from_ip, to_ip, form.cleaned_data['netbios']) ip_range = create_ip_range(inactive, from_ip, to_ip, ip_result) tracker = create_tracker(active, form.cleaned_data['dns'], inactive, ip_range, ip_result) row_count = sum(len(mac_ip_pair) for mac_ip_pair in tracker.values()) # If the form was valid, but we found no results, display error message display_no_results = False if form.is_valid() and not row_count: display_no_results = True info_dict = { 'form': form, 'form_data': form_data, 'ip_tracker': tracker, 'ip_tracker_count': row_count, 'subnet_start': unicode(from_ip), 'subnet_end': unicode(to_ip), 'display_no_results': display_no_results, 'colspan': find_colspan('ip', form) } info_dict.update(IP_DEFAULTS) return render_to_response('machinetracker/ip_search.html', info_dict, RequestContext(request))
def ip_do_search(request): """Search CAM and ARP based on IP range""" querydict = ProcessInput(request.GET).ip() form = forms.IpTrackerForm(querydict) tracker = None form_data = {} row_count = 0 from_ip = None to_ip = None if form.is_valid(): form_data = form.cleaned_data ip_range = form.cleaned_data['ip_range'] from_ip, to_ip = (ip_range[0], ip_range[-1]) period_filter = form.cleaned_data['period_filter'] active = inactive = False if period_filter in ['active', 'both']: active = True if period_filter in ['inactive', 'both']: inactive = True if (to_ip.int() - from_ip.int()) > ADDRESS_LIMIT: inactive = False ip_result = get_result( form.cleaned_data['days'], from_ip, to_ip, form.cleaned_data['netbios'] ) ip_range = create_ip_range(inactive, from_ip, to_ip, ip_result) tracker = create_tracker( active, form.cleaned_data['dns'], inactive, ip_range, ip_result ) row_count = sum(len(mac_ip_pair) for mac_ip_pair in tracker.values()) info_dict = { 'form': form, 'form_data': form_data, 'ip_tracker': tracker, 'ip_tracker_count': row_count, 'subnet_start': six.text_type(from_ip), 'subnet_end': six.text_type(to_ip), 'colspan': find_colspan('ip', form), } info_dict.update(IP_DEFAULTS) return render(request, 'machinetracker/ip_search.html', info_dict)