diff --git a/resources/install/scripts/ivr_menu.lua b/resources/install/scripts/ivr_menu.lua index a36ca6ea37..3700fff9bf 100644 --- a/resources/install/scripts/ivr_menu.lua +++ b/resources/install/scripts/ivr_menu.lua @@ -209,10 +209,10 @@ dofile(scripts_dir.."/resources/functions/base64.lua"); --get the base64 recording_base64 = row["recording_base64"]; - + --add the path to filename ivr_menu_greet_long = recordings_dir.."/"..ivr_menu_greet_long; - + --save the recording to the file system if (string.len(recording_base64) > 32) then local file = io.open(ivr_menu_greet_long, "w"); @@ -233,10 +233,10 @@ dofile(scripts_dir.."/resources/functions/base64.lua"); --get the base64 recording_base64 = row["recording_base64"]; - + --add the path to filename ivr_menu_greet_short = recordings_dir.."/"..ivr_menu_greet_short; - + --save the recording to the file system if (string.len(recording_base64) > 32) then local file = io.open(ivr_menu_greet_short, "w"); diff --git a/resources/install/scripts/resources/functions/base64.lua b/resources/install/scripts/resources/functions/base64.lua index 9dbe288258..2bbce53729 100644 --- a/resources/install/scripts/resources/functions/base64.lua +++ b/resources/install/scripts/resources/functions/base64.lua @@ -1,36 +1,13 @@ --- Lua 5.1+ base64 v3.0 (c) 2009 by Alex Kloss --- licensed under the terms of the LGPL2 -base64={} +base64 = {} --- character table string -local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - --- encoding -function base64.encode(data) - return ((data:gsub('.', function(x) - local r,b='',x:byte() - for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end - return r; - end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x) - if (#x < 6) then return '' end - local c=0 - for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end - return b:sub(c+1,c+1) - end)..({ '', '==', '=' })[#data%3+1]) +-- encode a string and return a base64 string +function base64.encode(s) + local mime = require("mime"); + return (mime.b64(s)); end --- decoding -function base64.decode(data) - data = string.gsub(data, '[^'..b..'=]', '') - return (data:gsub('.', function(x) - if (x == '=') then return '' end - local r,f='',(b:find(x)-1) - for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end - return r; - end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x) - if (#x ~= 8) then return '' end - local c=0 - for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end - return string.char(c) - end)) +--decode a base64 string and return a string +function base64.decode(s) + local mime = require("mime"); + return (mime.unb64(s)); end \ No newline at end of file