Add base64 encoding and decoding to the lua api. (#3919)
This commit is contained in:
parent
c4e083f7e1
commit
62d15ac7c1
|
@ -2438,6 +2438,10 @@ These functions return the leftover itemstack.
|
||||||
* See documentation on `minetest.compress()` for supported compression methods.
|
* See documentation on `minetest.compress()` for supported compression methods.
|
||||||
* currently supported.
|
* currently supported.
|
||||||
* `...` indicates method-specific arguments. Currently, no methods use this.
|
* `...` indicates method-specific arguments. Currently, no methods use this.
|
||||||
|
* `minetest.encode_base64(string)`: returns string encoded in base64
|
||||||
|
* Encodes a string in base64.
|
||||||
|
* `minetest.decode_base64(string)`: returns string
|
||||||
|
* Decodes a string encoded in base64.
|
||||||
* `minetest.is_protected(pos, name)`: returns boolean
|
* `minetest.is_protected(pos, name)`: returns boolean
|
||||||
* Returns true, if player `name` shouldn't be abled to dig at `pos` or do other
|
* Returns true, if player `name` shouldn't be abled to dig at `pos` or do other
|
||||||
actions, defineable by mods, due to some mod-defined ownership-like concept.
|
actions, defineable by mods, due to some mod-defined ownership-like concept.
|
||||||
|
|
|
@ -210,6 +210,10 @@ string:trim()
|
||||||
^ eg. string.trim("\n \t\tfoo bar\t ") == "foo bar"
|
^ eg. string.trim("\n \t\tfoo bar\t ") == "foo bar"
|
||||||
core.is_yes(arg) (possible in async calls)
|
core.is_yes(arg) (possible in async calls)
|
||||||
^ returns whether arg can be interpreted as yes
|
^ returns whether arg can be interpreted as yes
|
||||||
|
minetest.encode_base64(string) (possible in async calls)
|
||||||
|
^ Encodes a string in base64.
|
||||||
|
minetest.decode_base64(string) (possible in async calls)
|
||||||
|
^ Decodes a string encoded in base64.
|
||||||
|
|
||||||
Version compat:
|
Version compat:
|
||||||
core.get_min_supp_proto()
|
core.get_min_supp_proto()
|
||||||
|
|
|
@ -32,6 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
#include "filesys.h"
|
#include "filesys.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "util/auth.h"
|
#include "util/auth.h"
|
||||||
|
#include "util/base64.h"
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
// log([level,] text)
|
// log([level,] text)
|
||||||
|
@ -320,6 +321,34 @@ int ModApiUtil::l_decompress(lua_State *L)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// encode_base64(string)
|
||||||
|
int ModApiUtil::l_encode_base64(lua_State *L)
|
||||||
|
{
|
||||||
|
NO_MAP_LOCK_REQUIRED;
|
||||||
|
|
||||||
|
size_t size;
|
||||||
|
const char *data = luaL_checklstring(L, 1, &size);
|
||||||
|
|
||||||
|
std::string out = base64_encode((const unsigned char *)(data), size);
|
||||||
|
|
||||||
|
lua_pushlstring(L, out.data(), out.size());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// decode_base64(string)
|
||||||
|
int ModApiUtil::l_decode_base64(lua_State *L)
|
||||||
|
{
|
||||||
|
NO_MAP_LOCK_REQUIRED;
|
||||||
|
|
||||||
|
size_t size;
|
||||||
|
const char *data = luaL_checklstring(L, 1, &size);
|
||||||
|
|
||||||
|
std::string out = base64_decode(std::string(data, size));
|
||||||
|
|
||||||
|
lua_pushlstring(L, out.data(), out.size());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// mkdir(path)
|
// mkdir(path)
|
||||||
int ModApiUtil::l_mkdir(lua_State *L)
|
int ModApiUtil::l_mkdir(lua_State *L)
|
||||||
{
|
{
|
||||||
|
@ -433,6 +462,9 @@ void ModApiUtil::Initialize(lua_State *L, int top)
|
||||||
API_FCT(get_dir_list);
|
API_FCT(get_dir_list);
|
||||||
|
|
||||||
API_FCT(request_insecure_environment);
|
API_FCT(request_insecure_environment);
|
||||||
|
|
||||||
|
API_FCT(encode_base64);
|
||||||
|
API_FCT(decode_base64);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModApiUtil::InitializeAsync(AsyncEngine& engine)
|
void ModApiUtil::InitializeAsync(AsyncEngine& engine)
|
||||||
|
@ -459,5 +491,8 @@ void ModApiUtil::InitializeAsync(AsyncEngine& engine)
|
||||||
|
|
||||||
ASYNC_API_FCT(mkdir);
|
ASYNC_API_FCT(mkdir);
|
||||||
ASYNC_API_FCT(get_dir_list);
|
ASYNC_API_FCT(get_dir_list);
|
||||||
|
|
||||||
|
ASYNC_API_FCT(encode_base64);
|
||||||
|
ASYNC_API_FCT(decode_base64);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,6 +95,12 @@ private:
|
||||||
// request_insecure_environment()
|
// request_insecure_environment()
|
||||||
static int l_request_insecure_environment(lua_State *L);
|
static int l_request_insecure_environment(lua_State *L);
|
||||||
|
|
||||||
|
// encode_base64(string)
|
||||||
|
static int l_encode_base64(lua_State *L);
|
||||||
|
|
||||||
|
// decode_base64(string)
|
||||||
|
static int l_decode_base64(lua_State *L);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void Initialize(lua_State *L, int top);
|
static void Initialize(lua_State *L, int top);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue