#include <s_security.h>
Public Member Functions | |
void | initializeSecurity () |
void | initializeSecurityClient () |
Public Member Functions inherited from ScriptApiBase | |
ScriptApiBase (ScriptingType type) | |
ScriptApiBase () | |
virtual | ~ScriptApiBase () |
DISABLE_CLASS_COPY (ScriptApiBase) | |
void | loadMod (const std::string &script_path, const std::string &mod_name) |
void | loadScript (const std::string &script_path) |
void | runCallbacksRaw (int nargs, RunCallbacksMode mode, const char *fxn) |
void | addObjectReference (ServerActiveObject *cobj) |
void | removeObjectReference (ServerActiveObject *cobj) |
ScriptingType | getType () |
IGameDef * | getGameDef () |
Server * | getServer () |
const std::string & | getOrigin () |
void | setOriginDirect (const char *origin) |
void | setOriginFromTableRaw (int index, const char *fxn) |
void | clientOpenLibs (lua_State *L) |
void | checkSetByBuiltin () |
Static Public Member Functions | |
static bool | isSecure (lua_State *L) |
static bool | safeLoadString (lua_State *L, const std::string &code, const char *chunk_name) |
static bool | safeLoadFile (lua_State *L, const char *path, const char *display_name=NULL) |
static bool | checkWhitelisted (lua_State *L, const std::string &setting) |
static bool | checkPath (lua_State *L, const char *path, bool write_required, bool *write_allowed=NULL) |
Static Public Member Functions inherited from ScriptApiBase | |
static std::string | getCurrentModNameInsecure (lua_State *L) |
static std::string | getCurrentModName (lua_State *L) |
Private Member Functions | |
int | getThread (lua_State *L) |
void | setLuaEnv (lua_State *L, int thread) |
void | createEmptyEnv (lua_State *L) |
Static Private Member Functions | |
static int | sl_g_dofile (lua_State *L) |
static int | sl_g_load (lua_State *L) |
static int | sl_g_loadfile (lua_State *L) |
static int | sl_g_loadstring (lua_State *L) |
static int | sl_g_require (lua_State *L) |
static int | sl_io_open (lua_State *L) |
static int | sl_io_input (lua_State *L) |
static int | sl_io_output (lua_State *L) |
static int | sl_io_lines (lua_State *L) |
static int | sl_os_rename (lua_State *L) |
static int | sl_os_remove (lua_State *L) |
static int | sl_os_setlocale (lua_State *L) |
Additional Inherited Members | |
Protected Member Functions inherited from ScriptApiBase | |
lua_State * | getStack () |
void | realityCheck () |
void | scriptError (int result, const char *fxn) |
void | stackDump (std::ostream &o) |
void | setGameDef (IGameDef *gamedef) |
Environment * | getEnv () |
void | setEnv (Environment *env) |
EmergeThread * | getEmergeThread () |
void | setEmergeThread (EmergeThread *emerge) |
void | objectrefGetOrCreate (lua_State *L, ServerActiveObject *cobj) |
void | pushPlayerHPChangeReason (lua_State *L, const PlayerHPChangeReason &reason) |
Protected Member Functions inherited from LuaHelper | |
template<> | |
bool | readParam (lua_State *L, int index) |
template<> | |
s16 | readParam (lua_State *L, int index) |
template<> | |
int | readParam (lua_State *L, int index) |
template<> | |
float | readParam (lua_State *L, int index) |
template<> | |
v2s16 | readParam (lua_State *L, int index) |
template<> | |
v2f | readParam (lua_State *L, int index) |
template<> | |
v3f | readParam (lua_State *L, int index) |
template<> | |
std::string_view | readParam (lua_State *L, int index) |
template<> | |
std::string | readParam (lua_State *L, int index) |
template<> | |
std::string_view | readParam (lua_State *L, int index) |
Read a string from Lua state L at index without copying it. | |
Static Protected Member Functions inherited from LuaHelper | |
template<typename T > | |
static T | readParam (lua_State *L, int index) |
Read a value using a template type T from Lua state L at index. | |
template<typename T > | |
static T | readParam (lua_State *L, int index, const T &default_value) |
Read a value using a template type T from Lua state L at index. | |
Protected Attributes inherited from ScriptApiBase | |
std::recursive_mutex | m_luastackmutex |
std::string | m_last_run_mod |
bool | m_secure = false |
int | m_lock_recursion_count {} |
std::thread::id | m_owning_thread |
|
static |
References fs::AbsolutePath(), BUILTIN_MOD_NAME, checkModNameWhitelisted(), DIR_DELIM, g_settings_path, ScriptApiBase::getCurrentModNameInsecure(), fs::GetFilenameFromPath(), ScriptApiBase::getGameDef(), IGameDef::getGameSpec(), IGameDef::getModDataPath(), IGameDef::getMods(), IGameDef::getModSpec(), ModApiBase::getScriptApiBase(), IGameDef::getWorldPath(), log_deprecated(), lowercase(), ModSpec::path, SubgameSpec::path, fs::PathStartsWith(), and fs::RemoveLastPathComponent().
|
static |
References checkModNameWhitelisted(), and ScriptApiBase::getCurrentModName().
Referenced by ModApiHttp::l_request_http_api(), and ModApiUtil::l_request_insecure_environment().
|
private |
Referenced by initializeSecurity(), and initializeSecurityClient().
|
private |
References FATAL_ERROR_IF.
Referenced by initializeSecurity(), and initializeSecurityClient().
void ScriptApiSecurity::initializeSecurity | ( | ) |
References copy_safe(), createEmptyEnv(), CUSTOM_RIDX_GLOBALS_BACKUP, ScriptApiBase::getStack(), getThread(), ScriptApiBase::m_secure, remove(), SECURE_API, setLuaEnv(), and shallow_copy_table().
Referenced by AsyncWorkerThread::AsyncWorkerThread(), EmergeScripting::EmergeScripting(), and ServerScripting::ServerScripting().
void ScriptApiSecurity::initializeSecurityClient | ( | ) |
References copy_safe(), createEmptyEnv(), ScriptApiBase::getStack(), getThread(), ScriptApiBase::m_secure, SECURE_API, and setLuaEnv().
Referenced by ClientScripting::ClientScripting().
|
static |
References Client, CUSTOM_RIDX_GLOBALS_BACKUP, and ModApiBase::getScriptApiBase().
Referenced by checkSettingSecurity(), and ModApiUtil::l_request_insecure_environment().
|
static |
References safeLoadString().
Referenced by ScriptApiBase::loadScript(), and sl_g_loadfile().
|
static |
Referenced by safeLoadFile(), sl_g_load(), sl_g_loadfile(), and sl_g_loadstring().
|
private |
References FATAL_ERROR_IF.
Referenced by initializeSecurity(), and initializeSecurityClient().
|
staticprivate |
|
staticprivate |
|
staticprivate |
References CHECK_SECURE_PATH_INTERNAL, Client, ModApiBase::getScriptApiBase(), ScriptApiBase::getType(), LuaHelper::readParam(), safeLoadFile(), and safeLoadString().
Referenced by sl_g_dofile().
|
staticprivate |
|
staticprivate |
|
staticprivate |
References CHECK_SECURE_PATH_INTERNAL, and push_original().
|
staticprivate |
References CHECK_SECURE_PATH_INTERNAL, and push_original().
|
staticprivate |
References CHECK_SECURE_PATH_INTERNAL, and push_original().
|
staticprivate |
References CHECK_SECURE_PATH_INTERNAL, and push_original().
|
staticprivate |
References CHECK_SECURE_PATH_INTERNAL, and push_original().
|
staticprivate |
References CHECK_SECURE_PATH_INTERNAL, and push_original().
|
staticprivate |