module("luci.controller.qmodem_sms", package.seeall)
local http = require "luci.http"
local fs = require "nixio.fs"
local json = require("luci.jsonc")
local modem_ctrl = "/usr/share/qmodem/modem_ctrl.sh "

function shell(command)
	local odpall = io.popen(command)
	local odp = odpall:read("*a")
	odpall:close()
	return odp
end

function index()
    --sim卡配置
	entry({"admin", "network", "qmodem", "modem_sms"},template("modem_sms/modem_sms"), luci.i18n.translate("SMS"), 11).leaf = true
	entry({"admin", "network", "qmodem", "send_sms"}, call("sendSMS"), nil).leaf = true
	entry({"admin", "network", "qmodem", "get_sms"}, call("getSMS"), nil).leaf = true
	entry({"admin", "network", "qmodem", "delete_sms"}, call("delSMS"), nil).leaf = true
end

function getSMS()
    local cfg_id = http.formvalue("cfg")
    response = shell(modem_ctrl .. "get_sms " .. cfg_id)
    http.prepare_content("application/json")
    http.write(response)
end

function sendSMS()
	local cfg_id = http.formvalue("cfg")
	local pdu = http.formvalue("pdu")
	if pdu then
		response = shell(modem_ctrl .. "send_raw_pdu " .. cfg_id .. " \"" .. pdu .. "\"")
	else
		local phone_number = http.formvalue("phone_number")
		local message_content = http.formvalue("message_content")
		json_cmd = string.format('{\\"phone_number\\":\\"%s\\",\\"message_content\\":\\"%s\\"}', phone_number, message_content)
		response = shell(modem_ctrl .. "send_sms " .. cfg_id .." \"".. json_cmd .. "\"")
		
	end
	http.prepare_content("application/json")
		http.write(response)
end

function delSMS()
	local cfg_id = http.formvalue("cfg")
	local index = http.formvalue("index")
	response = shell(modem_ctrl .. "delete_sms " .. cfg_id .. " \"" ..index.."\"")
	http.prepare_content("application/json")
	http.write(response)
end
