summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm
diff options
context:
space:
mode:
Diffstat (limited to 'applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm')
-rw-r--r--applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm220
1 files changed, 220 insertions, 0 deletions
diff --git a/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm b/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm
new file mode 100644
index 000000000..6d8eca874
--- /dev/null
+++ b/applications/luci-app-olsr/luasrc/view/status-olsr/overview.htm
@@ -0,0 +1,220 @@
+<%#
+LuCI - Lua Configuration Interface
+Copyright 2008 Steven Barth <steven@midlink.org>
+Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
+Copyright 2011 Manuel Munz <freifunk at somakoma dot de>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+-%>
+
+<%
+local ipv = luci.model.uci.cursor():get_first("olsrd", "olsrd", "IpVersion", "4")
+
+function write_conf(conf, file)
+ local fs = require "luci.fs"
+ if fs.access(conf) then
+ luci.http.header("Content-Disposition", "attachment; filename="..file)
+ luci.http.prepare_content("text/plain")
+ luci.http.write(fs.readfile(conf))
+ end
+end
+
+conf = luci.http.formvalue()
+
+if conf.openwrt then
+ write_conf("/etc/config/olsrd", "olsrd")
+ return false
+end
+
+if conf.conf_v4 then
+ write_conf("/var/etc/olsrd.conf.ipv4", "olsrd.conf.ipv4")
+ return false
+end
+
+if conf.conf_v6 then
+ write_conf("/var/etc/olsrd.conf.ipv6", "olsrd.conf.ipv6")
+ return false
+end
+
+if conf.conf then
+ write_conf("/var/etc/olsrd.conf", "olsrd.conf")
+ return false
+end
+
+%>
+
+<%+header%>
+
+<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
+<script type="text/javascript">//<![CDATA[
+
+XHR.poll(10, '<%=REQUEST_URI%>/json', { },
+ function(x, info)
+ {
+ var e;
+
+ if (! info) {
+ document.getElementById('error').innerHTML = '<%:Could not get any data. Make sure the jsoninfo plugin is installed and allows connections from localhost.%>';
+ return
+ }
+ document.getElementById('error').innerHTML = '';
+
+ if (e = document.getElementById('version'))
+ var version;
+ var date;
+ if (info.v4.config.olsrdVersion != undefined) {
+ version = info.v4.config.olsrdVersion
+ date = info.v4.config.olsrdBuildDate
+ } else if (info.v6.config.olsrdVersion != undefined) {
+ version = info.v6.config.olsrdVersion
+ date = info.v6.config.olsrdBuildDate
+ } else {
+ version = 'unknown'
+ date = 'unknown'
+ }
+ e.innerHTML = version + '<br />' + date;
+
+ if (e = document.getElementById('nr_neigh'))
+ var neigh = 0;
+ if (info.v4.links != undefined) {
+ neigh = neigh + info.v4.links.length
+ }
+ if (info.v6.links != undefined) {
+ neigh = neigh + info.v6.links.length
+ }
+ e.innerHTML = neigh;
+
+
+ if (e = document.getElementById('nr_hna'))
+ var hna = 0;
+ if (info.v4.hna != undefined) {
+ hna = hna + info.v4.hna.length
+ }
+ if (info.v6.hna != undefined) {
+ hna = hna + info.v6.hna.length
+ }
+ e.innerHTML = hna;
+
+
+ if (e = document.getElementById('nr_ifaces'))
+ var nrint = 0
+ if (info.v4.interfaces != undefined) {
+ nrint = nrint + info.v4.interfaces.length
+ }
+ if (info.v6.interfaces != undefined) {
+ nrint = nrint + info.v6.interfaces.length
+ }
+ e.innerHTML = nrint
+
+
+ if (e = document.getElementById('nr_topo'))
+ var topo = 0;
+ var nodes = [];
+
+ Array.prototype.contains = function (element) {
+ for (var i = 0; i < this.length; i++) {
+ if (this[i] == element) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ if (info.v4.topology != undefined) {
+ topo = topo + info.v4.topology.length;
+ for (var i = 0; i < info.v4.topology.length; i++) {
+ var destip = info.v4.topology[i].destinationIP
+ if (! nodes.contains(destip) ) {
+ nodes.push(destip)
+ }
+ }
+ }
+
+ if (info.v6.topology != undefined) {
+ topo = topo + info.v6.topology.length
+ for (var i = 0; i < info.v6.topology.length; i++) {
+ var destip = info.v6.topology[i].destinationIP
+ if (! nodes.contains(destip) ) {
+ nodes.push(destip)
+ }
+ }
+
+ }
+ e.innerHTML = topo;
+
+ if (e = document.getElementById('nr_nodes'))
+ e.innerHTML = nodes.length;
+
+ if (e = document.getElementById('meshfactor'))
+ var meshfactor = topo / nodes.length
+ e.innerHTML = meshfactor.toFixed(2)
+ }
+ );
+//]]></script>
+
+
+<div id="error" class="error"></div>
+
+<h2><a id="content" name="content">OLSR <%:Overview%></a></h2>
+
+<fieldset class="cbi-section">
+ <legend><%:Network%></legend>
+
+ <table width="100%" cellspacing="10">
+ <tr><td width="33%"><%:Interfaces%></td><td>
+ <a href="<%=REQUEST_URI%>/interfaces">
+ <span id="nr_ifaces">-<span>
+ </a>
+ </td></tr>
+ <tr><td width="33%"><%:Neighbors%></td><td>
+ <a href="<%=REQUEST_URI%>/neighbors">
+ <span id="nr_neigh">-</span>
+ </a>
+ </td></tr>
+ <tr><td width="33%"><%:Nodes%></td><td>
+ <a href="<%=REQUEST_URI%>/topology">
+ <span id="nr_nodes">-</span>
+ </a>
+ </td></tr>
+ <tr><td width="33%"><%:HNA%></td><td>
+ <a href="<%=REQUEST_URI%>/hna">
+ <span id="nr_hna">-</span>
+ </a>
+ </td></tr>
+ <tr><td width="33%"><%:Links total%></td><td>
+ <a href="<%=REQUEST_URI%>/topology">
+ <span id="nr_topo">-</span>
+ </a>
+ </td></tr>
+ <tr><td width="33%"><%:Links per node (average)%></td><td>
+ <span id="meshfactor">-</span>
+ </td></tr>
+
+
+ </table>
+</fieldset>
+
+
+<fieldset class="cbi-section">
+ <legend>OLSR <%:Configuration%></legend>
+ <table width="100%" cellspacing="10">
+ <tr><td width="33%"><%:Version%></td><td>
+ <span id="version">-<span>
+ </td></tr>
+ <tr><td width="33%"><%:Download Config%></td><td>
+ <a href="<%=REQUEST_URI%>?openwrt">OpenWrt</a>,
+ <% if ipv == "6and4" then %>
+ <a href="<%=REQUEST_URI%>?conf_v4">OLSRD IPv4</a>,
+ <a href="<%=REQUEST_URI%>?conf_v6">OLSRD IPv6</a>
+ <% else %>
+ <a href="<%=REQUEST_URI%>?conf">OLSRD</a>
+ <% end %>
+ </td></tr>
+ </table>
+</fieldset>
+
+<%+footer%>