luci-app-babeld: add babeld overview
[project/luci.git] / applications / luci-app-babeld / luasrc / model / cbi / babeld.lua
1 m = Map("babeld", translate("Babeld Overview"))
2 m.pageaction = false
3
4 s = m:section(NamedSection, "__babeldoverview__")
5
6 function s.render(self, sid)
7 local tpl = require "luci.template"
8
9 tpl.render_string([[
10 <%
11 local utl = require "luci.util"
12 local v6_port = 33123
13 -- FIXME: check if call is correct
14 local dump = utl.exec("(echo dump | nc ::1 %d)" % v6_port)
15 local t = {}
16
17 for strline in string.gmatch(dump, "[^\n]+") do
18 t[#t+1] = strline;
19 end
20
21 local babel_version = t[1]
22 local babeld_version = t[2]
23 local babeld_host = string.split(t[3], " ")[2]
24 local babeld_id = string.split(t[4], " ")[2]
25 local babeld_status = t[5]
26
27 %>
28 <div class="cbi-section-node">
29 <h3>Babel-Info</h3>
30 <div class="table" id=babel_status_main">
31 <div class="tr table-titles">
32 <div class="th">Version</div>
33 <div class="th">Version-Daemon</div>
34 <div class="th">Host</div>
35 <div class="th">ID</div>
36 <div class="th">Status</div>
37 </div>
38 <div class="tr">
39 <div class="td"><%= babel_version %></div>
40 <div class="td"><%= babeld_version %></div>
41 <div class="td"><%= babeld_host %></div>
42 <div class="td"><%= babeld_id %></div>
43 <div class="td"><%= babeld_status %></div>
44 </div>
45 </div>
46 </div>
47
48 <%
49 local xroutes = {}
50 for key,value in ipairs(t) do
51 if string.match(value, "xroute") then
52 xroutes[#xroutes+1] = value
53 end
54 end
55 %>
56
57 <div class="cbi-section-node">
58 <h3>X-Routes</h3>
59 <div class="table" id=babel_overview_xroute">
60 <div class="tr table-titles">
61 <div class="th">Route</div>
62 <div class="th">Prefix</div>
63 <div class="th">From</div>
64 <div class="th">Metric</div>
65 </div>
66 <%
67 for key,route in ipairs(xroutes) do
68 local route_sep = string.split(route," ")
69 %>
70 <div class="tr">
71 <div class="td"><%= route_sep[3] %></div>
72 <div class="td"><%= route_sep[5] %></div>
73 <div class="td"><%= route_sep[7] %></div>
74 <div class="td"><%= route_sep[9] %></div>
75 </div>
76 <%
77 end
78 %>
79 </div>
80 </div>
81
82 <%
83 local routes = {}
84 for key,value in ipairs(t) do
85 if string.match(value, "add route") then
86 routes[#routes+1] = value
87 end
88 end
89 %>
90
91 <div class="cbi-section-node">
92 <h3>Routes</h3>
93 <div class="table" id=babel_overview_route">
94 <div class="tr table-titles">
95 <div class="th">Prefix</div>
96 <div class="th">From</div>
97 <div class="th">Installed</div>
98 <div class="th">ID</div>
99 <div class="th">Metric</div>
100 <div class="th">Ref-Metric</div>
101 <div class="th">Via</div>
102 <div class="th">Interface</div>
103 </div>
104 <%
105 for key,route in ipairs(routes) do
106 local route_sep = string.split(route," ")
107 %>
108
109 <div class="tr">
110 <div class="td"><%= route_sep[5] %></div>
111 <div class="td"><%= route_sep[7] %></div>
112 <div class="td"><%= route_sep[9] %></div>
113 <div class="td"><%= route_sep[11] %></div>
114 <div class="td"><%= route_sep[13] %></div>
115 <div class="td"><%= route_sep[15] %></div>
116 <div class="td"><%= route_sep[17] %></div>
117 <div class="td"><%= route_sep[19] %></div>
118 </div>
119 <%
120 end
121 %>
122 </div>
123 </div>
124 ]])
125 end
126
127 return m