modules/freifunk: Fix default route display for virtual interfaces. while at it,...
[project/luci.git] / modules / freifunk / luasrc / view / freifunk / public_status.htm
index 46bff69..953cda6 100644 (file)
@@ -1,12 +1,11 @@
 <%
 <%
-
 local sys = require "luci.sys"
 local twa = require "luci.tools.webadmin"
 
 -- System
 local model, system, memtotal, memcached, membuffers, memfree, bogomips = sys.sysinfo()
 local uptime = twa.date_format(tonumber(sys.uptime()))
 local sys = require "luci.sys"
 local twa = require "luci.tools.webadmin"
 
 -- System
 local model, system, memtotal, memcached, membuffers, memfree, bogomips = sys.sysinfo()
 local uptime = twa.date_format(tonumber(sys.uptime()))
-local_time = os.date("%a, %d %b %Y, %H:%M:%S")
+local time = os.date("%a, %d %b %Y, %H:%M:%S")
 local load1, load5, load15 = sys.loadavg()
 local load = string.format("%.2f, %.2f, %.2f", load1, load5, load15)
 
 local load1, load5, load15 = sys.loadavg()
 local load = string.format("%.2f, %.2f, %.2f", load1, load5, load15)
 
@@ -53,23 +52,75 @@ if defroutev4 then
        defroutev4.dest = defroutev4.dest:string()
        defroutev4.gateway = defroutev4.gateway:string()
 else
        defroutev4.dest = defroutev4.dest:string()
        defroutev4.gateway = defroutev4.gateway:string()
 else
+       -- probably policy routing activated, try olsr-default table
        local dr4 = sys.exec("ip r s t olsr-default")
        if dr4 then
                defroutev4 = { }
        local dr4 = sys.exec("ip r s t olsr-default")
        if dr4 then
                defroutev4 = { }
-               defroutev4.dest, defroutev4.gateway, defroutev4.device, defroutev4.metric = dr4:match("^(%w+) via (%d+.%d+.%d+.%d+) dev (%w+) +metric (%d+)")
+               defroutev4.dest, defroutev4.gateway, defroutev4.device, defroutev4.metric = dr4:match("^(%w+) via (%d+.%d+.%d+.%d+) dev ([%w-]+) +metric (%d+)")
        end
 end
 
        end
 end
 
+if defroutev6 then
+       defroutev6.dest = defroutev6.dest:string()
+       defroutev6.nexthop = defroutev6.nexthop:string()
+end
 
 
+if luci.http.formvalue("status") == "1" then
+       local rv = { }
+       for dev in ipairs(netdevs) do
+               local j = { id = dev }
+               local iw = luci.sys.wifi.getiwinfo(dev)
+               if iw then
+                       local f
+                       for _, f in ipairs({
+                               "channel", "txpower", "bitrate", "signal", "noise",
+                               "quality", "quality_max", "mode", "ssid", "bssid", "encryption", "ifname"
+                       }) do
+                               j[f] = iw[f]
+                       end
+               end
+               rv[#rv+1] = j
+       end
+
+       if defroutev6 then
+               def6 = {
+                       gateway = defroutev6.nexthop,
+                       dest = defroutev6.dest,
+                       dev = defroutev6.device,
+                       metr = defroutev6.metric
+               }
+       end
+
+       if defroutev4 then
+               def4 = {
+                       gateway = defroutev4.gateway,
+                       dest = defroutev4.dest,
+                       dev = defroutev4.device,
+                       metr = defroutev4.metric
+               }
+       end
+
+       rv[#rv+1] = {
+               time = time,
+               uptime = uptime,
+               load = load,
+               mem = mem,
+               defroutev4 = def4,
+               defroutev6 = def6
+       }
+
+       luci.http.prepare_content("application/json")
+       luci.http.write_json(rv)
+       return
+end
 -%>
 
 <%+header%>
 
 -%>
 
 <%+header%>
 
-
 <script type="text/javascript" src="<%=resource%>/cbi.js"></script>
 
 <script type="text/javascript">//<![CDATA[
 <script type="text/javascript" src="<%=resource%>/cbi.js"></script>
 
 <script type="text/javascript">//<![CDATA[
-       XHR.poll(<%=interval%>, '<%=luci.dispatcher.build_url("freifunk", "status", "public_status_json", table.concat(netlist, ","))%>', null,
+        XHR.poll(<%=interval%> , '<%=REQUEST_URI%>', { status: 1 },
                function(x, st)
                {
                        if (st)
                function(x, st)
                {
                        if (st)
@@ -305,9 +356,9 @@ end
        if defroutev6 then %>
 
                                                <tr class="cbi-section-table-row cbi-rowstyle-2">
        if defroutev6 then %>
 
                                                <tr class="cbi-section-table-row cbi-rowstyle-2">
-                                                       <td class="cbi-value-field" id="v6dst"><%=defroutev6.dest:string()%></td>
+                                                       <td class="cbi-value-field" id="v6dst"><%=defroutev6.dest%></td>
                                                        <td class="cbi-value-field" id="v6dev"><%=defroutev6.device%></td>
                                                        <td class="cbi-value-field" id="v6dev"><%=defroutev6.device%></td>
-                                                       <td class="cbi-value-field" id="v6gw"><%=defroutev6.nexthop:string()%></td>
+                                                       <td class="cbi-value-field" id="v6gw"><%=defroutev6.nexthop%></td>
                                                        <td class="cbi-value-field" id="v6metr"><%=defroutev6.metric%></td>
                                                </tr>
 
                                                        <td class="cbi-value-field" id="v6metr"><%=defroutev6.metric%></td>
                                                </tr>