applications/luci-asterisk: add the first few bits of reworked webif code
authorJo-Philipp Wich <jow@openwrt.org>
Sun, 11 Jan 2009 03:05:01 +0000 (03:05 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sun, 11 Jan 2009 03:05:01 +0000 (03:05 +0000)
applications/luci-asterisk/luasrc/controller/asterisk.lua
applications/luci-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua [new file with mode: 0644]
applications/luci-asterisk/luasrc/model/cbi/asterisk/trunks.lua [new file with mode: 0644]

index 541c67ef3e3320131a1011471c9cff2f1ca274f5..8200ce2e5c666ed4342972f2b17c7da8ac14fc28 100644 (file)
@@ -39,4 +39,10 @@ function index()
        entry({"admin", "services", "asterisk", "mod", "res", "feature"},
                cbi("asterisk-mod-res-feature"), "Feature Module Configuration", 9 )
 
+
+       entry({"admin", "asterisk"},                   cbi("asterisk/main"),       "Asterisk", 99).i18n = "asterisk"
+       entry({"admin", "asterisk", "trunks"},         cbi("asterisk/trunks"),     "Trunks",    1)
+       entry({"admin", "asterisk", "trunks", "sip"},  cbi("asterisk/trunk_sip"),  "SIP",       1).leaf = true
+
+
 end
diff --git a/applications/luci-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua b/applications/luci-asterisk/luasrc/model/cbi/asterisk/trunk_sip.lua
new file mode 100644 (file)
index 0000000..3d7e6dc
--- /dev/null
@@ -0,0 +1,93 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2008 Jo-Philipp Wich <xm@subsignal.org>
+
+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
+
+$Id$
+
+]]--
+
+local ast = require("luci.asterisk")
+
+--
+-- Specific SIP trunk
+--
+if arg[1] then
+       cbimap = Map("asterisk", "Edit SIP Trunk")
+
+       peer = cbimap:section(NamedSection, arg[1], "Foo")
+
+       name = peer:option(DummyValue, "username")
+
+       outproxy = peer:option(Value, "outboundproxy")
+       
+
+       return cbimap
+
+--
+-- Trunk overview
+--
+else
+       cbimap = Map("asterisk", "asterisk", "")
+
+       local sip_peers = { }
+       cbimap.uci:foreach("asterisk", "sip",
+               function(s)
+                       if s.type == "peer" then
+                               s.name = s['.name']
+                               s.info = ast.sip.peer(s.name)
+                               sip_peers[s.name] = s
+                       end
+               end)
+
+
+       sip_table = cbimap:section(Table, sip_peers, "SIP Trunks")
+       sip_table.template = "cbi/tblsection"
+       sip_table.extedit  = luci.dispatcher.build_url("admin", "asterisk", "trunks", "sip", "%s")
+
+       name = sip_table:option(DummyValue, "name")
+       user = sip_table:option(DummyValue, "username")
+
+       host = sip_table:option(DummyValue, "host")
+       function host.cfgvalue(self, s)
+               if sip_peers[s].info.address then
+                       return "%s:%i" %{ sip_peers[s].info.address, sip_peers[s].info.port }
+               else
+                       return "n/a"
+               end
+       end
+
+       context = sip_table:option(DummyValue, "context")
+       context.href = luci.dispatcher.build_url("admin", "asterisk", "dialplan")
+
+       nat = sip_table:option(DummyValue, "nat")
+       function nat.cfgvalue(self, s)
+               return sip_peers[s].info.Nat or "none"
+       end
+
+       online = sip_table:option(DummyValue, "online")
+       function online.cfgvalue(self, s)
+               if sip_peers[s].info.online == nil then
+                       return "n/a"
+               else
+                       return sip_peers[s].info.online and "yes" or "no"
+               end
+       end
+
+       delay = sip_table:option(DummyValue, "delay")
+       function delay.cfgvalue(self, s)
+               if sip_peers[s].info.online then
+                       return "%i ms" % sip_peers[s].info.delay
+               else
+                       return "n/a"
+               end
+       end
+
+       return cbimap
+end
diff --git a/applications/luci-asterisk/luasrc/model/cbi/asterisk/trunks.lua b/applications/luci-asterisk/luasrc/model/cbi/asterisk/trunks.lua
new file mode 100644 (file)
index 0000000..b9dd1df
--- /dev/null
@@ -0,0 +1,73 @@
+--[[
+LuCI - Lua Configuration Interface
+
+Copyright 2008 Jo-Philipp Wich <xm@subsignal.org>
+
+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
+
+$Id$
+
+]]--
+
+local ast = require("luci.asterisk")
+
+cbimap = Map("asterisk", "asterisk", "")
+
+local sip_peers = { }
+cbimap.uci:foreach("asterisk", "sip",
+       function(s)
+               if s.type == "peer" then
+                       s.name = s['.name']
+                       s.info = ast.sip.peer(s.name)
+                       sip_peers[s.name] = s
+               end
+       end)
+
+
+sip_table = cbimap:section(Table, sip_peers, "SIP Trunks")
+sip_table.template = "cbi/tblsection"
+sip_table.extedit  = luci.dispatcher.build_url("admin", "asterisk", "trunks", "sip", "%s")
+
+name = sip_table:option(DummyValue, "name")
+user = sip_table:option(DummyValue, "username")
+
+host = sip_table:option(DummyValue, "host")
+function host.cfgvalue(self, s)
+       if sip_peers[s].info.address then
+               return "%s:%i" %{ sip_peers[s].info.address, sip_peers[s].info.port }
+       else
+               return "n/a"
+       end
+end
+
+context = sip_table:option(DummyValue, "context")
+context.href = luci.dispatcher.build_url("admin", "asterisk", "dialplan")
+
+nat = sip_table:option(DummyValue, "nat")
+function nat.cfgvalue(self, s)
+       return sip_peers[s].info.Nat or "none"
+end
+
+online = sip_table:option(DummyValue, "online")
+function online.cfgvalue(self, s)
+       if sip_peers[s].info.online == nil then
+               return "n/a"
+       else
+               return sip_peers[s].info.online and "yes" or "no"
+       end
+end
+
+delay = sip_table:option(DummyValue, "delay")
+function delay.cfgvalue(self, s)
+       if sip_peers[s].info.online then
+               return "%i ms" % sip_peers[s].info.delay
+       else
+               return "n/a"
+       end
+end
+
+return cbimap