summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-asterisk/luasrc/asterisk.lua
diff options
context:
space:
mode:
Diffstat (limited to 'applications/luci-asterisk/luasrc/asterisk.lua')
-rw-r--r--applications/luci-asterisk/luasrc/asterisk.lua59
1 files changed, 59 insertions, 0 deletions
diff --git a/applications/luci-asterisk/luasrc/asterisk.lua b/applications/luci-asterisk/luasrc/asterisk.lua
index 908986366..2967b42c0 100644
--- a/applications/luci-asterisk/luasrc/asterisk.lua
+++ b/applications/luci-asterisk/luasrc/asterisk.lua
@@ -25,6 +25,11 @@ AST_BIN = "/usr/sbin/asterisk"
AST_FLAGS = "-r -x"
+--- LuCI Asterisk - Resync uci context
+function uci_resync()
+ uci = luci.model.uci.cursor()
+end
+
--- LuCI Asterisk io interface
-- Handles low level io.
-- @type module
@@ -318,3 +323,57 @@ function dialzone.ucisection(i)
end)
return hash
end
+
+
+--- LuCI Asterisk - Dialplan
+-- @type module
+dialplan = luci.util.class()
+
+--- Parse a dialplan section
+-- @param plan Table containing the plan info
+-- @return Table with parsed information
+function dialplan.parse(z)
+ if z['.name'] then
+ local plan = {
+ zones = { },
+ name = z['.name'],
+ description = z.description or z['.name']
+ }
+
+ for _, name in ipairs(tools.parse_list(z.include)) do
+ local zone = dialzone.zone(name)
+ if zone then
+ plan.zones[#plan.zones+1] = zone
+ end
+ end
+
+ return plan
+ end
+end
+
+--- Get a list of known dial plans
+-- @return Associative table of plans and table of plan names
+function dialplan.plans()
+ local plans = { }
+ local pnames = { }
+ uci:foreach("asterisk", "dialplan",
+ function(p)
+ plans[p['.name']] = dialplan.parse(p)
+ pnames[#pnames+1] = p['.name']
+ end)
+ return plans, pnames
+end
+
+--- Get a specific dial plan
+-- @param name Name of the dial plan
+-- @return Table containing plan information
+function dialplan.plan(n)
+ local plan
+ uci:foreach("asterisk", "dialplan",
+ function(p)
+ if p['.name'] == n then
+ plan = dialplan.parse(p)
+ end
+ end)
+ return plan
+end