├── siptrackweb ├── __init__.py ├── views │ ├── __init__.py │ ├── event │ │ ├── __init__.py │ │ ├── trigger.py │ │ └── trigger_rule_python.py │ ├── network │ │ ├── __init__.py │ │ ├── tree.py │ │ └── range.py │ ├── command │ │ ├── __init__.py │ │ ├── command.py │ │ └── queue.py │ ├── device │ │ ├── __init__.py │ │ ├── utils.py │ │ ├── device_association.py │ │ ├── network.py │ │ ├── config_template.py │ │ └── config.py │ ├── display.py │ ├── permission.py │ ├── config.py │ └── view.py ├── templatetags │ ├── __init__.py │ └── myfilters.py ├── models.py ├── static │ └── siptrackweb │ │ ├── favicon.ico │ │ ├── notfound.png │ │ ├── bootstrap-3.3.4-dist │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ └── glyphicons-halflings-regular.woff2 │ │ └── js │ │ │ └── npm.js │ │ └── siptrackweb.js └── templates │ ├── stweb │ ├── attributes │ │ ├── display_boxes.html │ │ ├── display.html │ │ ├── display_versions.html │ │ ├── display_large.html │ │ ├── display_wikitexts.html │ │ ├── display_attributes_important.html │ │ ├── display_attributes.html │ │ └── display_self.html │ ├── index.html │ ├── users │ │ ├── display_user.html │ │ ├── display_group.html │ │ ├── display_user_manager.html │ │ ├── index.html │ │ ├── display_groups.html │ │ ├── display_sessions.html │ │ ├── display_users.html │ │ ├── display_group_info.html │ │ ├── display_user_managers.html │ │ ├── display_user_info.html │ │ ├── display_user_manager_info.html │ │ └── display_subkeys.html │ ├── views │ │ ├── perm.html │ │ ├── networktrees │ │ │ ├── networks │ │ │ │ ├── display_range.html │ │ │ │ ├── add.html │ │ │ │ ├── add_range.html │ │ │ │ ├── delete_range.html │ │ │ │ ├── delete.html │ │ │ │ ├── display_ranges.html │ │ │ │ ├── display_network_info.html │ │ │ │ ├── display_networks.html │ │ │ │ └── display_associated_devices.html │ │ │ ├── add.html │ │ │ ├── delete.html │ │ │ ├── display_tree_info.html │ │ │ ├── display_network_trees.html │ │ │ └── index.html │ │ ├── devices │ │ │ ├── networks │ │ │ │ ├── autoassign.html │ │ │ │ ├── add.html │ │ │ │ └── delete.html │ │ │ ├── display_config_template_list.html │ │ │ ├── categories │ │ │ │ ├── display_categories.html │ │ │ │ ├── display_specifications.html │ │ │ │ └── display.html │ │ │ ├── display_config_list.html │ │ │ ├── display_devices_standard.html │ │ │ ├── display_config_template.html │ │ │ ├── generate_config_template.html │ │ │ ├── display_devices_extended.html │ │ │ ├── display_device_associations.html │ │ │ ├── display_config_all.html │ │ │ ├── display_config.html │ │ │ ├── display_rack.html │ │ │ ├── display_device.html │ │ │ ├── display_password_associations.html │ │ │ └── display_networks.html │ │ ├── display_view_info.html │ │ ├── display_views.html │ │ ├── counters │ │ │ ├── display.html │ │ │ └── index.html │ │ ├── index.html │ │ └── display.html │ ├── dinfo.html │ ├── templates │ │ ├── display_templates.html │ │ ├── display_rules.html │ │ ├── display_template_information.html │ │ ├── display_rules_assign_network.html │ │ ├── display_rules_delete_attribute.html │ │ ├── display_rules_flush_nodes.html │ │ ├── display_rules_flush_associations.html │ │ ├── display_rules_bool.html │ │ ├── display_rules_int.html │ │ ├── display_rules_regmatch.html │ │ ├── display_rules_fixed.html │ │ ├── display_rules_password.html │ │ ├── display_rules_subdevice.html │ │ ├── display_rules_text.html │ │ ├── apply_set.html │ │ └── display.html │ ├── passwords │ │ ├── display_passwordkeys.html │ │ ├── display_categories.html │ │ ├── display_password.html │ │ ├── display_passwords.html │ │ ├── index.html │ │ ├── display.html │ │ ├── display_passwordkey.html │ │ └── display_category.html │ ├── commands │ │ ├── display_queue.html │ │ ├── display_queues.html │ │ └── display_commands.html │ ├── events │ │ ├── display_trigger.html │ │ ├── display_triggers.html │ │ ├── display_python_rules.html │ │ └── display_python_rule.html │ ├── configs │ │ └── display.html │ ├── login.html │ ├── permissions │ │ ├── display_permissions.html │ │ └── display.html │ └── generic_form.html │ ├── 500.html │ └── 404.html ├── requirements.txt ├── MANIFEST.in ├── .gitignore ├── setup.py ├── COPYING └── README.md /siptrackweb/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /siptrackweb/views/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /siptrackweb/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /siptrackweb/views/event/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | Django<=1.11.9 2 | textile 3 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include COPYING 2 | recursive-include siptrackweb/templates * 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .*.swp 2 | *.pyc 3 | build/ 4 | dist/ 5 | *.egg-info 6 | .idea 7 | **.vscode** 8 | -------------------------------------------------------------------------------- /siptrackweb/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /siptrackweb/views/network/__init__.py: -------------------------------------------------------------------------------- 1 | from network import (display, add, add_post, delete, delete_post) 2 | 3 | -------------------------------------------------------------------------------- /siptrackweb/static/siptrackweb/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sii/siptrackweb/HEAD/siptrackweb/static/siptrackweb/favicon.ico -------------------------------------------------------------------------------- /siptrackweb/static/siptrackweb/notfound.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sii/siptrackweb/HEAD/siptrackweb/static/siptrackweb/notfound.png -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/attributes/display_boxes.html: -------------------------------------------------------------------------------- 1 | {% include "stweb/attributes/display_large.html" %} 2 | {% include "stweb/attributes/display_wikitexts.html" %} 3 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/index.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb index{% endblock %} 4 | 5 | {% block content %} 6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /siptrackweb/views/command/__init__.py: -------------------------------------------------------------------------------- 1 | from command import (display, 2 | add, add_post, 3 | update, update_post, 4 | delete, delete_post) 5 | 6 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/attributes/display.html: -------------------------------------------------------------------------------- 1 | {% include "stweb/attributes/display_attributes.html" %} 2 | {% include "stweb/attributes/display_large.html" %} 3 | {% include "stweb/attributes/display_wikitexts.html" %} 4 | -------------------------------------------------------------------------------- /siptrackweb/static/siptrackweb/bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sii/siptrackweb/HEAD/siptrackweb/static/siptrackweb/bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /siptrackweb/static/siptrackweb/bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sii/siptrackweb/HEAD/siptrackweb/static/siptrackweb/bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /siptrackweb/static/siptrackweb/bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sii/siptrackweb/HEAD/siptrackweb/static/siptrackweb/bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /siptrackweb/static/siptrackweb/bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sii/siptrackweb/HEAD/siptrackweb/static/siptrackweb/bootstrap-3.3.4-dist/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_user.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display user{% endblock %} 4 | 5 | {% block content %} 6 | {% include "stweb/users/display_user_info.html" %} 7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_group.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display group{% endblock %} 4 | 5 | {% block content %} 6 | {% include "stweb/users/display_group_info.html" %} 7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /siptrackweb/templates/500.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 500: Internal Server Error 6 | 7 | 8 |
9 | Something went wrong. 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_user_manager.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - user managers{% endblock %} 4 | 5 | {% block content %} 6 | {% include "stweb/users/display_user_manager_info.html" %} 7 | {% include "stweb/users/display_users.html" %} 8 | {% include "stweb/users/display_groups.html" %} 9 | {% include "stweb/attributes/display.html" %} 10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/index.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - user managers{% endblock %} 4 | 5 | {% block content %} 6 | {% if administrator %} 7 | {% include "stweb/users/display_user_managers.html" %} 8 | {% include "stweb/users/display_sessions.html" %} 9 | {% else %} 10 | {% include "stweb/users/display_user_info.html" %} 11 | {% endif %} 12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/perm.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - search results{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Permission Denied 8 |
9 |
10 | Action not permitted. 11 | {% if referer %} 12 |
13 |
14 | Back to previous page 15 | {% endif %} 16 |
17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/attributes/display_versions.html: -------------------------------------------------------------------------------- 1 | {% if attribute.values %} 2 | {% for version in attribute.values %} 3 | 5 |
6 | Version: {{ forloop.counter }} 7 |
8 |
9 |
10 |
{{ version }}
11 |
12 |
13 |
14 |
15 | {% endfor %} 16 | {% endif %} 17 | -------------------------------------------------------------------------------- /siptrackweb/templatetags/myfilters.py: -------------------------------------------------------------------------------- 1 | from datetime import datetime 2 | 3 | from django import template 4 | from django.forms.fields import CheckboxInput 5 | 6 | register = template.Library() 7 | 8 | @register.filter(name='is_checkbox') 9 | def is_checkbox(value): 10 | return isinstance(value, CheckboxInput) 11 | 12 | 13 | DATE_FORMAT = '%Y-%m-%d %H:%M:%S' 14 | 15 | @register.filter('date_from_timestamp') 16 | def date_from_timestamp(timestamp): 17 | return datetime.fromtimestamp(int(timestamp)) 18 | 19 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/networks/display_range.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - browse network{% endblock %} 4 | 5 | {% block content %} 6 | {% include "stweb/attributes/display_attributes.html" %} 7 | {% include "stweb/views/networktrees/networks/display_associated_devices.html" %} 8 | {% include "stweb/templates/display_templates.html" %} 9 | {% include "stweb/attributes/display_boxes.html" %} 10 | {% include "stweb/configs/display.html" %} 11 | {% endblock %} 12 | -------------------------------------------------------------------------------- /siptrackweb/templates/404.html: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 404: Page not found 6 | 7 | 8 |
9 | 10 |
11 |
12 | Page not found 13 |
14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/dinfo.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - {{ form.title }}{% endblock %} 4 | 5 | {% block content %} 6 |
7 | siptrack session id 8 |
9 |
10 | {{ pm.object_store.transport.session_id }} 11 |
12 |
13 |
14 |
15 | django request object 16 |
17 |
18 |
19 | 			{{ request }}
20 | 		
21 |
22 | {% endblock %} 23 | 24 | -------------------------------------------------------------------------------- /siptrackweb/static/siptrackweb/bootstrap-3.3.4-dist/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/networks/add.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - add network{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Add Network 8 |
9 | 10 | {{ form.as_table }} 11 | 12 | 13 |
 
14 |
15 |
16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/networks/autoassign.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - autoassign network{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Automatically Assign Address 8 |
9 | 10 | If you're really sure, then 11 | 12 |
13 |
14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/add.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - add network tree{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Add Network Tree 8 |
9 | 10 | {{ form.as_table }} 11 | 12 | 13 |
 
14 |
15 |
16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/display_view_info.html: -------------------------------------------------------------------------------- 1 |
2 | View Information 3 |
4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
Name:{{ view.attributes.name|escape }}
Description:{{ view.attributes.description|escape }}
16 |
17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/networks/add.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - add device network{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Add Device Address 8 |
9 | 10 | {{ form.as_table }} 11 | 12 | 13 |
 
14 |
15 |
16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/delete.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - delete network tree{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Delete Network Tree: {{ network_tree.attributes.name|escape }} 8 |
9 | 10 | If you're really sure, then 11 | 12 |
13 |
14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/networks/add_range.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - add network range{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Add Network Range 8 |
9 | 10 | {{ form.as_table }} 11 | 12 | 13 |
 
14 |
15 |
16 | {% endblock %} 17 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/networks/delete_range.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - delete network range{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Delete Network Range: {{ network_range }} 8 |
9 | 10 | If you're really sure, then 11 | 12 |
13 |
14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/networks/delete.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - delete network association{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Delete Device Address: {{ network|escape }} 8 |
9 | 10 | If you're really sure, then 11 | 12 |
13 |
14 | {% endblock %} 15 | -------------------------------------------------------------------------------- /siptrackweb/views/device/__init__.py: -------------------------------------------------------------------------------- 1 | from device import (index, display, 2 | delete, delete_post, add_template_select, 3 | add_template_set, add_template_post, 4 | disable, disable_post, enable, enable_post, 5 | recreate_template_select, recreate_template_set, 6 | recreate_template_post, copy, copy_post, export, 7 | rack_unit_occupied, rack_unit_occupied_post, 8 | rack_unit_reserved, rack_unit_reserved_post, 9 | rack_unit_unoccupied, 10 | rack_unit_unreserved, 11 | ) 12 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_config_template_list.html: -------------------------------------------------------------------------------- 1 | {% for template in device_config_template_list %} 2 |
3 | {{ template.attributes.name }} (view) 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | {% if template.attributes.description %} 12 | 13 | 14 | 15 | 16 | {% endif %} 17 |
Name: {{ template.attributes.name }}
Description:    {{ template.attributes.description }}
18 |
19 |
20 |
21 | {% endfor %} 22 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/networks/delete.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - delete network{% endblock %} 4 | 5 | {% block content %} 6 |
7 | Delete Network: {{ network|escape }} 8 |
9 | 10 | 11 | {{ form.as_table }} 12 | 13 | 14 |
 
15 |
16 |
17 | {% endblock %} 18 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/attributes/display_large.html: -------------------------------------------------------------------------------- 1 | {% for attribute in attribute_list.large %} 2 | 10 |
11 | {% if attribute.class_id == 'ENCA' %}Encrypted{% endif %} 12 | Attribute: {{ attribute.name }} 13 |
14 |
15 |
16 |
{{ attribute.value }}
17 |
18 |
19 |
20 |
21 | {% endfor %} 22 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/display_tree_info.html: -------------------------------------------------------------------------------- 1 | {% ifequal network.class_name "network tree" %} 2 |
3 | Network Tree Information 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | {% if network_tree.attributes.description %} 13 | 14 | 15 | 16 | 17 | {% endif %} 18 | 19 | 20 | 21 | 22 |
Name:{{ network_tree.attributes.name }}
Description:{{ network_tree.attributes.description }}
Protocol:{{ network_tree.protocol }}
23 |
24 |
25 |
26 |
27 | {% endifequal %} 28 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_templates.html: -------------------------------------------------------------------------------- 1 | {% if template_list %} 2 |
3 | Templates 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | {% for template in template_list %} 13 | {% if forloop.counter|divisibleby:"2" %} 14 | 15 | {% else %} 16 | 17 | {% endif %} 18 | 21 | 24 | 25 | {% endfor %} 26 |
NameDescription
19 | {{ template.attributes.name|escape }} 20 | 22 | {{ template.attributes.description }} 23 |
27 |
28 |
29 |
30 |
31 | {% endif %} 32 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_groups.html: -------------------------------------------------------------------------------- 1 | 6 |
7 | Groups 8 |
9 |
10 |
11 | 12 | 13 | 14 | 15 | 16 | {% for group in group_list %} 17 | 22 | 25 | 26 | {% endfor %} 27 |
Group nameDescription
18 | 19 | {{ group.attributes.name|default:"[UNKNOWN]" }} 20 | 21 | 23 | {{ group.attributes.description }} 24 |
28 |
29 |
30 |
31 |
32 |
33 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules.html: -------------------------------------------------------------------------------- 1 |
2 | Template Rules 3 |
4 |
5 | {% include "stweb/templates/display_rules_text.html" %} 6 | {% include "stweb/templates/display_rules_fixed.html" %} 7 | {% include "stweb/templates/display_rules_regmatch.html" %} 8 | {% include "stweb/templates/display_rules_bool.html" %} 9 | {% include "stweb/templates/display_rules_int.html" %} 10 | {% include "stweb/templates/display_rules_delete_attribute.html" %} 11 | {% include "stweb/templates/display_rules_password.html" %} 12 | {% include "stweb/templates/display_rules_assign_network.html" %} 13 | {% include "stweb/templates/display_rules_subdevice.html" %} 14 | {% include "stweb/templates/display_rules_flush_nodes.html" %} 15 | {% include "stweb/templates/display_rules_flush_associations.html" %} 16 |
17 | 18 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_sessions.html: -------------------------------------------------------------------------------- 1 | 3 |
4 | Active Sessions 5 |
6 |
7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {% for session in session_list %} 16 | 19 | 22 | 25 | 28 | 29 | {% endfor %} 30 |
User nameSession IDSession timeoutAction
17 | {{ session.user }} 18 | 20 | {{ session.id }} 21 | 23 | {{ session.timeout }} 24 | 26 | kill 27 |
31 |
32 |
33 |
34 |
35 |
36 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/categories/display_categories.html: -------------------------------------------------------------------------------- 1 | {% if category_list %} 2 |
3 | Device categories 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | {% for cur_category in category_list %} 13 | 14 | 20 | 23 | 24 | {% endfor %} 25 |
NameDescription
15 | 16 | 17 | {{ cur_category.attributes.name| default:"[UNKNOWN]" | escape }} 18 | 19 | 21 | {{ cur_category.attributes.description|escape }} 22 |
26 |
27 |
28 |
29 |
30 | {% endif %} 31 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_users.html: -------------------------------------------------------------------------------- 1 | 6 |
7 | Users 8 |
9 |
10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 | {% for user in user_list %} 18 | 23 | 26 | 29 | 30 | {% endfor %} 31 |
User nameReal nameDescription
19 | 20 | {{ user.username }} 21 | 22 | 24 | {{ user.attributes.real_name }} 25 | 27 | {{ user.attributes.description }} 28 |
32 |
33 |
34 |
35 |
36 |
37 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/display_network_trees.html: -------------------------------------------------------------------------------- 1 | {% if network_tree_list %} 2 |
3 | Network Trees 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | {% for network_tree in network_tree_list %} 14 | 15 | 16 | 17 | 18 | 19 | {% endfor %} 20 |
NameProtocolDescription
{{ network_tree.attributes.name|default:"[UNKNOWN]" }}{{ network_tree.protocol }}{{ network_tree.attributes.description }}
21 |
22 |
23 |
24 |
25 | {% endif %} 26 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/passwords/display_passwordkeys.html: -------------------------------------------------------------------------------- 1 | {% if password_key_list %} 2 |
3 | Password Keys 4 |
5 | 6 |
7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 | {% for password_key in password_key_list %} 15 | 16 | 25 | 28 | 29 | {% endfor %} 30 |
NameDescription
17 | 18 | {% if password_key.attributes.name %} 19 | {{ password_key.attributes.name|escape }} 20 | {% else %} 21 | [UNKNOWN] 22 | {% endif %} 23 | 24 | 26 | {{ password_key.attributes.description }} 27 |
31 |
32 |
33 |
34 |
35 | {% endif %} 36 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/attributes/display_wikitexts.html: -------------------------------------------------------------------------------- 1 | {% for wikitext in attribute_list.wikitext %} 2 | 10 |
11 | {% if wikitext.attribute.class_name == 'encrypted attribute' %} 12 | Encrypted Wikitext attribute: {{ wikitext.attribute.name }} 13 | {% else %} 14 | Wikitext attribute: {{ wikitext.attribute.name }} 15 | {% endif %} 16 |
17 |
18 |
19 | {{ wikitext.converted|safe }} 20 |
21 |
22 |
23 |
24 | {% endfor %} 25 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/display_views.html: -------------------------------------------------------------------------------- 1 | {% if view_list %} 2 |
3 | Views 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | {% for view in view_list %} 13 | 14 | 20 | 23 | 24 | {% endfor %} 25 |
NameDescription
15 | 16 | 17 | {{ view.attributes.name| default:"[UNKNOWN]" | escape }} 18 | 19 | 21 | {{ view.attributes.description | escape }} 22 |
26 |
27 |
28 | {% endif %} 29 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/commands/display_queue.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display command queues{% endblock %} 4 | 5 | {% block content %} 6 | 11 |
12 | Command Queue Information 13 | 17 |
18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 |
Name:{{ queue.attributes.name }}
26 |
27 |
28 |
29 |
30 |
31 | {% include "stweb/commands/display_commands.html" %} 32 | {% include "stweb/attributes/display.html" %} 33 | {% endblock %} 34 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/passwords/display_categories.html: -------------------------------------------------------------------------------- 1 | {% if password_category_list %} 2 |
3 | Categories 4 |
5 | 6 |
7 |
8 | {% if password_category_list %} 9 | 10 | 11 | 12 | 13 | 14 | 15 | {% for category in password_category_list %} 16 | 17 | 27 | 30 | 31 | {% endfor %} 32 |
NameDescription
18 | 19 | 20 | {% if category.attributes.name %} 21 | {{ category.attributes.name|escape }} 22 | {% else %} 23 | [UNKNOWN] 24 | {% endif %} 25 | 26 | 28 | {{ category.attributes.description }} 29 |
33 | {% endif %} 34 |
35 |
36 | 37 | {% endif %} 38 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_template_information.html: -------------------------------------------------------------------------------- 1 |
2 | Template Information 3 |
4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | {% ifequal template.class_name "device template" %} 19 | 20 | 21 | 22 | 23 | {% endifequal %} 24 | 25 | 26 | 31 | 32 |
Name:{{ template.attributes.name }}
Description:{{ template.attributes.description }}
Inheritance only:{{ template.inheritance_only }}
Used for device creation:{{ template.attributes.device_creation }}
Inherited Templates: 27 | {% for node in template.inherited_templates %} 28 | {{node.attributes.name}}{% if not forloop.last %},{% endif %} 29 | {% endfor %} 30 |
33 |
34 |
35 |
36 |
37 | 38 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/categories/display_specifications.html: -------------------------------------------------------------------------------- 1 | 6 |
7 | Device Specifications 8 |
9 |
10 | {% if specification_list %} 11 | 12 | 13 | 14 | 15 | 16 | {% for cur_spec in specification_list %} 17 | {% if forloop.counter|divisibleby:"2" %} 18 | 19 | {% else %} 20 | 21 | {% endif %} 22 | 25 | 28 | 29 | {% endfor %} 30 |
NameDescription
23 | {{ cur_spec.attributes.name|escape }} 24 | 26 | {{ cur_spec.attributes.description }} 27 |
31 | {% endif %} 32 |
33 |
34 |
35 |
36 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/attributes/display_attributes_important.html: -------------------------------------------------------------------------------- 1 | {% if attribute_list.important %} 2 |
3 | Attributes 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | {% for attr in attribute_list.important %} 14 | {% if not attr.attributes.wikitext and not attr.attributes.large %} 15 | 16 | 17 | 18 | 19 | 20 | {% endif %} 21 | {% endfor %} 22 |
AttributeValueAction
{{ attr.name|escape }}{{ attr.value|escape }}{% if write_access %}edit | delete | {% endif %}display
23 |
24 |
25 |
26 |
27 | {% endif %} 28 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/events/display_trigger.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display event trigger{% endblock %} 4 | 5 | {% block content %} 6 | 11 |
12 | Event Trigger Information 13 | 17 |
18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 |
Name:{{ trigger.attributes.name }}
26 |
27 |
28 |
29 |
30 |
31 | {% include "stweb/events/display_python_rules.html" %} 32 | {% include "stweb/attributes/display.html" %} 33 | {% endblock %} 34 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_group_info.html: -------------------------------------------------------------------------------- 1 | 9 |
10 | Group Information 11 |
12 |
13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 30 | 31 |
Group name:{{ group.attributes.name }}
Description:{{ group.attributes.description }}
Users: 26 | {% for user in group.users %} 27 | {{ user.username|escape }}
28 | {% endfor %} 29 |
32 |
33 |
34 |
35 |
36 |
37 | {% include "stweb/attributes/display.html" %} 38 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/commands/display_queues.html: -------------------------------------------------------------------------------- 1 | {% if administrator %} 2 | 5 |
6 | Command Queues 7 |
8 |
9 |
10 | {% if command_queue_list %} 11 | 12 | 13 | 14 | 15 | 16 | {% for queue in command_queue_list %} 17 | {% if forloop.counter|divisibleby:"2" %} 18 | 19 | {% else %} 20 | 21 | {% endif %} 22 | 23 | 24 | 25 | {% endfor %} 26 |
NameAction
{{ queue.attributes.name }}display | delete
27 | {% endif %} 28 |
29 |
30 |
31 |
32 |
33 | {% endif %} 34 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/events/display_triggers.html: -------------------------------------------------------------------------------- 1 | {% if administrator %} 2 | 5 |
6 | Event Triggers 7 |
8 |
9 |
10 | {% if event_trigger_list %} 11 | 12 | 13 | 14 | 15 | 16 | {% for trigger in event_trigger_list %} 17 | {% if forloop.counter|divisibleby:"2" %} 18 | 19 | {% else %} 20 | 21 | {% endif %} 22 | 23 | 24 | 25 | {% endfor %} 26 |
NameAction
{{ trigger.attributes.name }}display | delete
27 | {% endif %} 28 |
29 |
30 |
31 |
32 |
33 | {% endif %} 34 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_config_list.html: -------------------------------------------------------------------------------- 1 | {% for config in device_config_list %} 2 |
3 | {{ config.name}} (view) 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | {% if config.attributes.description %} 12 | 13 | 14 | 15 | 16 | {% endif %} 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
Name: {{ config.name }}
Description:{{ config.attributes.description }}
Stored versions: {{ config.stats.count }}
Max stored versions: {{ config.max_versions }}
Latest version timestamp:   {{ config.stats.pretty_latest_timestamp }}
Latest version size: {{ config.stats.latest_size }} bytes
34 |
35 |
36 |
37 | {% endfor %} 38 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/commands/display_commands.html: -------------------------------------------------------------------------------- 1 | {% if administrator %} 2 | 5 |
6 | Commands 7 |
8 |
9 |
10 | {% if command_list %} 11 | 12 | 13 | 14 | 15 | 16 | 17 | {% for command in command_list %} 18 | {% if forloop.counter|divisibleby:"2" %} 19 | 20 | {% else %} 21 | 22 | {% endif %} 23 | 24 | 25 | 29 | 30 | {% endfor %} 31 |
Command TextStatusAction
{{ command.freetext }}{{ command.attributes.status }} 26 | update 27 | | delete 28 |
32 | {% endif %} 33 |
34 |
35 |
36 |
37 |
38 | {% endif %} 39 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/events/display_python_rules.html: -------------------------------------------------------------------------------- 1 | {% if administrator %} 2 | 5 |
6 | Python Rules 7 |
8 |
9 |
10 | {% if python_rule_list %} 11 | 12 | 13 | 14 | 15 | 16 | {% for rule in python_rule_list %} 17 | {% if forloop.counter|divisibleby:"2" %} 18 | 19 | {% else %} 20 | 21 | {% endif %} 22 | 23 | 28 | 29 | {% endfor %} 30 |
nameAction
{{ rule.attributes.name }} 24 | display 25 | | update 26 | | delete 27 |
31 | {% endif %} 32 |
33 |
34 |
35 |
36 |
37 | {% endif %} 38 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/passwords/display_password.html: -------------------------------------------------------------------------------- 1 |
2 | Password information 3 |
4 | 5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 25 | 26 | {% for attr in attribute_list.important %} 27 | 28 | 29 | 30 | 31 | {% endfor %} 32 |
Username:{{password.attributes.username|escape}}
Description:{{password.attributes.description|escape}}
URL{{password.attributes.URL|escape}}
Password key 23 | {{password.key.attributes.name|escape}} 24 |
{{ attr.name }}:{{ attr.value }}
33 |
34 |
35 | 36 | {% include "stweb/attributes/display_boxes.html" %} 37 | 38 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/attributes/display_attributes.html: -------------------------------------------------------------------------------- 1 | {% if attribute_list.standard %} 2 |
3 | Attributes 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | {% for attr in attribute_list.standard %} 14 | {% if not attr.attributes.wikitext and not attr.attributes.large %} 15 | 16 | 19 | 20 | 27 | 28 | {% endif %} 29 | {% endfor %} 30 |
AttributeValueAction
17 | {{ attr.name|escape }} 18 | {{ attr.value|escape }} 21 | {% if write_access %} 22 | edit 23 | delete 24 | {% endif %} 25 | display 26 |
31 |
32 |
33 |
34 |
35 | {% endif %} 36 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_user_managers.html: -------------------------------------------------------------------------------- 1 | 8 |
9 | User Managers 10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | {% for user_manager in user_manager_list %} 21 | 26 | 29 | 32 | 35 | 36 | {% endfor %} 37 |
NameDescriptionTypeActive
22 | 23 | {{ user_manager.obj.attributes.name|default:"[UNKNOWN]" }} 24 | 25 | 27 | {{ user_manager.obj.attributes.description }} 28 | 30 | {{ user_manager.type }} 31 | 33 | {{ user_manager.active }} 34 |
38 |
39 |
40 |
41 |
42 |
43 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/index.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - network tree{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 | Add Network Tree 11 | {% endif %} 12 |
13 |
14 |
15 | Network Trees 16 |
17 |
18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | {% for network_tree in network_tree_list %} 26 | 27 | 28 | 29 | 30 | 31 | {% endfor %} 32 |
NameProtocolDescription
{{ network_tree.attributes.name|default:"[UNKNOWN]" }}{{ network_tree.protocol }}{{ network_tree.attributes.description }}
33 |
34 |
35 | {% endblock %} 36 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/networks/display_ranges.html: -------------------------------------------------------------------------------- 1 | 6 |
7 | Network Ranges 8 |
9 |
10 |
11 | {% if network_range_list %} 12 | 13 | 14 | 15 | 16 | 17 | 18 | {% for cur_range in network_range_list %} 19 | {% if forloop.counter|divisibleby:"2" %} 20 | 21 | {% else %} 22 | 23 | {% endif %} 24 | 27 | 30 | 33 | 34 | {% endfor %} 35 |
StartEndDescription
25 | {{ cur_range.strStart }} 26 | 28 | {{ cur_range.strEnd }} 29 | 31 | {{ cur_range.attributes.description }} 32 |
36 | {% endif %} 37 |
38 |
39 |
40 |
41 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/configs/display.html: -------------------------------------------------------------------------------- 1 | {% if config_list %} 2 |
3 | Configuration Values 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% for cfg in config_list %} 15 | {% if forloop.counter|divisibleby:"2" %} 16 | 17 | {% else %} 18 | 19 | {% endif %} 20 | 21 | {% ifequal cfg.class_name "config value" %} 22 | 23 | 24 | {% endifequal %} 25 | {% ifequal cfg.class_name "config network autoassign" %} 26 | 27 | 28 | {% endifequal %} 29 | 30 | 31 | {% endfor %} 32 |
TypeNameValueAction
{{ cfg.class_name }}{{ cfg.name|escape }}{{ cfg.value|escape }}{{ cfg.network_tree.attributes.name|escape }}: {{ cfg.range_start }} - {{ cfg.range_end }}delete
33 |
34 |
35 |
36 |
37 | {% endif %} -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_devices_standard.html: -------------------------------------------------------------------------------- 1 | {% if device_list %} 2 |
3 | Devices 4 |
5 |
6 |
7 | {% if device_list %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% for cur_device in device_list %} 15 | {% if cur_device.attributes.disabled %} 16 | 17 | {% else %} 18 | 19 | {% endif %} 20 | 27 | 30 | 33 | 34 | {% endfor %} 35 |
NameClassDescription
21 | {% if cur_device.attributes.name %} 22 | {{ cur_device.attributes.name|escape }}
23 | {% else %} 24 | [UNKNOWN]
25 | {% endif %} 26 |
28 | {{ cur_device.attributes.class|escape }} 29 | 31 | {{ cur_device.attributes.description|escape }} 32 |
36 | {% endif %} 37 |
38 |
39 |
40 |
41 | {% endif %} 42 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | from distutils.core import setup 4 | import os 5 | 6 | packages = [] 7 | package_data_files = [] 8 | root_dir = os.path.dirname(__file__) 9 | if root_dir: 10 | os.chdir(root_dir) 11 | 12 | for dirpath, dirnames, filenames in os.walk('siptrackweb'): 13 | for i, dirname in enumerate(dirnames): 14 | if dirname.startswith('.'): del dirnames[i] 15 | if '__init__.py' in filenames: 16 | pkg = dirpath.replace(os.path.sep, '.') 17 | if os.path.altsep: 18 | pkg = pkg.replace(os.path.altsep, '.') 19 | packages.append(pkg) 20 | else: 21 | pkg = os.path.sep.join(dirpath.split(os.path.sep)[1:]) 22 | filenames = [os.path.join(pkg, filename) for filename in filenames] 23 | package_data_files += filenames 24 | 25 | setup(name = 'siptrackweb', 26 | version = '1.0.4', 27 | description = 'Siptrack IP/Device Manager Web Frontend', 28 | author = 'Simon Ekstrand', 29 | author_email = 'simon@theoak.se', 30 | url = 'http://siptrack.theoak.se/', 31 | license = 'BSD', 32 | package_dir = {'siptrackweb': 'siptrackweb'}, 33 | packages = packages, 34 | package_data = {'siptrackweb': package_data_files}, 35 | ) 36 | 37 | -------------------------------------------------------------------------------- /siptrackweb/views/device/utils.py: -------------------------------------------------------------------------------- 1 | from siptrackweb.views import helpers 2 | 3 | def make_device_association_list(device): 4 | ret = [] 5 | for assoc in device.listAssociations(include = ['device', 'device category']): 6 | if assoc.class_name == 'device category': 7 | path = [{'path': '/display/%s/' % assoc.oid, 'name': assoc.attributes.get('name', '[device category]')}] 8 | else: 9 | path = helpers.make_browsable_path(assoc, 10 | ['device category', 'device tree'], 11 | include_root = False) 12 | ent = {'obj': assoc, 'path': path, 'type': 'association'} 13 | ret.append(ent) 14 | for ref in device.listReferences(include = ['device', 'device category']): 15 | if ref.class_name == 'device category': 16 | path = [{'path': '/display/%s/' % ref.oid, 'name': ref.attributes.get('name', '[device category]')}] 17 | else: 18 | path = helpers.make_browsable_path(ref, 19 | ['device category', 'device tree'], 20 | include_root = False) 21 | ent = {'obj': ref, 'path': path, 'type': 'reference'} 22 | ret.append(ent) 23 | ret.sort() 24 | return ret 25 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_assign_network.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULEASSIGNNET %} 2 |
3 | Assign Network Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | {% for rule in rules.TMPLRULEASSIGNNET %} 13 | {% if forloop.counter|divisibleby:"2" %} 14 | 15 | {% else %} 16 | 17 | {% endif %} 18 | 21 | 28 | 34 | 35 | {% endfor %} 36 |
PriorityInherited FromAction
19 | {{ rule.attributes.priority }} 20 | 22 | {% if rule.inherited %} 23 | {{ rule.parent.attributes.name }} 24 | {% else %} 25 | Local 26 | {% endif %} 27 | 29 | {% if not rule.inherited %} 30 | update 31 | | delete 32 | {% endif %} 33 |
37 |
38 |
39 |
40 |
41 | {% endif %} 42 | -------------------------------------------------------------------------------- /COPYING: -------------------------------------------------------------------------------- 1 | Copyright (c) 2008-2009 Simon Ekstrand 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 1. Redistributions of source code must retain the above copyright 8 | notice, this list of conditions and the following disclaimer. 9 | 2. Redistributions in binary form must reproduce the above copyright 10 | notice, this list of conditions and the following disclaimer in the 11 | documentation and/or other materials provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 14 | IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 15 | OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 16 | IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 17 | INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 18 | NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 19 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 20 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 22 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 | 24 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_user_info.html: -------------------------------------------------------------------------------- 1 | 11 |
12 | User Information 13 |
14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
Username:{{ user.username }}
Real name:{{ user.attributes.real_name }}
Description:{{ user.attributes.description }}
Administrator:{{ user.administrator }}
Has logged in:{{has_logged_in}}
38 |
39 |
40 |
41 |
42 |
43 | {% include "stweb/users/display_subkeys.html" %} 44 | {% include "stweb/attributes/display.html" %} 45 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_delete_attribute.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULEDELATTR %} 2 |
3 | Delete Attribute Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | {% for rule in rules.TMPLRULEDELATTR %} 14 | {% if forloop.counter|divisibleby:"2" %} 15 | 16 | {% else %} 17 | 18 | {% endif %} 19 | 22 | 25 | 32 | 38 | 39 | {% endfor %} 40 |
Apply to attributeInherited FromPriorityAction
20 | {{ rule.attr_name }} 21 | 23 | {{ rule.attributes.priority }} 24 | 26 | {% if rule.inherited %} 27 | {{ rule.parent.attributes.name }} 28 | {% else %} 29 | Local 30 | {% endif %} 31 | 33 | {% if not rule.inherited %} 34 | update 35 | | delete 36 | {% endif %} 37 |
41 |
42 |
43 |
44 |
45 | {% endif %} 46 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/networks/display_network_info.html: -------------------------------------------------------------------------------- 1 | {% ifnotequal network.class_name "network tree" %} 2 |
3 | Network Information 4 |
5 |
6 |
7 | 8 | 9 | 10 | {% ifequal network.class_name "ipv4 network" %} 11 | 12 | {% endifequal %} 13 | {% ifequal network.class_name "ipv6 network" %} 14 | 15 | {% endifequal %} 16 | 17 | {% if network.attributes.description %} 18 | 19 | 20 | 21 | 22 | {% endif %} 23 | {% if network.attributes.hostname %} 24 | 25 | 26 | 27 | 28 | {% endif %} 29 | {% if not network.isHost %} 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | {% endif %} 43 |
Network:{{ network }} ({{ network.strNetmask }}){{ network }}
Description:{{ network.attributes.description }}
Hostname:{{ network.attributes.hostname }}
Usage:{{ network.numAllocatedHosts }} / {{ network.size }}
Allocated subnets:{{ network.numAllocatedSubnets }}
Available addresses:{{ network.numFreeHosts }}
44 |
45 |
46 |
47 |
48 | {% endifnotequal %} 49 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/networks/display_networks.html: -------------------------------------------------------------------------------- 1 | {% if not target.isHost %} 2 |
3 | Subnets 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | {% for cur_net in network_list %} 14 | 15 | 22 | 32 | 39 | 40 | {% endfor %} 41 |
AddressAssociated DevicesDescription
16 | {% if cur_net.unallocated %} 17 | {{ cur_net }} 18 | {% else %} 19 | {{ cur_net|escape }} 20 | {% endif %} 21 | 23 | {% if not cur_net.unallocated %} 24 | {% for assoc in cur_net.device_association_list %} 25 | {% for pathinfo in assoc.path %} 26 | {{ pathinfo.name }}{% if not forloop.last %} /{% endif %} 27 | {% endfor %} 28 | {% if not forloop.last %}|{% endif %} 29 | {% endfor %} 30 | {% endif %} 31 | 33 | {% if not cur_net.unallocated %} 34 | {% if cur_net.attributes.description %} 35 | {{ cur_net.attributes.description }} 36 | {% endif %} 37 | {% endif %} 38 |
42 |
43 |
44 |
45 |
46 | {% endif %} 47 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/events/display_python_rule.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display python rule{% endblock %} 4 | 5 | {% block content %} 6 | 11 |
12 | Python Rule Information 13 | 17 |
18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 |
Name:{{ rule.attributes.name }}
Error:{{ rule.error }}
Error timestamp:{{ rule.error_timestamp }}
34 |
35 |
36 |
37 |
38 |
39 |
40 | Source Code 41 | 43 |
44 |
45 |
46 |
{{ rule.code }}
47 |
48 |
49 |
50 |
51 |
52 | {% include "stweb/attributes/display.html" %} 53 | {% endblock %} 54 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_flush_nodes.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULEFLUSHNODES %} 2 |
3 | Flush Nodes Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% for rule in rules.TMPLRULEFLUSHNODES %} 15 | {% if forloop.counter|divisibleby:"2" %} 16 | 17 | {% else %} 18 | 19 | {% endif %} 20 | 23 | 26 | 29 | 36 | 42 | 43 | {% endfor %} 44 |
Included node typesExcluded node typesPriorityInherited FromAction
21 | {{ rule.include }} 22 | 24 | {{ rule.exclude }} 25 | 27 | {{ rule.attributes.priority }} 28 | 30 | {% if rule.inherited %} 31 | {{ rule.parent.attributes.name }} 32 | {% else %} 33 | Local 34 | {% endif %} 35 | 37 | {% if not rule.inherited %} 38 | update 39 | | delete 40 | {% endif %} 41 |
45 |
46 |
47 |
48 |
49 | {% endif %} 50 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/login.html: -------------------------------------------------------------------------------- 1 | {% load staticfiles %} 2 | 4 | 5 | 6 | siptrackweb login 7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 | 31 |
32 |
33 | 34 | 35 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_flush_associations.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULEFLUSHASSOC %} 2 |
3 | Flush Associations Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% for rule in rules.TMPLRULEFLUSHASSOC %} 15 | {% if forloop.counter|divisibleby:"2" %} 16 | 17 | {% else %} 18 | 19 | {% endif %} 20 | 23 | 26 | 29 | 36 | 42 | 43 | {% endfor %} 44 |
Included association typesExcluded association typesPriorityInherited FromAction
21 | {{ rule.include }} 22 | 24 | {{ rule.exclude }} 25 | 27 | {{ rule.attributes.priority }} 28 | 30 | {% if rule.inherited %} 31 | {{ rule.parent.attributes.name }} 32 | {% else %} 33 | Local 34 | {% endif %} 35 | 37 | {% if not rule.inherited %} 38 | update 39 | | delete 40 | {% endif %} 41 |
45 |
46 |
47 |
48 |
49 | {% endif %} 50 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/counters/display.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display counter{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 | Update counter 11 | Delete counter 12 | {% endif %} 13 |
14 |
15 |
16 | Counter Information 17 |
18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {% ifequal counter.class_name "counter loop" %} 34 | 35 | 36 | 41 | 42 | {% endifequal %} 43 |
Name:{{ counter.attributes.name }}
Description:{{ counter.attributes.description }}
Current value:{{ counter.value }}
Loop values: 37 | {% for value in counter.values %} 38 | {{ value }}
39 | {% endfor %} 40 |
44 |
45 |
46 |
47 |
48 | {% include "stweb/attributes/display.html" %} 49 | {% endblock %} 50 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/passwords/display_passwords.html: -------------------------------------------------------------------------------- 1 | {% if password_list %} 2 |
3 | Passwords 4 |
5 | 6 |
7 |
8 | {% if password_list %} 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | {% for password in password_list %} 19 | 20 | 23 | 24 | 25 | 30 | 36 | 37 | {% endfor %} 38 |
UsernamePasswordDescriptionKeyAction
21 | {{ password.attributes.username }} 22 | {{ password.password }}{{ password.attributes.description }} 26 | {% if password.key %} 27 | {{ password.key.attributes.name }}  28 | {% endif %} 29 | 31 | {% if write_access %} 32 | display | 33 | update | 34 | delete{% endif %} 35 |
39 | {% endif %} 40 |
41 |
42 | 43 | {% else %} 44 |

No passwords Add password

45 | {% endif %} 46 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/attributes/display_self.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display attribute{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 | Add attribute 11 | Edit attribute 12 | Delete attribute 13 | {% endif %} 14 |
15 |
16 |
17 | Attribute Information 18 |
19 |
20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | {% if attribute.max_versions %} 31 | 32 | 33 | 34 | 35 | {% endif %} 36 |
Name:{{ attribute.name|escape }}
Type:{{ attribute.atype|escape }}
Max stored versions:{{ attribute.max_versions|escape }}
37 |
38 |
39 |
40 |
41 |
42 | {% include "stweb/attributes/display.html" %} 43 | {% include "stweb/attributes/display_versions.html" %} 44 | {% endblock %} 45 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_bool.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULEBOOL %} 2 |
3 | Boolean Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {% for rule in rules.TMPLRULEBOOL %} 16 | {% if forloop.counter|divisibleby:"2" %} 17 | 18 | {% else %} 19 | 20 | {% endif %} 21 | 24 | 27 | 30 | 33 | 40 | 46 | 47 | {% endfor %} 48 |
Apply to attributeDefault valueVersionsPriorityInherited FromAction
22 | {{ rule.attr_name }} 23 | 25 | {{ rule.default_value }} 26 | 28 | {{ rule.versions }} 29 | 31 | {{ rule.attributes.priority }} 32 | 34 | {% if rule.inherited %} 35 | {{ rule.parent.attributes.name }} 36 | {% else %} 37 | Local 38 | {% endif %} 39 | 41 | {% if not rule.inherited %} 42 | update 43 | | delete 44 | {% endif %} 45 |
49 |
50 |
51 |
52 |
53 | {% endif %} 54 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_int.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULEINT %} 2 |
3 | Integer Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {% for rule in rules.TMPLRULEINT %} 16 | {% if forloop.counter|divisibleby:"2" %} 17 | 18 | {% else %} 19 | 20 | {% endif %} 21 | 24 | 27 | 30 | 33 | 40 | 46 | 47 | {% endfor %} 48 |
Apply to attributeDefault valueVersionsPriorityInherited FromAction
22 | {{ rule.attr_name }} 23 | 25 | {{ rule.default_value }} 26 | 28 | {{ rule.versions }} 29 | 31 | {{ rule.attributes.priority }} 32 | 34 | {% if rule.inherited %} 35 | {{ rule.parent.attributes.name }} 36 | {% else %} 37 | Local 38 | {% endif %} 39 | 41 | {% if not rule.inherited %} 42 | update 43 | | delete 44 | {% endif %} 45 |
49 |
50 |
51 |
52 |
53 | {% endif %} 54 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_regmatch.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULEREGMATCH %} 2 |
3 | Regmatch Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {% for rule in rules.TMPLRULEREGMATCH %} 16 | {% if forloop.counter|divisibleby:"2" %} 17 | 18 | {% else %} 19 | 20 | {% endif %} 21 | 24 | 27 | 30 | 33 | 40 | 46 | 47 | {% endfor %} 48 |
Apply to attributeRegexpVersionsPriorityInherited FromAction
22 | {{ rule.attr_name }} 23 | 25 | {{ rule.regexp }} 26 | 28 | {{ rule.versions }} 29 | 31 | {{ rule.attributes.priority }} 32 | 34 | {% if rule.inherited %} 35 | {{ rule.parent.attributes.name }} 36 | {% else %} 37 | Local 38 | {% endif %} 39 | 41 | {% if not rule.inherited %} 42 | update 43 | | delete 44 | {% endif %} 45 |
49 |
50 |
51 |
52 |
53 | {% endif %} 54 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/permissions/display_permissions.html: -------------------------------------------------------------------------------- 1 | {% if administrator and permission_list %} 2 |
3 | Permissions 4 |
5 |
6 |
7 | {% if permission_list %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | {% for perm in permission_list %} 19 | {% if forloop.counter|divisibleby:"2" %} 20 | 21 | {% else %} 22 | 23 | {% endif %} 24 | 25 | 26 | 27 | 28 | 33 | 38 | 39 | 40 | {% endfor %} 41 |
Read AccessWrite AccessAll UsersRecursiveUsersGroupsAction
{{ perm.read_access }}{{ perm.write_access }}{{ perm.all_users }}{{ perm.recursive }} 29 | {% for user in perm.users %} 30 | {{ user.username|escape }}  31 | {% endfor %} 32 | 34 | {% for group in perm.groups %} 35 | {{ group.attributes.name|escape }}  36 | {% endfor %} 37 | display | delete
42 | {% endif %} 43 |
44 |
45 |
46 |
47 |
48 | {% endif %} 49 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_config_template.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - browse devices{% endblock %} 4 | {% block content %} 5 |
6 |
7 | Actions: 8 | {% if write_access %} 9 | Delete template 10 | Update template text 11 | {% endif %} 12 | Generate configuration 13 | Download configuration 14 |
15 |
16 |
17 | Template information 18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 | {% if template.attributes.description %} 26 | 27 | 28 | 29 | 30 | {% endif %} 31 |
Name: {{ template.attributes.name }}
Description:    {{ template.attributes.description }}
32 |
33 | {% if data %} 34 |
35 | Template text 36 |
{{ data }}
37 | {% endif %} 38 | {% endblock %} 39 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/counters/index.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - counters{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 | Add basic 11 | Add looping 12 | {% endif %} 13 |
14 |
15 | {% if counter_list %} 16 |
17 | Counters 18 |
19 |
20 |
21 | 22 | 23 | 24 | 25 | 26 | {% for counter in counter_list %} 27 | {% if forloop.counter|divisibleby:"2" %} 28 | 29 | {% else %} 30 | 31 | {% endif %} 32 | 41 | 44 | 45 | {% endfor %} 46 |
NameDescription
33 | 34 | {% if counter.attributes.name %} 35 | {{ counter.attributes.name|escape }} 36 | {% else %} 37 | [UNKNOWN] 38 | {% endif %} 39 | 40 | 42 | {{ counter.attributes.description }} 43 |
47 |
48 |
49 | {% endif %} 50 | {% endblock %} 51 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/generate_config_template.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - browse devices{% endblock %} 4 | {% block content %} 5 |
6 |
7 | Actions: 8 | {% if write_access %} 9 | Delete template 10 | Update template text 11 | {% endif %} 12 | Generate configuration 13 | Download configuration 14 |
15 |
16 |
17 | Template information 18 |
19 |
20 | 21 | 22 | 23 | 24 | 25 | {% if template.attributes.description %} 26 | 27 | 28 | 29 | 30 | {% endif %} 31 |
Name: {{ template.attributes.name }}
Description:    {{ template.attributes.description }}
32 |
33 | {% if data %} 34 |
35 | Generated text 36 |
{{ generated }}
37 | {% endif %} 38 | {% endblock %} 39 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/permissions/display.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display permission{% endblock %} 4 | 5 | {% block content %} 6 | 11 |
12 | Permission Information 13 |
14 |
15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {% if permission.users %} 34 | 35 | 36 | 41 | 42 | {% endif %} 43 | {% if permission.groups %} 44 | 45 | 46 | 51 | 52 | {% endif %} 53 |
Read access:{{ permission.read_access }}
Write access:{{ permission.write_access }}
Applies to all users:{{ permission.all_users }}
Recursive:{{ permission.recursive }}
Users: 37 | {% for user in permission.users %} 38 | {{ user.username|escape }}
39 | {% endfor %} 40 |
Groups: 47 | {% for group in permission.groups %} 48 | {{ group.attributes.name|default:"[UNKNOWN]" }}
49 | {% endfor %} 50 |
54 |
55 |
56 |
57 |
58 |
59 | {% include "stweb/attributes/display.html" %} 60 | {% endblock %} 61 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_fixed.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULEFIXED %} 2 |
3 | Fixed Value Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {% for rule in rules.TMPLRULEFIXED %} 17 | {% if forloop.counter|divisibleby:"2" %} 18 | 19 | {% else %} 20 | 21 | {% endif %} 22 | 25 | 28 | 31 | 34 | 37 | 44 | 50 | 51 | {% endfor %} 52 |
Apply to attributeValueVariable ExpansionVersionsPriorityInherited FromAction
23 | {{ rule.attr_name }} 24 | 26 | {{ rule.value }} 27 | 29 | {{ rule.variable_expansion }} 30 | 32 | {{ rule.versions }} 33 | 35 | {{ rule.attributes.priority }} 36 | 38 | {% if rule.inherited %} 39 | {{ rule.parent.attributes.name }} 40 | {% else %} 41 | Local 42 | {% endif %} 43 | 45 | {% if not rule.inherited %} 46 | update 47 | | delete 48 | {% endif %} 49 |
53 |
54 |
55 |
56 |
57 | {% endif %} 58 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_devices_extended.html: -------------------------------------------------------------------------------- 1 | {% if device_list %} 2 |
3 | Devices 4 |
5 |
6 |
7 | {% if device_list %} 8 | 9 | 10 | 11 | 12 | 13 | 14 | {% for cur_device in device_list %} 15 | 16 | {% if cur_device.attributes.disabled %} 17 | 27 | 40 | 43 | 44 | {% endfor %} 45 |
NameLinked DevicesDescription
18 | {% else %} 19 | 20 | {% endif %} 21 | {% if cur_device.attributes.name %} 22 | {{ cur_device.attributes.name|escape }}
23 | {% else %} 24 | [UNKNOWN]
25 | {% endif %} 26 |
28 | {% for assoc_device in cur_device.links %} 29 | {% for pathinfo in assoc_device.path %} 30 | {{ pathinfo.name }} 31 | {% if not forloop.last %} 32 | / 33 | {% endif %} 34 | {% endfor %} 35 | {% if not forloop.last %} 36 | | 37 | {% endif %} 38 | {% endfor %} 39 | 41 | {{ cur_device.attributes.description|escape }} 42 |
46 | {% endif %} 47 |
48 |
49 |
50 |
51 | {% endif %} 52 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_device_associations.html: -------------------------------------------------------------------------------- 1 | {% if device_association_list %} 2 |
3 | Device Links 4 |
5 |
6 | 49 |
50 |
51 |
52 | {% endif %} 53 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_password.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULEPASSWORD %} 2 |
3 | Password Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {% for rule in rules.TMPLRULEPASSWORD %} 16 | {% if forloop.counter|divisibleby:"2" %} 17 | 18 | {% else %} 19 | 20 | {% endif %} 21 | 24 | 27 | 34 | 37 | 44 | 50 | 51 | {% endfor %} 52 |
UsernameDescriptionPassword KeyPriorityInherited FromAction
22 | {{ rule.username }} 23 | 25 | {{ rule.description }} 26 | 28 | {% if rule.key %} 29 | {{ rule.key.attributes.name }} 30 | {% else %} 31 | None 32 | {% endif %} 33 | 35 | {{ rule.attributes.priority }} 36 | 38 | {% if rule.inherited %} 39 | {{ rule.parent.attributes.name }} 40 | {% else %} 41 | Local 42 | {% endif %} 43 | 45 | {% if not rule.inherited %} 46 | update 47 | | delete 48 | {% endif %} 49 |
53 |
54 |
55 |
56 |
57 | {% endif %} 58 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_subdevice.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULESUBDEV %} 2 |
3 | Subdevice Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | {% for rule in rules.TMPLRULESUBDEV %} 16 | {% if forloop.counter|divisibleby:"2" %} 17 | 18 | {% else %} 19 | 20 | {% endif %} 21 | 24 | 31 | 34 | 37 | 44 | 50 | 51 | {% endfor %} 52 |
Number of devicesTemplateSequence offsetPriorityInherited FromAction
22 | {{ rule.num_devices }} 23 | 25 | {% if rule.device_template %} 26 | {{ rule.device_template.attributes.name }} 27 | {% else %} 28 | None 29 | {% endif %} 30 | 32 | {{ rule.sequence_offset }} 33 | 35 | {{ rule.attributes.priority }} 36 | 38 | {% if rule.inherited %} 39 | {{ rule.parent.attributes.name }} 40 | {% else %} 41 | Local 42 | {% endif %} 43 | 45 | {% if not rule.inherited %} 46 | update 47 | | delete 48 | {% endif %} 49 |
53 |
54 |
55 |
56 |
57 | {% endif %} 58 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_config_all.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - browse devices{% endblock %} 4 | {% block content %} 5 |
6 |
7 | Actions: 8 | {% if write_access %} 9 | Delete config 10 | Submit config 11 | {% endif %} 12 | View all versions 13 |
14 |
15 |
16 | Name: {{ config.name }} 17 |
18 |
19 | 20 | {% if config.attributes.description %} 21 | 22 | 23 | 24 | 25 | {% endif %} 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
Description:{{ config.attributes.description }}
Stored versions: {{ config.stats.count }}
Latest version timestamp:   {{ config.stats.pretty_latest_timestamp }}
Latest version size: {{ config.stats.latest_size }} bytes
39 |
40 | {% for version in versions %} 41 |
42 | {{ version.pretty_timestamp }} (download): 43 |
{{ version.data }}
44 | {% endfor %} 45 | {% endblock %} 46 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/passwords/index.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - passwords{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 | Add password key 11 | Add category 12 | Add password 13 | {% endif %} 14 |
15 |
16 | 17 |
18 | 29 |
30 | 31 |
32 |
33 | {% include "stweb/passwords/display_categories.html" %} 34 |
35 |
36 | {% include "stweb/passwords/display_passwordkeys.html" %} 37 |
38 |
39 | {% include "stweb/passwords/display_passwords.html" %} 40 |
41 |
42 | {% endblock %} 43 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_config.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - browse devices{% endblock %} 4 | {% block content %} 5 |
6 |
7 | Actions: 8 | {% if write_access %} 9 | Delete config 10 | Submit config 11 | {% endif %} 12 | View all versions 13 |
14 |
15 |
16 | {{ config.name }} 17 |
18 |
19 | 20 | 21 | 22 | 23 | 24 | {% if config.attributes.description %} 25 | 26 | 27 | 28 | 29 | {% endif %} 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 |
Name: {{ config.name }}
Description:{{ config.attributes.description }}
Stored versions: {{ config.stats.count }}
Max stored versions: {{ config.max_versions }}
Latest version timestamp:   {{ config.stats.pretty_latest_timestamp }}
Latest version size: {{ config.stats.latest_size }} bytes
47 |
48 | {% if data %} 49 |
50 | Latest config (download): 51 |
{{ data }}
52 | {% endif %} 53 | {% endblock %} 54 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display_rules_text.html: -------------------------------------------------------------------------------- 1 | {% if rules.TMPLRULETEXT %} 2 |
3 | Text Rules 4 |
5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | {% for rule in rules.TMPLRULETEXT %} 18 | {% if forloop.counter|divisibleby:"2" %} 19 | 20 | {% else %} 21 | 22 | {% endif %} 23 | 26 | 29 | 32 | 39 | 46 | 49 | 56 | 62 | 63 | {% endfor %} 64 |
Apply to attributeVersionsHiddenWikifiedLargePriorityInherited FromAction
24 | {{ rule.attr_name }} 25 | 27 | {{ rule.versions }} 28 | 30 | {{ rule.attributes.hidden }} 31 | 33 | {% if rule.attributes.wikitext %} 34 | True 35 | {% else %} 36 | False 37 | {% endif %} 38 | 40 | {% if rule.attributes.large %} 41 | True 42 | {% else %} 43 | False 44 | {% endif %} 45 | 47 | {{ rule.attributes.priority }} 48 | 50 | {% if rule.inherited %} 51 | {{ rule.parent.attributes.name }} 52 | {% else %} 53 | Local 54 | {% endif %} 55 | 57 | {% if not rule.inherited %} 58 | update 59 | | delete 60 | {% endif %} 61 |
65 |
66 |
67 |
68 |
69 | {% endif %} 70 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/passwords/display.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display password{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 | Delete password 11 | Add attribute 12 | {% endif %} 13 | 14 | {% if valid_tag_target %} 15 |
16 | 19 | 26 |
27 | {% endif %} 28 |
29 |
30 | 31 |
32 | 40 | 41 |
42 |
43 | {% include "stweb/passwords/display_password.html" %} 44 |
45 | 46 |
47 | {% include "stweb/attributes/display_attributes.html" %} 48 |
49 | 50 |
51 | 52 |
53 | 54 | {% endblock %} 55 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_rack.html: -------------------------------------------------------------------------------- 1 | {% if device_rack %} 2 |
3 | Rack: {{ device_rack.device.attributes.name }} 4 |
5 | 6 | 7 | {% for unit in device_rack.units %} 8 | 9 | 14 | {% if unit.empty %} 15 | 16 | {% elif unit.reserved %} 17 | 22 | {% elif unit.occupied %} 23 | 28 | {% else %} 29 | 34 | {% endif %} 35 | 36 | {% endfor %} 37 | 38 |
10 | {% for unit_num in unit.all_units %} 11 |
{{ unit_num }}
12 | {% endfor %} 13 |
  18 | 19 | {{ unit.device.attributes.rack_unit_reserved_reason }} 20 | 21 | 24 | 25 | {{ unit.device.attributes.rack_unit_occupied_reason }} 26 | 27 | 30 | 31 | {{ unit.name }} 32 | 33 |
39 |
40 |
41 | {% endif %} -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/apply_set.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | {% load myfilters %} 3 | {% load widget_tweaks %} 4 | 5 | {% block title %}siptrackweb - {{ form.title }}{% endblock %} 6 | 7 | {% block content %} 8 |
9 | Applying template: {{ template.attributes.name }} {% if template.attributes.description %} - {{ template.attributes.description }}{% endif %} 10 |
11 |
12 |
13 | {% if form.message %} 14 | {{ form.message|safe }} 15 |
16 |
17 | {% endif %} 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% for field in form.form %} 29 | 30 | 31 | 32 | 42 | 43 | 44 | {% endfor %} 45 | 46 |
Apply RuleNameValueHelp
{{ field.label }} 33 | {% if field.is_hidden %} 34 | {{ field.initial }} 35 | {% else %} 36 | {% if field.field.widget|is_checkbox %} 37 | {{ field }} 38 | {% else %} 39 | {% render_field field class+="form-control" %} 40 | {% endif %} 41 | {% endif %}{{ field.help_text }}
47 | 48 |
49 |
50 | {% endblock %} 51 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_device.html: -------------------------------------------------------------------------------- 1 |
2 | Device Information 3 |
4 |
5 |
6 | {% if device.attributes.disabled %} 7 |
THIS DEVICE IS CURRENTLY DISABLED
8 | {% endif %} 9 | 10 | 11 | 12 | 13 | 14 | {% if device.attributes.description %} 15 | 16 | 17 | 18 | 19 | {% endif %} 20 | {% if device.attributes.class %} 21 | 22 | 23 | 24 | 25 | {% endif %} 26 | {% if device.ctime %} 27 | 28 | 29 | 30 | 31 | {% endif %} 32 | {% if primary_network %} 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | {% endif %} 42 | {% if device.attributes.rack_unit_occupied %} 43 | 44 | 45 | 46 | 47 | {% endif %} 48 | {% if device.attributes.rack_unit_reserved %} 49 | 50 | 51 | 52 | 53 | {% endif %} 54 | {% for attr in attribute_list.important %} 55 | 56 | 57 | 58 | 59 | {% endfor %} 60 |
Name:{{ device.attributes.name }}
Description:{{ device.attributes.description }}
Class:{{ device.attributes.class }}
Created:{{ device.prettyCtime }}
Primary Network{{ primary_network.strAddress }}/{{ primary_network.parent.strNetmaskCIDR }} ({{ primary_network.parent.strNetmask }})
Default Gateway{% if default_gateway_guessed %} (guessed){% endif %}:{{ default_gateway }}
Unit marked as occupied:{{ device.attributes.rack_unit_occupied_reason }}
Unit marked as reserved:{{ device.attributes.rack_unit_reserved_reason }}
{{ attr.name }}:{{ attr.value }}
61 |
62 |
63 |
64 |
65 | -------------------------------------------------------------------------------- /siptrackweb/views/device/device_association.py: -------------------------------------------------------------------------------- 1 | from django.core.urlresolvers import reverse 2 | from django.http import HttpResponseRedirect 3 | 4 | import siptracklib.errors 5 | 6 | from siptrackweb.views import helpers 7 | from siptrackweb.forms import * 8 | 9 | @helpers.authcheck 10 | def add_with_target(request, oid): 11 | pm = helpers.PageManager(request, '') 12 | target = request.session.get('tagged_oid') 13 | device1 = pm.object_store.getOID(target) 14 | device2 = pm.object_store.getOID(oid) 15 | 16 | try: 17 | device1.associate(device2) 18 | except siptracklib.errors.SiptrackError, e: 19 | request.session['error_msg'] = 'association failed: %s' % (str(e)) 20 | return pm.redirect('display.display', (oid,)) 21 | 22 | @helpers.authcheck 23 | def delete(request, oid1, oid2, type): 24 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 25 | device = pm.setVar('device', pm.object_store.getOID(oid1)) 26 | if type == 'association': 27 | url = '/device/association/delete/post/%s/%s/' % (oid1, oid2) 28 | else: 29 | url = '/device/reference/delete/post/%s/%s/' % (oid1, oid2) 30 | 31 | pm.addForm(DeleteForm(), url, 32 | 'remove device association', 33 | message = 'Removing device association.') 34 | 35 | pm.path(device) 36 | return pm.render() 37 | 38 | @helpers.authcheck 39 | def delete_post(request, oid1, oid2, type): 40 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 41 | device1 = pm.object_store.getOID(oid1) 42 | device2 = pm.object_store.getOID(oid2) 43 | if type == 'association': 44 | pm.render_var['device'] = device1 45 | url = '/device/association/delete/post/%s/%s/' % (oid1, oid2) 46 | else: 47 | pm.render_var['device'] = device2 48 | url = '/device/reference/delete/post/%s/%s/' % (oid1, oid2) 49 | pm.addForm(DeleteForm(request.POST), url, 50 | 'remove device association', 51 | message = 'Removing device association.') 52 | if not pm.form.is_valid(): 53 | return pm.render() 54 | 55 | if type == 'association': 56 | device1.disassociate(device2) 57 | else: 58 | device2.disassociate(device1) 59 | 60 | return pm.redirect('display.display', (oid1,)) 61 | 62 | 63 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_user_manager_info.html: -------------------------------------------------------------------------------- 1 | 14 |
15 | User manager 16 |
17 |
18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | {% ifequal user_manager.class_name "user manager ldap" %} 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | {% endifequal %} 50 | {% ifequal user_manager.class_name "user manager active directory" %} 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | {% endifequal %} 68 |
Name:{{ user_manager.attributes.name }}
Description:{{ user_manager.attributes.description }}
Connection type:{{ user_manager.connection_type }}
LDAP server:{{ user_manager.server }}
Server port:{{ user_manager.port }}
Base DN:{{ user_manager.base_dn }}
Valid Groups:{{ user_manager.valid_groups }}
AD server:{{ user_manager.server }}
Base DN:{{ user_manager.base_dn }}
Valid Groups:{{ user_manager.valid_groups }}
User Domain:{{ user_manager.user_domain }}
69 |
70 |
71 |
72 |
73 |
74 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/networktrees/networks/display_associated_devices.html: -------------------------------------------------------------------------------- 1 | {% if device_association_list %} 2 |
3 | Associated Devices 4 |
5 |
6 |
7 | 8 | 9 | 10 | 11 | 12 | 13 | {% for assoc in device_association_list %} 14 | {% if assoc.obj.attributes.disabled %} 15 | 16 | {% else %} 17 | 18 | {% endif %} 19 | 27 | 30 | 41 | 42 | {% endfor %} 43 |
Associated DeviceDevice ClassAction
20 | {% for pathinfo in assoc.path %} 21 | {{ pathinfo.name }} 22 | {% if not forloop.last %} 23 | / 24 | {% endif %} 25 | {% endfor %} 26 | 28 | {{ assoc.obj.attributes.class }} 29 | 31 | {% ifequal assoc.type "association" %} 32 | {% if write_access %} 33 | delete 34 | {% endif %} 35 | {% else %} 36 | {% if write_access %} 37 | delete 38 | {% endif %} 39 | {% endifequal %} 40 |
44 |
45 |
46 |
47 |
48 | {% endif %} 49 | -------------------------------------------------------------------------------- /siptrackweb/views/display.py: -------------------------------------------------------------------------------- 1 | import siptracklib 2 | import helpers 3 | import view 4 | import counter 5 | import device 6 | import device.specification 7 | import password 8 | import network 9 | import network.tree 10 | import network.range 11 | import user 12 | import attribute 13 | import template 14 | import permission 15 | import command 16 | import command.queue 17 | import event.trigger 18 | import event.trigger_rule_python 19 | 20 | display_functions = { 21 | 'attribute': attribute.display, 22 | 'versioned attribute': attribute.display, 23 | 'counter': counter.display, 24 | 'counter loop': counter.display, 25 | 'device': device.display, 26 | 'device category': device.display, 27 | 'device tree': device.display, 28 | 'device specification': device.specification.display, 29 | 'password': password.display, 30 | 'password key': password.key_display, 31 | 'password category': password.category_display, 32 | 'password tree': password.index, 33 | 'view': view.display, 34 | 'network tree': network.display, 35 | 'ipv4 network': network.display, 36 | 'ipv4 network range': network.range.display, 37 | 'ipv6 network': network.display, 38 | 'ipv6 network range': network.range.display, 39 | 'user local': user.display, 40 | 'user ldap': user.display, 41 | 'user active directory': user.display, 42 | 'user manager local': user.manager_display, 43 | 'user manager ldap': user.manager_display, 44 | 'user manager active directory': user.manager_display, 45 | 'user group': user.group_display, 46 | 'device template': template.display, 47 | 'network template': template.display, 48 | 'permission': permission.display, 49 | 'view tree': view.index, 50 | 'command': command.display, 51 | 'command queue': command.queue.display, 52 | 'event trigger': event.trigger.display, 53 | 'event trigger rule python': event.trigger_rule_python.display, 54 | } 55 | 56 | @helpers.authcheck 57 | def display(request, oid): 58 | pm = helpers.PageManager(request, 'stweb/views/index.html') 59 | try: 60 | obj = pm.object_store.getOID(oid) 61 | except siptracklib.errors.NonExistent: 62 | return pm.error('sorry, missing oid "%s"' % (oid)) 63 | if obj.class_name in display_functions: 64 | return display_functions[obj.class_name](request, oid) 65 | else: 66 | return pm.error('sorry, unknown object class "%s" for generic display' % (obj.class_name)) 67 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/index.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - views{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 | Add view 11 |
12 | 15 | 31 |
32 | {% endif %} 33 |
34 |
35 |
36 | 37 | 41 | 42 | 43 |
44 |
45 |
46 | {% include "stweb/views/display_views.html" %} 47 |
48 |
49 |
50 | {% include "stweb/configs/display.html" %} 51 | {% include "stweb/permissions/display_permissions.html" %} 52 | {% include "stweb/commands/display_queues.html" %} 53 | {% include "stweb/events/display_triggers.html" %} 54 |
55 |
56 |
57 | {% endblock %} 58 | -------------------------------------------------------------------------------- /siptrackweb/views/network/tree.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import render_to_response 3 | from django.template import Context, loader 4 | from django.http import HttpResponseRedirect 5 | from django.core.urlresolvers import reverse 6 | from siptracklib.utils import object_by_attribute 7 | import siptracklib.errors 8 | from siptrackweb.views import helpers 9 | from siptrackweb.forms import * 10 | 11 | @helpers.authcheck 12 | def index(request, parent_oid): 13 | pm = helpers.PageManager(request, 'stweb/views/networktrees/index.html') 14 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 15 | pm.path(parent) 16 | pm.section('network') 17 | 18 | pm.render_var['network_tree_list'] = list(parent.listChildren(include = ['network tree'])) 19 | return pm.render() 20 | 21 | @helpers.authcheck 22 | def add(request, parent_oid): 23 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 24 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 25 | pm.path(parent) 26 | pm.section('network') 27 | 28 | pm.render_var['network_tree_list'] = parent.listChildren(include = ['network tree']) 29 | pm.addForm(NetworkTreeAddForm(), '/networktree/add/post/%s/' % (parent_oid)) 30 | return pm.render() 31 | 32 | @helpers.authcheck 33 | def add_post(request, parent_oid): 34 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 35 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 36 | pm.path(parent) 37 | pm.section('network') 38 | 39 | pm.render_var['network_tree_list'] = parent.listChildren(include = ['network tree']) 40 | pm.addForm(NetworkTreeAddForm(request.POST), '/networktree/add/post/%s/' % (parent_oid)) 41 | if not pm.form.is_valid(): 42 | return pm.error() 43 | 44 | nt = parent.add('network tree', pm.form.cleaned_data['protocol']) 45 | nt.attributes['name'] = pm.form.cleaned_data['name'] 46 | 47 | return pm.redirect('network.display', (nt.oid,)) 48 | 49 | @helpers.authcheck 50 | def delete(request, oid): 51 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 52 | pm.addForm(DeleteForm(), '/networktree/delete/post/%s/' % (oid), message='Removing network tree.') 53 | pm.section('network') 54 | 55 | nt = pm.setVar('network_tree', pm.object_store.getOID(oid)) 56 | pm.path(nt) 57 | pm.render_var['parent'] = nt.parent 58 | pm.render_var['network_tree_list'] = nt.parent.listChildren(include = ['network tree']) 59 | return pm.render() 60 | 61 | @helpers.authcheck 62 | def delete_post(request, oid): 63 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 64 | pm.addForm(DeleteForm(request.POST), '/networktree/delete/post/%s/' % (oid), message='Removing network tree.') 65 | pm.section('network') 66 | nt = pm.object_store.getOID(oid) 67 | parent_oid = nt.parent.oid 68 | nt.delete() 69 | 70 | return pm.redirect('network.tree.index', (parent_oid,)) 71 | 72 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/users/display_subkeys.html: -------------------------------------------------------------------------------- 1 | 6 |
7 | Subkeys 8 |
9 |
10 |
11 | {% if subkey_list %} 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | {% for subkey in subkey_list %} 21 | 22 | {% if not subkey.exists %} 23 | 24 | 25 | {% else %} 26 | 27 | 28 | {% endif %} 29 | 35 | 36 | 37 | 38 | {% if subkey.exists %} 39 | 40 | 60 | 61 | {% endif %} 62 | 63 | {% endfor %} 64 |
NameDescriptionAction
Password key deleted{{ subkey.name | escape }}{{ subkey.description | escape }} 30 | {% if write_access %} 31 | 32 | disconnect 33 | {% endif %} 34 |
41 |
42 | {% if user.username != username %} 43 |
44 | 45 | 46 |
47 | {% endif %} 48 |
49 | 50 | 51 | 52 | 53 | 54 |
55 | 56 |
57 |
58 |
59 |
65 | {% endif %} 66 |
67 |
68 |
69 |
70 |
71 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/display.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display view{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 | Update view 11 |
12 | 15 | 23 |
24 | {% endif %} 25 |
26 |
27 |
28 |
29 | Manage: 30 | Devices 31 | Networks 32 | Counters 33 | Passwords 34 |
35 |
36 |
37 | 38 | 42 | 43 | 44 |
45 |
46 |
47 | {% include "stweb/views/display_view_info.html" %} 48 | {% include "stweb/views/devices/categories/display_categories.html" %} 49 | {% include "stweb/views/devices/display_devices_standard.html" %} 50 | {% include "stweb/views/networktrees/display_network_trees.html" %} 51 |
52 |
53 |
54 | {% include "stweb/attributes/display.html" %} 55 | {% include "stweb/configs/display.html" %} 56 | {% include "stweb/permissions/display_permissions.html" %} 57 |
58 |
59 |
60 | {% endblock %} 61 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_password_associations.html: -------------------------------------------------------------------------------- 1 | {% if device_password_associations.all %} 2 |
3 | Linked password categories 4 |
5 |
6 | 37 |
38 |
39 |
40 | 41 |
42 | Linked passwords 43 |
44 |
45 | 88 |
89 | {% endif %} -------------------------------------------------------------------------------- /siptrackweb/views/device/network.py: -------------------------------------------------------------------------------- 1 | import siptracklib.errors 2 | 3 | from siptrackweb.views import helpers 4 | from siptrackweb.forms import * 5 | 6 | @helpers.authcheck 7 | def add(request, oid): 8 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 9 | device = pm.setVar('device', pm.object_store.getOID(oid)) 10 | pm.path(device) 11 | view = device.getParent('view') 12 | network_trees = view.listChildren(include = ['network tree']) 13 | 14 | url = '/device/network/add/post/%s/' % (oid) 15 | pm.addForm(DeviceNetworkAddForm(network_trees), url) 16 | return pm.render() 17 | 18 | @helpers.authcheck 19 | def add_post(request, oid): 20 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 21 | device = pm.setVar('device', pm.object_store.getOID(oid)) 22 | pm.path(device) 23 | view = device.getParent('view') 24 | network_trees = view.listChildren(include = ['network tree']) 25 | 26 | url = '/device/network/add/post/%s/' % (oid) 27 | pm.addForm(DeviceNetworkAddForm(network_trees, request.POST), url) 28 | if not pm.form.is_valid(): 29 | return pm.error() 30 | 31 | nt = pm.object_store.getOID(pm.form.cleaned_data['networktree']) 32 | address_string = pm.form.cleaned_data['network_name'] 33 | network = nt.getNetworkOrRange(address_string) 34 | 35 | if device.isAssociated(network): 36 | return pm.error('address already associated') 37 | 38 | if network.isHost() and len(device.listNetworks()) > 0: 39 | network.attributes['secondary'] = True 40 | if pm.form.cleaned_data['description']: 41 | network.attributes['description'] = pm.form.cleaned_data['description'] 42 | device.associate(network) 43 | 44 | return pm.redirect('device.display', (device.oid,)) 45 | 46 | @helpers.authcheck 47 | def autoassign(request, oid): 48 | pm = helpers.PageManager(request, 'stweb/views/devices/networks/autoassign.html') 49 | device = pm.setVar('device', pm.object_store.getOID(oid)) 50 | pm.path(device) 51 | 52 | return pm.render() 53 | 54 | @helpers.authcheck 55 | def autoassign_post(request, oid): 56 | pm = helpers.PageManager(request, 'stweb/views/devices/networks/autoassign.html') 57 | device = pm.setVar('device', pm.object_store.getOID(oid)) 58 | pm.path(device) 59 | 60 | network = device.autoassignNetwork() 61 | if len(device.listNetworks()) > 0: 62 | network.attributes['secondary'] = True 63 | request.session['assigned network'] = network.oid 64 | 65 | return pm.redirect('device.display', (device.oid,)) 66 | 67 | @helpers.authcheck 68 | def delete(request, device_oid, network_oid): 69 | pm = helpers.PageManager(request, 'stweb/views/devices/networks/delete.html') 70 | device = pm.setVar('device', pm.object_store.getOID(device_oid)) 71 | pm.path(device) 72 | network = pm.setVar('network', pm.object_store.getOID(network_oid)) 73 | 74 | return pm.render() 75 | 76 | @helpers.authcheck 77 | def delete_post(request, device_oid, network_oid): 78 | pm = helpers.PageManager(request, 'stweb/views/devices/networks/delete.html') 79 | device = pm.object_store.getOID(device_oid) 80 | pm.path(device) 81 | network = pm.object_store.getOID(network_oid) 82 | 83 | device.unlink(network) 84 | network.prune() 85 | 86 | return pm.redirect('device.display', (device.oid,)) 87 | 88 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/passwords/display_passwordkey.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display password key{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 | Delete password key 11 | Add attribute 12 | {% endif %} 13 |
14 |
15 | 16 |
17 | 30 |
31 |
32 |
33 |
34 | Password Key 35 |
36 |
37 |
38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
Name:{{ password_key.attributes.name|escape }}
Description:{{ password_key.attributes.description|escape }}
48 |
49 |
50 |
51 |
52 | {% include "stweb/attributes/display.html" %} 53 |
54 | 55 | {% if administrator %} 56 |
57 |
58 | Users Connected 59 |
60 | {% if user_list %} 61 |
62 |
63 | 64 | 65 | 66 | 67 | 68 | {% for user in user_list %} 69 | 70 | 73 | 82 | 83 | {% endfor %} 84 |
User NamePassword Key
71 | {{ user.username }} 72 | 74 | 75 | {% if password_key.attributes.name %} 76 | {{ password_key.attributes.name|escape }} 77 | {% else %} 78 | [UNKNOWN] 79 | {% endif %} 80 | 81 |
85 |
86 |
87 | {% endif %} 88 |
89 | {% endif %} 90 | 91 |
92 |
93 |
94 |
95 | {% endblock %} 96 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/passwords/display_category.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display password category{% endblock %} 4 | 5 | {% block content %} 6 | 7 |
8 |
9 | Actions: 10 | {% if write_access %} 11 | 12 |
13 | 16 | 21 |
22 | 23 | Add category 24 | Add password 25 | Delete category 26 | 27 | {% endif %} 28 | 29 | {% if valid_tag_target %} 30 |
31 | 34 | 41 |
42 | {% endif %} 43 |
44 |
45 | 46 |
47 | Category Information 48 |
49 |
50 |
51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 |
Name:{{ password_category.attributes.name|escape }}
Description:{{ password_category.attributes.description|escape }}
61 |
62 |
63 | 64 | {% include "stweb/passwords/display_categories.html" %} 65 | 66 |
67 | 75 | 76 |
77 |
78 | {% include "stweb/passwords/display_passwords.html" %} 79 |
80 |
81 | {% include "stweb/attributes/display_attributes.html" %} 82 | {% include "stweb/attributes/display_boxes.html" %} 83 |
84 |
85 |
86 | 87 | {% endblock %} 88 | -------------------------------------------------------------------------------- /siptrackweb/views/network/range.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import render_to_response 3 | from django.template import Context, loader 4 | from django.http import HttpResponseRedirect 5 | from django.core.urlresolvers import reverse 6 | from siptracklib.utils import object_by_attribute 7 | import siptracklib.errors 8 | from siptrackweb.views import helpers 9 | from siptrackweb.forms import * 10 | from siptrackweb.views import attribute 11 | from siptrackweb.views import config 12 | 13 | @helpers.authcheck 14 | def display(request, oid): 15 | pm = helpers.PageManager(request, 'stweb/views/networktrees/networks/display_range.html') 16 | range = pm.object_store.getOID(oid) 17 | network_tree = range.getNetworkTree() 18 | pm.render_var['network_tree_list'] = network_tree.parent.listChildren(include = ['network tree']) 19 | 20 | pm.render_var['browsable_path'] = [] 21 | pm.render_var['network_tree'] = network_tree 22 | pm.render_var['network_range'] = range 23 | pm.render_var['network'] = range 24 | pm.render_var['template_list'] = range.listChildren(include = ['device template', 'network template']) 25 | pm.render_var['attribute_list'] = attribute.parse_attributes(range) 26 | pm.render_var['config_list'] = config.parse_config(range) 27 | pm.render_var['device_list'] = range.listReferences(include = ['device', 'device category']) 28 | pm.path(range) 29 | return pm.render() 30 | 31 | @helpers.authcheck 32 | def add(request, parent_oid): 33 | pm = helpers.PageManager(request, 'stweb/views/networktrees/networks/add_range.html') 34 | parent = pm.object_store.getOID(parent_oid) 35 | network_tree = parent.getNetworkTree() 36 | pm.render_var['network_tree_list'] = network_tree.parent.listChildren(include = ['network tree']) 37 | 38 | pm.render_var['network_tree'] = network_tree 39 | pm.render_var['parent'] = parent 40 | pm.setForm(NetworkRangeAddForm()) 41 | pm.path(parent) 42 | return pm.render() 43 | 44 | @helpers.authcheck 45 | def add_post(request, parent_oid): 46 | pm = helpers.PageManager(request, 'stweb/views/networktrees/networks/add_range.html') 47 | parent = pm.object_store.getOID(parent_oid) 48 | pm.path(parent) 49 | network_tree = parent.getNetworkTree() 50 | pm.render_var['network_tree_list'] = network_tree.parent.listChildren(include = ['network tree']) 51 | pm.render_var['network_tree'] = network_tree 52 | 53 | pm.setForm(NetworkRangeAddForm(request.POST)) 54 | if not pm.form.is_valid(): 55 | return pm.error() 56 | 57 | range = network_tree.addNetworkRange(pm.form.cleaned_data['range']) 58 | 59 | if len(pm.form.cleaned_data['description']) > 0: 60 | range.attributes['description'] = pm.form.cleaned_data['description'] 61 | 62 | return pm.redirect('network.range.display', (range.oid,)) 63 | 64 | @helpers.authcheck 65 | def delete(request, oid): 66 | pm = helpers.PageManager(request, 'stweb/views/networktrees/networks/delete_range.html') 67 | range = pm.object_store.getOID(oid) 68 | network_tree = range.getNetworkTree() 69 | pm.render_var['network_tree'] = network_tree 70 | pm.render_var['network_tree_list'] = network_tree.parent.listChildren(include = ['network tree']) 71 | pm.render_var['network_range'] = range 72 | 73 | pm.path(range) 74 | return pm.render() 75 | 76 | @helpers.authcheck 77 | def delete_post(request, oid): 78 | pm = helpers.PageManager(request, 'stweb/views/networktrees/networks/delete_range.html') 79 | range = pm.object_store.getOID(oid) 80 | 81 | parent_oid = range.parent.oid 82 | range.delete() 83 | 84 | return pm.redirect('network.display', (parent_oid,)) 85 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/display_networks.html: -------------------------------------------------------------------------------- 1 | {% if network_host_list or network_subnet_list or interface_network_host_list %} 2 |
3 | IP-addresses 4 |
5 |
6 |
7 | {% if network_host_list or interface_network_host_list%} 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | {% for network in network_host_list %} 17 | 18 | 21 | 28 | 31 | 34 | 39 | 40 | {% endfor %} 41 | {% for interface, networks in interface_network_host_list %} 42 | {% for network in networks %} 43 | 44 | 47 | 54 | 57 | 60 | 65 | 66 | {% endfor %} 67 | {% endfor %} 68 |
IP-addressPrimary AddressInterfaceDescriptionAction
19 | {{ network.strAddress|escape }} 20 | 22 | {% if network.attributes.secondary %} 23 | False 24 | {% else %} 25 | True 26 | {% endif %} 27 | 29 |   30 | 32 | {{ network.attributes.description|escape }} 33 | 35 | {% if write_access %} 36 | delete 37 | {% endif %} 38 |
45 | {{ network.strAddress|escape }} 46 | 48 | {% if network.attributes.secondary %} 49 | False 50 | {% else %} 51 | True 52 | {% endif %} 53 | 55 | {{ interface.attributes.name }} 56 | 58 | {{ network.attributes.description|escape }} 59 | 61 | {% if write_access %} 62 | delete 63 | {% endif %} 64 |
69 | {% endif %} 70 | {% if network_subnet_list %} 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | {% for network in network_subnet_list %} 79 | 80 | 83 | 86 | 89 | 92 | 93 | {% endfor %} 94 |
Subnet/RangeDescriptionAuto-assignAction
81 | {{ network|escape }} 82 | 84 | {{ network.attributes.description|escape }} 85 | 87 | {{ network.attributes.autoassign|escape }} 88 | 90 | delete 91 |
95 | {% endif %} 96 |
97 |
98 |
99 |
100 | {% endif %} 101 | -------------------------------------------------------------------------------- /siptrackweb/views/command/command.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import render_to_response 3 | from django.template import Context, loader 4 | from django.http import HttpResponseRedirect 5 | from django.core.urlresolvers import reverse 6 | from siptracklib.utils import object_by_attribute 7 | import siptracklib.errors 8 | from siptrackweb.views import helpers 9 | from siptrackweb.views import attribute 10 | from siptrackweb.forms import * 11 | from siptrackweb.views import attribute 12 | 13 | @helpers.authcheck 14 | def display(request, oid): 15 | pm = helpers.PageManager(request, 'stweb/views/commands/display_command.html') 16 | 17 | node = pm.setVar('command', pm.object_store.getOID(oid)) 18 | pm.render_var['parent'] = node.parent 19 | pm.render_var['attribute_list'] = attribute.parse_attributes(node) 20 | pm.path(node) 21 | return pm.render() 22 | 23 | @helpers.authcheck 24 | def add(request, parent_oid): 25 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 26 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 27 | 28 | url = '/command/add/post/%s/' % (parent.oid) 29 | pm.addForm(CommandAddForm(), url, 'add command') 30 | pm.path(parent) 31 | return pm.render() 32 | 33 | @helpers.authcheck 34 | def add_post(request, parent_oid): 35 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 36 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 37 | pm.path(parent) 38 | 39 | url = '/command/add/post/%s/' % (parent.oid) 40 | pm.addForm(CommandAddForm(request.POST), url, 'add command') 41 | if not pm.form.is_valid(): 42 | return pm.error() 43 | 44 | freetext = pm.form.cleaned_data['freetext'] 45 | node = parent.add('command', freetext) 46 | 47 | return pm.redirect('display.display', (parent.oid,)) 48 | 49 | @helpers.authcheck 50 | def update(request, oid): 51 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 52 | 53 | node = pm.setVar('command', pm.object_store.getOID(oid)) 54 | form_data = {'freetext': node.freetext} 55 | url = '/command/update/post/%s/' % (node.oid) 56 | pm.addForm(CommandUpdateForm(form_data), url, 'update command') 57 | pm.render_var['parent'] = node.parent 58 | pm.path(node) 59 | return pm.render() 60 | 61 | @helpers.authcheck 62 | def update_post(request, oid): 63 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 64 | node = pm.object_store.getOID(oid) 65 | url = '/command/update/post/%s/' % (node.oid) 66 | pm.addForm(CommandUpdateForm(request.POST), url, 'update command') 67 | if not pm.form.is_valid(): 68 | return pm.error() 69 | 70 | if pm.form.cleaned_data['freetext'] != node.freetext: 71 | node.freetext = pm.form.cleaned_data['freetext'] 72 | 73 | return pm.redirect('display.display', (node.parent.oid,)) 74 | 75 | @helpers.authcheck 76 | def delete(request, oid): 77 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 78 | 79 | node = pm.setVar('command', pm.object_store.getOID(oid)) 80 | pm.addForm(DeleteForm(), '/command/delete/post/%s/' % (node.oid), 81 | 'remove command', message = 'Removing command.') 82 | pm.path(node) 83 | return pm.render() 84 | 85 | @helpers.authcheck 86 | def delete_post(request, oid): 87 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 88 | node = pm.object_store.getOID(oid) 89 | parent_oid = node.parent.oid 90 | pm.addForm(DeleteForm(request.POST), '/command/delete/post/%s/' % (node.oid), 91 | 'remove command', message = 'Removing command.') 92 | if not pm.form.is_valid(): 93 | return pm.render() 94 | node.delete() 95 | 96 | return pm.redirect('display.display', (parent_oid,)) 97 | 98 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/generic_form.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | {% load myfilters %} 3 | {% load widget_tweaks %} 4 | 5 | {% block title %}siptrackweb - {{ form.title }}{% endblock %} 6 | 7 | {% block content %} 8 |
9 | Submit: {{ form.title }} 10 |
11 |
12 | {% if form.message %} 13 |
14 |

{{ form.message|safe }}

15 |
16 | {% endif %} 17 | 18 |
19 | 20 | {% for argument in form.form %} 21 | {% if argument.is_hidden %} 22 | {{ argument }} 23 | {% endif %} 24 | {% endfor %} 25 | 26 | {% for argument in form.form %} 27 | {% if not argument.is_hidden or form.display_hidden %} 28 |
29 | 30 | {% if argument.field.widget|is_checkbox %} 31 |
32 | 35 |
36 | {% else %} 37 | {{argument.label_tag}} 38 | {% render_field argument class+="form-control" %} 39 | {% endif %} 40 | 41 | {{argument.help_text|safe}} 42 | {% if argument.errors %} 43 | 44 | {{argument.errors}} 45 | 46 | {% endif %} 47 | 48 |
49 | 50 | {% endif %} 51 | {% endfor %} 52 | 53 | {% if not form.readonly %} 54 | 55 | {% endif %} 56 | 57 | 94 |
95 |
96 | {% endblock %} 97 | -------------------------------------------------------------------------------- /siptrackweb/views/command/queue.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import render_to_response 3 | from django.template import Context, loader 4 | from django.http import HttpResponseRedirect 5 | from django.core.urlresolvers import reverse 6 | from siptracklib.utils import object_by_attribute 7 | import siptracklib.errors 8 | from siptrackweb.views import helpers 9 | from siptrackweb.forms import * 10 | from siptrackweb.views import attribute 11 | 12 | @helpers.authcheck 13 | def display(request, oid): 14 | pm = helpers.PageManager(request, 'stweb/commands/display_queue.html') 15 | 16 | node = pm.setVar('queue', pm.object_store.getOID(oid)) 17 | pm.render_var['parent'] = node.parent 18 | pm.render_var['attribute_list'] = attribute.parse_attributes(node) 19 | pm.render_var['command_list'] = node.listChildren(include = ['command']) 20 | pm.path(node) 21 | return pm.render() 22 | 23 | @helpers.authcheck 24 | def add(request, parent_oid): 25 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 26 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 27 | 28 | url = '/command/queue/add/post/%s/' % (parent.oid) 29 | pm.addForm(CommandQueueAddForm(), url, 'add command queue') 30 | pm.path(parent) 31 | return pm.render() 32 | 33 | @helpers.authcheck 34 | def add_post(request, parent_oid): 35 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 36 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 37 | pm.path(parent) 38 | 39 | url = '/command/queue/add/post/%s/' % (parent.oid) 40 | pm.addForm(CommandQueueAddForm(request.POST), url, 'add command queue') 41 | if not pm.form.is_valid(): 42 | return pm.error() 43 | 44 | node = parent.add('command queue') 45 | if len(pm.form.cleaned_data['name']) > 0: 46 | node.attributes['name'] = pm.form.cleaned_data['name'] 47 | 48 | return pm.redirect('display.display', (node.oid,)) 49 | 50 | @helpers.authcheck 51 | def update(request, oid): 52 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 53 | 54 | node = pm.setVar('queue', pm.object_store.getOID(oid)) 55 | form_data = {'name': node.attributes.get('name', '')} 56 | url = '/command/queue/update/post/%s/' % (node.oid) 57 | pm.addForm(CommandQueueUpdateForm(form_data), url, 'update command queue') 58 | pm.render_var['parent'] = node.parent 59 | pm.path(node) 60 | return pm.render() 61 | 62 | @helpers.authcheck 63 | def update_post(request, oid): 64 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 65 | node = pm.object_store.getOID(oid) 66 | url = '/command/queue/update/post/%s/' % (node.oid) 67 | pm.addForm(CommandQueueUpdateForm(request.POST), url, 'update command queue') 68 | if not pm.form.is_valid(): 69 | return pm.error() 70 | 71 | if pm.form.cleaned_data['name'] != node.attributes.get('name'): 72 | node.attributes['name'] = pm.form.cleaned_data['name'] 73 | 74 | return pm.redirect('display.display', (oid,)) 75 | 76 | @helpers.authcheck 77 | def delete(request, oid): 78 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 79 | 80 | node = pm.setVar('queue', pm.object_store.getOID(oid)) 81 | pm.addForm(DeleteForm(), '/command/queue/delete/post/%s/' % (node.oid), 82 | 'remove command queue', message = 'Removing command queue.') 83 | pm.path(node) 84 | return pm.render() 85 | 86 | @helpers.authcheck 87 | def delete_post(request, oid): 88 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 89 | node = pm.object_store.getOID(oid) 90 | parent_oid = node.parent.oid 91 | pm.addForm(DeleteForm(request.POST), '/command/queue/delete/post/%s/' % (node.oid), 92 | 'remove command', message = 'Removing command.') 93 | if not pm.form.is_valid(): 94 | return pm.render() 95 | node.delete() 96 | 97 | return pm.redirect('display.display', (parent_oid,)) 98 | 99 | -------------------------------------------------------------------------------- /siptrackweb/views/event/trigger.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import render_to_response 3 | from django.template import Context, loader 4 | from django.http import HttpResponseRedirect 5 | from django.core.urlresolvers import reverse 6 | from siptracklib.utils import object_by_attribute 7 | import siptracklib.errors 8 | from siptrackweb.views import helpers 9 | from siptrackweb.forms import * 10 | from siptrackweb.views import attribute 11 | 12 | @helpers.authcheck 13 | def display(request, oid): 14 | pm = helpers.PageManager(request, 'stweb/events/display_trigger.html') 15 | 16 | node = pm.setVar('trigger', pm.object_store.getOID(oid)) 17 | pm.render_var['parent'] = node.parent 18 | pm.render_var['attribute_list'] = attribute.parse_attributes(node) 19 | pm.render_var['python_rule_list'] = node.listChildren(include = ['event trigger rule python']) 20 | pm.path(node) 21 | return pm.render() 22 | 23 | @helpers.authcheck 24 | def add(request, parent_oid): 25 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 26 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 27 | 28 | url = '/event/trigger/add/post/%s/' % (parent.oid) 29 | pm.addForm(EventTriggerAddForm(), url, 'add event trigger') 30 | pm.path(parent) 31 | return pm.render() 32 | 33 | @helpers.authcheck 34 | def add_post(request, parent_oid): 35 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 36 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 37 | pm.path(parent) 38 | 39 | url = '/event/trigger/add/post/%s/' % (parent.oid) 40 | pm.addForm(EventTriggerAddForm(request.POST), url, 'add event trigger') 41 | if not pm.form.is_valid(): 42 | return pm.error() 43 | 44 | node = parent.add('event trigger') 45 | if len(pm.form.cleaned_data['name']) > 0: 46 | node.attributes['name'] = pm.form.cleaned_data['name'] 47 | 48 | return pm.redirect('display.display', (node.oid,)) 49 | 50 | @helpers.authcheck 51 | def update(request, oid): 52 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 53 | 54 | node = pm.setVar('trigger', pm.object_store.getOID(oid)) 55 | form_data = {'name': node.attributes.get('name', '')} 56 | url = '/event/trigger/update/post/%s/' % (node.oid) 57 | pm.addForm(EventTriggerUpdateForm(form_data), url, 'update event trigger') 58 | pm.render_var['parent'] = node.parent 59 | pm.path(node) 60 | return pm.render() 61 | 62 | @helpers.authcheck 63 | def update_post(request, oid): 64 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 65 | node = pm.object_store.getOID(oid) 66 | url = '/event/trigger/update/post/%s/' % (node.oid) 67 | pm.addForm(EventTriggerUpdateForm(request.POST), url, 'update event trigger') 68 | if not pm.form.is_valid(): 69 | return pm.error() 70 | 71 | if pm.form.cleaned_data['name'] != node.attributes.get('name'): 72 | node.attributes['name'] = pm.form.cleaned_data['name'] 73 | 74 | return pm.redirect('display.display', (oid,)) 75 | 76 | @helpers.authcheck 77 | def delete(request, oid): 78 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 79 | 80 | node = pm.setVar('trigger', pm.object_store.getOID(oid)) 81 | pm.addForm(DeleteForm(), '/event/trigger/delete/post/%s/' % (node.oid), 82 | 'remove event trigger', message = 'Removing event trigger.') 83 | pm.path(node) 84 | return pm.render() 85 | 86 | @helpers.authcheck 87 | def delete_post(request, oid): 88 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 89 | node = pm.object_store.getOID(oid) 90 | parent_oid = node.parent.oid 91 | pm.addForm(DeleteForm(request.POST), '/event/trigger/delete/post/%s/' % (node.oid), 92 | 'remove event trigger', message = 'Removing event trigger.') 93 | if not pm.form.is_valid(): 94 | return pm.render() 95 | node.delete() 96 | 97 | return pm.redirect('display.display', (parent_oid,)) 98 | 99 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/templates/display.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - display template{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 |
11 | 14 | 19 |
20 |
21 | 24 | 61 |
62 | Update template 63 | Delete template 64 | {% if valid_copy_target %} 65 | Copy template 66 | {% endif %} 67 | {% endif %} 68 |
69 |
70 | {% include "stweb/templates/display_template_information.html" %} 71 | {% include "stweb/attributes/display_attributes.html" %} 72 | {% include "stweb/templates/display_rules.html" %} 73 | {% endblock %} 74 | -------------------------------------------------------------------------------- /siptrackweb/views/permission.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import render_to_response 3 | from django.template import Context, loader 4 | from django.http import HttpResponseRedirect 5 | from django.core.urlresolvers import reverse 6 | from siptracklib.utils import object_by_attribute 7 | import siptracklib.errors 8 | import helpers 9 | from siptrackweb.forms import * 10 | from siptrackweb.views import attribute 11 | 12 | def parse_config(obj): 13 | include = ['permission'] 14 | return obj.listChildren(include = include) 15 | 16 | def get_add_users(object_store): 17 | users = [] 18 | for user in object_store.view_tree.user_manager.listUsers(): 19 | users.append((user.oid, user.username)) 20 | return users 21 | 22 | def get_add_groups(object_store): 23 | groups = [] 24 | for group in object_store.view_tree.user_manager.listGroups(): 25 | groups.append((group.oid, group.attributes.get('name', '[NONE]'))) 26 | return groups 27 | 28 | @helpers.authcheck 29 | def display(request, oid): 30 | pm = helpers.PageManager(request, 'stweb/permissions/display.html') 31 | 32 | permission = pm.setVar('permission', pm.object_store.getOID(oid)) 33 | pm.render_var['parent'] = permission.parent 34 | pm.render_var['attribute_list'] = attribute.parse_attributes(permission) 35 | pm.render_var['permission'] = permission 36 | pm.path(permission) 37 | return pm.render() 38 | 39 | @helpers.authcheck 40 | def add(request, parent_oid): 41 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 42 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 43 | pm.path(parent) 44 | 45 | users = get_add_users(pm.object_store) 46 | groups = get_add_groups(pm.object_store) 47 | form = PermissionAddForm(users, groups) 48 | url = '/permission/add/post/%s/' % (parent.oid) 49 | pm.addForm(form, url, 'add permission') 50 | return pm.render() 51 | 52 | @helpers.authcheck 53 | def add_post(request, parent_oid): 54 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 55 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 56 | pm.path(parent) 57 | 58 | users = get_add_users(pm.object_store) 59 | groups = get_add_groups(pm.object_store) 60 | form = PermissionAddForm(users, groups, request.POST) 61 | url = '/permission/add/post/%s/' % (parent.oid) 62 | pm.addForm(form, url, 'add permission') 63 | if not pm.form.is_valid(): 64 | return pm.error() 65 | 66 | form_users = [pm.object_store.getOID(oid) for oid in pm.form.cleaned_data['users']] 67 | form_groups = [pm.object_store.getOID(oid) for oid in pm.form.cleaned_data['groups']] 68 | 69 | permission = parent.add('permission', pm.form.cleaned_data['read_access'], 70 | pm.form.cleaned_data['write_access'], 71 | form_users, 72 | form_groups, 73 | pm.form.cleaned_data['all_users'], 74 | pm.form.cleaned_data['recursive'], 75 | ) 76 | 77 | return pm.redirect('display.display', (parent_oid,)) 78 | 79 | @helpers.authcheck 80 | def delete(request, oid): 81 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 82 | 83 | permission = pm.setVar('permission', pm.object_store.getOID(oid)) 84 | pm.addForm(DeleteForm(), '/permission/delete/post/%s/' % (permission.oid), 85 | 'remove permission', message = 'Removing permission.') 86 | pm.path(permission) 87 | return pm.render() 88 | 89 | @helpers.authcheck 90 | def delete_post(request, oid): 91 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 92 | permission = pm.object_store.getOID(oid) 93 | parent_oid = permission.parent.oid 94 | pm.addForm(DeleteForm(request.POST), '/permission/delete/post/%s/' % (permission.oid), 95 | 'remove permission', message = 'Removing permission.') 96 | if not pm.form.is_valid(): 97 | return pm.render() 98 | permission.delete() 99 | 100 | return pm.redirect('display.display', (parent_oid,)) 101 | 102 | -------------------------------------------------------------------------------- /siptrackweb/views/event/trigger_rule_python.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import render_to_response 3 | from django.template import Context, loader 4 | from django.http import HttpResponseRedirect 5 | from django.core.urlresolvers import reverse 6 | from siptracklib.utils import object_by_attribute 7 | import siptracklib.errors 8 | from siptrackweb.views import helpers 9 | from siptrackweb.forms import * 10 | from siptrackweb.views import attribute 11 | 12 | @helpers.authcheck 13 | def display(request, oid): 14 | pm = helpers.PageManager(request, 'stweb/events/display_python_rule.html') 15 | 16 | node = pm.setVar('rule', pm.object_store.getOID(oid)) 17 | pm.render_var['parent'] = node.parent 18 | pm.render_var['attribute_list'] = attribute.parse_attributes(node) 19 | pm.path(node) 20 | return pm.render() 21 | 22 | @helpers.authcheck 23 | def add(request, parent_oid): 24 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 25 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 26 | 27 | url = '/event/trigger/rule/python/add/post/%s/' % (parent.oid) 28 | pm.addForm(EventTriggerRulePythonAddForm(), url, 'add python rule') 29 | pm.path(parent) 30 | return pm.render() 31 | 32 | @helpers.authcheck 33 | def add_post(request, parent_oid): 34 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 35 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 36 | pm.path(parent) 37 | 38 | url = '/event/trigger/rule/python/add/post/%s/' % (parent.oid) 39 | pm.addForm(EventTriggerRulePythonAddForm(request.POST), url, 'add python rule') 40 | if not pm.form.is_valid(): 41 | return pm.error() 42 | 43 | node = parent.add('event trigger rule python', pm.form.cleaned_data['code'].replace('\r', '')) 44 | if len(pm.form.cleaned_data['name']) > 0: 45 | node.attributes['name'] = pm.form.cleaned_data['name'] 46 | 47 | return pm.redirect('display.display', (node.oid,)) 48 | 49 | @helpers.authcheck 50 | def update(request, oid): 51 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 52 | 53 | node = pm.setVar('rule', pm.object_store.getOID(oid)) 54 | form_data = {'name': node.attributes.get('name', ''), 55 | 'code': node.code} 56 | url = '/event/trigger/rule/python/update/post/%s/' % (node.oid) 57 | pm.addForm(EventTriggerRulePythonUpdateForm(form_data), url, 'update python rule') 58 | pm.render_var['parent'] = node.parent 59 | pm.path(node) 60 | return pm.render() 61 | 62 | @helpers.authcheck 63 | def update_post(request, oid): 64 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 65 | node = pm.object_store.getOID(oid) 66 | url = '/event/trigger/rule/python/update/post/%s/' % (node.oid) 67 | pm.addForm(EventTriggerRulePythonUpdateForm(request.POST), url, 'update python rule') 68 | if not pm.form.is_valid(): 69 | return pm.error() 70 | 71 | if pm.form.cleaned_data['name'] != node.attributes.get('name'): 72 | node.attributes['name'] = pm.form.cleaned_data['name'] 73 | 74 | if pm.form.cleaned_data['code'] != node.code: 75 | node.code = pm.form.cleaned_data['code'].replace('\r', '') 76 | 77 | return pm.redirect('display.display', (oid,)) 78 | 79 | @helpers.authcheck 80 | def delete(request, oid): 81 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 82 | 83 | node = pm.setVar('rule', pm.object_store.getOID(oid)) 84 | pm.addForm(DeleteForm(), '/event/trigger/rule/python/delete/post/%s/' % (node.oid), 85 | 'remove python rule', message = 'Removing python rule.') 86 | pm.path(node) 87 | return pm.render() 88 | 89 | @helpers.authcheck 90 | def delete_post(request, oid): 91 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 92 | node = pm.object_store.getOID(oid) 93 | parent_oid = node.parent.oid 94 | pm.addForm(DeleteForm(request.POST), '/event/trigger/rule/python/delete/post/%s/' % (node.oid), 95 | 'remove python rule', message = 'Removing python rule.') 96 | if not pm.form.is_valid(): 97 | return pm.render() 98 | node.delete() 99 | 100 | return pm.redirect('display.display', (parent_oid,)) 101 | 102 | -------------------------------------------------------------------------------- /siptrackweb/static/siptrackweb/siptrackweb.js: -------------------------------------------------------------------------------- 1 | function show_alert(alert_div, alert_type, alert_msg) { 2 | var valid_types = ['info', 'success', 'warning']; 3 | 4 | alert_div.removeClass(function () { 5 | var ret_types = []; 6 | for(var i=0;i '+alert_type+': '+alert_msg+'

'); 15 | alert_div.show(); 16 | } 17 | 18 | // Switch to the last viewed tab if there's a hash in url 19 | $(window).on("popstate", function() { 20 | var anchor = location.hash || $("a[data-toggle='tab']").first().attr("href"); 21 | $("a[href='" + anchor + "']").tab("show"); 22 | }); 23 | 24 | $(document).ready(function () { 25 | $('#searchinput').focus(); 26 | 27 | // Remember tabs across refresh 28 | if (location.hash) { 29 | $("a[href='" + location.hash + "']").tab("show"); 30 | } 31 | $(document.body).on("click", "a[data-toggle]", function(event) { 32 | location.hash = this.getAttribute("href"); 33 | }); 34 | 35 | $(function () { 36 | $('[data-toggle="tooltip"]').tooltip() 37 | }); 38 | 39 | $('[id^=subkeyConnectForm]').on('submit', function(event) { 40 | event.preventDefault(); 41 | 42 | // Disable button and show loading gif 43 | form_button = $(this).find('button[type=submit]'); 44 | form_button.prop('disabled', true); 45 | 46 | var formData = { 47 | 'userPassword': $(this).find('input[id=subkeyUserPassword]').val(), 48 | 'passwordKeyPassword': $(this).find('input[id=subkeyPassword]').val(), 49 | 'subkeyOid': $(this).find('input[id=subkeyOid]').val(), 50 | 'userOid': $(this).find('input[id=userOid]').val(), 51 | 'passwordKeyOid': $(this).find('input[id=passwordKeyOid]').val(), 52 | }; 53 | 54 | alert_div = $('#formAlert'+formData.subkeyOid); 55 | 56 | // First check the password provided 57 | $.ajax({ 58 | type: 'POST', 59 | url: '/ajax/password/key/valid/', 60 | data: formData, 61 | dataType: 'json', 62 | encode: true, 63 | }).done(function(data) { 64 | 65 | // Delete the key 66 | $.ajax({ 67 | type: 'POST', 68 | url: '/ajax/user/subkey/delete/', 69 | data: formData, 70 | dataType: 'json', 71 | encode: true, 72 | }).done(function(data) { 73 | console.log('Disconnected key'); 74 | console.log(data); 75 | 76 | $.ajax({ 77 | type: 'POST', 78 | url: '/ajax/user/connectkey/', 79 | data: formData, 80 | dataType: 'json', 81 | encode: true, 82 | }).done(function(data) { 83 | show_alert(alert_div, 'success', 'Reconnected key, this form is now unusable until page is refreshed.'); 84 | form_button.prop('disabled', true); 85 | }).fail(function(xhr, textStatus) { 86 | console.log('Key was disconnected but not reconnected, fatality.'); 87 | json_data = $.parseJSON(xhr.responseText); 88 | show_alert(alert_div, 'warning', json_data.error); 89 | }); 90 | 91 | }).fail(function(xhr, textStatus) { 92 | json_data = $.parseJSON(xhr.responseText); 93 | show_alert(alert_div, 'warning', json_data.error); 94 | }).always(function(data) { 95 | form_button.prop('disabled', false); 96 | }); 97 | 98 | }).fail(function(xhr, textStatus) { 99 | json_data = $.parseJSON(xhr.responseText); 100 | show_alert(alert_div, 'warning', json_data.error); 101 | }).always(function(data) { 102 | form_button.prop('disabled', false); 103 | }); 104 | 105 | }); 106 | 107 | }); 108 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Siptrackweb 2 | 3 | Siptrackweb is the web GUI for Siptrack. 4 | 5 | Other components include; 6 | 7 | * [siptrackd backend API](https://github.com/sii/siptrackd) 8 | * [siptrack client library](https://github.com/sii/siptrack) 9 | 10 | # Quickstart 11 | 12 | First read the Quickstart section in the README of [siptrackd](https://github.com/sii/siptrackd) and [siptrack client library](https://github.com/sii/siptrack). 13 | 14 | Then you can quickly get siptrackweb running like this, assuming siptrackd backend API is running on localhost:9242 and that your CWD is above the two previously cloned repos. 15 | 16 | $ git clone https://github.com/sii/siptrackweb 17 | $ cd siptrackweb 18 | $ virtualenv .venv 19 | $ source .venv/bin/activate 20 | (.venv) $ pip install -r requirements.txt 21 | (.venv) $ python setup.py install 22 | (.venv) $ pushd ../siptrack 23 | (.venv) $ python setup.py install && popd 24 | (.venv) $ django-admin startproject stweb 25 | (.venv) $ echo 'SIPTRACK_SERVER="localhost"' >> stweb/stweb/settings.py 26 | (.venv) $ echo 'SIPTRACK_PORT=9242' >> stweb/stweb/settings.py 27 | (.venv) $ echo 'SIPTRACK_USE_SSL=False' >> stweb/stweb/settings.py 28 | 29 | Edit ``stweb/stweb/settings.py`` and make sure the list ``INSTALLED_APPS`` has ``siptrackweb`` as the last item, like this. 30 | 31 | INSTALLED_APPS = [ 32 | 'django.contrib.admin', 33 | 'django.contrib.auth', 34 | 'django.contrib.contenttypes', 35 | 'django.contrib.sessions', 36 | 'django.contrib.messages', 37 | 'django.contrib.staticfiles', 38 | 'siptrackweb' 39 | ] 40 | 41 | Comment out the CSRF line in the list ``MIDDLEWARE`` so it looks like this. 42 | 43 | MIDDLEWARE = [ 44 | 'django.middleware.security.SecurityMiddleware', 45 | 'django.contrib.sessions.middleware.SessionMiddleware', 46 | 'django.middleware.common.CommonMiddleware', 47 | #'django.middleware.csrf.CsrfViewMiddleware', 48 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 49 | 'django.contrib.messages.middleware.MessageMiddleware', 50 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 51 | ] 52 | 53 | Insert ``url(r'', include('siptrackweb.urls')),`` at the end of the ``urlpatterns`` list in ``stweb/stweb/urls.py``, and add include to the first import line so the file looks like this. 54 | 55 | from django.conf.urls import url, include 56 | from django.contrib import admin 57 | 58 | urlpatterns = [ 59 | url(r'^admin/', admin.site.urls), 60 | url(r'', include('siptrackweb.urls')), 61 | ] 62 | 63 | Next run some django commands to prepare the app and create a default user. 64 | 65 | (.venv) $ python stweb/manage.py migrate 66 | (.venv) $ python stweb/manage.py createsuperuser --noinput --username=admin --email=my-email@host.tld 67 | (.venv) $ python stweb/manage.py runserver 68 | 69 | Now the siptrackweb GUI should be available on localhost:8000. First step should always be to add a new View. 70 | 71 | Of course this is just a quick example, in reality you might prefer sharing a virtualenv for all siptrack components. 72 | 73 | ## P.S. 74 | 75 | Install pwgen on your system because siptrackweb uses it to generate passwords for user accounts when no other password is specified. 76 | 77 | # Documentation 78 | 79 | * See https://github.com/sii/siptrackweb/wiki for documentation. 80 | 81 | # Features 82 | 83 | ## Views and Objects 84 | 85 | You can separate all your objects with views for clients or projects. Each view has a hierarchical object-tree database that can contain folders and devices. 86 | 87 | [![Views](https://i.imgur.com/j3dyF5S.gif)](https://i.imgur.com/j3dyF5S.gif) 88 | 89 | ## Devices and Templates 90 | 91 | Create devices quickly from templates. 92 | 93 | [![Devices and Templates](https://i.imgur.com/6qUB2mz.gif)](https://i.imgur.com/6qUB2mz.gif) 94 | 95 | ## Visualized Racks 96 | 97 | Siptrackweb visualizes devices of class "rack" and each Unit is a sub-device that can be linked to another device. 98 | 99 | [![Racks](https://i.imgur.com/zm6K3wp.png)](https://i.imgur.com/zm6K3wp.png) 100 | 101 | ## Passwords 102 | 103 | Passwords can be stored encrypted with master keys, either under the Password view or linked directly to a device. 104 | 105 | **Screenshot coming soon** -------------------------------------------------------------------------------- /siptrackweb/views/config.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import render_to_response 3 | from django.template import Context, loader 4 | from django.http import HttpResponseRedirect 5 | from django.core.urlresolvers import reverse 6 | from siptracklib.utils import object_by_attribute 7 | import siptracklib.errors 8 | import helpers 9 | from siptrackweb.forms import * 10 | from siptrackweb.views import attribute 11 | 12 | def parse_config(obj): 13 | include = ['config network autoassign', 14 | 'config value'] 15 | return obj.listChildren(include = include) 16 | 17 | @helpers.authcheck 18 | def display(request, oid): 19 | pm = helpers.PageManager(request, 'stweb/views/counters/display.html') 20 | 21 | counter = pm.setVar('counter', pm.object_store.getOID(oid)) 22 | pm.render_var['parent'] = counter.parent 23 | pm.render_var['attribute_list'] = attribute.parse_attributes(counter) 24 | pm.path(counter) 25 | return pm.render() 26 | 27 | @helpers.authcheck 28 | def add_select(request, parent_oid): 29 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 30 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 31 | pm.path(parent) 32 | 33 | form = ConfigAddSelectTypeForm(parent) 34 | url = '/config/add/set/%s/' % (parent.oid) 35 | pm.addForm(form, url, 'add config item') 36 | return pm.render() 37 | 38 | @helpers.authcheck 39 | def add_set(request, parent_oid): 40 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 41 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 42 | pm.path(parent) 43 | 44 | form = ConfigAddSelectTypeForm(parent, request.POST) 45 | url = '/config/add/set/%s/' % (parent.oid) 46 | pm.addForm(form, url, 'add config item') 47 | if not form.is_valid(): 48 | return pm.render() 49 | 50 | if form.cleaned_data['config_type'] == 'netautoassign': 51 | view = parent.getParent('view', include_self = True) 52 | network_trees = view.listChildren(include = ['network tree']) 53 | form = ConfigAddNetworkAutoassignForm(network_trees) 54 | elif form.cleaned_data['config_type'] == 'value': 55 | form = ConfigAddValueForm() 56 | else: 57 | return pm.error('bad, invalid ruletype') 58 | url = '/config/add/post/%s/' % (parent_oid) 59 | pm.addForm(form, url, 'add config item') 60 | 61 | return pm.render() 62 | 63 | @helpers.authcheck 64 | def add_post(request, parent_oid): 65 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 66 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 67 | pm.path(parent) 68 | 69 | config_type = request.POST.get('config_type', '') 70 | url = '/config/add/post/%s/' % (parent_oid) 71 | if config_type == 'netautoassign': 72 | view = parent.getParent('view', include_self = True) 73 | network_trees = view.listChildren(include = ['network tree']) 74 | form = ConfigAddNetworkAutoassignForm(network_trees, request.POST) 75 | elif config_type == 'value': 76 | form = ConfigAddValueForm(request.POST) 77 | else: 78 | return pm.error('bad, invalid config type') 79 | pm.addForm(form, url, '') 80 | if not form.is_valid(): 81 | return pm.error('') 82 | 83 | if config_type == 'netautoassign': 84 | nt = pm.object_store.getOID(pm.form.cleaned_data['networktree']) 85 | parent.add('config network autoassign', nt, 86 | pm.form.cleaned_data['range_start'], 87 | pm.form.cleaned_data['range_end']) 88 | elif config_type == 'value': 89 | parent.add('config value', 90 | pm.form.cleaned_data['name'], 91 | pm.form.cleaned_data['value']) 92 | 93 | return pm.redirect('display.display', (parent_oid,)) 94 | 95 | @helpers.authcheck 96 | def delete(request, oid): 97 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 98 | 99 | config = pm.setVar('config', pm.object_store.getOID(oid)) 100 | pm.addForm(DeleteForm(), '/config/delete/post/%s/' % (config.oid), 101 | 'remove config', message = 'Removing config.') 102 | pm.path(config) 103 | return pm.render() 104 | 105 | @helpers.authcheck 106 | def delete_post(request, oid): 107 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 108 | config = pm.object_store.getOID(oid) 109 | parent_oid = config.parent.oid 110 | pm.addForm(DeleteForm(request.POST), '/config/delete/post/%s/' % (config.oid), 111 | 'remove config', message = 'Removing config.') 112 | if not pm.form.is_valid(): 113 | return pm.render() 114 | config.delete() 115 | 116 | return pm.redirect('display.display', (parent_oid,)) 117 | 118 | -------------------------------------------------------------------------------- /siptrackweb/views/device/config_template.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | from django.http import HttpResponse 4 | import siptracklib.errors 5 | import json 6 | import time 7 | 8 | from siptrackweb.views import helpers 9 | from siptrackweb.views import attribute 10 | from siptrackweb.views import config 11 | from siptrackweb.views.device.utils import make_device_association_list 12 | import category 13 | from siptrackweb.forms import * 14 | 15 | @helpers.authcheck 16 | def add(request, parent_oid): 17 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 18 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 19 | pm.path(parent) 20 | 21 | pm.addForm(DeviceConfigTemplateAddForm(), '/device/config/template/add/post/%s/' % (parent_oid)) 22 | return pm.render() 23 | 24 | @helpers.authcheck 25 | def add_post(request, parent_oid): 26 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 27 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 28 | pm.path(parent) 29 | 30 | pm.addForm(DeviceConfigTemplateAddForm(request.POST), '/device/config/template/add/post/%s/' % (parent_oid)) 31 | if not pm.form.is_valid(): 32 | return pm.error() 33 | 34 | data = pm.form.cleaned_data['data'] 35 | if type(data) == unicode: 36 | data = data.encode('utf-8') 37 | template = parent.add('device config template', data) 38 | 39 | if len(pm.form.cleaned_data['name']) > 0: 40 | template.attributes['name'] = pm.form.cleaned_data['name'] 41 | if len(pm.form.cleaned_data['description']) > 0: 42 | template.attributes['description'] = pm.form.cleaned_data['description'] 43 | 44 | return pm.redirect('device.display', (parent_oid,)) 45 | 46 | @helpers.authcheck 47 | def delete(request, oid): 48 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 49 | template = pm.setVar('template', pm.object_store.getOID(oid)) 50 | url = '/device/config/template/delete/post/%s/' % (template.oid) 51 | pm.addForm(DeleteForm(), url, 52 | 'remove config template', message = 'Removing configuration template.') 53 | pm.path(template) 54 | return pm.render() 55 | 56 | @helpers.authcheck 57 | def delete_post(request, oid): 58 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 59 | template = pm.setVar('template', pm.object_store.getOID(oid)) 60 | pm.path(template) 61 | url = '/device/config/template/delete/post/%s/' % (template.oid) 62 | pm.addForm(DeleteForm(request.POST), url, 63 | 'remove config template', message = 'Removing configuration template.') 64 | if not pm.form.is_valid(): 65 | return pm.render() 66 | 67 | parent_oid = template.parent.oid 68 | template.delete() 69 | 70 | return pm.redirect('device.display', (parent_oid,)) 71 | 72 | @helpers.authcheck 73 | def display(request, oid): 74 | pm = helpers.PageManager(request, 'stweb/views/devices/display_config_template.html') 75 | template = pm.object_store.getOID(oid) 76 | pm.render_var['template'] = template 77 | pm.render_var['data'] = template.template 78 | pm.path(template) 79 | return pm.render() 80 | 81 | @helpers.authcheck 82 | def submit(request, oid): 83 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 84 | template = pm.setVar('template', pm.object_store.getOID(oid)) 85 | url = '/device/config/template/submit/post/%s/' % (template.oid) 86 | pm.addForm(DeviceConfigTemplateSubmitForm(), url, 87 | 'submit template', message = 'Submit configuration template.') 88 | pm.path(template) 89 | return pm.render() 90 | 91 | @helpers.authcheck 92 | def submit_post(request, oid): 93 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 94 | template = pm.setVar('template', pm.object_store.getOID(oid)) 95 | pm.path(template) 96 | url = '/device/config/template/submit/post/%s/' % (template.oid) 97 | pm.addForm(DeviceConfigTemplateSubmitForm(request.POST), url, 98 | 'submit template', message = 'Submit configuration template.') 99 | if not pm.form.is_valid(): 100 | return pm.render() 101 | 102 | data = pm.form.cleaned_data['data'] 103 | if type(data) == unicode: 104 | data = data.encode('utf-8') 105 | template.template = data 106 | 107 | return pm.redirect('device.config_template.display', (template.oid,)) 108 | 109 | def generate(request, oid): 110 | pm = helpers.PageManager(request, 'stweb/views/devices/generate_config_template.html') 111 | template = pm.object_store.getOID(oid) 112 | pm.render_var['template'] = template 113 | pm.render_var['data'] = template.template 114 | pm.render_var['generated'] = template.expand() 115 | pm.path(template) 116 | return pm.render() 117 | 118 | @helpers.authcheck 119 | def download(request, oid): 120 | pm = helpers.PageManager(request, '') 121 | template = pm.object_store.getOID(oid) 122 | data = template.expand() 123 | return pm.renderDownload(data, 'config.txt') 124 | 125 | -------------------------------------------------------------------------------- /siptrackweb/views/view.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import render_to_response 3 | from django.template import Context, loader 4 | from django.http import HttpResponseRedirect 5 | from django.core.urlresolvers import reverse 6 | from siptracklib.utils import object_by_attribute 7 | import siptracklib.errors 8 | import helpers 9 | from siptrackweb.forms import * 10 | from siptrackweb.views import attribute 11 | from siptrackweb.views import config 12 | from siptrackweb.views import permission 13 | 14 | @helpers.authcheck 15 | def index(request, *args, **kwargs): 16 | pm = helpers.PageManager(request, 'stweb/views/index.html') 17 | pm.render_var['config_list'] = config.parse_config(pm.view_tree) 18 | pm.render_var['permission_list'] = pm.view_tree.listChildren(include = ['permission']) 19 | pm.render_var['command_queue_list'] = pm.view_tree.listChildren(include = ['command queue']) 20 | pm.render_var['event_trigger_list'] = pm.view_tree.listChildren(include = ['event trigger']) 21 | pm.render_var['view_list'] = pm.view_tree.listChildren(include = ['view']) 22 | pm.path(pm.view_tree) 23 | pm.section('view') 24 | return pm.render() 25 | 26 | @helpers.authcheck 27 | def display(request, oid): 28 | pm = helpers.PageManager(request, 'stweb/views/display.html') 29 | view = pm.setVar('view', pm.object_store.getOID(oid)) 30 | pm.render_var['attribute_list'] = attribute.parse_attributes(view) 31 | pm.render_var['config_list'] = config.parse_config(view) 32 | pm.render_var['permission_list'] = view.listChildren(include = ['permission']) 33 | pm.render_var['network_tree_list'] = list(view.listChildren(include = ['network tree'])) 34 | device_tree = view.getChildByName('default', include = ['device tree']) 35 | pm.render_var['device_list'] = device_tree.listChildren(include = ['device']) 36 | pm.render_var['category_list'] = device_tree.listChildren(include = ['device category']) 37 | pm.path(view) 38 | pm.section('view') 39 | return pm.render() 40 | 41 | @helpers.authcheck 42 | def add(request): 43 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 44 | pm.addForm(ViewAddForm(), '/view/add/post/', 'add view') 45 | pm.path(None) 46 | pm.section('view') 47 | return pm.render() 48 | 49 | @helpers.authcheck 50 | def add_post(request): 51 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 52 | 53 | pm.addForm(ViewAddForm(request.POST), '/view/add/post/', 'add view') 54 | if not pm.form.is_valid(): 55 | return pm.render() 56 | 57 | view = pm.view_tree.add('view') 58 | view.attributes['name'] = pm.form.cleaned_data['name'] 59 | if len(pm.form.cleaned_data['description']) > 0: 60 | view.attributes['description'] = pm.form.cleaned_data['description'] 61 | 62 | pm.path(None) 63 | pm.section('view') 64 | return pm.redirect('display.display', (view.oid,)) 65 | 66 | @helpers.authcheck 67 | def update(request, oid): 68 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 69 | view = pm.setVar('view', pm.object_store.getOID(oid)) 70 | name = view.attributes.get('name', '') 71 | description = view.attributes.get('description', '') 72 | args = {'name': name, 'description': description} 73 | url = '/view/update/post/%s/' % (view.oid) 74 | pm.addForm(ViewUpdateForm(args), url, 'update view') 75 | 76 | pm.path(view) 77 | return pm.render() 78 | 79 | @helpers.authcheck 80 | def update_post(request, oid): 81 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 82 | view = pm.setVar('view', pm.object_store.getOID(oid)) 83 | 84 | url = '/view/update/post/%s/' % (view.oid) 85 | pm.addForm(ViewUpdateForm(request.POST), url, 'update view') 86 | if not pm.form.is_valid(): 87 | return pm.render() 88 | 89 | view.attributes['name'] = pm.form.cleaned_data['name'] 90 | if len(pm.form.cleaned_data['description']) > 0: 91 | view.attributes['description'] = pm.form.cleaned_data['description'] 92 | 93 | pm.path(view) 94 | return pm.redirect('view.display', (view.oid,)) 95 | 96 | @helpers.authcheck 97 | def delete(request, oid): 98 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 99 | view = pm.setVar('view', pm.object_store.getOID(oid)) 100 | pm.render_var['network_tree_list'] = view.listChildren(include = ['network tree']) 101 | pm.addForm(DeleteForm(), '/view/delete/post/%s/' % (view.oid), 102 | 'remove view', message = 'Removing view.') 103 | 104 | pm.path(view) 105 | return pm.render() 106 | 107 | @helpers.authcheck 108 | def delete_post(request, oid): 109 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 110 | view = pm.setVar('view', pm.object_store.getOID(oid)) 111 | pm.render_var['network_tree_list'] = view.listChildren(include = ['network tree']) 112 | pm.addForm(DeleteForm(request.POST), '/view/delete/post/%s/' % (view.oid), 113 | 'remove view', message = 'Removing view.') 114 | if not pm.form.is_valid(): 115 | return pm.render() 116 | 117 | view.delete() 118 | 119 | return pm.redirect('view.index') 120 | 121 | -------------------------------------------------------------------------------- /siptrackweb/views/device/config.py: -------------------------------------------------------------------------------- 1 | import re 2 | 3 | from django.http import HttpResponse 4 | import siptracklib.errors 5 | import json 6 | import time 7 | 8 | from siptrackweb.views import helpers 9 | from siptrackweb.views import attribute 10 | from siptrackweb.views import config 11 | from siptrackweb.views.device.utils import make_device_association_list 12 | import category 13 | from siptrackweb.forms import * 14 | 15 | @helpers.authcheck 16 | def display(request, oid): 17 | pm = helpers.PageManager(request, 'stweb/views/devices/display_config.html') 18 | config = pm.object_store.getOID(oid) 19 | pm.render_var['config'] = config 20 | config.stats = config.getStats() 21 | if config.stats['latest_timestamp']: 22 | config.stats['pretty_latest_timestamp'] = time.ctime(config.stats['latest_timestamp']) 23 | else: 24 | config.stats['pretty_latest_timestamp'] = 'Nothing received' 25 | res = config.getLatestConfig() 26 | if res: 27 | pm.render_var['data'], pm.render_var['timestamp'] = res 28 | else: 29 | pm.render_var['data'] = None 30 | pm.render_var['timestamp'] = None 31 | pm.path(config) 32 | return pm.render() 33 | 34 | @helpers.authcheck 35 | def display_all(request, oid): 36 | pm = helpers.PageManager(request, 'stweb/views/devices/display_config_all.html') 37 | config = pm.object_store.getOID(oid) 38 | pm.render_var['config'] = config 39 | config.stats = config.getStats() 40 | if config.stats['latest_timestamp']: 41 | config.stats['pretty_latest_timestamp'] = time.ctime(config.stats['latest_timestamp']) 42 | else: 43 | config.stats['pretty_latest_timestamp'] = 'Nothing received' 44 | versions = [] 45 | for version in config.getAllConfigs(): 46 | data, timestamp = version 47 | versions.append({'timestamp': timestamp, 'pretty_timestamp': time.ctime(timestamp), 'data': data}) 48 | versions.reverse() 49 | pm.render_var['versions'] = versions 50 | pm.path(config) 51 | return pm.render() 52 | 53 | @helpers.authcheck 54 | def download(request, oid, timestamp): 55 | pm = helpers.PageManager(request, '') 56 | config = pm.object_store.getOID(oid) 57 | data = config.getTimestampConfig(int(timestamp)) 58 | return pm.renderDownload(data, 'config.txt') 59 | 60 | @helpers.authcheck 61 | def add(request, parent_oid): 62 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 63 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 64 | pm.path(parent) 65 | 66 | pm.addForm(DeviceConfigAddForm(), '/device/config/add/post/%s/' % (parent_oid)) 67 | return pm.render() 68 | 69 | @helpers.authcheck 70 | def add_post(request, parent_oid): 71 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 72 | parent = pm.setVar('parent', pm.object_store.getOID(parent_oid)) 73 | pm.path(parent) 74 | 75 | pm.addForm(DeviceConfigAddForm(request.POST), '/device/config/add/post/%s/' % (parent_oid)) 76 | if not pm.form.is_valid(): 77 | return pm.error() 78 | 79 | config = parent.add('device config', pm.form.cleaned_data['name'], pm.form.cleaned_data['max_versions']) 80 | 81 | if len(pm.form.cleaned_data['description']) > 0: 82 | config.attributes['description'] = pm.form.cleaned_data['description'] 83 | 84 | return pm.redirect('device.display', (parent_oid,)) 85 | 86 | @helpers.authcheck 87 | def delete(request, oid): 88 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 89 | config = pm.setVar('config', pm.object_store.getOID(oid)) 90 | url = '/device/config/delete/post/%s/' % (config.oid) 91 | pm.addForm(DeleteForm(), url, 92 | 'remove config', message = 'Removing configuration.') 93 | pm.path(config) 94 | return pm.render() 95 | 96 | @helpers.authcheck 97 | def delete_post(request, oid): 98 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 99 | config = pm.setVar('config', pm.object_store.getOID(oid)) 100 | pm.path(config) 101 | url = '/device/config/delete/post/%s/' % (config.oid) 102 | pm.addForm(DeleteForm(request.POST), url, 103 | 'remove config', message = 'Removing configuration.') 104 | if not pm.form.is_valid(): 105 | return pm.render() 106 | 107 | parent_oid = config.parent.oid 108 | config.delete() 109 | 110 | return pm.redirect('device.display', (parent_oid,)) 111 | 112 | @helpers.authcheck 113 | def submit(request, oid): 114 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 115 | config = pm.setVar('config', pm.object_store.getOID(oid)) 116 | url = '/device/config/submit/post/%s/' % (config.oid) 117 | pm.addForm(DeviceConfigSubmitForm(), url, 118 | 'submit config', message = 'Submit configuration.') 119 | pm.path(config) 120 | return pm.render() 121 | 122 | @helpers.authcheck 123 | def submit_post(request, oid): 124 | pm = helpers.PageManager(request, 'stweb/generic_form.html') 125 | config = pm.setVar('config', pm.object_store.getOID(oid)) 126 | pm.path(config) 127 | url = '/device/config/submit/post/%s/' % (config.oid) 128 | pm.addForm(DeviceConfigSubmitForm(request.POST), url, 129 | 'submit config', message = 'Submit configuration.') 130 | if not pm.form.is_valid(): 131 | return pm.render() 132 | 133 | data = pm.form.cleaned_data['data'] 134 | if type(data) == unicode: 135 | data = data.encode('utf-8') 136 | config.addConfig(data) 137 | 138 | return pm.redirect('device.config.display', (config.oid,)) 139 | 140 | -------------------------------------------------------------------------------- /siptrackweb/templates/stweb/views/devices/categories/display.html: -------------------------------------------------------------------------------- 1 | {% extends "stweb/base.html" %} 2 | 3 | {% block title %}siptrackweb - browse devices{% endblock %} 4 | 5 | {% block content %} 6 |
7 |
8 | Actions: 9 | {% if write_access %} 10 |
11 | 14 | 28 |
29 | Add category 30 | Add device 31 |
32 | 35 | 45 |
46 |
47 | 50 | 65 |
66 | {% ifequal device.class_name "device category" %} 67 | Delete category 68 | {% endifequal %} 69 | {% endif %} 70 | Export category 71 |
72 |
73 |
74 | 75 | 80 | 81 | 82 |
83 |
84 |
85 | {% include "stweb/views/devices/categories/display_categories.html" %} 86 | {% include "stweb/attributes/display_boxes.html" %} 87 | {% include "stweb/views/devices/display_devices_standard.html" %} 88 | {% include "stweb/views/devices/display_device_associations.html" %} 89 |
90 |
91 |
92 | {% include "stweb/attributes/display_attributes.html" %} 93 | {% include "stweb/attributes/display_boxes.html" %} 94 |
95 |
96 |
97 | {% include "stweb/templates/display_templates.html" %} 98 | {% include "stweb/configs/display.html" %} 99 | {% include "stweb/permissions/display_permissions.html" %} 100 |
101 |
102 |
103 | {% endblock %} 104 | --------------------------------------------------------------------------------