222 lines
5.5 KiB
HTML
222 lines
5.5 KiB
HTML
<%#
|
|
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" 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 name="content">OLSR <%:Overview%></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>
|
|
<% 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 %>
|
|
</td></tr>
|
|
</table>
|
|
</fieldset>
|
|
|
|
<%+footer%>
|