applications: add luci-ltqtapi, provides port status monitoring and VoIP control for Lantiq boards
This commit is contained in:
parent
dfd302bb1c
commit
1964491eaa
6 changed files with 144 additions and 0 deletions
4
applications/luci-ltqtapi/Makefile
Normal file
4
applications/luci-ltqtapi/Makefile
Normal file
|
@ -0,0 +1,4 @@
|
|||
PO = telephony
|
||||
|
||||
include ../../build/config.mk
|
||||
include ../../build/module.mk
|
51
applications/luci-ltqtapi/luasrc/controller/ltqtapi.lua
Normal file
51
applications/luci-ltqtapi/luasrc/controller/ltqtapi.lua
Normal file
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
<%+telephony_status%>
|
32
applications/luci-ltqtapi/luasrc/view/telephony_status.htm
Normal file
32
applications/luci-ltqtapi/luasrc/view/telephony_status.htm
Normal file
|
@ -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>
|
Loading…
Reference in a new issue