├── 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 |
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 |
4 |
5 |
8 |
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 |
9 |
10 | {{ pm.object_store.transport.session_id }}
11 |
12 |
13 |
14 |
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 |
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 |
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 |
15 |
16 | {% endblock %}
17 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/display_view_info.html:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 | Name:
9 | {{ view.attributes.name|escape }}
10 |
11 |
12 | Description:
13 | {{ view.attributes.description|escape }}
14 |
15 |
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 |
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 |
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 |
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 |
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 |
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 |
5 |
6 |
7 |
8 | Name:
9 | {{ template.attributes.name }}
10 |
11 | {% if template.attributes.description %}
12 |
13 | Description:
14 | {{ template.attributes.description }}
15 |
16 | {% endif %}
17 |
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 |
16 |
17 | {% endblock %}
18 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/attributes/display_large.html:
--------------------------------------------------------------------------------
1 | {% for attribute in attribute_list.large %}
2 |
3 | {% if write_access %}
4 |
edit
5 | |
delete
6 | |
7 | {% endif %}
8 |
display
9 |
10 |
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 |
5 |
6 |
7 |
8 |
9 | Name:
10 | {{ network_tree.attributes.name }}
11 |
12 | {% if network_tree.attributes.description %}
13 |
14 | Description:
15 | {{ network_tree.attributes.description }}
16 |
17 | {% endif %}
18 |
19 | Protocol:
20 | {{ network_tree.protocol }}
21 |
22 |
23 |
24 |
25 |
26 |
27 | {% endifequal %}
28 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/templates/display_templates.html:
--------------------------------------------------------------------------------
1 | {% if template_list %}
2 |
5 |
6 |
7 |
8 |
9 | Name
10 | Description
11 |
12 | {% for template in template_list %}
13 | {% if forloop.counter|divisibleby:"2" %}
14 |
15 | {% else %}
16 |
17 | {% endif %}
18 |
19 | {{ template.attributes.name|escape }}
20 |
21 |
22 | {{ template.attributes.description }}
23 |
24 |
25 | {% endfor %}
26 |
27 |
28 |
29 |
30 |
31 | {% endif %}
32 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/users/display_groups.html:
--------------------------------------------------------------------------------
1 |
2 | {% if administrator %}
3 |
add group
4 | {% endif %}
5 |
6 |
9 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/templates/display_rules.html:
--------------------------------------------------------------------------------
1 |
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 |
2 |
3 |
6 |
7 |
8 |
9 |
10 | User name
11 | Session ID
12 | Session timeout
13 | Action
14 |
15 | {% for session in session_list %}
16 |
17 | {{ session.user }}
18 |
19 |
20 | {{ session.id }}
21 |
22 |
23 | {{ session.timeout }}
24 |
25 |
26 | kill
27 |
28 |
29 | {% endfor %}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/devices/categories/display_categories.html:
--------------------------------------------------------------------------------
1 | {% if category_list %}
2 |
5 |
28 |
29 |
30 | {% endif %}
31 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/users/display_users.html:
--------------------------------------------------------------------------------
1 |
2 | {% if write_access %}
3 |
add user
4 | {% endif %}
5 |
6 |
9 |
10 |
11 |
12 |
13 | User name
14 | Real name
15 | Description
16 |
17 | {% for user in user_list %}
18 |
19 |
20 | {{ user.username }}
21 |
22 |
23 |
24 | {{ user.attributes.real_name }}
25 |
26 |
27 | {{ user.attributes.description }}
28 |
29 |
30 | {% endfor %}
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/networktrees/display_network_trees.html:
--------------------------------------------------------------------------------
1 | {% if network_tree_list %}
2 |
5 |
6 |
7 |
8 |
9 | Name
10 | Protocol
11 | Description
12 |
13 | {% for network_tree in network_tree_list %}
14 |
15 | {{ network_tree.attributes.name|default:"[UNKNOWN]" }}
16 | {{ network_tree.protocol }}
17 | {{ network_tree.attributes.description }}
18 |
19 | {% endfor %}
20 |
21 |
22 |
23 |
24 |
25 | {% endif %}
26 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/passwords/display_passwordkeys.html:
--------------------------------------------------------------------------------
1 | {% if password_key_list %}
2 |
5 |
6 |
33 |
34 |
35 | {% endif %}
36 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/attributes/display_wikitexts.html:
--------------------------------------------------------------------------------
1 | {% for wikitext in attribute_list.wikitext %}
2 |
3 | {% if write_access %}
4 |
edit
5 | |
delete
6 | |
7 | {% endif %}
8 |
display
9 |
10 |
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 |
5 |
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 |
7 | {% if admin %}
8 |
delete
9 | {% endif %}
10 |
11 |
18 |
19 |
20 |
21 |
22 | Name:
23 | {{ queue.attributes.name }}
24 |
25 |
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 |
5 |
6 |
7 |
8 | {% if password_category_list %}
9 |
33 | {% endif %}
34 |
35 |
36 |
37 | {% endif %}
38 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/templates/display_template_information.html:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 | Name:
8 | {{ template.attributes.name }}
9 |
10 |
11 | Description:
12 | {{ template.attributes.description }}
13 |
14 |
15 | Inheritance only:
16 | {{ template.inheritance_only }}
17 |
18 | {% ifequal template.class_name "device template" %}
19 |
20 | Used for device creation:
21 | {{ template.attributes.device_creation }}
22 |
23 | {% endifequal %}
24 |
25 | Inherited Templates:
26 |
27 | {% for node in template.inherited_templates %}
28 | {{node.attributes.name}} {% if not forloop.last %},{% endif %}
29 | {% endfor %}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/devices/categories/display_specifications.html:
--------------------------------------------------------------------------------
1 |
2 | {% if write_access %}
3 |
add
4 | {% endif %}
5 |
6 |
9 |
10 | {% if specification_list %}
11 |
12 |
13 | Name
14 | Description
15 |
16 | {% for cur_spec in specification_list %}
17 | {% if forloop.counter|divisibleby:"2" %}
18 |
19 | {% else %}
20 |
21 | {% endif %}
22 |
23 | {{ cur_spec.attributes.name|escape }}
24 |
25 |
26 | {{ cur_spec.attributes.description }}
27 |
28 |
29 | {% endfor %}
30 |
31 | {% endif %}
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/attributes/display_attributes_important.html:
--------------------------------------------------------------------------------
1 | {% if attribute_list.important %}
2 |
5 |
6 |
7 |
8 |
9 | Attribute
10 | Value
11 | Action
12 |
13 | {% for attr in attribute_list.important %}
14 | {% if not attr.attributes.wikitext and not attr.attributes.large %}
15 |
16 | {{ attr.name|escape }}
17 | {{ attr.value|escape }}
18 | {% if write_access %}edit | delete | {% endif %}display
19 |
20 | {% endif %}
21 | {% endfor %}
22 |
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 |
7 | {% if admin %}
8 |
delete
9 | {% endif %}
10 |
11 |
18 |
19 |
20 |
21 |
22 | Name:
23 | {{ trigger.attributes.name }}
24 |
25 |
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 |
2 | {% if write_access %}
3 |
update
4 | {% if administrator %}
5 | |
delete
6 | {% endif %}
7 | {% endif %}
8 |
9 |
12 |
13 |
14 |
15 |
16 | Group name:
17 | {{ group.attributes.name }}
18 |
19 |
20 | Description:
21 | {{ group.attributes.description }}
22 |
23 |
24 | Users:
25 |
26 | {% for user in group.users %}
27 | {{ user.username|escape }}
28 | {% endfor %}
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 | {% include "stweb/attributes/display.html" %}
38 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/commands/display_queues.html:
--------------------------------------------------------------------------------
1 | {% if administrator %}
2 |
5 |
8 |
9 |
10 | {% if command_queue_list %}
11 |
12 |
13 | Name
14 | Action
15 |
16 | {% for queue in command_queue_list %}
17 | {% if forloop.counter|divisibleby:"2" %}
18 |
19 | {% else %}
20 |
21 | {% endif %}
22 | {{ queue.attributes.name }}
23 | display | delete
24 |
25 | {% endfor %}
26 |
27 | {% endif %}
28 |
29 |
30 |
31 |
32 |
33 | {% endif %}
34 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/events/display_triggers.html:
--------------------------------------------------------------------------------
1 | {% if administrator %}
2 |
5 |
8 |
9 |
10 | {% if event_trigger_list %}
11 |
12 |
13 | Name
14 | Action
15 |
16 | {% for trigger in event_trigger_list %}
17 | {% if forloop.counter|divisibleby:"2" %}
18 |
19 | {% else %}
20 |
21 | {% endif %}
22 | {{ trigger.attributes.name }}
23 | display | delete
24 |
25 | {% endfor %}
26 |
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 |
5 |
6 |
7 |
8 | Name:
9 | {{ config.name }}
10 |
11 | {% if config.attributes.description %}
12 |
13 | Description:
14 | {{ config.attributes.description }}
15 |
16 | {% endif %}
17 |
18 | Stored versions:
19 | {{ config.stats.count }}
20 |
21 |
22 | Max stored versions:
23 | {{ config.max_versions }}
24 |
25 |
26 | Latest version timestamp:
27 | {{ config.stats.pretty_latest_timestamp }}
28 |
29 |
30 | Latest version size:
31 | {{ config.stats.latest_size }} bytes
32 |
33 |
34 |
35 |
36 |
37 | {% endfor %}
38 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/commands/display_commands.html:
--------------------------------------------------------------------------------
1 | {% if administrator %}
2 |
5 |
8 |
9 |
10 | {% if command_list %}
11 |
12 |
13 | Command Text
14 | Status
15 | Action
16 |
17 | {% for command in command_list %}
18 | {% if forloop.counter|divisibleby:"2" %}
19 |
20 | {% else %}
21 |
22 | {% endif %}
23 | {{ command.freetext }}
24 | {{ command.attributes.status }}
25 |
26 | update
27 | | delete
28 |
29 |
30 | {% endfor %}
31 |
32 | {% endif %}
33 |
34 |
35 |
36 |
37 |
38 | {% endif %}
39 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/events/display_python_rules.html:
--------------------------------------------------------------------------------
1 | {% if administrator %}
2 |
5 |
8 |
9 |
10 | {% if python_rule_list %}
11 |
12 |
13 | name
14 | Action
15 |
16 | {% for rule in python_rule_list %}
17 | {% if forloop.counter|divisibleby:"2" %}
18 |
19 | {% else %}
20 |
21 | {% endif %}
22 | {{ rule.attributes.name }}
23 |
24 | display
25 | | update
26 | | delete
27 |
28 |
29 | {% endfor %}
30 |
31 | {% endif %}
32 |
33 |
34 |
35 |
36 |
37 | {% endif %}
38 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/passwords/display_password.html:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
7 |
8 |
9 | Username:
10 | {{password.attributes.username|escape}}
11 |
12 |
13 | Description:
14 | {{password.attributes.description|escape}}
15 |
16 |
17 | URL
18 | {{password.attributes.URL|escape}}
19 |
20 |
21 | Password key
22 |
23 | {{password.key.attributes.name|escape}}
24 |
25 |
26 | {% for attr in attribute_list.important %}
27 |
28 | {{ attr.name }}:
29 | {{ attr.value }}
30 |
31 | {% endfor %}
32 |
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 |
5 |
6 |
7 |
8 |
9 | Attribute
10 | Value
11 | Action
12 |
13 | {% for attr in attribute_list.standard %}
14 | {% if not attr.attributes.wikitext and not attr.attributes.large %}
15 |
16 |
17 | {{ attr.name|escape }}
18 |
19 | {{ attr.value|escape }}
20 |
21 | {% if write_access %}
22 | edit
23 | delete
24 | {% endif %}
25 | display
26 |
27 |
28 | {% endif %}
29 | {% endfor %}
30 |
31 |
32 |
33 |
34 |
35 | {% endif %}
36 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/users/display_user_managers.html:
--------------------------------------------------------------------------------
1 |
2 | {% if write_access %}
3 |
add local user manager
4 | |
add ldap user manager
5 | |
add AD user manager
6 | {% endif %}
7 |
8 |
11 |
12 |
13 |
14 |
15 | Name
16 | Description
17 | Type
18 | Active
19 |
20 | {% for user_manager in user_manager_list %}
21 |
22 |
23 | {{ user_manager.obj.attributes.name|default:"[UNKNOWN]" }}
24 |
25 |
26 |
27 | {{ user_manager.obj.attributes.description }}
28 |
29 |
30 | {{ user_manager.type }}
31 |
32 |
33 | {{ user_manager.active }}
34 |
35 |
36 | {% endfor %}
37 |
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 |
17 |
18 |
19 |
20 |
21 | Name
22 | Protocol
23 | Description
24 |
25 | {% for network_tree in network_tree_list %}
26 |
27 | {{ network_tree.attributes.name|default:"[UNKNOWN]" }}
28 | {{ network_tree.protocol }}
29 | {{ network_tree.attributes.description }}
30 |
31 | {% endfor %}
32 |
33 |
34 |
35 | {% endblock %}
36 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/networktrees/networks/display_ranges.html:
--------------------------------------------------------------------------------
1 |
2 | {% if write_access %}
3 |
add network range
4 | {% endif %}
5 |
6 |
9 |
10 |
11 | {% if network_range_list %}
12 |
13 |
14 | Start
15 | End
16 | Description
17 |
18 | {% for cur_range in network_range_list %}
19 | {% if forloop.counter|divisibleby:"2" %}
20 |
21 | {% else %}
22 |
23 | {% endif %}
24 |
25 | {{ cur_range.strStart }}
26 |
27 |
28 | {{ cur_range.strEnd }}
29 |
30 |
31 | {{ cur_range.attributes.description }}
32 |
33 |
34 | {% endfor %}
35 |
36 | {% endif %}
37 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/configs/display.html:
--------------------------------------------------------------------------------
1 | {% if config_list %}
2 |
5 |
6 |
7 |
8 |
9 | Type
10 | Name
11 | Value
12 | Action
13 |
14 | {% for cfg in config_list %}
15 | {% if forloop.counter|divisibleby:"2" %}
16 |
17 | {% else %}
18 |
19 | {% endif %}
20 | {{ cfg.class_name }}
21 | {% ifequal cfg.class_name "config value" %}
22 | {{ cfg.name|escape }}
23 | {{ cfg.value|escape }}
24 | {% endifequal %}
25 | {% ifequal cfg.class_name "config network autoassign" %}
26 |
27 | {{ cfg.network_tree.attributes.name|escape }} : {{ cfg.range_start }} - {{ cfg.range_end }}
28 | {% endifequal %}
29 | delete
30 |
31 | {% endfor %}
32 |
33 |
34 |
35 |
36 |
37 | {% endif %}
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/devices/display_devices_standard.html:
--------------------------------------------------------------------------------
1 | {% if device_list %}
2 |
5 |
6 |
7 | {% if device_list %}
8 |
9 |
10 | Name
11 | Class
12 | Description
13 |
14 | {% for cur_device in device_list %}
15 | {% if cur_device.attributes.disabled %}
16 |
17 | {% else %}
18 |
19 | {% endif %}
20 |
21 | {% if cur_device.attributes.name %}
22 | {{ cur_device.attributes.name|escape }}
23 | {% else %}
24 | [UNKNOWN]
25 | {% endif %}
26 |
27 |
28 | {{ cur_device.attributes.class|escape }}
29 |
30 |
31 | {{ cur_device.attributes.description|escape }}
32 |
33 |
34 | {% endfor %}
35 |
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 |
5 |
6 |
7 |
8 | Priority
9 | Inherited From
10 | Action
11 |
12 | {% for rule in rules.TMPLRULEASSIGNNET %}
13 | {% if forloop.counter|divisibleby:"2" %}
14 |
15 | {% else %}
16 |
17 | {% endif %}
18 |
19 | {{ rule.attributes.priority }}
20 |
21 |
22 | {% if rule.inherited %}
23 | {{ rule.parent.attributes.name }}
24 | {% else %}
25 | Local
26 | {% endif %}
27 |
28 |
29 | {% if not rule.inherited %}
30 | update
31 | | delete
32 | {% endif %}
33 |
34 |
35 | {% endfor %}
36 |
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 |
2 | {% if write_access %}
3 |
update password
4 | |
reset password
5 | |
update
6 | {% if administrator %}
7 | |
delete
8 | {% endif %}
9 | {% endif %}
10 |
11 |
14 |
15 |
16 |
17 |
18 | Username:
19 | {{ user.username }}
20 |
21 |
22 | Real name:
23 | {{ user.attributes.real_name }}
24 |
25 |
26 | Description:
27 | {{ user.attributes.description }}
28 |
29 |
30 | Administrator:
31 | {{ user.administrator }}
32 |
33 |
34 | Has logged in:
35 | {{has_logged_in}}
36 |
37 |
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 |
5 |
6 |
7 |
8 | Apply to attribute
9 | Inherited From
10 | Priority
11 | Action
12 |
13 | {% for rule in rules.TMPLRULEDELATTR %}
14 | {% if forloop.counter|divisibleby:"2" %}
15 |
16 | {% else %}
17 |
18 | {% endif %}
19 |
20 | {{ rule.attr_name }}
21 |
22 |
23 | {{ rule.attributes.priority }}
24 |
25 |
26 | {% if rule.inherited %}
27 | {{ rule.parent.attributes.name }}
28 | {% else %}
29 | Local
30 | {% endif %}
31 |
32 |
33 | {% if not rule.inherited %}
34 | update
35 | | delete
36 | {% endif %}
37 |
38 |
39 | {% endfor %}
40 |
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 |
5 |
6 |
7 |
8 |
9 | Network:
10 | {% ifequal network.class_name "ipv4 network" %}
11 | {{ network }} ({{ network.strNetmask }})
12 | {% endifequal %}
13 | {% ifequal network.class_name "ipv6 network" %}
14 | {{ network }}
15 | {% endifequal %}
16 |
17 | {% if network.attributes.description %}
18 |
19 | Description:
20 | {{ network.attributes.description }}
21 |
22 | {% endif %}
23 | {% if network.attributes.hostname %}
24 |
25 | Hostname:
26 | {{ network.attributes.hostname }}
27 |
28 | {% endif %}
29 | {% if not network.isHost %}
30 |
31 | Usage:
32 | {{ network.numAllocatedHosts }} / {{ network.size }}
33 |
34 |
35 | Allocated subnets:
36 | {{ network.numAllocatedSubnets }}
37 |
38 |
39 | Available addresses:
40 | {{ network.numFreeHosts }}
41 |
42 | {% endif %}
43 |
44 |
45 |
46 |
47 |
48 | {% endifnotequal %}
49 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/networktrees/networks/display_networks.html:
--------------------------------------------------------------------------------
1 | {% if not target.isHost %}
2 |
5 |
6 |
7 |
8 |
9 | Address
10 | Associated Devices
11 | Description
12 |
13 | {% for cur_net in network_list %}
14 |
15 |
16 | {% if cur_net.unallocated %}
17 | {{ cur_net }}
18 | {% else %}
19 | {{ cur_net|escape }}
20 | {% endif %}
21 |
22 |
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 |
32 |
33 | {% if not cur_net.unallocated %}
34 | {% if cur_net.attributes.description %}
35 | {{ cur_net.attributes.description }}
36 | {% endif %}
37 | {% endif %}
38 |
39 |
40 | {% endfor %}
41 |
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 |
7 | {% if admin %}
8 |
delete
9 | {% endif %}
10 |
11 |
18 |
19 |
20 |
21 |
22 | Name:
23 | {{ rule.attributes.name }}
24 |
25 |
26 | Error:
27 | {{ rule.error }}
28 |
29 |
30 | Error timestamp:
31 | {{ rule.error_timestamp }}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
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 |
5 |
6 |
7 |
8 | Included node types
9 | Excluded node types
10 | Priority
11 | Inherited From
12 | Action
13 |
14 | {% for rule in rules.TMPLRULEFLUSHNODES %}
15 | {% if forloop.counter|divisibleby:"2" %}
16 |
17 | {% else %}
18 |
19 | {% endif %}
20 |
21 | {{ rule.include }}
22 |
23 |
24 | {{ rule.exclude }}
25 |
26 |
27 | {{ rule.attributes.priority }}
28 |
29 |
30 | {% if rule.inherited %}
31 | {{ rule.parent.attributes.name }}
32 | {% else %}
33 | Local
34 | {% endif %}
35 |
36 |
37 | {% if not rule.inherited %}
38 | update
39 | | delete
40 | {% endif %}
41 |
42 |
43 | {% endfor %}
44 |
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 |
16 |
17 |
Sign in to continue to Siptrack
18 | {% if errormsg %}
19 |
{{errormsg}}
20 | {% endif %}
21 |
22 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/templates/display_rules_flush_associations.html:
--------------------------------------------------------------------------------
1 | {% if rules.TMPLRULEFLUSHASSOC %}
2 |
5 |
6 |
7 |
8 | Included association types
9 | Excluded association types
10 | Priority
11 | Inherited From
12 | Action
13 |
14 | {% for rule in rules.TMPLRULEFLUSHASSOC %}
15 | {% if forloop.counter|divisibleby:"2" %}
16 |
17 | {% else %}
18 |
19 | {% endif %}
20 |
21 | {{ rule.include }}
22 |
23 |
24 | {{ rule.exclude }}
25 |
26 |
27 | {{ rule.attributes.priority }}
28 |
29 |
30 | {% if rule.inherited %}
31 | {{ rule.parent.attributes.name }}
32 | {% else %}
33 | Local
34 | {% endif %}
35 |
36 |
37 | {% if not rule.inherited %}
38 | update
39 | | delete
40 | {% endif %}
41 |
42 |
43 | {% endfor %}
44 |
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 |
15 |
18 |
19 |
20 |
21 |
22 | Name:
23 | {{ counter.attributes.name }}
24 |
25 |
26 | Description:
27 | {{ counter.attributes.description }}
28 |
29 |
30 | Current value:
31 | {{ counter.value }}
32 |
33 | {% ifequal counter.class_name "counter loop" %}
34 |
35 | Loop values:
36 |
37 | {% for value in counter.values %}
38 | {{ value }}
39 | {% endfor %}
40 |
41 |
42 | {% endifequal %}
43 |
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 |
5 |
6 |
7 |
8 | {% if password_list %}
9 |
10 |
11 | Username
12 | Password
13 | Description
14 | Key
15 | Action
16 |
17 |
18 | {% for password in password_list %}
19 |
20 |
21 | {{ password.attributes.username }}
22 |
23 | {{ password.password }}
24 | {{ password.attributes.description }}
25 |
26 | {% if password.key %}
27 | {{ password.key.attributes.name }}
28 | {% endif %}
29 |
30 |
31 | {% if write_access %}
32 | display |
33 | update |
34 | delete {% endif %}
35 |
36 |
37 | {% endfor %}
38 |
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 |
16 |
19 |
20 |
21 |
22 |
23 | Name:
24 | {{ attribute.name|escape }}
25 |
26 |
27 | Type:
28 | {{ attribute.atype|escape }}
29 |
30 | {% if attribute.max_versions %}
31 |
32 | Max stored versions:
33 | {{ attribute.max_versions|escape }}
34 |
35 | {% endif %}
36 |
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 |
5 |
6 |
7 |
8 | Apply to attribute
9 | Default value
10 | Versions
11 | Priority
12 | Inherited From
13 | Action
14 |
15 | {% for rule in rules.TMPLRULEBOOL %}
16 | {% if forloop.counter|divisibleby:"2" %}
17 |
18 | {% else %}
19 |
20 | {% endif %}
21 |
22 | {{ rule.attr_name }}
23 |
24 |
25 | {{ rule.default_value }}
26 |
27 |
28 | {{ rule.versions }}
29 |
30 |
31 | {{ rule.attributes.priority }}
32 |
33 |
34 | {% if rule.inherited %}
35 | {{ rule.parent.attributes.name }}
36 | {% else %}
37 | Local
38 | {% endif %}
39 |
40 |
41 | {% if not rule.inherited %}
42 | update
43 | | delete
44 | {% endif %}
45 |
46 |
47 | {% endfor %}
48 |
49 |
50 |
51 |
52 |
53 | {% endif %}
54 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/templates/display_rules_int.html:
--------------------------------------------------------------------------------
1 | {% if rules.TMPLRULEINT %}
2 |
5 |
6 |
7 |
8 | Apply to attribute
9 | Default value
10 | Versions
11 | Priority
12 | Inherited From
13 | Action
14 |
15 | {% for rule in rules.TMPLRULEINT %}
16 | {% if forloop.counter|divisibleby:"2" %}
17 |
18 | {% else %}
19 |
20 | {% endif %}
21 |
22 | {{ rule.attr_name }}
23 |
24 |
25 | {{ rule.default_value }}
26 |
27 |
28 | {{ rule.versions }}
29 |
30 |
31 | {{ rule.attributes.priority }}
32 |
33 |
34 | {% if rule.inherited %}
35 | {{ rule.parent.attributes.name }}
36 | {% else %}
37 | Local
38 | {% endif %}
39 |
40 |
41 | {% if not rule.inherited %}
42 | update
43 | | delete
44 | {% endif %}
45 |
46 |
47 | {% endfor %}
48 |
49 |
50 |
51 |
52 |
53 | {% endif %}
54 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/templates/display_rules_regmatch.html:
--------------------------------------------------------------------------------
1 | {% if rules.TMPLRULEREGMATCH %}
2 |
5 |
6 |
7 |
8 | Apply to attribute
9 | Regexp
10 | Versions
11 | Priority
12 | Inherited From
13 | Action
14 |
15 | {% for rule in rules.TMPLRULEREGMATCH %}
16 | {% if forloop.counter|divisibleby:"2" %}
17 |
18 | {% else %}
19 |
20 | {% endif %}
21 |
22 | {{ rule.attr_name }}
23 |
24 |
25 | {{ rule.regexp }}
26 |
27 |
28 | {{ rule.versions }}
29 |
30 |
31 | {{ rule.attributes.priority }}
32 |
33 |
34 | {% if rule.inherited %}
35 | {{ rule.parent.attributes.name }}
36 | {% else %}
37 | Local
38 | {% endif %}
39 |
40 |
41 | {% if not rule.inherited %}
42 | update
43 | | delete
44 | {% endif %}
45 |
46 |
47 | {% endfor %}
48 |
49 |
50 |
51 |
52 |
53 | {% endif %}
54 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/permissions/display_permissions.html:
--------------------------------------------------------------------------------
1 | {% if administrator and permission_list %}
2 |
5 |
6 |
7 | {% if permission_list %}
8 |
9 |
10 | Read Access
11 | Write Access
12 | All Users
13 | Recursive
14 | Users
15 | Groups
16 | Action
17 |
18 | {% for perm in permission_list %}
19 | {% if forloop.counter|divisibleby:"2" %}
20 |
21 | {% else %}
22 |
23 | {% endif %}
24 | {{ perm.read_access }}
25 | {{ perm.write_access }}
26 | {{ perm.all_users }}
27 | {{ perm.recursive }}
28 |
29 | {% for user in perm.users %}
30 | {{ user.username|escape }}
31 | {% endfor %}
32 |
33 |
34 | {% for group in perm.groups %}
35 | {{ group.attributes.name|escape }}
36 | {% endfor %}
37 |
38 | display | delete
39 |
40 | {% endfor %}
41 |
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 |
16 |
19 |
20 |
21 |
22 | Name:
23 | {{ template.attributes.name }}
24 |
25 | {% if template.attributes.description %}
26 |
27 | Description:
28 | {{ template.attributes.description }}
29 |
30 | {% endif %}
31 |
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 |
19 |
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 |
16 |
19 |
20 |
21 |
22 | Name:
23 | {{ template.attributes.name }}
24 |
25 | {% if template.attributes.description %}
26 |
27 | Description:
28 | {{ template.attributes.description }}
29 |
30 | {% endif %}
31 |
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 |
7 | {% if admin %}
8 |
delete
9 | {% endif %}
10 |
11 |
14 |
15 |
16 |
17 |
18 | Read access:
19 | {{ permission.read_access }}
20 |
21 |
22 | Write access:
23 | {{ permission.write_access }}
24 |
25 |
26 | Applies to all users:
27 | {{ permission.all_users }}
28 |
29 |
30 | Recursive:
31 | {{ permission.recursive }}
32 |
33 | {% if permission.users %}
34 |
35 | Users:
36 |
37 | {% for user in permission.users %}
38 | {{ user.username|escape }}
39 | {% endfor %}
40 |
41 |
42 | {% endif %}
43 | {% if permission.groups %}
44 |
45 | Groups:
46 |
47 | {% for group in permission.groups %}
48 | {{ group.attributes.name|default:"[UNKNOWN]" }}
49 | {% endfor %}
50 |
51 |
52 | {% endif %}
53 |
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 |
5 |
6 |
7 |
8 | Apply to attribute
9 | Value
10 | Variable Expansion
11 | Versions
12 | Priority
13 | Inherited From
14 | Action
15 |
16 | {% for rule in rules.TMPLRULEFIXED %}
17 | {% if forloop.counter|divisibleby:"2" %}
18 |
19 | {% else %}
20 |
21 | {% endif %}
22 |
23 | {{ rule.attr_name }}
24 |
25 |
26 | {{ rule.value }}
27 |
28 |
29 | {{ rule.variable_expansion }}
30 |
31 |
32 | {{ rule.versions }}
33 |
34 |
35 | {{ rule.attributes.priority }}
36 |
37 |
38 | {% if rule.inherited %}
39 | {{ rule.parent.attributes.name }}
40 | {% else %}
41 | Local
42 | {% endif %}
43 |
44 |
45 | {% if not rule.inherited %}
46 | update
47 | | delete
48 | {% endif %}
49 |
50 |
51 | {% endfor %}
52 |
53 |
54 |
55 |
56 |
57 | {% endif %}
58 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/devices/display_devices_extended.html:
--------------------------------------------------------------------------------
1 | {% if device_list %}
2 |
5 |
6 |
7 | {% if device_list %}
8 |
9 |
10 | Name
11 | Linked Devices
12 | Description
13 |
14 | {% for cur_device in device_list %}
15 |
16 | {% if cur_device.attributes.disabled %}
17 |
18 | {% else %}
19 |
20 | {% endif %}
21 | {% if cur_device.attributes.name %}
22 | {{ cur_device.attributes.name|escape }}
23 | {% else %}
24 | [UNKNOWN]
25 | {% endif %}
26 |
27 |
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 |
40 |
41 | {{ cur_device.attributes.description|escape }}
42 |
43 |
44 | {% endfor %}
45 |
46 | {% endif %}
47 |
48 |
49 |
50 |
51 | {% endif %}
52 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/devices/display_device_associations.html:
--------------------------------------------------------------------------------
1 | {% if device_association_list %}
2 |
5 |
6 |
7 | {% if device_association_list %}
8 |
9 |
10 | Associated Device
11 | Device Class
12 | Action
13 |
14 | {% for assoc in device_association_list %}
15 | {% if assoc.obj.attributes.disabled %}
16 |
17 | {% else %}
18 |
19 | {% endif %}
20 |
21 | {% for pathinfo in assoc.path %}
22 | {{ pathinfo.name }}
23 | {% if not forloop.last %}
24 | /
25 | {% endif %}
26 | {% endfor %}
27 |
28 |
29 | {% if assoc.obj.attributes.class %}
30 | {{ assoc.obj.attributes.class }}
31 | {% else %}
32 | {{ assoc.obj.class_name }}
33 | {% endif %}
34 |
35 |
36 | {% if write_access %}
37 | {% ifequal assoc.type "association" %}
38 | delete
39 | {% else %}
40 | delete
41 | {% endifequal %}
42 | {% endif %}
43 |
44 |
45 | {% endfor %}
46 |
47 | {% endif %}
48 |
49 |
50 |
51 |
52 | {% endif %}
53 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/templates/display_rules_password.html:
--------------------------------------------------------------------------------
1 | {% if rules.TMPLRULEPASSWORD %}
2 |
5 |
6 |
7 |
8 | Username
9 | Description
10 | Password Key
11 | Priority
12 | Inherited From
13 | Action
14 |
15 | {% for rule in rules.TMPLRULEPASSWORD %}
16 | {% if forloop.counter|divisibleby:"2" %}
17 |
18 | {% else %}
19 |
20 | {% endif %}
21 |
22 | {{ rule.username }}
23 |
24 |
25 | {{ rule.description }}
26 |
27 |
28 | {% if rule.key %}
29 | {{ rule.key.attributes.name }}
30 | {% else %}
31 | None
32 | {% endif %}
33 |
34 |
35 | {{ rule.attributes.priority }}
36 |
37 |
38 | {% if rule.inherited %}
39 | {{ rule.parent.attributes.name }}
40 | {% else %}
41 | Local
42 | {% endif %}
43 |
44 |
45 | {% if not rule.inherited %}
46 | update
47 | | delete
48 | {% endif %}
49 |
50 |
51 | {% endfor %}
52 |
53 |
54 |
55 |
56 |
57 | {% endif %}
58 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/templates/display_rules_subdevice.html:
--------------------------------------------------------------------------------
1 | {% if rules.TMPLRULESUBDEV %}
2 |
5 |
6 |
7 |
8 | Number of devices
9 | Template
10 | Sequence offset
11 | Priority
12 | Inherited From
13 | Action
14 |
15 | {% for rule in rules.TMPLRULESUBDEV %}
16 | {% if forloop.counter|divisibleby:"2" %}
17 |
18 | {% else %}
19 |
20 | {% endif %}
21 |
22 | {{ rule.num_devices }}
23 |
24 |
25 | {% if rule.device_template %}
26 | {{ rule.device_template.attributes.name }}
27 | {% else %}
28 | None
29 | {% endif %}
30 |
31 |
32 | {{ rule.sequence_offset }}
33 |
34 |
35 | {{ rule.attributes.priority }}
36 |
37 |
38 | {% if rule.inherited %}
39 | {{ rule.parent.attributes.name }}
40 | {% else %}
41 | Local
42 | {% endif %}
43 |
44 |
45 | {% if not rule.inherited %}
46 | update
47 | | delete
48 | {% endif %}
49 |
50 |
51 | {% endfor %}
52 |
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 |
15 |
18 |
19 |
20 | {% if config.attributes.description %}
21 |
22 | Description:
23 | {{ config.attributes.description }}
24 |
25 | {% endif %}
26 |
27 | Stored versions:
28 | {{ config.stats.count }}
29 |
30 |
31 | Latest version timestamp:
32 | {{ config.stats.pretty_latest_timestamp }}
33 |
34 |
35 | Latest version size:
36 | {{ config.stats.latest_size }} bytes
37 |
38 |
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 |
16 |
17 |
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 |
15 |
18 |
19 |
20 |
21 | Name:
22 | {{ config.name }}
23 |
24 | {% if config.attributes.description %}
25 |
26 | Description:
27 | {{ config.attributes.description }}
28 |
29 | {% endif %}
30 |
31 | Stored versions:
32 | {{ config.stats.count }}
33 |
34 |
35 | Max stored versions:
36 | {{ config.max_versions }}
37 |
38 |
39 | Latest version timestamp:
40 | {{ config.stats.pretty_latest_timestamp }}
41 |
42 |
43 | Latest version size:
44 | {{ config.stats.latest_size }} bytes
45 |
46 |
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 |
5 |
6 |
7 |
8 | Apply to attribute
9 | Versions
10 | Hidden
11 | Wikified
12 | Large
13 | Priority
14 | Inherited From
15 | Action
16 |
17 | {% for rule in rules.TMPLRULETEXT %}
18 | {% if forloop.counter|divisibleby:"2" %}
19 |
20 | {% else %}
21 |
22 | {% endif %}
23 |
24 | {{ rule.attr_name }}
25 |
26 |
27 | {{ rule.versions }}
28 |
29 |
30 | {{ rule.attributes.hidden }}
31 |
32 |
33 | {% if rule.attributes.wikitext %}
34 | True
35 | {% else %}
36 | False
37 | {% endif %}
38 |
39 |
40 | {% if rule.attributes.large %}
41 | True
42 | {% else %}
43 | False
44 | {% endif %}
45 |
46 |
47 | {{ rule.attributes.priority }}
48 |
49 |
50 | {% if rule.inherited %}
51 | {{ rule.parent.attributes.name }}
52 | {% else %}
53 | Local
54 | {% endif %}
55 |
56 |
57 | {% if not rule.inherited %}
58 | update
59 | | delete
60 | {% endif %}
61 |
62 |
63 | {% endfor %}
64 |
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 |
17 | Tag
18 |
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 |
5 |
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 |
11 |
50 | {% endblock %}
51 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/devices/display_device.html:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 | {% if device.attributes.disabled %}
7 |
THIS DEVICE IS CURRENTLY DISABLED
8 | {% endif %}
9 |
10 |
11 | Name:
12 | {{ device.attributes.name }}
13 |
14 | {% if device.attributes.description %}
15 |
16 | Description:
17 | {{ device.attributes.description }}
18 |
19 | {% endif %}
20 | {% if device.attributes.class %}
21 |
22 | Class:
23 | {{ device.attributes.class }}
24 |
25 | {% endif %}
26 | {% if device.ctime %}
27 |
28 | Created:
29 | {{ device.prettyCtime }}
30 |
31 | {% endif %}
32 | {% if primary_network %}
33 |
34 | Primary Network
35 | {{ primary_network.strAddress }}/{{ primary_network.parent.strNetmaskCIDR }} ({{ primary_network.parent.strNetmask }})
36 |
37 |
38 | Default Gateway{% if default_gateway_guessed %} (guessed){% endif %}:
39 | {{ default_gateway }}
40 |
41 | {% endif %}
42 | {% if device.attributes.rack_unit_occupied %}
43 |
44 | Unit marked as occupied:
45 | {{ device.attributes.rack_unit_occupied_reason }}
46 |
47 | {% endif %}
48 | {% if device.attributes.rack_unit_reserved %}
49 |
50 | Unit marked as reserved:
51 | {{ device.attributes.rack_unit_reserved_reason }}
52 |
53 | {% endif %}
54 | {% for attr in attribute_list.important %}
55 |
56 | {{ attr.name }}:
57 | {{ attr.value }}
58 |
59 | {% endfor %}
60 |
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 |
2 | {% if write_access %}
3 |
delete
4 | |
update
5 | |
set as active user manager
6 | {% ifequal user_manager.class_name "user manager ldap" %}
7 | |
sync users from ldap server
8 | {% endifequal %}
9 | {% ifequal user_manager.class_name "user manager active directory" %}
10 | |
sync users from ad server
11 | {% endifequal %}
12 | {% endif %}
13 |
14 |
17 |
18 |
19 |
20 |
21 | Name:
22 | {{ user_manager.attributes.name }}
23 |
24 |
25 | Description:
26 | {{ user_manager.attributes.description }}
27 |
28 | {% ifequal user_manager.class_name "user manager ldap" %}
29 |
30 | Connection type:
31 | {{ user_manager.connection_type }}
32 |
33 |
34 | LDAP server:
35 | {{ user_manager.server }}
36 |
37 |
38 | Server port:
39 | {{ user_manager.port }}
40 |
41 |
42 | Base DN:
43 | {{ user_manager.base_dn }}
44 |
45 |
46 | Valid Groups:
47 | {{ user_manager.valid_groups }}
48 |
49 | {% endifequal %}
50 | {% ifequal user_manager.class_name "user manager active directory" %}
51 |
52 | AD server:
53 | {{ user_manager.server }}
54 |
55 |
56 | Base DN:
57 | {{ user_manager.base_dn }}
58 |
59 |
60 | Valid Groups:
61 | {{ user_manager.valid_groups }}
62 |
63 |
64 | User Domain:
65 | {{ user_manager.user_domain }}
66 |
67 | {% endifequal %}
68 |
69 |
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/siptrackweb/templates/stweb/views/networktrees/networks/display_associated_devices.html:
--------------------------------------------------------------------------------
1 | {% if device_association_list %}
2 |
5 |
6 |
7 |
8 |
9 | Associated Device
10 | Device Class
11 | Action
12 |
13 | {% for assoc in device_association_list %}
14 | {% if assoc.obj.attributes.disabled %}
15 |
16 | {% else %}
17 |
18 | {% endif %}
19 |
20 | {% for pathinfo in assoc.path %}
21 | {{ pathinfo.name }}
22 | {% if not forloop.last %}
23 | /
24 | {% endif %}
25 | {% endfor %}
26 |
27 |
28 | {{ assoc.obj.attributes.class }}
29 |
30 |
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 |
41 |
42 | {% endfor %}
43 |
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 |
13 | Add
14 |
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 |
2 | {% if write_access %}
3 |
connect password key
4 | {% endif %}
5 |
6 |
9 |
10 |
11 | {% if subkey_list %}
12 |
13 |
14 |
15 | Name
16 | Description
17 | Action
18 |
19 |
20 | {% for subkey in subkey_list %}
21 |
22 | {% if not subkey.exists %}
23 |
24 | Password key deleted
25 | {% else %}
26 | {{ subkey.name | escape }}
27 | {{ subkey.description | escape }}
28 | {% endif %}
29 |
30 | {% if write_access %}
31 | re-connect
32 | disconnect
33 | {% endif %}
34 |
35 |
36 |
37 |
38 | {% if subkey.exists %}
39 |
40 |
41 |
57 |
58 |
59 |
60 |
61 | {% endif %}
62 |
63 | {% endfor %}
64 |
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 |
13 | Dangerous
14 |
15 |
23 |
24 | {% endif %}
25 |
26 |
27 |
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 |
5 |
6 |
7 | {% if device_password_associations.categories %}
8 |
9 |
10 | Category
11 | Category description
12 | Action
13 |
14 | {% for cat in device_password_associations.categories %}
15 |
16 |
17 |
18 |
19 | {{ cat.attributes.name }}
20 |
21 |
22 |
23 | {{ cat.attributes.description }}
24 |
25 |
26 | {% if write_access %}
27 |
30 | {% endif %}
31 |
32 |
33 | {% endfor %}
34 |
35 | {% endif %}
36 |
37 |
38 |
39 |
40 |
41 |
44 |
45 |
46 | {% if device_password_associations.passwords %}
47 |
48 |
49 | Username
50 | Password
51 | Description
52 | Key
53 | Action
54 |
55 | {% for password in device_password_associations.passwords %}
56 |
57 |
58 | {{ password.attributes.username }}
59 |
60 | {{ password.password }}
61 |
62 | {{ password.attributes.description }}
63 |
64 |
65 | {% if password.key %}
66 | {{ password.key.attributes.name }}
67 | {% endif %}
68 |
69 |
70 | {% if write_access %}
71 |
81 | {% endif %}
82 |
83 |
84 | {% endfor %}
85 |
86 | {% endif %}
87 |
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 |
15 |
16 |
31 |
32 |
51 |
52 | {% include "stweb/attributes/display.html" %}
53 |
54 |
55 | {% if administrator %}
56 |
57 |
60 | {% if user_list %}
61 |
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 |
14 | Add
15 |
16 |
21 |
22 |
23 |
Add category
24 |
Add password
25 |
Delete category
26 |
27 | {% endif %}
28 |
29 | {% if valid_tag_target %}
30 |
31 |
32 | Tag
33 |
34 |
41 |
42 | {% endif %}
43 |
44 |
45 |
46 |
49 |
50 |
51 |
52 |
53 | Name:
54 | {{ password_category.attributes.name|escape }}
55 |
56 |
57 | Description:
58 | {{ password_category.attributes.description|escape }}
59 |
60 |
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 |
5 |
6 |
7 | {% if network_host_list or interface_network_host_list%}
8 |
9 |
10 | IP-address
11 | Primary Address
12 | Interface
13 | Description
14 | Action
15 |
16 | {% for network in network_host_list %}
17 |
18 |
19 | {{ network.strAddress|escape }}
20 |
21 |
22 | {% if network.attributes.secondary %}
23 | False
24 | {% else %}
25 | True
26 | {% endif %}
27 |
28 |
29 |
30 |
31 |
32 | {{ network.attributes.description|escape }}
33 |
34 |
35 | {% if write_access %}
36 | delete
37 | {% endif %}
38 |
39 |
40 | {% endfor %}
41 | {% for interface, networks in interface_network_host_list %}
42 | {% for network in networks %}
43 |
44 |
45 | {{ network.strAddress|escape }}
46 |
47 |
48 | {% if network.attributes.secondary %}
49 | False
50 | {% else %}
51 | True
52 | {% endif %}
53 |
54 |
55 | {{ interface.attributes.name }}
56 |
57 |
58 | {{ network.attributes.description|escape }}
59 |
60 |
61 | {% if write_access %}
62 | delete
63 | {% endif %}
64 |
65 |
66 | {% endfor %}
67 | {% endfor %}
68 |
69 | {% endif %}
70 | {% if network_subnet_list %}
71 |
72 |
73 | Subnet/Range
74 | Description
75 | Auto-assign
76 | Action
77 |
78 | {% for network in network_subnet_list %}
79 |
80 |
81 | {{ network|escape }}
82 |
83 |
84 | {{ network.attributes.description|escape }}
85 |
86 |
87 | {{ network.attributes.autoassign|escape }}
88 |
89 |
90 | delete
91 |
92 |
93 | {% endfor %}
94 |
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 |
11 |
12 | {% if form.message %}
13 |
14 |
{{ form.message|safe }}
15 |
16 | {% endif %}
17 |
18 |
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 |
12 | Add
13 |
14 |
19 |
20 |
21 |
22 | Add rule
23 |
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 | [](https://i.imgur.com/j3dyF5S.gif)
88 |
89 | ## Devices and Templates
90 |
91 | Create devices quickly from templates.
92 |
93 | [](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 | [](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 |
12 | Add
13 |
14 |
28 |
29 |
Add category
30 |
Add device
31 |
32 |
33 | Edit
34 |
35 |
45 |
46 |
47 |
48 | Tag
49 |
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 |
--------------------------------------------------------------------------------