2010-12-17 02:14:28 +00:00
|
|
|
<%#
|
|
|
|
LuCI - Lua Configuration Interface
|
|
|
|
Copyright 2008 Steven Barth <steven@midlink.org>
|
|
|
|
Copyright 2008 Jo-Philipp Wich <xm@leipzig.freifunk.net>
|
2011-11-09 18:12:25 +00:00
|
|
|
Copyright 2011 Manuel Munz <freifunk at somakoma dot de>
|
2010-12-17 02:14:28 +00:00
|
|
|
|
|
|
|
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 sys = require "luci.sys"
|
|
|
|
local utl = require "luci.util"
|
|
|
|
local fs = require "luci.fs"
|
|
|
|
|
|
|
|
function get_version()
|
2011-01-14 23:12:41 +00:00
|
|
|
local data = utl.split((utl.trim(sys.exec("/usr/sbin/olsrd -v"))))
|
2010-12-17 02:14:28 +00:00
|
|
|
local buildfull = utl.trim(utl.split(data[2],": ")[2])
|
|
|
|
local ver = {
|
|
|
|
version = utl.trim(utl.split(data[1]," - ")[2]),
|
|
|
|
date = utl.trim(utl.split(buildfull, " ")[1]),
|
|
|
|
time = utl.trim(utl.split(buildfull, " ")[2]),
|
|
|
|
host = utl.trim(utl.split(buildfull, " ")[4])
|
|
|
|
}
|
|
|
|
return ver
|
|
|
|
end
|
|
|
|
local ver = get_version()
|
|
|
|
|
|
|
|
local ifaces = fetch_txtinfo("int")
|
|
|
|
if not ifaces or not ifaces.Interfaces then
|
|
|
|
luci.template.render("status-olsr/error_olsr")
|
|
|
|
return nil
|
|
|
|
end
|
|
|
|
local interfaces = ""
|
|
|
|
for k,v in pairs(ifaces.Interfaces) do
|
|
|
|
interfaces = utl.trim(interfaces.." "..v.Name)
|
|
|
|
end
|
|
|
|
interfaces = string.gsub(interfaces, " ", ", ")
|
|
|
|
local nr_ifaces = #ifaces.Interfaces
|
|
|
|
|
|
|
|
local links = fetch_txtinfo("links")
|
|
|
|
local nr_neigh = #links.Links
|
|
|
|
local neighbors = ""
|
|
|
|
for k,v in pairs(links.Links) do
|
|
|
|
local link
|
|
|
|
if v.Hostname then
|
|
|
|
link = v.Hostname
|
|
|
|
else
|
|
|
|
link = v["Remote IP"]
|
|
|
|
end
|
|
|
|
neighbors = utl.trim("<a href=http://"..link.."/cgi-bin-status.html>"..link.."</a> "..neighbors)
|
|
|
|
end
|
|
|
|
|
|
|
|
local data = fetch_txtinfo("topology")
|
|
|
|
local nr_topo = #data.Topology
|
|
|
|
local utable = {}
|
|
|
|
for k,v in pairs(data.Topology) do
|
|
|
|
if utl.contains(utable, v["Dest. IP"]) == false then
|
|
|
|
table.insert(utable, v["Dest. IP"])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
local nr_nodes = #utable
|
|
|
|
|
|
|
|
local data = fetch_txtinfo("hna")
|
|
|
|
local nr_hna = #data.HNA
|
|
|
|
|
|
|
|
local meshfactor = string.format("%.2f", nr_topo / nr_nodes)
|
|
|
|
|
2011-11-09 18:12:25 +00:00
|
|
|
if luci.http.formvalue("status") == "1" then
|
|
|
|
rv = {
|
|
|
|
nr_neighbors = nr_neigbors,
|
|
|
|
neighbors = neighbors,
|
|
|
|
interfaces = interfaces,
|
|
|
|
nr_ifaces = nr_ifaces,
|
|
|
|
nr_links = nr_links,
|
|
|
|
nr_topo = nr_topo,
|
|
|
|
nr_nodes = nr_nodes,
|
|
|
|
meshfactor = meshfactor
|
|
|
|
}
|
|
|
|
luci.http.prepare_content("application/json")
|
|
|
|
luci.http.write_json(rv)
|
|
|
|
return
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2010-12-17 02:14:28 +00:00
|
|
|
local ipv = luci.model.uci.cursor():get_first("olsrd", "olsrd", "IpVersion", "4")
|
|
|
|
|
|
|
|
function write_conf(conf, file)
|
|
|
|
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%>
|
2011-11-09 18:12:25 +00:00
|
|
|
|
|
|
|
<script type="text/javascript" src="<%=resource%>/cbi.js"></script>
|
|
|
|
<script type="text/javascript">//<![CDATA[
|
|
|
|
|
|
|
|
XHR.poll(30, '<%=REQUEST_URI%>', { status: 1 },
|
|
|
|
function(x, info)
|
|
|
|
{
|
|
|
|
var e;
|
|
|
|
|
|
|
|
if (e = document.getElementById('nr_neighbors'))
|
|
|
|
e.innerHTML = info.nr_neighbors;
|
|
|
|
|
|
|
|
if (e = document.getElementById('neighbors'))
|
|
|
|
e.innerHTML = info.neighbors;
|
|
|
|
|
|
|
|
if (e = document.getElementById('nr_ifaces'))
|
|
|
|
e.innerHTML = info.nr_ifaces;
|
|
|
|
|
|
|
|
if (e = document.getElementById('interfaces'))
|
|
|
|
e.innerHTML = info.interfaces;
|
|
|
|
|
|
|
|
if (e = document.getElementById('nr_links'))
|
|
|
|
e.innerHTML = info.nr_links;
|
|
|
|
|
|
|
|
if (e = document.getElementById('nr_topo'))
|
|
|
|
e.innerHTML = info.nr_topo;
|
|
|
|
|
|
|
|
if (e = document.getElementById('nr_nodes'))
|
|
|
|
e.innerHTML = info.nr_nodes;
|
|
|
|
|
|
|
|
if (e = document.getElementById('meshfactor'))
|
|
|
|
e.innerHTML = info.meshfactor;
|
|
|
|
}
|
|
|
|
);
|
|
|
|
//]]></script>
|
|
|
|
|
|
|
|
|
2010-12-17 02:14:28 +00:00
|
|
|
<h2><a id="content" name="content">OLSR <%:Overview%></a></h2>
|
|
|
|
|
|
|
|
<div class="cbi-map">
|
|
|
|
<div class="cbi-section-node">
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value">
|
|
|
|
<div style="width: 15em; float:left;">
|
|
|
|
<label class="cbi-value-title"><%:Interfaces%></label>
|
|
|
|
</div>
|
2010-12-17 02:14:28 +00:00
|
|
|
<div class="cbi-value-field">
|
|
|
|
<div style="width: 6em; float:left;">
|
2013-01-07 10:01:46 +00:00
|
|
|
<a href="<%=REQUEST_URI%>/interfaces">
|
2011-11-09 18:12:25 +00:00
|
|
|
<span id="nr_ifaces">
|
2012-02-08 18:36:26 +00:00
|
|
|
<%=nr_ifaces%>
|
2011-11-09 18:12:25 +00:00
|
|
|
<span>
|
2012-02-08 18:36:26 +00:00
|
|
|
</a>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<div style="padding-left: 21em;">
|
2011-11-09 18:12:25 +00:00
|
|
|
<span id="interfaces">
|
|
|
|
<%=interfaces%>
|
|
|
|
</span>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<br/>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
|
|
|
|
<div class="cbi-value">
|
|
|
|
<div style="width: 15em; float:left;">
|
|
|
|
<%:Neighbors%>
|
|
|
|
</div>
|
2010-12-17 02:14:28 +00:00
|
|
|
<div class="cbi-value-field">
|
|
|
|
<div style="width: 6em; float:left;">
|
2013-01-07 10:01:46 +00:00
|
|
|
<a href="<%=REQUEST_URI%>/neighbors">
|
2011-11-09 18:12:25 +00:00
|
|
|
<span id="nr_neigh">
|
2012-02-08 18:36:26 +00:00
|
|
|
<%=nr_neigh%>
|
2011-11-09 18:12:25 +00:00
|
|
|
</span>
|
2012-02-08 18:36:26 +00:00
|
|
|
</a>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<div style="padding-left: 21em;">
|
2011-11-09 18:12:25 +00:00
|
|
|
<span id="neighbors">
|
|
|
|
<%=neighbors%>
|
|
|
|
</span>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<br/>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
|
|
|
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value">
|
|
|
|
<div style="width: 15em; float:left;">
|
|
|
|
<%:Nodes%>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value-field">
|
|
|
|
<div style="width: 6em; float:left;">
|
2013-01-07 10:01:46 +00:00
|
|
|
<a href="<%=REQUEST_URI%>/topology">
|
2012-02-08 18:36:26 +00:00
|
|
|
<span id="nr_nodes">
|
|
|
|
<%=nr_nodes%>
|
|
|
|
</span>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<br/>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
|
|
|
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value">
|
|
|
|
<div style="width: 15em; float:left;">
|
|
|
|
<%:HNA%>
|
|
|
|
</div>
|
|
|
|
<div class="cbi-value-field">
|
|
|
|
<div style="width: 6em; float:left;">
|
2013-01-07 10:01:46 +00:00
|
|
|
<a href="<%=REQUEST_URI%>/hna">
|
2012-02-08 18:36:26 +00:00
|
|
|
<span id="nr_hna">
|
|
|
|
<%=nr_hna%>
|
|
|
|
</span>
|
|
|
|
</a>
|
|
|
|
</div>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<br/>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
|
|
|
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value">
|
|
|
|
<div style="width: 15em; float:left;">
|
|
|
|
<%:Links total%>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value-field">
|
|
|
|
<div style="width: 6em; float:left;">
|
2013-01-07 10:01:46 +00:00
|
|
|
<a href="<%=REQUEST_URI%>/topology">
|
2012-02-08 18:36:26 +00:00
|
|
|
<span id="nr_topo">
|
|
|
|
<%=nr_topo%>
|
|
|
|
</span>
|
|
|
|
</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<br/>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
|
|
|
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value">
|
|
|
|
<div style="width: 15em; float:left;">
|
|
|
|
<%:Links per node (average)%>
|
|
|
|
</div>
|
2011-11-09 18:12:25 +00:00
|
|
|
<div class="cbi-value-field">
|
2012-02-08 18:36:26 +00:00
|
|
|
<div style="width: 6em; float:left;">
|
|
|
|
<span id="meshfactor">
|
|
|
|
<%=meshfactor%>
|
|
|
|
</span>
|
|
|
|
</div>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<br/>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<br/>
|
2010-12-17 02:14:28 +00:00
|
|
|
|
|
|
|
<h2><a id="content" name="content">OLSR <%:Configuration%></a></h2>
|
|
|
|
|
|
|
|
<div class="cbi-map">
|
|
|
|
<div class="cbi-section-node">
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value">
|
|
|
|
<div style="width: 15em; float:left;">
|
|
|
|
<%:Version%>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value-field">
|
|
|
|
<%=ver.version%> (built <%=ver.date%> on <%=ver.host%>)
|
|
|
|
</div>
|
|
|
|
<br/>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
|
|
|
|
2012-02-08 18:36:26 +00:00
|
|
|
<div class="cbi-value">
|
|
|
|
<div style="width: 15em; float:left;">
|
|
|
|
<%:Download Config%>
|
|
|
|
</div>
|
2010-12-17 02:14:28 +00:00
|
|
|
<div class="cbi-value-field">
|
|
|
|
<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 %>
|
|
|
|
</div>
|
2012-02-08 18:36:26 +00:00
|
|
|
<br/>
|
2010-12-17 02:14:28 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<%+footer%>
|