Commit 43460176 by Bence Dányi

Merge branch 'firewall-gui'

parents 76c164a5 6cb66a3f
...@@ -38,6 +38,9 @@ nosetests.xml ...@@ -38,6 +38,9 @@ nosetests.xml
*.css *.css
*.min.js *.min.js
!bootstrap.min.js
!firewall_gui/static/css/*
# Other # Other
*.swp *.swp
*~ *~
......
...@@ -88,6 +88,7 @@ STATICFILES_DIRS = ( ...@@ -88,6 +88,7 @@ STATICFILES_DIRS = (
# Don't forget to use absolute paths, not relative paths. # Don't forget to use absolute paths, not relative paths.
'/opt/webadmin/cloud/one/static', '/opt/webadmin/cloud/one/static',
'/opt/webadmin/cloud/cloud/static', '/opt/webadmin/cloud/cloud/static',
'/opt/webadmin/cloud/firewall_gui/static',
) )
# List of finder classes that know how to find static files in # List of finder classes that know how to find static files in
...@@ -156,6 +157,7 @@ INSTALLED_APPS = ( ...@@ -156,6 +157,7 @@ INSTALLED_APPS = (
'cloud', 'cloud',
'store', 'store',
'firewall', 'firewall',
'firewall_gui',
'south', 'south',
'djcelery', 'djcelery',
'kombu.transport.django', 'kombu.transport.django',
......
...@@ -92,4 +92,40 @@ urlpatterns = patterns('', ...@@ -92,4 +92,40 @@ urlpatterns = patterns('',
url(r'^stat/$', 'one.views.stat'), url(r'^stat/$', 'one.views.stat'),
url(r'^sites/(?P<site>[a-zA-Z0-9]+)/$', 'one.views.sites'), url(r'^sites/(?P<site>[a-zA-Z0-9]+)/$', 'one.views.sites'),
url(r'^accounts/(?P<site>profile)/$', 'one.views.sites'), url(r'^accounts/(?P<site>profile)/$', 'one.views.sites'),
url(r'^firewall/$', 'firewall_gui.views.index'),
url(r'^firewall/rules/(?P<id>\d+)/$', 'firewall_gui.views.show_rule'),
url(r'^firewall/hosts/(?P<id>\d+)/$', 'firewall_gui.views.show_host'),
url(r'^firewall/vlans/(?P<id>\d+)/$', 'firewall_gui.views.show_vlan'),
url(r'^firewall/vlangroups/(?P<id>\d+)/$', 'firewall_gui.views.show_vlangroup'),
url(r'^firewall/hostgroups/(?P<id>\d+)/$', 'firewall_gui.views.show_hostgroup'),
url(r'^firewall/records/(?P<id>\d+)/$', 'firewall_gui.views.show_record'),
url(r'^firewall/domains/(?P<id>\d+)/$', 'firewall_gui.views.show_domain'),
url(r'^firewall/(?P<name>\w+)/$', 'firewall_gui.views.list_entities'),
url(r'^firewall/autocomplete/(?P<entity>\w+)/$', 'firewall_gui.views.autocomplete'),
url(r'^firewall/rules/save/$', 'firewall_gui.views.save_rule'),
url(r'^firewall/hosts/save/$', 'firewall_gui.views.save_host'),
url(r'^firewall/vlans/save/$', 'firewall_gui.views.save_vlan'),
url(r'^firewall/vlangroups/save/$', 'firewall_gui.views.save_vlangroup'),
url(r'^firewall/hostgroups/save/$', 'firewall_gui.views.save_hostgroup'),
url(r'^firewall/domains/save/$', 'firewall_gui.views.save_domain'),
url(r'^firewall/records/save/$', 'firewall_gui.views.save_record'),
url(r'^firewall/(?P<name>\w+)/(?P<id>\d+)/delete/', 'firewall_gui.views.delete_entity'),
url(r'^firewall/rules/new/$', 'firewall_gui.views.show_rule'),
url(r'^firewall/hosts/new/$', 'firewall_gui.views.show_host'),
url(r'^firewall/vlans/new/$', 'firewall_gui.views.show_vlan'),
url(r'^firewall/vlangroups/new/$', 'firewall_gui.views.show_vlangroup'),
url(r'^firewall/hostgroups/new/$', 'firewall_gui.views.show_hostgroup'),
url(r'^firewall/domains/new/$', 'firewall_gui.views.show_domain'),
url(r'^firewall/records/new/$', 'firewall_gui.views.show_record'),
# url(r'^firewall/vlangroups/save/$', 'firewall_gui.views.save_vlangroup'),
# url(r'^firewall/hostgroups/save/$', 'firewall_gui.views.save_hostgroup'),
# url(r'^firewall/domains/save/$', 'firewall_gui.views.save_domain'),
# url(r'^firewall/records/save/$', 'firewall_gui.views.save_record'),
) )
...@@ -14,6 +14,12 @@ import random ...@@ -14,6 +14,12 @@ import random
settings = django.conf.settings.FIREWALL_SETTINGS settings = django.conf.settings.FIREWALL_SETTINGS
class Rule(models.Model): class Rule(models.Model):
"""
Common firewall rule
Rule can be applied to: Host, Firewall, Vlan
"""
CHOICES_type = (('host', 'host'), ('firewall', 'firewall'), CHOICES_type = (('host', 'host'), ('firewall', 'firewall'),
('vlan', 'vlan')) ('vlan', 'vlan'))
CHOICES_proto = (('tcp', 'tcp'), ('udp', 'udp'), ('icmp', 'icmp')) CHOICES_proto = (('tcp', 'tcp'), ('udp', 'udp'), ('icmp', 'icmp'))
......
This source diff could not be displayed because it is too large. You can view the blob instead.
/*! project specific CSS goes here. */
\ No newline at end of file
<div class="navbar">
<div class="navbar-inner">
<div class="pagination pull-left">
<ul>
<li ng-click="prevPage()" ng-class="{disabled: page == 1}">
<a href>Előző</a>
</li>
<li ng-repeat="_page in pages" ng-click="setPage(_page)" ng-class="{active: _page == page}">
<a href>{{_page}}</a>
</li>
<li ng-click="nextPage()" ng-class="{disabled: page == pages.length}">
<a href>Next</a>
</li>
</ul>
</div>
<form class="navbar-search" style="margin: 20px">
<input type="text" class="search-query" placeholder="Search" ng-model="query">
</form>
<a style="margin-top: 19px" href="#/blacklists/new" class="btn">New blacklist</a>
</div>
</div>
<table class="table table-striped">
<tr>
<th>Név</th>
<th>IPv4</th>
<th>Host</th>
<th>Indok</th>
<th>Üzenet</th>
<th colspan="2">Típus</th>
</tr>
<tr ng-repeat="blacklist in getPage()">
<td>
<a href="#/blacklists/{{blacklist.id}}">{{blacklist.name}}</a>
</td>
<td>{{blacklist.ipv4}}</td>
<td>
<a href="#/hosts/{{blacklist.host.id}}">{{blacklist.host.hostname}}</a>
</td>
<td>{{blacklist.reason}}</td>
<td>{{blacklist.snort_message}}</td>
<td>{{blacklist.type}}</td>
<td>
<a class="btn" href="#/blacklists/{{blacklist.id}}/">Szerkesztés</a>
<a class="btn btn-danger" href="#/blacklists/{{blacklist.id}}/delete/">Törlés</a>
</td>
</tr>
</table>
<form class="form-horizontal">
<div class="span5">
<div class="control-group">
<label class="control-label" for="ID">ID</label>
<div class="controls">
<span class="has-tooltip" title="Built in ID, do not change this">
<input
class="input-mini"
type="text"
id="ID"
placeholder="ID"
value="{{entity.id}}"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="created_at">Created at</label>
<div class="controls">
<span class="has-tooltip" title="Entity was created at this date">
<input
class="input"
type="text"
id="created_at"
ng-model="entity.created_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="modified_at">Modified at</label>
<div class="controls">
<span class="has-tooltip" title="Entity was last modified at this date">
<input
class="input"
type="text"
id="modified_at"
ng-model="entity.modified_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group" ng-class="hasError('name')">
<label class="control-label" for="name">Name</label>
<div class="controls">
<input
type="text"
id="name"
ng-model="entity.name"
title="Domain name" />
<span class="help-inline" ng-bind="getError('name')"></span>
</div>
</div>
</div>
<div class="span5">
<div class="control-group" ng-class="hasError('owner')">
<label class="control-label" for="owner">Owner</label>
<div class="controls">
<input
type="text"
class="owner"
autocomplete="off"
id="owner"
ng-model="entity.owner.name"
title="Owners name" />
<span class="help-inline" ng-bind="getError('owner')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('ttl')">
<label class="control-label" for="ttl">TTL</label>
<div class="controls">
<input
type="text"
autocomplete="off"
id="ttl"
ng-model="entity.ttl"
title="Time To Live" />
<span class="help-inline" ng-bind="getError('ttl')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('description')">
<label class="control-label" for="description">Description</label>
<div class="controls">
<textarea rows="2"
id="description"
ng-model="entity.description"
title="Short description">
</textarea>
<span class="help-inline" ng-bind="getError('description')"></span>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn" ng-click="save()">Save</button>
</div>
</div>
</div>
</form>
<div class="navbar">
<div class="navbar-inner">
<div class="pagination pull-left">
<ul>
<li ng-click="prevPage()" ng-class="{disabled: page == 1}">
<a href>Előző</a>
</li>
<li ng-repeat="_page in pages" ng-click="setPage(_page)" ng-class="{active: _page == page}">
<a href>{{_page}}</a>
</li>
<li ng-click="nextPage()" ng-class="{disabled: page == pages.length}">
<a href>Next</a>
</li>
</ul>
</div>
<form class="navbar-search" style="margin: 20px">
<input type="text" class="search-query" placeholder="Search" ng-model="query">
</form>
<a style="margin-top: 19px" href="#/domains/new" class="btn">New domain</a>
</div>
</div>
<table class="table table-striped">
<tr>
<th>Név</th>
<th>TTL</th>
<th>Leírás</th>
<th colspan="2">Tulajdonos</th>
</tr>
<tr ng-repeat="domain in getPage()">
<td>
<a href="#/domains/{{domain.id}}">{{domain.name}}</a>
</td>
<td>{{domain.ttl}}</td>
<td>{{domain.description}}</td>
<td>{{domain.owner.name}}</td>
<td>
<a class="btn" href="#/domains/{{domain.id}}/">Szerkesztés</a>
<a class="btn btn-danger" href="#/domains/{{domain.id}}/delete/">Törlés</a>
</td>
</tr>
</table>
<div class="navbar">
<div class="navbar-inner">
<div class="pagination pull-left">
<ul>
<li ng-click="prevPage()" ng-class="{disabled: page == 1}">
<a href>Előző</a>
</li>
<li ng-repeat="_page in pages" ng-click="setPage(_page)" ng-class="{active: _page == page}">
<a href>{{_page}}</a>
</li>
<li ng-click="nextPage()" ng-class="{disabled: page == pages.length}">
<a href>Next</a>
</li>
</ul>
</div>
<form class="navbar-search" style="margin: 20px">
<input type="text" class="search-query" placeholder="Search" ng-model="query">
</form>
<a style="margin-top: 19px" href="#/firewalls/new" class="btn">New firewall</a>
</div>
</div>
<table class="table table-striped">
<tr>
<th>Név</th>
<th colspan="2">Tulajdonos</th>
</tr>
<tr ng-repeat="firewall in getPage()">
<td>
<a href="#/firewalls/{{firewall.id}}">{{firewall.name}}</a>
</td>
<td>{{firewall.owner.name}}</td>
<td>
<a class="btn" href="#/firewalls/{{firewall.id}}/">Szerkesztés</a>
<a class="btn btn-danger" href="#/firewalls/{{firewall.id}}/delete/">Törlés</a>
</td>
</tr>
</table>
<form class="form-horizontal">
<div class="span5">
<div class="control-group">
<label class="control-label" for="ID">ID</label>
<div class="controls">
<span class="has-tooltip" title="Built in ID, do not change this">
<input
class="input-mini"
type="text"
id="ID"
placeholder="ID"
value="{{entity.id}}"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="created_at">Created at</label>
<div class="controls">
<span class="has-tooltip" title="Entity was created at this date">
<input
class="input"
type="text"
id="created_at"
ng-model="entity.created_at"
disabled="disabled">
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="modified_at">Modified at</label>
<div class="controls">
<span class="has-tooltip" title="Entity was last modified at this date">
<input
class="input"
type="text"
id="modified_at"
ng-model="entity.modified_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group" ng-class="hasError('name')">
<label class="control-label" for="name">Name</label>
<div class="controls">
<input
type="text"
id="name"
ng-model="entity.name"
title="Name of the host" />
<span class="help-inline" ng-bind="getError('name')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('mac')">
<label class="control-label" for="mac">MAC</label>
<div class="controls">
<input
type="text"
id="mac"
ng-model="entity.mac"
title="MAC address" />
<span class="help-inline" ng-bind="getError('mac')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('ipv4')">
<label class="control-label" for="ipv4">IPv4</label>
<div class="controls">
<input
type="text"
id="ipv4"
ng-model="entity.ipv4"
title="IPv4 address" />
<span class="help-inline" ng-bind="getError('ipv4')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('pub_ipv4')">
<label class="control-label" for="pub_ipv4">Public IPv4</label>
<div class="controls">
<input
type="text"
id="pub_ipv4"
ng-model="entity.pub_ipv4"
title="Public IPv4 address" />
<span class="help-inline" ng-bind="getError('pub_ipv4')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('ipv6')">
<label class="control-label" for="ipv6">IPv6</label>
<div class="controls">
<input
type="text"
class="input-xlarge"
id="ipv6"
ng-model="entity.ipv6"
title="IPv6 address" />
<span class="help-inline" ng-bind="getError('ipv6')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('owner')">
<label class="control-label" for="owner">Owner</label>
<div class="controls">
<input
type="text"
class="owner"
autocomplete="off"
id="owner"
ng-model="entity.owner.name"
title="Owners name" />
<span class="help-inline" ng-bind="getError('owner')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('vlan')">
<label class="control-label" for="vlan">Vlan</label>
<div class="controls">
<input
type="text"
autocomplete="off"
class="vlan"
id="vlan"
ng-model="entity.vlan.name"
title="Vlan of this host #TODO" />
<span class="help-inline" ng-bind="getError('vlan')"></span>
</div>
</div>
</div>
<div class="span5">
<div class="control-group" ng-class="hasError('description')">
<label class="control-label" for="description">Description</label>
<div class="controls">
<textarea rows="4"
id="description"
ng-model="entity.description"
title="Short description">
</textarea>
<span class="help-inline" ng-bind="getError('description')"></span>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" ng-model="entity.shared_ip"> Shared IP
</label>
</div>
</div>
<div class="control-group" ng-class="hasError('comment')">
<label class="control-label" for="comment">Comment</label>
<div class="controls">
<textarea rows="2"
id="comment"
ng-model="entity.comment"
title="Some comments... or something like that #TODO">
</textarea>
<span class="help-inline" ng-bind="getError('comment')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('groups')">
<label class="control-label" for="hostgroups">Host groups</label>
<div class="controls">
<div class="well well-small">
<span class="label label-info" ng-repeat="group in entity.groups | filter: destroyed">
<a href="#/hostgroups/{{group.id}}">{{group.name}}</a>
<a href ng-click="removeHostGroup(group)"><i class="icon-remove"></i></a>
</span>
</div>
<div class="input-append has-tooltip" title="Hostgroups of this host">
<input class="span2 hostgroup" id="groups" type="text" ng-model="newGroup">
<button class="btn" type="button" ng-click="addHostGroup(newGroup)">Add</button>
<span class="help-inline" ng-bind="getError('groups')"></span>
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn" ng-click="save()">Save</button>
</div>
</div>
</div>
</form>
<div class="span12">
<h3>Rules belonging to this host</h3>
<table class="table table-striped">
<thead>
<tr>
<th>Direction</th>
<th>Protocol</th>
<th>Accept</th>
<th>NAT</th>
<th colspan="2">Owner</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="rule in entity.rules">
<td>{{rule.direction}}</td>
<td>{{rule.proto}}</td>
<td>{{rule.accept}}</td>
<td>{{rule.nat}}</td>
<td>{{rule.owner.name}}</td>
<td>
<a class="btn" href="#/rules/{{rule.id}}/">Edit</a>
<a class="btn btn-danger" href="#/rules/{{rule.id}}/delete/">Delete</a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="navbar">
<div class="navbar-inner">
<div class="pagination pull-left">
<ul>
<li ng-click="prevPage()" ng-class="{disabled: page == 1}">
<a href>Előző</a>
</li>
<li ng-repeat="_page in pages" ng-click="setPage(_page)" ng-class="{active: _page == page}">
<a href>{{_page}}</a>
</li>
<li ng-click="nextPage()" ng-class="{disabled: page == pages.length}">
<a href>Next</a>
</li>
</ul>
</div>
<form class="navbar-search" style="margin: 20px">
<input type="text" class="search-query" placeholder="Search" ng-model="query">
</form>
<a style="margin-top: 20px" href="#/hosts/new" class="btn">New host</a>
</div>
</div>
<table class="table table-striped">
<tr>
<th>Név</th>
<th>Vlan</th>
<th>IPv4</th>
<th>Csoportok</th>
<th>Tulajdonos</th>
<th colspan="2">Leírás</th>
</tr>
<tr ng-repeat="host in getPage()">
<td>{{host.name}}</td>
<td>
<a href="#/hosts/{{host.vlan.id}}">{{host.vlan.name}}</a>
</td>
<td>{{host.ipv4}}</td>
<td>
<div class="well well-small">
<span class="label label-info" ng-repeat="group in host.groups">
<a href="#/hostgroups/{{group.id}}">{{group.name}}</a>
</span>
</div>
</td>
<td>{{host.owner.name}}</td>
<td style="width: 200px;">{{host.description}}</td>
<td>
<a class="btn" href="#/hosts/{{host.id}}/">Szerkesztés</a>
<a class="btn btn-danger" href="#/hosts/{{host.id}}/delete/">Törlés</a>
</td>
</tr>
</table>
<form class="form-horizontal">
<div class="span5">
<div class="control-group">
<label class="control-label" for="ID">ID</label>
<div class="controls">
<span class="has-tooltip" title="Built in ID, do not change this">
<input
class="input-mini"
type="text"
id="ID"
placeholder="ID"
value="{{entity.id}}"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="created_at">Created at</label>
<div class="controls">
<span class="has-tooltip" title="Entity was created at this date">
<input
class="input"
type="text"
id="created_at"
ng-model="entity.created_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="modified_at">Modified at</label>
<div class="controls">
<span class="has-tooltip" title="Entity was last modified at this date">
<input
class="input"
type="text"
id="modified_at"
ng-model="entity.modified_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group" ng-class="hasError('name')">
<label class="control-label" for="name">Name</label>
<div class="controls">
<input
type="text"
id="name"
ng-model="entity.name"
title="Name for this Hostgroup" />
<span class="help-inline" ng-bind="getError('name')"></span>
</div>
</div>
</div>
<div class="span5">
<div class="control-group" ng-class="hasError('owner')">
<label class="control-label" for="owner">Owner</label>
<div class="controls">
<input
type="text"
class="owner"
autocomplete="off"
id="owner"
ng-model="entity.owner.name"
title="Owners name" />
<span class="help-inline" ng-bind="getError('owner')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('description')">
<label class="control-label" for="description">Description</label>
<div class="controls">
<textarea rows="4"
id="description"
ng-model="entity.description"
title="Short description">
</textarea>
<span class="help-inline" ng-bind="getError('description')"></span>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn" ng-click="save()">Save</button>
</div>
</div>
</div>
</form>
<div class="span12">
<h3>Rules belonging to this hostgroup</h3>
<table class="table table-striped">
<thead>
<tr>
<th>Direction</th>
<th>Protocol</th>
<th>Accept</th>
<th>NAT</th>
<th colspan="2">Owner</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="rule in entity.rules">
<td>{{rule.direction}}</td>
<td>{{rule.proto}}</td>
<td>{{rule.accept}}</td>
<td>{{rule.nat}}</td>
<td>{{rule.owner.name}}</td>
<td>
<a class="btn" href="#/rules/{{rule.id}}/">Edit</a>
<a class="btn btn-danger" href="#/rules/{{rule.id}}/delete/">Delete</a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="span12">
<h3>Hosts belonging to this hostgroup</h3>
<div class="well well-small">
<span class="label label-info" ng-repeat="host in entity.hosts">
<a href="#/hosts/{{host.id}}">{{host.name}}</a>
</span>
</div>
</div>
<div class="navbar">
<div class="navbar-inner">
<div class="pagination pull-left">
<ul>
<li ng-click="prevPage()" ng-class="{disabled: page == 1}">
<a href>Előző</a>
</li>
<li ng-repeat="_page in pages" ng-click="setPage(_page)" ng-class="{active: _page == page}">
<a href>{{_page}}</a>
</li>
<li ng-click="nextPage()" ng-class="{disabled: page == pages.length}">
<a href>Next</a>
</li>
</ul>
</div>
<form class="navbar-search" style="margin: 20px">
<input type="text" class="search-query" placeholder="Search" ng-model="query">
</form>
<a style="margin-top: 19px" href="#/hostgroups/new" class="btn">New hostgroup</a>
</div>
</div>
<table class="table table-striped">
<tr>
<th>Név</th>
<th>Tulajdonos</th>
<th colspan="2">Leírás</th>
</tr>
<tr ng-repeat="group in getPage()">
<td>
<a href="#/hostgroups/{{group.id}}">{{group.name}}</td>
<td>{{group.owner.name}}</td>
<td style="width: 200px;">{{group.description}}</td>
<td>
<a class="btn" href="#/hostgroups/{{group.id}}/">Szerkesztés</a>
<a class="btn btn-danger" href="#/hostgroups/{{group.id}}/delete/">Törlés</a>
</td>
</tr>
</table>
<form class="form-horizontal">
<div class="span5">
<div class="control-group">
<label class="control-label" for="ID">ID</label>
<div class="controls">
<span class="has-tooltip" title="Built in ID, do not change this">
<input
class="input-mini"
type="text"
id="ID"
placeholder="ID"
value="{{entity.id}}"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="created_at">Created at</label>
<div class="controls">
<span class="has-tooltip" title="Entity was created at this date">
<input
class="input"
type="text"
id="created_at"
ng-model="entity.created_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="modified_at">Modified at</label>
<div class="controls">
<span class="has-tooltip" title="Entity was last modified at this date">
<input
class="input"
type="text"
id="modified_at"
ng-model="entity.modified_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group" ng-class="hasError('name')">
<label class="control-label" for="name">Name</label>
<div class="controls">
<input
type="text"
id="name"
ng-model="entity.name"
title="Name of the DNS record" />
<span class="help-inline" ng-bind="getError('name')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('domain')">
<label class="control-label" for="domain">Domain</label>
<div class="controls">
<input
type="text"
id="domain"
class="domain"
ng-model="entity.domain.name"
title="Domain belonging to this record" />
<span class="help-inline" ng-bind="getError('domain')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('host')">
<label class="control-label" for="host">Host</label>
<div class="controls">
<input
type="text"
class="host"
id="host"
ng-model="entity.host.name"
title="Host belonging to this record" />
<span class="help-inline" ng-bind="getError('host')"></span>
</div>
</div>
</div>
<div class="span5">
<div class="control-group" ng-class="hasError('type')">
<label class="control-label" for="type">Type</label>
<div class="controls">
<select id="type" ng-model="entity.type" title="Record type">
<option value="A">A</option>
<option value="CNAME">CNAME</option>
<option value="AAAA">AAAA</option>
<option value="MX">MX</option>
<option value="NS">NS</option>
<option value="PTR">PTR</option>
</select>
<span class="help-inline" ng-bind="getError('type')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('owner')">
<label class="control-label" for="owner">Owner</label>
<div class="controls">
<input
type="text"
class="owner"
autocomplete="off"
id="owner"
ng-model="entity.owner.name"
title="Owners name" />
<span class="help-inline" ng-bind="getError('owner')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('address')">
<label class="control-label" for="address">Address</label>
<div class="controls">
<input
type="text"
autocomplete="off"
id="address"
ng-model="entity.address"
title="Address #TODO" />
<span class="help-inline" ng-bind="getError('address')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('ttl')">
<label class="control-label" for="ttl">TTL</label>
<div class="controls">
<input
type="text"
autocomplete="off"
id="ttl"
ng-model="entity.ttl"
title="Time To Live" />
<span class="help-inline" ng-bind="getError('ttl')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('description')">
<label class="control-label" for="description">Description</label>
<div class="controls">
<textarea rows="2"
id="description"
ng-model="entity.description"
title="Short description">
</textarea>
<span class="help-inline" ng-bind="getError('description')"></span>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn" ng-click="save()">Save</button>
</div>
</div>
</div>
</form>
<div class="navbar">
<div class="navbar-inner">
<div class="pagination pull-left">
<ul>
<li ng-click="prevPage()" ng-class="{disabled: page == 1}">
<a href>Előző</a>
</li>
<li ng-repeat="_page in pages" ng-click="setPage(_page)" ng-class="{active: _page == page}">
<a href>{{_page}}</a>
</li>
<li ng-click="nextPage()" ng-class="{disabled: page == pages.length}">
<a href>Next</a>
</li>
</ul>
</div>
<form class="navbar-search" style="margin: 20px">
<input type="text" class="search-query" placeholder="Search" ng-model="query">
</form>
<a style="margin-top: 19px" href="#/records/new" class="btn">New record</a>
</div>
</div>
<table class="table table-striped">
<tr>
<th>Név</th>
<th>Típus</th>
<th>Domain</th>
<th>Hoszt</th>
<th>Cím</th>
<th>TTL</th>
<th>Leírás</th>
<th colspan="2">Tulajdonos</th>
</tr>
<tr ng-repeat="record in getPage()">
<td>
<a href="#/records/{{record.id}}">{{record.name}}</a>
</td>
<td>{{record.type}}</td>
<td>
<a href="#/domains/{{record.domain.id}}">{{record.domain.name}}</a>
</td>
<td>
<a href="#/hosts/{{record.host.id}}">{{record.host.name}}</a>
</td>
<td>{{record.address}}</td>
<td>{{record.ttl}}</td>
<td>{{record.owner.name}}</td>
<td>
<a class="btn" href="#/records/{{record.id}}/">Szerkesztés</a>
<a class="btn btn-danger" href="#/records/{{record.id}}/delete/">Törlés</a>
</td>
</tr>
</table>
<form class="form-horizontal">
<div class="span5">
<div class="control-group">
<label class="control-label" for="ID">ID</label>
<div class="controls">
<span class="has-tooltip" title="Built in ID, do not change this">
<input
class="input-mini"
type="text"
id="ID"
placeholder="ID"
value="{{entity.id}}"
disabled="disabled">
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="created_at">Created at</label>
<div class="controls">
<span class="has-tooltip" title="The entity was created at this date">
<input
class="input"
type="text"
id="created_at"
ng-model="entity.created_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="modified_at">Modified at</label>
<div class="controls">
<span class="has-tooltip" title="The entity was last modified at this date">
<input
class="input"
type="text"
id="modified_at"
ng-model="entity.modified_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="targetType">Target type</label>
<div class="controls">
<select id="targetType"
ng-model="entity.target.type"
title="Entity type of the rules target">
<option value="vlan">Vlan</option>
<option value="vlangroup">VlanGroup</option>
<option value="host">Host</option>
<option value="hostgroup">HostGroup</option>
<option value="firewall">Firewall</option>
</select>
</div>
</div>
<div class="control-group" ng-class="hasError('targetName')">
<label class="control-label" for="targetName">Target</label>
<div class="controls">
<input
title="Target of the rule, can be a Vlan, Vlangroup, Host, Hostgroup or a Firewall"
type="text"
autocomplete="off"
id="targetName"
ng-model="entity.target.name" />
<span class="help-inline" ng-bind="getError('targetName')"></span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="direction">Direction</label>
<div class="controls">
<select id="direction"
ng-options="choice[0] as choice[1] for choice in entity.direction.choices"
ng-model="entity.direction.value"
title="Traffic direction">
</select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="proto">Protocol</label>
<div class="controls">
<select id="proto"
ng-options="choice[0] as choice[1] for choice in entity.proto.choices"
ng-model="entity.proto.value"
title="Protocol filter">
<option value="">all</option>
</select>
</div>
</div>
<div class="control-group" ng-class="hasError('owner')">
<label class="control-label" for="owner">Owner</label>
<div class="controls">
<input
title="Owner of this rule"
type="text"
class="owner"
autocomplete="off"
id="owner"
ng-model="entity.owner.name" />
<span class="help-inline" ng-bind="getError('owner')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('foreign_network')">
<label class="control-label" for="foreign_network">Foreign network</label>
<div class="controls">
<input
title="Foreign Network"
type="text"
data-provide="typeahead"
autocomplete="off"
id="foreign_network"
class="vlangroup"
ng-model="entity.foreignNetwork.name" />
<span class="help-inline" ng-bind="getError('foreign_network')"></span>
</div>
</div>
</div>
<div class="span5">
<div class="control-group">
<label class="control-label" for="description">Description</label>
<div class="controls">
<textarea id="description"
ng-model="entity.description"
rows="2"
title="Short description of the rule">
</textarea>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" ng-model="entity.nat"> NAT
</label>
</div>
</div>
<div class="control-group">
<div class="controls">
<label class="checkbox">
<input type="checkbox" ng-model="entity.accept"> Accept
</label>
</div>
</div>
<div class="control-group" ng-class="hasError('dport')">
<label class="control-label" for="dport">Destination port</label>
<div class="controls">
<input
class="input-mini"
type="number"
id="dport"
ng-model="entity.dport"
title="Destination port">
<span class="help-inline" ng-bind="getError('dport')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('nat_dport')">
<label class="control-label" for="nat_dport">NAT Destination port</label>
<div class="controls">
<input
class="input-mini"
type="number"
id="nat_dport"
ng-model="entity.nat_dport"
title="NAT Destination port">
<span class="help-inline" ng-bind="getError('nat_dport')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('sport')">
<label class="control-label" for="sport">Source port</label>
<div class="controls">
<input
class="input-mini"
type="number"
id="sport"
ng-model="entity.sport"
title="Source port">
<span class="help-inline" ng-bind="getError('sport')"></span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="extra">Extra</label>
<div class="controls">
<textarea id="extra"
ng-model="entity.extra"
rows="2"
title="I have no idea what is this... #TODO">
</textarea>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn" ng-click="save()">Save</button>
</div>
</div>
</div>
</form>
<div class="navbar">
<div class="navbar-inner">
<div class="pagination pull-left">
<ul>
<li ng-click="prevPage()" ng-class="{disabled: page == 1}">
<a href>Előző</a>
</li>
<li ng-repeat="_page in pages" ng-click="setPage(_page)" ng-class="{active: _page == page}">
<a href>{{_page}}</a>
</li>
<li ng-click="nextPage()" ng-class="{disabled: page == pages.length}">
<a href>Next</a>
</li>
</ul>
</div>
<form class="navbar-search" style="margin: 20px">
<input type="text" class="search-query" placeholder="Search" ng-model="query">
</form>
<a style="margin-top: 20px" href="#/rules/new" class="btn">New rule</a>
</div>
</div>
<table class="table table-striped">
<tr>
<th>Irány</th>
<th>Protokoll</th>
<th>Cél</th>
<th>Idegen hálózat</th>
<th>Tulajdonos</th>
<th colspan="2">Megjegyzés</th>
</tr>
<tr ng-repeat="rule in getPage()">
<td>{{rule.direction}}</td>
<td>{{rule.proto}}</td>
<td>
<a href="#/{{rule.target.type}}s/{{rule.target.id}}">{{rule.target.name}}</a>
</td>
<td>
<a href="#/vlangroups/{{rule.foreignNetwork.id}}">{{rule.foreignNetwork.name}}</a>
</td>
<td>{{rule.owner.name}}</td>
<td>{{rule.description}}</td>
<td>
<a class="btn" href="#/rules/{{rule.id}}/">Szerkesztés</a>
<button class="btn btn-danger" ng-click="deleteEntity(rule.id)">Törlés</button>
</td>
</tr>
</table>
<form class="form-horizontal">
<div class="span5">
<div class="control-group">
<label class="control-label" for="ID">ID</label>
<div class="controls">
<span class="has-tooltip" title="Built in ID, do not change this">
<input
class="input-mini"
type="text"
id="ID"
placeholder="ID"
value="{{entity.id}}"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group" ng-class="hasError('vid')">
<label class="control-label" for="VID">VID</label>
<div class="controls">
<input
class="input-mini"
type="text"
id="VID"
placeholder="ID"
ng-model="entity.vid"
title="Vlan ID, you can change this" />
<span class="help-inline" ng-bind="getError('vid')"></span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="created_at">Created at</label>
<div class="controls">
<span class="has-tooltip" title="The entity was created at this date">
<input
class="input"
type="text"
id="created_at"
ng-model="entity.created_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="modified_at">Modified at</label>
<div class="controls">
<span class="has-tooltip" title="The entity was last modified at this date">
<input
class="input"
type="text"
id="modified_at"
ng-model="entity.modified_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group" ng-class="hasError('name')">
<label class="control-label" for="name">Name</label>
<div class="controls">
<input
type="text"
id="name"
ng-model="entity.name"
title="Name of this Vlan" />
<span class="help-inline" ng-bind="getError('name')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('ipv4')">
<label class="control-label" for="ipv4">IPv4</label>
<div class="controls">
<input
type="text"
id="ipv4"
ng-model="entity.ipv4"
title="IPv4 address of this Vlan (with subnet mask)" />
<span class="help-inline" ng-bind="getError('ipv4')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('ipv6')">
<label class="control-label" for="ipv6">IPv6</label>
<div class="controls">
<input
type="text"
class="input-xlarge"
id="ipv6"
ng-model="entity.ipv6"
title="IPv6 address of this Vlan (with subnet mask)" />
<span class="help-inline" ng-bind="getError('ipv6')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('net4')">
<label class="control-label" for="net4">Net4</label>
<div class="controls">
<input
type="text"
id="net4"
ng-model="entity.net4"
title="Net4 address of this Vlan (with subnet mask)" />
<span class="help-inline" ng-bind="getError('net4')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('net6')">
<label class="control-label" for="net6">Net6</label>
<div class="controls">
<input
type="text"
class="input-xlarge"
id="net6"
ng-model="entity.net6"
title="Net6 address of this Vlan (with subnet mask)" />
<span class="help-inline" ng-bind="getError('net6')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('snat_ip')">
<label class="control-label" for="snat_ip">NAT</label>
<div class="controls">
<input
type="text"
id="snat_ip"
ng-model="entity.nat"
title="NAT IP for this Vlan" />
<span class="help-inline" ng-bind="getError('snat_ip')"></span>
</div>
</div>
</div>
<div class="span5">
<div class="control-group" ng-class="hasError('owner')">
<label class="control-label" for="owner">Owner</label>
<div class="controls">
<input
type="text"
class="owner"
autocomplete="off"
id="owner"
ng-model="entity.owner.name"
title="Owners name" />
<span class="help-inline" ng-bind="getError('owner')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('interface')">
<label class="control-label" for="interface">Interface</label>
<div class="controls">
<input
type="text"
autocomplete="off"
id="interface"
ng-model="entity.interface"
title="#TODO" />
<span class="help-inline" ng-bind="getError('interface')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('domain')">
<label class="control-label" for="domain">Domain</label>
<div class="controls">
<input
type="text"
class="domain"
data-provide="typeahead"
autocomplete="off"
id="domain"
ng-model="entity.domain.name"
title="Domain name" />
<span class="help-inline" ng-bind="getError('domain')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('reverse_domain')">
<label class="control-label" for="reverse_domain">Reverse domain</label>
<div class="controls">
<input
type="text"
autocomplete="off"
id="reverse_domain"
ng-model="entity.reverse_domain"
title="Reverse domain name" />
<span class="help-inline" ng-bind="getError('reverse_domain')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('description')">
<label class="control-label" for="description">Description</label>
<div class="controls">
<textarea id="description"
rows="2"
ng-model="entity.description"
title="Short description">
</textarea>
<span class="help-inline" ng-bind="getError('description')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('comment')">
<label class="control-label" for="comment">Comment</label>
<div class="controls">
<textarea id="comment"
rows="2"
ng-model="entity.comment"
title="Some comments... #TODO">
</textarea>
<span class="help-inline" ng-bind="getError('comment')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('dhcp_pool')">
<label class="control-label" for="dhcp_pool">DHCP Pool</label>
<div class="controls">
<textarea id="dhcp_pool"
rows="2"
ng-model="entity.dhcp_pool"
title="Some DHCP Pool related thing... #TODO">
</textarea>
<span class="help-inline" ng-bind="getError('dhcp_pool')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('vlans')">
<label class="control-label" for="vlans">NAT to (?)</label>
<div class="controls">
<div class="well well-small">
<span class="label label-info" ng-repeat="vlan in entity.vlans | filter: destroyed">
<a href="#/vlans/{{vlan.id}}">{{vlan.name}}</a>
<a href ng-click="removeVlan(vlan)"><i class="icon-remove"></i></a>
</span>
</div>
<div class="input-append has-tooltip" title="#TODO">
<input class="span2 vlan" id="vlans" type="text" ng-model="newVlan">
<button class="btn" type="button" ng-click="addVlan(newVlan)">Add</button>
</div>
<span class="help-inline" ng-bind="getError('vlans')"></span>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn" ng-click="save()">Save</button>
</div>
</div>
</div>
</form>
<div class="span12">
<h3>Rules belonging to this vlan</h3>
<table class="table table-striped">
<thead>
<tr>
<th>Direction</th>
<th>Protocol</th>
<th>Accept</th>
<th>NAT</th>
<th colspan="2">Owner</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="rule in entity.rules">
<td>{{rule.direction}}</td>
<td>{{rule.proto}}</td>
<td>{{rule.accept}}</td>
<td>{{rule.nat}}</td>
<td>{{rule.owner.name}}</td>
<td>
<a class="btn" href="#/rules/{{rule.id}}/">Edit</a>
<a class="btn btn-danger" href="#/rules/{{rule.id}}/delete/">Delete</a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="navbar">
<div class="navbar-inner">
<div class="pagination pull-left">
<ul>
<li ng-click="prevPage()" ng-class="{disabled: page == 1}">
<a href>Előző</a>
</li>
<li ng-repeat="_page in pages" ng-click="setPage(_page)" ng-class="{active: _page == page}">
<a href>{{_page}}</a>
</li>
<li ng-click="nextPage()" ng-class="{disabled: page == pages.length}">
<a href>Next</a>
</li>
</ul>
</div>
<form class="navbar-search" style="margin: 20px">
<input type="text" class="search-query" placeholder="Search" ng-model="query">
</form>
<a style="margin-top: 19px" href="#/vlans/new" class="btn">New vlan</a>
</div>
</div>
<table class="table table-striped">
<tr>
<th>Vid</th>
<th>Név</th>
<th>IPv4</th>
<th>IPv6</th>
<th>Leírás</th>
<th colspan="2">Domain</th>
</tr>
<tr ng-repeat="vlan in getPage()">
<td>{{vlan.vid}}</td>
<td>
<a href="#/vlans/{{vlan.id}}">{{vlan.name}}</a>
</td>
<td>{{vlan.ipv4}}</td>
<td>{{vlan.ipv6}}</td>
<td style="width: 200px;">{{vlan.description}}</td>
<td>
<a href="#/vlans/{{vlan.domain.id}}">{{vlan.domain.name}}</a>
</td>
<td>
<a class="btn" href="#/vlans/{{vlan.id}}/">Szerkesztés</a>
<a class="btn btn-danger" href="#/vlans/{{vlan.id}}/delete/">Törlés</a>
</td>
</tr>
</table>
<form class="form-horizontal">
<div class="span5">
<div class="control-group">
<label class="control-label" for="ID">ID</label>
<div class="controls">
<span class="has-tooltip" title="Built in ID, do not change this">
<input
class="input-mini"
type="text"
id="ID"
placeholder="ID"
value="{{entity.id}}"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="created_at">Created at</label>
<div class="controls">
<span class="has-tooltip" title="The entity was created at this date">
<input
class="input"
type="text"
id="created_at"
ng-model="entity.created_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="modified_at">Modified at</label>
<div class="controls">
<span class="has-tooltip" title="The entity was last modified at this date">
<input
class="input"
type="text"
id="modified_at"
ng-model="entity.modified_at"
disabled="disabled" />
</span>
</div>
</div>
<div class="control-group" ng-class="hasError('name')">
<label class="control-label" for="name">Name</label>
<div class="controls">
<input
type="text"
id="name"
ng-model="entity.name"
title="Name for this Vlangroup" />
<span class="help-inline" ng-bind="getError('name')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('owner')">
<label class="control-label" for="owner">Owner</label>
<div class="controls">
<input
type="text"
class="owner"
autocomplete="off"
id="owner"
ng-model="entity.owner.name"
title="Owners name" />
<span class="help-inline" ng-bind="getError('owner')"></span>
</div>
</div>
</div>
<div class="span5">
<div class="control-group" ng-class="hasError('description')">
<label class="control-label" for="description">Description</label>
<div class="controls">
<textarea id="description"
rows="2"
ng-model="entity.description"
title="Short description">
</textarea>
<span class="help-inline" ng-bind="getError('description')"></span>
</div>
</div>
<div class="control-group" ng-class="hasError('vlans')">
<label class="control-label" for="vlans">Vlans</label>
<div class="controls">
<div class="well well-small">
<span class="label label-info" ng-repeat="vlan in entity.vlans | filter: destroyed">
<a href="#/vlans/{{vlan.id}}">{{vlan.name}}</a>
<a href ng-click="removeVlan(vlan)"><i class="icon-remove"></i></a>
</span>
</div>
<div class="input-append has-tooltip" title="Vlan members of this group">
<input
class="span2 vlan"
id="vlans"
type="text"
ng-model="newVlan">
<button class="btn" type="button" ng-click="addVlan(newVlan)">Add</button>
</div>
<span class="help-inline" ng-bind="getError('vlans')"></span>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn" ng-click="save()">Save</button>
</div>
</div>
</div>
</form>
<div class="span12">
<h3>Rules belonging to this vlan</h3>
<table class="table table-striped">
<thead>
<tr>
<th>Direction</th>
<th>Protocol</th>
<th>Accept</th>
<th>NAT</th>
<th colspan="2">Owner</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="rule in entity.rules">
<td>{{rule.direction}}</td>
<td>{{rule.proto}}</td>
<td>{{rule.accept}}</td>
<td>{{rule.nat}}</td>
<td>{{rule.owner.name}}</td>
<td>
<a class="btn" href="#/rules/{{rule.id}}/">Edit</a>
<a class="btn btn-danger" href="#/rules/{{rule.id}}/delete/">Delete</a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="navbar">
<div class="navbar-inner">
<div class="pagination pull-left">
<ul>
<li ng-click="prevPage()" ng-class="{disabled: page == 1}">
<a href>Előző</a>
</li>
<li ng-repeat="_page in pages" ng-click="setPage(_page)" ng-class="{active: _page == page}">
<a href>{{_page}}</a>
</li>
<li ng-click="nextPage()" ng-class="{disabled: page == pages.length}">
<a href>Next</a>
</li>
</ul>
</div>
<form class="navbar-search" style="margin: 20px">
<input type="text" class="search-query" placeholder="Search" ng-model="query">
</form>
<a style="margin-top: 19px" href="#/vlangroups/new" class="btn">New vlangroup</a>
</div>
</div>
<table class="table table-striped">
<tr>
<th>Név</th>
<th>Vlanok</th>
<th>Leírás</th>
<th colspan="2">Tulajdonos</th>
</tr>
<tr ng-repeat="group in getPage()">
<td>
<a href="#/vlangroups/{{group.id}}">{{group.name}}</a>
</td>
<td>
<div class="well well-small">
<span class="label label-info" ng-repeat="vlan in group.vlans">
<a href="#/vlans/{{vlan.id}}">{{vlan.name}}</a>
</span>
</div>
</td>
<td style="width: 200px;">{{group.description}}</td>
<td>{{group.owner.name}}</td>
<td>
<a class="btn" href="#/vlangroups/{{group.id}}/">Szerkesztés</a>
<a class="btn btn-danger" href="#/vlangroups/{{group.id}}/delete/">Törlés</a>
</td>
</tr>
</table>
{% templatetag openblock %} extends "base.html" {% templatetag closeblock %}
{% templatetag openblock %} block title {% templatetag closeblock %}Page Not found{% templatetag openblock %} endblock {% templatetag closeblock %}
{% templatetag openblock %} block page_title {% templatetag closeblock %}Page Not found{% templatetag openblock %} endblock page_title {% templatetag closeblock %}
{% templatetag openblock %} block content {% templatetag closeblock %}
<p>This is not the page you were looking for.</p>
{% templatetag openblock %} endblock content {% templatetag closeblock %}
\ No newline at end of file
<h1>Whoops!</h1>
\ No newline at end of file
{% load i18n %}
{% load l10n %}
{% load staticfiles %}
{% get_current_language as lang %}
<!DOCTYPE html>
<html lang="en" ng-app="firewall">
<head>
<meta charset="utf-8">
<title>{% block title %}Firewall GUI{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">
<link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400&subset=latin,latin-ext' rel='stylesheet' type='text/css'>
<link href="{% static "css/bootstrap.min.css" %}" rel="stylesheet">
<style>
body {
font-family: 'Source Sans Pro', sans-serif;
padding-top: 60px;
}
h1, h2, h3, h4, h5 {
font-weight: 200;
}
textarea, input, select {
font-family: 'Source Sans Pro';
}
.label {
margin: 3px;
padding: 5px;
}
.label a {
color: white;
}
select:focus {
outline: none;
}
</style>
<link href="{% static "css/bootstrap-responsive.min.css" %}" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.6/angular.min.js"></script>
<link href="{% static "css/project.css" %}" rel="stylesheet">
{% block extra_css %}{% endblock %}
</head>
<body>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">Firewall GUI</a>
<div class="nav-collapse collapse">
<ul class="nav">
<li><a href="#/rules/">{% trans "Firewall rules" %}</a></li>
<li><a href="#/vlans/">{% trans "Vlans" %}</a></li>
<li><a href="#/vlangroups/">{% trans "Vlan groups" %}</a></li>
<li><a href="#/hostgroups/">{% trans "Host groups" %}</a></li>
<li><a href="#/hosts/">{% trans "Hosts" %}</a></li>
<li><a href="#/firewalls/">{% trans "Firewalls" %}</a></li>
<li><a href="#/domains/">{% trans "Domains" %}</a></li>
<li><a href="#/records/">{% trans "DNS records" %}</a></li>
<li><a href="#/blacklists/">{% trans "Blacklists" %}</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<h1>{% block page_title %}Szia bd, ez itt a tűzfaladmin!{% endblock %}</h1>
<div ng-view></div>
</div>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script src="{% static "js/bootstrap.min.js" %}"></script>
<script src="{% static "js/project.js" %}"></script>
<script>
{% block extra_js %}
{% endblock %}
</script>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment