diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2012-02-14 15:17:48 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2012-02-14 15:17:48 +0000 |
commit | 1964491eaa6b1b0e12f52baa55dde0a44a82e755 (patch) | |
tree | a00997228a581e2da4a29ffbf72bed757829a955 | |
parent | dfd302bb1c2f0557921dcfb4330dbeaaa4ae427c (diff) |
applications: add luci-ltqtapi, provides port status monitoring and VoIP control for Lantiq boards
6 files changed, 144 insertions, 0 deletions
diff --git a/applications/luci-ltqtapi/Makefile b/applications/luci-ltqtapi/Makefile new file mode 100644 index 000000000..77925c4e3 --- /dev/null +++ b/applications/luci-ltqtapi/Makefile @@ -0,0 +1,4 @@ +PO = telephony + +include ../../build/config.mk +include ../../build/module.mk diff --git a/applications/luci-ltqtapi/luasrc/controller/ltqtapi.lua b/applications/luci-ltqtapi/luasrc/controller/ltqtapi.lua new file mode 100644 index 000000000..81baf397d --- /dev/null +++ b/applications/luci-ltqtapi/luasrc/controller/ltqtapi.lua @@ -0,0 +1,51 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2019 John Crispin <blogic@openwrt.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 + +]]-- + +module("luci.controller.ltqtapi", package.seeall) + +function index() + if not nixio.fs.access("/etc/config/telephony") then + return + end + + page = node("admin", "telephony") + page.target = firstchild() + page.title = _("VoIP") + page.order = 90 + page.i18n = "telephony" + + entry({"admin", "telephony", "account"}, cbi("luci_ltqtapi/account") , _("Account"), 10) + entry({"admin", "telephony", "contact"}, cbi("luci_ltqtapi/contact") , _("Contacts"), 20) + + entry({"admin", "telephony", "status"}, call("tapi_status")).leaf = true +end + +function tapi_status() + local st = { } + local state = require "luci.model.uci".cursor_state() + state:load("telephony") + + st.status = "Offline"; + if state:get("telephony", "state", "port1", "0") == "0" then + st.line1 = "Idle"; + else + st.line1 = "Calling"; + end + if state:get("telephony", "state", "port2", "0") == "0" then + st.line2 = "Idle"; + else + st.line2 = "Calling"; + end + luci.http.prepare_content("application/json") + luci.http.write_json(st) +end diff --git a/applications/luci-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua b/applications/luci-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua new file mode 100644 index 000000000..40e00f346 --- /dev/null +++ b/applications/luci-ltqtapi/luasrc/model/cbi/luci_ltqtapi/account.lua @@ -0,0 +1,26 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2010 John Crispin <blogic@openwrt.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 + +]]-- + +m = Map("telephony", translate("VoIP")) +m.on_after_commit = function() luci.sys.call("/etc/init.d/telephony restart") end + +s = m:section(TypedSection, "account", translate("Account"), translate("Here You can specify the SIP account that you want to use.")) +s.anonymous = true +s.addremove = true + +s:option(Value, "realm", translate("Realm")) +s:option(Value, "username", translate("Username")) +s:option(Value, "password", translate("Password")) +s:option(Flag, "disabled", translate("Disabled")) + +return m diff --git a/applications/luci-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua b/applications/luci-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua new file mode 100644 index 000000000..08311b515 --- /dev/null +++ b/applications/luci-ltqtapi/luasrc/model/cbi/luci_ltqtapi/contact.lua @@ -0,0 +1,30 @@ +--[[ +LuCI - Lua Configuration Interface + +Copyright 2010 John Crispin <blogic@openwrt.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 + +]]-- + +m = Map("telephony", translate("VoIP")) +m.on_after_commit = function() luci.sys.call("/etc/init.d/telephony reload") end + +s = m:section(TypedSection, "contact", translate("Contact"), translate("Here You can specify the SIP contacts that you want to use.")) +s.anonymous = true +s.addremove = true +s.template = "cbi/tsection" + +s:option(Value, "desc", translate("Name")) +s:option(Value, "code", translate("Shortdial")) +s:option(Value, "dial", translate("Dial")) + +t = s:option(ListValue, "type", translate("Type")) +t:value("sip", "SIP") +t:value("realm", "Landline") + +return m diff --git a/applications/luci-ltqtapi/luasrc/view/admin_status/index/telephony.htm b/applications/luci-ltqtapi/luasrc/view/admin_status/index/telephony.htm new file mode 100644 index 000000000..c7a58dd3e --- /dev/null +++ b/applications/luci-ltqtapi/luasrc/view/admin_status/index/telephony.htm @@ -0,0 +1 @@ +<%+telephony_status%> diff --git a/applications/luci-ltqtapi/luasrc/view/telephony_status.htm b/applications/luci-ltqtapi/luasrc/view/telephony_status.htm new file mode 100644 index 000000000..234f90934 --- /dev/null +++ b/applications/luci-ltqtapi/luasrc/view/telephony_status.htm @@ -0,0 +1,32 @@ +<script type="text/javascript">//<![CDATA[ +XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "telephony", "status")%>', null, + function(x, st) + { + var tb = document.getElementById('telephony_status_table'); + if (st && tb) + { + tb.deleteRow(1); + var tr = tb.insertRow(-1); + tr.className = 'cbi-section-table-row cbi-rowstyle-1'; + + tr.insertCell(-1).innerHTML = st.status; + tr.insertCell(-1).innerHTML = st.line1; + tr.insertCell(-1).innerHTML = st.line2; + } + } +); +//]]></script> + +<fieldset class="cbi-section"> + <legend><%:Current Telephony State%></legend> + <table class="cbi-section-table" id="telephony_status_table"> + <tr class="cbi-section-table-titles"> + <th class="cbi-section-table-cell"><%:Uplink%></th> + <th class="cbi-section-table-cell"><%:Port1%></th> + <th class="cbi-section-table-cell"><%:Port2%></th> + </tr> + <tr class="cbi-section-table-row"> + <td colspan="5"><em><br /><%:Collecting data...%></em></td> + </tr> + </table> +</fieldset> |