aboutsummaryrefslogtreecommitdiff
path: root/builtin/game
diff options
context:
space:
mode:
authorJeija <norrepli@gmail.com>2016-02-18 11:38:47 +0100
committerest31 <MTest31@outlook.com>2016-02-22 15:39:41 +0100
commit31e0667a4a53a238d0321194b57b083bd74c0a5b (patch)
tree24c049c95a08b82f45dcde77419f50ee3a00639f /builtin/game
parenta3892f5a6632550bf0c14c18e6902f6ae06bb567 (diff)
downloadminetest-31e0667a4a53a238d0321194b57b083bd74c0a5b.tar.gz
minetest-31e0667a4a53a238d0321194b57b083bd74c0a5b.tar.bz2
minetest-31e0667a4a53a238d0321194b57b083bd74c0a5b.zip
Add Lua interface to HTTPFetchRequest
This allows mods to perform both asynchronous and synchronous HTTP requests. Mods are only granted access to HTTP APIs if either mod security is disabled or if they are whitelisted in any of the the secure.http_mods and secure.trusted_mods settings. Adds httpfetch_caller_alloc_secure to generate random, non-predictable caller IDs so that lua mods cannot spy on each others HTTP queries.
Diffstat (limited to 'builtin/game')
-rw-r--r--builtin/game/misc.lua19
1 files changed, 19 insertions, 0 deletions
diff --git a/builtin/game/misc.lua b/builtin/game/misc.lua
index bacadf18f..d0e67bd88 100644
--- a/builtin/game/misc.lua
+++ b/builtin/game/misc.lua
@@ -178,3 +178,22 @@ function core.raillike_group(name)
end
return id
end
+
+-- HTTP callback interface
+function core.http_add_fetch(httpenv)
+ httpenv.fetch = function(req, callback)
+ local handle = httpenv.fetch_async(req)
+
+ local function update_http_status()
+ local res = httpenv.fetch_async_get(handle)
+ if res.completed then
+ callback(res)
+ else
+ core.after(0, update_http_status)
+ end
+ end
+ core.after(0, update_http_status)
+ end
+
+ return httpenv
+end