modules/freifunk: Make display of ipv4 default route in public status work with freif...
authorManuel Munz <freifunk@somakoma.de>
Mon, 10 Oct 2011 16:04:27 +0000 (16:04 +0000)
committerManuel Munz <freifunk@somakoma.de>
Mon, 10 Oct 2011 16:04:27 +0000 (16:04 +0000)
modules/freifunk/luasrc/controller/freifunk/freifunk.lua
modules/freifunk/luasrc/view/freifunk/public_status.htm

index 89cd0ff50cf531fb58064091e91e86704ff0de79..1d0175ff1e8dfa7c4bc6be542e4b1ebd2fcb3f5b 100644 (file)
@@ -51,7 +51,7 @@ function index()
        page.order    = 20
        page.i18n     = "base"
        page.setuser  = false
-    page.setgroup = false
+       page.setgroup = false
 
        entry({"freifunk", "status.json"}, call("jsonstatus"))
        entry({"freifunk", "status", "zeroes"}, call("zeroes"), "Testdownload")
@@ -292,7 +292,18 @@ function public_status_json()
                dest = dr4.dest:string(),
                dev = dr4.device,
                metr = dr4.metric }
-       end
+       else
+               local dr = sys.exec("ip r s t olsr-default")
+               if dr then
+                       local dest, gateway, dev, metr = dr:match("^(%w+) via (%d+.%d+.%d+.%d+) dev (%w+) +metric (%d+)")
+                       def4 = {
+                               dest = dest,
+                               gateway = gateway,
+                               dev = dev,
+                               metr = metr
+                       }
+               end
+        end
        
        rv[#rv+1] = {
                time = os.date("%a, %d %b %Y, %H:%M:%S"),
index 9cb185688405dc9fa125f7821f7d3c7dab68fdb6..0203f2ae86bdfd03bfee35ed9dddd9277a5278c6 100644 (file)
@@ -49,6 +49,18 @@ local has_iwinfo = pcall(require, "iwinfo")
 local defroutev4 = sys.net.defaultroute()
 local defroutev6 = sys.net.defaultroute6()
 
+if defroutev4 then
+       defroutev4.dest = defroutev4.dest:string()
+       defroutev4.gateway = defroutev4.gateway:string()
+else
+       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+)$
+       end
+end
+
+
 -%>
 
 <%+header%>
@@ -283,9 +295,9 @@ local defroutev6 = sys.net.defaultroute6()
        <% if defroutev4 then %>
 
                                                <tr class="cbi-section-table-row cbi-rowstyle-1">
-                                                       <td class="cbi-value-field" id="v4dst"><%=defroutev4.dest:string()%></td>
+                                                       <td class="cbi-value-field" id="v4dst"><%=defroutev4.dest%></td>
                                                        <td class="cbi-value-field" id="v4dev"><%=defroutev4.device%></td>
-                                                       <td class="cbi-value-field" id="v4gw"><%=defroutev4.gateway:string()%></td>
+                                                       <td class="cbi-value-field" id="v4gw"><%=defroutev4.gateway%></td>
                                                        <td class="cbi-value-field" id="v4metr"><%=defroutev4.metric%></td>
                                                </tr>