83 lines
1.8 KiB
Lua
83 lines
1.8 KiB
Lua
#!/usr/bin/lua
|
|
|
|
local oaddr = arg[1]
|
|
local txt = arg[2]
|
|
local pid = arg[3]
|
|
|
|
if package.path:find(";/usr/lib/sms/?.lua") == nil then
|
|
package.path = package.path .. ";/usr/lib/sms/?.lua"
|
|
end
|
|
|
|
local utf8togsm = require "utf8togsm"
|
|
local pack7bit = require "pack7bit"
|
|
|
|
local isok = true
|
|
|
|
if #oaddr > 11 then
|
|
txt = oaddr .. " " .. txt
|
|
oaddr = "ROOter"
|
|
end
|
|
|
|
if #txt == 0 then
|
|
txt = "Usage: /usr/lib/sms/sys2sms.sh 'from' 'text to write here'"
|
|
end
|
|
|
|
utf8togsm.chktxt(txt)
|
|
local msg = utf8togsm["msg"]
|
|
local dcs = utf8togsm["dcs"]
|
|
local ud = utf8togsm["txt"]
|
|
|
|
local udl = string.format("%02X", math.floor(#ud / 2))
|
|
|
|
if msg ~= nil then
|
|
isok = false
|
|
end
|
|
|
|
if isok and dcs == "00" then
|
|
pack7bit.pack(udl, ud)
|
|
ud = pack7bit["pdu"]
|
|
end
|
|
if #oaddr == 0 or oaddr == ' ' then
|
|
oaddr = "ROOter"
|
|
end
|
|
if oaddr:sub(-1) == ' ' then
|
|
oaddr = oaddr:sub(1, -2)
|
|
end
|
|
local oaddrl = #oaddr * 2
|
|
if oaddrl > 14 then
|
|
oaddrl = oaddrl - 2
|
|
elseif oaddrl > 6 then
|
|
oaddrl = oaddrl - 1
|
|
end
|
|
oaddrl = string.format("%02X", oaddrl)
|
|
|
|
utf8togsm.chktxt(oaddr)
|
|
oaddr = utf8togsm["txt"]
|
|
|
|
if utf8togsm["dcs"] == "08" then
|
|
isok = false
|
|
end
|
|
|
|
pack7bit.pack(string.format("%02X", math.floor(#oaddr / 2)), oaddr)
|
|
oaddr = pack7bit["pdu"]
|
|
|
|
dtg = os.date("%y%m%d%H%M%S%z", os.time())
|
|
sign = dtg:sub(13, 13)
|
|
tz = dtg:sub(-4)
|
|
dtgif = ''
|
|
for j = 1, 11, 2 do
|
|
dtgif = dtgif .. dtg:sub(j + 1, j + 1) .. dtg:sub(j, j)
|
|
end
|
|
tz = string.format("%02d", math.floor((tonumber(tz:sub(1, 2) * 4)) + tonumber(tz:sub(3, 4) / 15)))
|
|
tz = tz:sub(2, 2) .. tz:sub(1, 1)
|
|
if sign == "-" then
|
|
tz = tz:sub(1, 1) .. string.format("%X", (tonumber(tz:sub(2, 2)) + 8))
|
|
end
|
|
|
|
pdu = "0004" .. oaddrl .. "D0" .. oaddr .. "00" .. dcs .. dtgif .. tz .. udl .. ud
|
|
|
|
if isok then
|
|
pdul = string.format("%03d", (math.floor(#pdu / 2) - 1))
|
|
os.execute("echo " .. pdul .. " " .. pdu .. " > /tmp/pdu" .. pid)
|
|
end
|