Merge remote-tracking branch 'nodogsplash/master'
[lede-routing/.git] / luci-app-bmx6 / files / usr / lib / lua / luci / model / cbi / bmx6 / interfaces.lua
1 --[[
2     Copyright (C) 2011 Pau Escrich <pau@dabax.net>
3
4     This program is free software; you can redistribute it and/or modify
5     it under the terms of the GNU General Public License as published by
6     the Free Software Foundation; either version 2 of the License, or
7     (at your option) any later version.
8
9     This program is distributed in the hope that it will be useful,
10     but WITHOUT ANY WARRANTY; without even the implied warranty of
11     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12     GNU General Public License for more details.
13
14     You should have received a copy of the GNU General Public License along
15     with this program; if not, write to the Free Software Foundation, Inc.,
16     51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18     The full GNU General Public License is included in this distribution in
19     the file called "COPYING".
20 --]]
21
22 local sys = require("luci.sys")
23 local bmx6json = require("luci.model.bmx6json")
24 local m = Map("bmx6", "bmx6")
25
26 local eth_int = sys.net.devices()
27 local interfaces = m:section(TypedSection,"dev","Devices","")
28 interfaces.addremove = true
29 interfaces.anonymous = true
30
31 local intlv = interfaces:option(ListValue,"dev","Device")
32
33 for _,i in ipairs(eth_int) do
34         intlv:value(i,i)
35 end
36
37 -- Getting json and looking for device section
38 local json = bmx6json.get("options")
39
40 if json == nil or json.OPTIONS == nil then
41         m.message = "bmx6-json plugin is not running or some mistake in luci-bmx6 configuration, check /etc/config/luci-bmx6"
42         json = {}
43 else
44         json = json.OPTIONS
45 end
46
47 local dev = {}
48 for _,j in ipairs(json) do
49         if j.name == "dev" and j.CHILD_OPTIONS ~= nil then
50                 dev = j.CHILD_OPTIONS
51                 break
52         end
53 end
54
55 local help = ""
56 local name = ""
57
58 for _,o in ipairs(dev) do
59         if o.name ~= nil then
60                 help = ""
61                 name = o.name
62                 if o.help ~= nil then
63                         help = bmx6json.text2html(o.help)
64                 end
65
66                 if o.syntax ~= nil then
67                         help = help .. "<br/><strong>Syntax: </strong>" .. bmx6json.text2html(o.syntax)
68                 end
69
70                 value = interfaces:option(Value,name,name,help)
71                 value.optional = true
72         end
73 end
74
75
76 return m
77