diff options
| author | Jokler <jokler.contact@gmail.com> | 2018-10-22 03:14:51 +0200 |
|---|---|---|
| committer | Jokler <jokler.contact@gmail.com> | 2018-10-22 03:14:51 +0200 |
| commit | f9e3022756ea454a31f797bfc9cfdc1d81ee86cf (patch) | |
| tree | b161e4283e85732b081f0c57b0500d67b07200e4 /src/plugins/factoids/sandbox.lua | |
| parent | 489b23850bd37f39c8ebabd4d59d5753923c3c07 (diff) | |
| download | frippy-f9e3022756ea454a31f797bfc9cfdc1d81ee86cf.tar.gz frippy-f9e3022756ea454a31f797bfc9cfdc1d81ee86cf.zip | |
Factoids: Rename to Factoid
Diffstat (limited to 'src/plugins/factoids/sandbox.lua')
| -rw-r--r-- | src/plugins/factoids/sandbox.lua | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/src/plugins/factoids/sandbox.lua b/src/plugins/factoids/sandbox.lua deleted file mode 100644 index a927535..0000000 --- a/src/plugins/factoids/sandbox.lua +++ /dev/null @@ -1,126 +0,0 @@ -function send(text) - local text = tostring(text) - local len = #output - if len < 1 then - output = { text } - else - output[len] = output[len] .. text - end -end - -function sendln(text) - send(text) - table.insert(output, "") -end - -function trim(s) - local from = s:match"^%s*()" - return from > #s and "" or s:match(".*%S", from) -end - -trimmedInput = trim(input) - -if trimmedInput == "" then - ioru = user -else - ioru = trimmedInput -end - -local sandbox_env = { - print = send, - println = sendln, - trim = trim, - eval = nil, - sleep = nil, - json = {decode = json_decode}, - args = args, - input = input, - user = user, - ioru = ioru, - channel = channel, - request = download, - string = string, - math = math, - table = table, - pairs = pairs, - ipairs = ipairs, - next = next, - select = select, - unpack = unpack, - tostring = tostring, - tonumber = tonumber, - type = type, - assert = assert, - error = error, - pcall = pcall, - xpcall = xpcall, - _VERSION = _VERSION -} - -sandbox_env.os = { - clock = os.clock, - time = os.time, - difftime = os.difftime -} - -sandbox_env.string.rep = nil -sandbox_env.string.dump = nil -sandbox_env.math.randomseed = nil - --- Temporary evaluation function -function eval(code) - local c, e = load(code, nil, nil, sandbox_env) - if c then - return c() - else - error(e) - end -end - --- Only sleeps for 1 second at a time --- This ensures that the timeout check can still run -function safesleep(dur) - while dur > 1000 do - dur = dur - 1000 - sleep(1000) - end - sleep(dur) -end - -sandbox_env.eval = eval -sandbox_env.sleep = safesleep - --- Check if the factoid timed out -function checktime() - if os.time() - time >= timeout then - error("Timed out after " .. timeout .. " seconds", 0) - else - -- Limit the cpu usage of factoids - sleep(1) - end -end - --- Check if the factoid uses too much memory -function checkmem() - if collectgarbage("count") > maxmem then - error("Factoid used over " .. maxmem .. " kbyte of ram") - end -end - -local f, e = load(factoid, nil, nil, sandbox_env) - --- Add timeout hook -time = os.time() --- The timeout is defined in seconds -timeout = 30 -debug.sethook(checktime, "l") --- Add memory check hook --- The max memory is defined in kilobytes -maxmem = 1000 -debug.sethook(checkmem, "l") - -if f then - f() -else - error(e) -end |
