diff options
Diffstat (limited to 'torouterui/templates')
-rw-r--r-- | torouterui/templates/base.html | 75 | ||||
-rw-r--r-- | torouterui/templates/home.html | 71 | ||||
-rw-r--r-- | torouterui/templates/lan.html | 32 | ||||
-rw-r--r-- | torouterui/templates/lib.html | 84 | ||||
-rw-r--r-- | torouterui/templates/logs.html | 9 | ||||
-rw-r--r-- | torouterui/templates/processes.html | 28 | ||||
-rw-r--r-- | torouterui/templates/reboot.html | 22 | ||||
-rw-r--r-- | torouterui/templates/tor.html | 19 | ||||
-rw-r--r-- | torouterui/templates/wan.html | 35 | ||||
-rw-r--r-- | torouterui/templates/wifi.html | 38 |
10 files changed, 413 insertions, 0 deletions
diff --git a/torouterui/templates/base.html b/torouterui/templates/base.html new file mode 100644 index 0000000..4c15c73 --- /dev/null +++ b/torouterui/templates/base.html @@ -0,0 +1,75 @@ +<!doctype html> +<html> +<head> + <title>torouter configuration interface</title> + <link href="/static/css/bootstrap.min.css" rel="stylesheet"> + <style type="text/css"> + body { + padding-top: 60px; + padding-bottom: 40px; + } + .sidebar-nav { + padding: 9px 0; + } + </style> +</head> +<body> + +<div class="navbar navbar-inverse navbar-fixed-top"> + <div class="navbar-inner"> + <div class="container-fluid"> + <a class="brand" href="#">torouter</a> + <div class="nav-collapse collapse"> + <p class="navbar-text pull-right"> + version 0.0 + </p> + </div><!--/.nav-collapse --> + </div> + </div> +</div> + +<div class="container-fluid"> + <div class="row-fluid"> + <div class="span3"> + <div class="well sidebar-nav"> + <ul class="nav nav-list"> +{% macro pagelink(path, name) -%} + <li {% if path == request.path %}class="active"{% endif %}><a href="{{path}}">{{name}}</a></li> +{%- endmacro %} + {{ pagelink("/", "Status") }} + {{ pagelink("/reboot/", "Reboot...") }} + <li class="nav-header">Configuration</li> + {{ pagelink("/wan/", "Upstream Ethernet") }} + {{ pagelink("/lan/", "Local Ethernet") }} + {{ pagelink("/wifi/", "WiFi") }} + {{ pagelink("/tor/", "Tor Network") }} + <li class="nav-header">Monitoring</li> + {{ pagelink("/logs/", "Logs") }} + {{ pagelink("/processes/", "Processes") }} + </ul> + </div><!--/.well --> + </div><!--/span--> + <div class="span9"> + {% if messages %} + {{ mesages }} + {% for category, message in messages %} + <div class="alert alert-{{ category }}"> + <button type="button" class="close" data-dismiss="alert">×</button> + {% if category == "warning" %}<strong>Warning:</strong>{% endif %} + {% if category == "error" %}<strong>Error:</strong>{% endif %} + {% if category == "info" %}<strong>Note:</strong>{% endif %} + {{ message }} + </div> + {% endfor %} + {% endif %} +{% block body %}{% endblock %} + </div><!--/span--> + </div><!--/row--> + <hr> + <footer> + <p>© torouter, copyleft 2012</p> + </footer> +</div><!--/.fluid-container--> + +</body> +</html> diff --git a/torouterui/templates/home.html b/torouterui/templates/home.html new file mode 100644 index 0000000..fa2ed2b --- /dev/null +++ b/torouterui/templates/home.html @@ -0,0 +1,71 @@ +{% import "lib.html" as lib %} +{% extends "base.html" %} +{% block body %} + + +<div class="row-fluid"> + <div class="span6"> + <h3>System</h3> + <table class="table table-condensed"> + <tr> + <th>Host Name + <td><span style="font-family:monospace;">{{ status.system.hostname }}</span> + <tr> + <th>Current Time + <td><span style="font-family:monospace;">{{ status.system.current_time }}</span> + <tr> + <th>System Uptime + <td><span style="font-family:monospace;">{{ status.system.uptime }}</span> + </table> + </div> + <div class="span6"> + <h3>Resources</h3> + <ul class="unstyled"> + <li> + CPU Load<span class="pull-right strong">{{status.resources.cpu_load}} / {{status.resources.cpu_cores}} cores</span> + <div class="progress progress-striped "> + <div class="bar" style="width: {{status.resources.cpu_percent}}%;"></div> + </div> + </li> + <li>RAM Usage<span class="pull-right strong">{{status.resources.ram_used}} / {{status.resources.ram_avail}}</span> + <div class="progress progress-success progress-striped "> + <div class="bar" style="width: {{ status.resources.ram_percent }}%;"></div> + </div> + </li> + <li>Primary Disk Space<span class="pull-right strong">{{status.resources.disk_used}} / {{status.resources.disk_avail}}</span> + <div class="progress progress-warning progress-striped "> + <div class="bar" style="width: {{ status.resources.disk_percent }}%;"></div> + </div> + </li> + </ul> + </div> +</div> +<div class="row-fluid"> + <div class="span6"> + <h3>WAN</h3> + {{ lib.ifstatus(status.wan) }} + </div> + <div class="span6"> + <h3>LAN</h3> + {{ lib.ifstatus(status.lan) }} + </div> +</div> +<div class="row-fluid"> + <div class="span6"> + <h3>WiFi</h3> + {{ lib.ifstatus(status.wifi) }} + </div> + <div class="span6"> + <h3>Tor</h3> + <table class="table table-condensed {% if status.tor.state in ["DISABLED"] %}muted{% endif %}"> + <tr> + <th>Status + <td><span style="font-weight: bold;" class="label + {% if status.tor.state == 'RUNNING' %}label-success{% elif status.tor.state == 'STARTING' %}label-info{% else %}label-important{% endif %}"> + {{ status.tor.state }} + </span> + </table> + </div> +</div> + +{% endblock %} diff --git a/torouterui/templates/lan.html b/torouterui/templates/lan.html new file mode 100644 index 0000000..09bcf0a --- /dev/null +++ b/torouterui/templates/lan.html @@ -0,0 +1,32 @@ +{% import "lib.html" as lib %} +{% extends "base.html" %} +{% block body %} + +<form action="/lan/" method="POST" class="form-horizontal"> +<legend>Local Ethernet Configuration</legend> + +{% if not status.lan %} +<span class="text-error">Could not find the local ethernet hardware device!</span> +{% else %} + +{{ lib.formcheckbox(form, formerr, 'ipv4enable', 'Enable this interface', 'true') }} + +<legend>Address Configuration</legend> +{{ lib.forminput(form, formerr, 'ipv4addr', 'IPv4 Address', '0.0.0.0') }} +{{ lib.forminput(form, formerr, 'ipv4netmask', 'Netmask', '255.255.0.0') }} +{{ lib.forminput(form, formerr, 'ipv4gateway', 'Gateway IP Address', '0.0.0.0') }} + +<legend>DHCP Configuration</legend> +{{ lib.forminput(form, formerr, 'dhcpbase', 'DHCP Range Base', '192.168.1.100') }} +{{ lib.forminput(form, formerr, 'dhcptop', 'DHCP Range Top', '192.168.1.200') }} +{{ lib.forminput(form, formerr, 'dhcptime', 'Lease Time', '12h') }} + +<div class="pull-right"> +<a href="."><button class="btn" type="button">Reset</button></a> +<button type="submit" class="btn btn-primary" type="button"> +Save</button> +</div> +</form> +{% endif %} + +{% endblock %} diff --git a/torouterui/templates/lib.html b/torouterui/templates/lib.html new file mode 100644 index 0000000..6ac5e12 --- /dev/null +++ b/torouterui/templates/lib.html @@ -0,0 +1,84 @@ + + +{% macro ifstatus(ifstatus) -%} +{% if not ifstatus %} +<span class="text-error"> +Network hardware not detected at all! +</span> +{% else %} +<table class="table table-condensed {% if ifstatus.state in ["DOWN", "DISCONNECTED"] %}muted{% endif %}"> + <tr> + <th>Interface Name + <td><span style="font-family:monospace;">{{ ifstatus.ifname }}</span> + <tr> + <th>Status + <td><span style="font-weight: bold;" class="label + {% if ifstatus.state == 'RUNNING' %}label-success{% elif ifstatus.state == 'up' %}label-info{% else %}label-important{% endif %}"> + {{ ifstatus.state }} + </span> + <tr> + <th>MAC Address + <td><span style="font-family:monospace;">{{ ifstatus.mac }}</span> + <tr> + <th>IPv4 Addresses + <td><span style="font-family:monospace;"> + {% for addr in ifstatus.ipv4addrs %} + {{ addr.addr }}/{{ addr.prefix}} ({{ addr.scope }})<br> + {% endfor %}</span> + <tr> + <th>IPv6 Addresses + <td><span style="font-family:monospace;"> + {% for addr in ifstatus.ipv6addrs %} + {{ addr.addr }}/{{ addr.prefix}} ({{ addr.scope }})<br> + {% endfor %}</span> + {% if ifstatus.radio_state %} + <tr> + <th>Radio State + <td><span style="font-family:monospace;">{{ ifstatus.radio_state }}</span> + <tr> + <th>SSID + <td><span style="font-family:monospace;">{{ ifstatus.ssid }}</span> + <tr> + <th>Frequency + <td><span style="font-family:monospace;">{{ ifstatus.freq }}</span> + <tr> + <th>Signal Strength + <td><span style="font-family:monospace;">{{ ifstatus.signal_dbm }}</span> + {% endif %} +</table> +{% endif %} +{%- endmacro %} + + +{% macro logbox(name, contents) -%} +<h3>{{name}}</h3> +{% if contents == None %} +<span class="text-error">Access to {{name}} was denied, or file did not exist.</span> +{% else %} +<div style="height: 18em; width: 60em;"> +<pre style="height: 18em; width 60em; overflow: auto;"> +{{ contents }} +</pre> +</div> +{% endif%} +{%- endmacro %} + + +{% macro forminput(form, formerr, name, title, placeholder) -%} +<div class="control-group {% if formerr[name] %}error{% endif %}"> + <label class="control-label" for="{{name}}">{{ title }}</label> + <div class="controls"> + <input type="text" name="{{name}}" placeholder="{{placeholder}}" {% if form[name] %}value="{{ form[name] }}"{% endif %}> + {% if formerr[name] %} + <span class="help-inline">{{ formerr[name] }}</span> + {% endif %} + </div> +</div> +{%- endmacro %} + +{% macro formcheckbox(form, formerr, name, title, value) -%} + <label class="checkbox"> + <input type="checkbox" name="{{name}}" id="{{name}}" value="{{value}}" {% if form[name] == value %}checked{% endif %}> + <h4>{{title}}</h4> + </label> +{% endmacro %} diff --git a/torouterui/templates/logs.html b/torouterui/templates/logs.html new file mode 100644 index 0000000..c5ea52a --- /dev/null +++ b/torouterui/templates/logs.html @@ -0,0 +1,9 @@ +{% import "lib.html" as lib %} +{% extends "base.html" %} +{% block body %} + +{{ lib.logbox("dmesg", logs.dmesg) }} +{{ lib.logbox("auth.log", logs.authlog) }} +{{ lib.logbox("syslog", logs.syslog) }} + +{% endblock %} diff --git a/torouterui/templates/processes.html b/torouterui/templates/processes.html new file mode 100644 index 0000000..2e35162 --- /dev/null +++ b/torouterui/templates/processes.html @@ -0,0 +1,28 @@ +{% import "lib.html" as lib %} +{% extends "base.html" %} +{% block body %} +<h3>System Running Process List</h3> +<table class="table table-condensed"> + <tr> + <th>User + <th>PID + <th>%CPU + <th>%MEM + <th>Status + <th>Started + <th>Time + <th>Command +{% for proc in process_list %} + <tr style="font-family: monospace;"> + <td>{{ proc.user }} + <td>{{ proc.pid}} + <td>{{ proc.perc_cpu }} + <td>{{ proc.perc_mem }} + <td>{{ proc.status_code }} + <td>{{ proc.started }} + <td>{{ proc.time }} + <td><div style="height: 1.5em; overflow:hidden;">{{ proc.command }}</div> +{% endfor %} +</table> + +{% endblock %} diff --git a/torouterui/templates/reboot.html b/torouterui/templates/reboot.html new file mode 100644 index 0000000..b9f0c54 --- /dev/null +++ b/torouterui/templates/reboot.html @@ -0,0 +1,22 @@ +{% extends "base.html" %} +{% block body %} +<h3>System Reboot</h3> + +{% if status == 'rebooting' %} + +Rebooting! This interface will stop working in a few seconds, check back in a +minute or two... + +{% else %} +<form action="/reboot/" method="POST"> +Are you sure you'd like to restart? This could have reprecussions! +<br> +<label class="checkbox"> + <input type="checkbox" name="confirm">Yes, i'm certain +</label> +<button type="submit" class="btn btn-large btn-primary btn-warning" type="button"> +Restart</button> +</form> +{% endif %} + +{% endblock %} diff --git a/torouterui/templates/tor.html b/torouterui/templates/tor.html new file mode 100644 index 0000000..a1f30dc --- /dev/null +++ b/torouterui/templates/tor.html @@ -0,0 +1,19 @@ +{% import "lib.html" as lib %} +{% extends "base.html" %} +{% block body %} + +<form action="/tor/" method="POST" class="form-horizontal"> +<legend>Tor Network Configuration</legend> + +{{ lib.formcheckbox(form, formerr, 'torenable', 'Enable Tor daemon', 'true') }} +{{ lib.formcheckbox(form, formerr, 'torrelayenable', 'Enable Tor Relay', 'true') }} +{{ lib.formcheckbox(form, formerr, 'torbridgeenable', 'Enable Tor Bridge', 'true') }} + +<div class="pull-right"> +<a href="."><button class="btn" type="button">Reset</button></a> +<button type="submit" class="btn btn-primary" type="button"> +Save</button> +</div> +</form> + +{% endblock %} diff --git a/torouterui/templates/wan.html b/torouterui/templates/wan.html new file mode 100644 index 0000000..2da2733 --- /dev/null +++ b/torouterui/templates/wan.html @@ -0,0 +1,35 @@ +{% import "lib.html" as lib %} +{% extends "base.html" %} +{% block body %} + +<form action="/wan/" method="POST" class="form-horizontal"> +<legend>Upstream Ethernet Configuration</legend> + +<label class="radio"> + <input type="radio" name="ipv4method" id="ipv4methoddhcp" value="dhcp" {% if form.ipv4method == "dhcp" %}checked{% endif %}> + <h4>Automatic DHCP Addressing</h4> +</label> + +<label class="radio"> + <input type="radio" name="ipv4method" id="ipv4methodstatic" value="static" {% if form.ipv4method == "static" %}checked{% endif %}> + <h4>Manual Addressing</h4> +</label> + +{{ lib.forminput(form, formerr, 'ipv4addr', 'IPv4 Address', '0.0.0.0') }} +{{ lib.forminput(form, formerr, 'ipv4netmask', 'Netmask', '255.255.255.0') }} +{{ lib.forminput(form, formerr, 'ipv4gateway', 'Gateway IP Address', '0.0.0.0') }} + +<label class="radio"> + <input type="radio" name="ipv4method" id="ipv4methoddisabled" value="disabled" {% if form.ipv4method == "disabled" %}checked{% endif %}> + <h4>Disable Interface</h4> +</label> + +<div class="pull-right"> +<a href="."><button class="btn" type="button">Reset</button></a> +<button type="submit" class="btn btn-primary" type="button"> +Save</button> +</div> +</form> + + +{% endblock %} diff --git a/torouterui/templates/wifi.html b/torouterui/templates/wifi.html new file mode 100644 index 0000000..3e41788 --- /dev/null +++ b/torouterui/templates/wifi.html @@ -0,0 +1,38 @@ +{% import "lib.html" as lib %} +{% extends "base.html" %} +{% block body %} + +<form action="/wifi/" method="POST" class="form-horizontal"> +<legend>WiFi Configuration</legend> + +{% if not status.wifi %} +<span class="text-error">Could not find the WiFi hardware device!</span> +{% else %} + +{{ lib.formcheckbox(form, formerr, 'wifienable', 'Enable the radio', 'true') }} +{{ lib.formcheckbox(form, formerr, 'torifylanenable', 'Transparently "Tor-ify" this network interface', 'true') }} + +<legend>Radio</legend> +{{ lib.forminput(form, formerr, 'wifissid', 'SSID name', 'internet') }} +{{ lib.forminput(form, formerr, 'wifipower', 'Transmit Power', 'high, low') }} +{{ lib.forminput(form, formerr, 'wifichannel', 'Channel', '11') }} + +<legend>Network Address</legend> +{{ lib.forminput(form, formerr, 'ipv4addr', 'IPv4 Address', '0.0.0.0') }} +{{ lib.forminput(form, formerr, 'ipv4netmask', 'Netmask', '255.255.0.0') }} +{{ lib.forminput(form, formerr, 'ipv4gateway', 'Gateway IP Address', '0.0.0.0') }} + +<legend>DHCP Server</legend> +{{ lib.forminput(form, formerr, 'dhcpbase', 'DHCP Range Base', '192.168.1.100') }} +{{ lib.forminput(form, formerr, 'dhcptop', 'DHCP Range Top', '192.168.1.200') }} +{{ lib.forminput(form, formerr, 'dhcptime', 'Lease Time', '12h') }} + +<div class="pull-right"> +<a href="."><button class="btn" type="button">Reset</button></a> +<button type="submit" class="btn btn-primary" type="button"> +Save</button> +</div> +</form> +{% endif %} + +{% endblock %} |