123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <%#
- Copyright 2008 Steven Barth <steven@midlink.org>
- Copyright 2008 Jo-Philipp Wich <jow@openwrt.org>
- Copyright 2011 Manuel Munz <freifunk at somakoma dot de>
- Licensed to the public under the Apache License 2.0.
- -%>
- <%
- has_ipv4_conf = luci.model.uci.cursor():get_first("olsrd", "olsrd", "IpVersion")
- has_ipv6_conf = luci.model.uci.cursor():get_first("olsrd6", "olsrd", "IpVersion")
- function write_conf(conf, file)
- local fs = require "nixio.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_v4 then
- write_conf("/etc/config/olsrd", "olsrd")
- return false
- end
- if conf.openwrt_v6 then
- write_conf("/etc/config/olsrd6", "olsrd6")
- return false
- end
- if conf.conf_v4 then
- write_conf("/var/etc/olsrd.conf", "olsrd.conf")
- return false
- end
- if conf.conf_v6 then
- write_conf("/var/etc/olsrd6.conf", "olsrd6.conf")
- return false
- end
- %>
- <%+header%>
- <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.version.version != undefined) {
- version = info.v4.version.version
- date = info.v4.version.date
- } else if (info.v6.version.version != undefined) {
- version = info.v6.version.version
- date = info.v6.version.date
- } 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 name="content">OLSR <%:Overview%></h2>
- <fieldset class="cbi-section">
- <legend><%:Network%></legend>
- <div class="table" width="100%" cellspacing="10">
- <div class="tr"><div class="td" width="33%"><%:Interfaces%></div><div class="td">
- <a href="<%=REQUEST_URI%>/interfaces">
- <span id="nr_ifaces">-<span>
- </a>
- </div></div>
- <div class="tr"><div class="td" width="33%"><%:Neighbors%></div><div class="td">
- <a href="<%=REQUEST_URI%>/neighbors">
- <span id="nr_neigh">-</span>
- </a>
- </div></div>
- <div class="tr"><div class="td" width="33%"><%:Nodes%></div><div class="td">
- <a href="<%=REQUEST_URI%>/topology">
- <span id="nr_nodes">-</span>
- </a>
- </div></div>
- <div class="tr"><div class="td" width="33%"><%:HNA%></div><div class="td">
- <a href="<%=REQUEST_URI%>/hna">
- <span id="nr_hna">-</span>
- </a>
- </div></div>
- <div class="tr"><div class="td" width="33%"><%:Links total%></div><div class="td">
- <a href="<%=REQUEST_URI%>/topology">
- <span id="nr_topo">-</span>
- </a>
- </div></div>
- <div class="tr"><div class="td" width="33%"><%:Links per node (average)%></div><div class="td">
- <span id="meshfactor">-</span>
- </div></div>
- </div>
- </fieldset>
- <fieldset class="cbi-section">
- <legend>OLSR <%:Configuration%></legend>
- <div class="table" width="100%" cellspacing="10">
- <div class="tr"><div class="td" width="33%"><%:Version%></div><div class="td">
- <span id="version">-<span>
- </div></div>
- <div class="tr"><div class="td" width="33%"><%:Download Config%></div><div class="td">
- <% if has_ipv4_conf then %>
- <a href="<%=REQUEST_URI%>?openwrt_v4">OpenWrt (IPv4)</a>,
- <% end %>
- <% if has_ipv6_conf then %>
- <a href="<%=REQUEST_URI%>?openwrt_v6">OpenWrt (IPv6)</a>,
- <% end %>
- <% if has_ipv4_conf then %>
- <a href="<%=REQUEST_URI%>?conf_v4">OLSRD (IPv4)</a>,
- <% end %>
- <% if has_ipv6_conf then %>
- <a href="<%=REQUEST_URI%>?conf_v6">OLSRD (IPv6)</a>
- <% end %>
- </div></div>
- </div>
- </fieldset>
- <%+footer%>
|