Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Fukász Rómeó Ervin
/
cloud
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
A prog2-höz tartozó friss repo anyagok itt elérhetőek:
https://git.iit.bme.hu/
Commit
7402ce79
authored
Jul 31, 2013
by
Kálmán Viktor
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
network: display rules in host view
parent
493c99ac
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
203 additions
and
24 deletions
+203
-24
network/tables.py
+32
-0
network/templates/network/color_desc.html
+0
-19
network/templates/network/columns/host-rule-action.html
+4
-0
network/templates/network/columns/host-rule.html
+19
-0
network/templates/network/confirm/remove_host_group.html
+16
-0
network/templates/network/confirm/rule_delete.html
+15
-0
network/templates/network/host-edit.html
+40
-1
network/urls.py
+8
-1
network/views.py
+69
-3
No files found.
network/tables.py
View file @
7402ce79
...
...
@@ -45,6 +45,38 @@ class HostTable(Table):
order_by
=
(
'vlan'
,
'hostname'
,
)
class
SmallRuleTable
(
Table
):
rule
=
TemplateColumn
(
template_name
=
"network/columns/host-rule.html"
,
attrs
=
{
"th"
:
{
"style"
:
"display: none;"
}}
)
action
=
TemplateColumn
(
template_name
=
"network/columns/host-rule-action.html"
,
attrs
=
{
"th"
:
{
"style"
:
"display: none;"
},
"cell"
:
{
"style"
:
"text-align: center; vertical-align: middle;"
}
}
)
class
Meta
:
model
=
Rule
attrs
=
{
'class'
:
'table table-striped table-bordered table-condensed'
}
fields
=
(
'rule'
,
'action'
,
)
class
SmallGroupRuleTable
(
Table
):
rule
=
TemplateColumn
(
template_name
=
"network/columns/host-rule.html"
,
attrs
=
{
"th"
:
{
"style"
:
"display: none;"
}}
)
class
Meta
:
model
=
Rule
attrs
=
{
'class'
:
'table table-striped table-bordered table-condensed'
}
fields
=
(
'rule'
,
)
# inheritance by copy-paste
class
SmallHostTable
(
Table
):
hostname
=
LinkColumn
(
'network.host'
,
args
=
[
A
(
'pk'
)])
...
...
network/templates/network/color_desc.html
deleted
100644 → 0
View file @
493c99ac
{% load i18n %}
{% load l10n %}
<span
style=
"color: #FF0000;"
>
[{{ record.r_type }}]
</span>
{% if record.direction == "1" %}{{ record.foreign_network }}{% else %}{{ record.r_type }}{% endif %}
{#
<span
style=
"color: #0000FF;"
>
▸
</span>
#}
<i
class=
"icon-arrow-right"
></i>
{% if record.direction == "0" %}{{ record.foreign_network }}{% else %}{{ record.r_type }}{% endif %}
<span
style=
"color: #00FF00;"
>
{% if record.proto %}
proto={{ record.proto }}
{% endif %}
{% if record.sport %}
sport={{ record.sport }}
{% endif %}
{% if record.dport %}
dport={{ record.dport }}
{% endif %}
{{ record.description }}
network/templates/network/columns/host-rule-action.html
0 → 100644
View file @
7402ce79
{% load i18n %}
{% load l10n %}
<a
href=
"{% url network.rule_delete pk=record.pk %}?from={{ request.path }}"
><i
class=
"icon-remove"
></i></a>
<a
href=
"{% url network.rule pk=record.pk %}"
><i
class=
"icon-pencil"
></i></a>
network/templates/network/columns/host-rule.html
0 → 100644
View file @
7402ce79
{% load i18n %}
{% load l10n %}
{#
<span
style=
"color: #FF0000;"
>
[{{ record.r_type }}]
</span>
#}
{% if record.direction == "1" %}{{ record.foreign_network }}{% else %}{{ record.r_type }}{% endif %}
{#
<span
style=
"color: #0000FF;"
>
▸
</span>
#}
<i
class=
"icon-arrow-right"
></i>
{% if record.direction == "0" %}{{ record.foreign_network }}{% else %}{{ record.r_type }}{% endif %}
{% if record.accept %}
<span
class=
"label label-info"
style=
"margin-left: 5px;"
>
ACCEPT
</span>
{% endif %}
{% if record.extra %}
<span
class=
"label label-inverse"
>
{{ record.extra }}
</span>
{% endif %}
{% if record.nat %}
<span
class=
"label label-success"
>
NAT [{{ record.dport }}:{{record.nat_dport}}]
</span>
{% endif %}
network/templates/network/confirm/remove_host_group.html
0 → 100644
View file @
7402ce79
{% extends "network/base.html" %}
{% load i18n %}
{% load l10n %}
{% block content %}
<div
class=
"page-heading"
>
<h1>
Remove
<small></small></h1>
</div>
<form
action=
""
method=
"post"
>
{% csrf_token %}
<p>
Are you sure you want to remove hostgroup
<strong>
"{{ group }}"
</strong>
from
<strong>
"{{ host }}"
</strong>
?
</p>
<input
type=
"hidden"
value=
"{{ request.GET.from }}"
name=
"next"
/>
<input
type=
"submit"
value=
"Confirm"
/>
</form>
{% endblock %}
network/templates/network/confirm/rule_delete.html
0 → 100644
View file @
7402ce79
{% extends "network/base.html" %}
{% load i18n %}
{% load l10n %}
{% block content %}
<div
class=
"page-heading"
>
<h1>
Delete
<small>
delete this rule
</small></h1>
</div>
<form
action=
""
method=
"post"
>
{% csrf_token %}
<p>
Are you sure you want to delete
<strong>
"{{ object }}"
</strong>
?
</p>
<input
type=
"hidden"
value=
"{{ request.GET.from }}"
name=
"next"
/>
<input
type=
"submit"
value=
"Confirm"
/>
</form>
{% endblock %}
network/templates/network/host-edit.html
View file @
7402ce79
...
...
@@ -10,5 +10,44 @@
<h1>
{{ form.hostname.value }}
<small>
details of host
</small></h1>
</div>
{% crispy form %}
<div
class=
"row"
>
<div
class=
"span8"
>
{% crispy form %}
</div>
<div
class=
"span4"
>
<h3>
Rules
</h3>
{% render_table rule_list %}
<h3>
Groups
</h3>
{% for group in group_rule_list %}
<h4>
{{ group.name }}
<a
href=
"{% url network.remove_host_group pk=host_pk group_pk=group.pk %}?from={{ request.path }}"
>
<i
class=
"icon-remove"
style=
"vertical-align: middle;"
></i>
</a>
<a
href=
"{% url network.group group.pk %}"
>
<i
class=
"icon-pencil"
style=
"vertical-align: middle;"
></i>
</a>
</h4>
{% render_table group.table %}
{% endfor %}
<h3>
Add host group
</h3>
{% if not_used_groups|length == 0 %}
No more groups to add!
{% else %}
<form
action=
"{% url network.add_host_group pk=host_pk %}"
method=
"POST"
>
{% csrf_token %}
<div
class=
"input-append"
>
<select
name=
"group"
>
{% for rest in not_used_groups %}
<option
value=
"{{ rest.pk }}"
>
{{ rest }}
</option>
{% endfor %}
</select>
<input
type=
"submit"
value=
"Add group"
class=
"btn"
></input>
</div>
<!-- input append -->
</form>
{% endif %}
</div>
<!-- span4 -->
</div>
<!-- row -->
{% endblock %}
network/urls.py
View file @
7402ce79
...
...
@@ -3,7 +3,8 @@ from django.conf.urls import patterns, url
from
.views
import
(
IndexView
,
HostList
,
HostDetail
,
VlanList
,
VlanDetail
,
DomainList
,
DomainDetail
,
GroupList
,
GroupDetail
,
RecordList
,
RecordDetail
,
BlacklistList
,
BlacklistDetail
,
RuleList
,
RuleDetail
,
VlanGroupList
,
VlanGroupDetail
)
RuleList
,
RuleDetail
,
VlanGroupList
,
VlanGroupDetail
,
RuleDelete
,
remove_host_group
,
add_host_group
)
urlpatterns
=
patterns
(
...
...
@@ -32,4 +33,10 @@ urlpatterns = patterns(
name
=
'network.vlan_group_list'
),
url
(
'^vlangroups/(?P<pk>
\
d+)/$'
,
VlanGroupDetail
.
as_view
(),
name
=
'network.vlan_group'
),
url
(
'^rules/delete/(?P<pk>
\
d+)/$'
,
RuleDelete
.
as_view
(),
name
=
"network.rule_delete"
),
url
(
'^hosts/(?P<pk>
\
d+)/remove/(?P<group_pk>
\
d+)/$'
,
remove_host_group
,
name
=
'network.remove_host_group'
),
url
(
'^hosts/(?P<pk>
\
d+)/add/$'
,
add_host_group
,
name
=
'network.add_host_group'
)
)
network/views.py
View file @
7402ce79
from
django.views.generic
import
TemplateView
from
django.views.generic
import
UpdateView
from
django.views.generic
import
TemplateView
,
UpdateView
,
DeleteView
from
django.core.urlresolvers
import
reverse_lazy
from
django.shortcuts
import
render
,
redirect
from
django_tables2
import
SingleTableView
...
...
@@ -8,7 +8,7 @@ from firewall.models import (Host, Vlan, Domain, Group, Record, Blacklist,
Rule
,
VlanGroup
)
from
.tables
import
(
HostTable
,
VlanTable
,
SmallHostTable
,
DomainTable
,
GroupTable
,
RecordTable
,
BlacklistTable
,
RuleTable
,
VlanGroupTable
)
VlanGroupTable
,
SmallRuleTable
,
SmallGroupRuleTable
)
from
.forms
import
(
HostForm
,
VlanForm
,
DomainForm
,
GroupForm
,
RecordForm
,
BlacklistForm
,
RuleForm
,
VlanGroupForm
)
...
...
@@ -126,6 +126,32 @@ class HostDetail(UpdateView):
template_name
=
"network/host-edit.html"
form_class
=
HostForm
def
get_context_data
(
self
,
**
kwargs
):
context
=
super
(
HostDetail
,
self
)
.
get_context_data
(
**
kwargs
)
# own rules
q
=
Rule
.
objects
.
filter
(
host
=
self
.
object
)
.
all
()
context
[
'rule_list'
]
=
SmallRuleTable
(
q
)
# rules from host groups
group_rule_list
=
[]
for
group
in
self
.
object
.
groups
.
all
():
q
=
Rule
.
objects
.
filter
(
hostgroup
=
group
)
.
all
()
group_rule_list
.
append
({
'table'
:
SmallGroupRuleTable
(
q
),
'name'
:
unicode
(
group
),
'pk'
:
group
.
pk
})
context
[
'group_rule_list'
]
=
group_rule_list
# available groups
rest
=
Group
.
objects
.
exclude
(
pk__in
=
self
.
object
.
groups
.
all
())
.
all
()
context
[
'not_used_groups'
]
=
rest
# set host pk (we need this for URL-s)
context
[
'host_pk'
]
=
self
.
kwargs
[
'pk'
]
return
context
def
get_success_url
(
self
):
if
'pk'
in
self
.
kwargs
:
return
reverse_lazy
(
'network.host'
,
kwargs
=
self
.
kwargs
)
...
...
@@ -171,6 +197,17 @@ class RuleDetail(UpdateView):
return
reverse_lazy
(
'network.rule'
,
kwargs
=
self
.
kwargs
)
class
RuleDelete
(
DeleteView
):
model
=
Rule
template_name
=
"network/confirm/rule_delete.html"
def
get_success_url
(
self
):
if
'next'
in
self
.
request
.
POST
:
return
self
.
request
.
POST
[
'next'
]
else
:
return
reverse_lazy
(
'network.rule_list'
)
class
VlanList
(
SingleTableView
):
model
=
Vlan
table_class
=
VlanTable
...
...
@@ -207,3 +244,32 @@ class VlanGroupDetail(UpdateView):
form_class
=
VlanGroupForm
success_url
=
reverse_lazy
(
'network.vlan_group_list'
)
def
remove_host_group
(
request
,
**
kwargs
):
host
=
Host
.
objects
.
get
(
pk
=
kwargs
[
'pk'
])
group
=
Group
.
objects
.
get
(
pk
=
kwargs
[
'group_pk'
])
# for get we show the confirmation page
if
request
.
method
==
"GET"
:
return
render
(
request
,
'network/confirm/remove_host_group.html'
,
{
'group'
:
group
.
name
,
'host'
:
host
.
hostname
})
# for post we actually remove the group from the host
elif
request
.
method
==
"POST"
:
host
.
groups
.
remove
(
group
)
return
redirect
(
reverse_lazy
(
'network.host'
,
kwargs
=
{
'pk'
:
kwargs
[
'pk'
]}))
def
add_host_group
(
request
,
**
kwargs
):
group_pk
=
request
.
POST
.
get
(
'group'
)
if
request
.
method
==
"POST"
and
group_pk
:
host
=
Host
.
objects
.
get
(
pk
=
kwargs
[
'pk'
])
group
=
Group
.
objects
.
get
(
pk
=
group_pk
)
host
.
groups
.
add
(
group
)
return
redirect
(
reverse_lazy
(
'network.host'
,
kwargs
=
kwargs
))
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment