mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-27 10:58:37 -06:00
Add full reverse dns view
This commit is contained in:
parent
e9d6c923d8
commit
fd98c0c2a8
@ -24,4 +24,7 @@ urlpatterns = [
|
||||
url(r'^records/(?P<pk>\d+)/edit/$', views.RecordEditView.as_view(), name='record_edit'),
|
||||
url(r'^records/(?P<pk>\d+)/delete/$', views.RecordDeleteView.as_view(), name='record_delete'),
|
||||
|
||||
# Full Reverse
|
||||
url(r'^reverse/$', views.full_reverse, name='full_reverse'),
|
||||
|
||||
]
|
||||
|
@ -5,7 +5,7 @@ from django.db.models import Count
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.http import HttpResponse
|
||||
|
||||
from ipam.models import IPAddress
|
||||
from ipam.models import IPAddress, Prefix
|
||||
from utilities.paginator import EnhancedPaginator
|
||||
from utilities.views import (
|
||||
BulkDeleteView, BulkEditView, BulkImportView, ObjectDeleteView, ObjectEditView, ObjectListView,
|
||||
@ -159,3 +159,33 @@ class RecordBulkDeleteView(PermissionRequiredMixin, BulkDeleteView):
|
||||
cls = Record
|
||||
form = forms.RecordBulkEditForm
|
||||
default_redirect_url = 'dns:record_list'
|
||||
|
||||
#
|
||||
# Full Reverse
|
||||
#
|
||||
|
||||
def full_reverse(request):
|
||||
|
||||
zones = {}
|
||||
|
||||
prefixes = Prefix.objects.all()
|
||||
|
||||
for p in prefixes:
|
||||
child_ip = IPAddress.objects.filter(address__net_contained_or_equal=str(p.prefix))
|
||||
z = p.to_bind(child_ip)
|
||||
for zz in z:
|
||||
if not zz['id'] in zones:
|
||||
zones[zz['id']] = zz['content']
|
||||
|
||||
zones_list = []
|
||||
for zid,zc in zones.items():
|
||||
zones_list.append({
|
||||
'num': len(zones_list),
|
||||
'id': zid,
|
||||
'content': zc,
|
||||
})
|
||||
|
||||
return render(request, 'dns/full_reverse.html', {
|
||||
'zones': zones_list,
|
||||
'bind_export_count': len(zones_list),
|
||||
})
|
||||
|
@ -170,6 +170,8 @@
|
||||
<li><a href="{% url 'dns:zone_add' %}"><i class="glyphicon glyphicon-plus" aria-hidden="true"></i> Add a zone</a></li>
|
||||
<li><a href="{% url 'dns:zone_import' %}"><i class="glyphicon glyphicon-import" aria-hidden="true"></i> Import zones</a></li>
|
||||
{% endif %}
|
||||
<li class="divider"></li>
|
||||
<li><a href="{% url 'dns:full_reverse' %}"><i class="glyphicon glyphicon-search" aria-hidden="true"></i> Full Reverse Export</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown{% if request.path|startswith:'/ipam/vlan' %} active{% endif %}">
|
||||
|
48
netbox/templates/dns/full_reverse.html
Normal file
48
netbox/templates/dns/full_reverse.html
Normal file
@ -0,0 +1,48 @@
|
||||
{% extends '_base.html' %}
|
||||
{% load render_table from django_tables2 %}
|
||||
|
||||
{% block title %}Full Reverse DNS{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1>Full Reverse DNS</h1>
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{% for z in zones %}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<strong class="text-md-left">{{ z.id }}</strong>
|
||||
<a class="pull-right" id="bind_export_select_{{ z.num }}" href="#">Select</a>
|
||||
</div>
|
||||
<table class="table table-hover panel-body">
|
||||
<tr><td>
|
||||
<pre id="bind_export_{{ z.num }}" style="overflow: auto;">{{ z.content }}</pre>
|
||||
</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block javascript %}
|
||||
<script>
|
||||
for(var i=0;i<{{ bind_export_count }};i++) {
|
||||
$('#bind_export_select_'+i).click(function(e){
|
||||
var i_str = $(this).attr('id');
|
||||
i_str = i_str.substr(i_str.lastIndexOf('_')+1);
|
||||
e.preventDefault();
|
||||
if(document.selection) {
|
||||
var range = document.body.createTextRange();
|
||||
var id='bind_export_'+i_str;
|
||||
range.moveToElementText(document.getElementById(id));
|
||||
range.select();
|
||||
}
|
||||
else if(window.getSelection) {
|
||||
var range = document.createRange();
|
||||
var id='bind_export_'+i_str;
|
||||
range.selectNode(document.getElementById(id));
|
||||
window.getSelection().addRange(range);
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user