Luanti 5.10.0-dev
 
Loading...
Searching...
No Matches
ScriptApiSecurity Class Reference

#include <s_security.h>

+ Inheritance diagram for ScriptApiSecurity:
+ Collaboration diagram for ScriptApiSecurity:

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 ()
 
IGameDefgetGameDef ()
 
ServergetServer ()
 
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)
 
EnvironmentgetEnv ()
 
void setEnv (Environment *env)
 
EmergeThreadgetEmergeThread ()
 
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
 

Member Function Documentation

◆ checkPath()

bool ScriptApiSecurity::checkPath ( lua_State * L,
const char * path,
bool write_required,
bool * write_allowed = NULL )
static

◆ checkWhitelisted()

bool ScriptApiSecurity::checkWhitelisted ( lua_State * L,
const std::string & setting )
static

References checkModNameWhitelisted(), and ScriptApiBase::getCurrentModName().

Referenced by ModApiHttp::l_request_http_api(), and ModApiUtil::l_request_insecure_environment().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createEmptyEnv()

void ScriptApiSecurity::createEmptyEnv ( lua_State * L)
private

Referenced by initializeSecurity(), and initializeSecurityClient().

+ Here is the caller graph for this function:

◆ getThread()

int ScriptApiSecurity::getThread ( lua_State * L)
private

References FATAL_ERROR_IF.

Referenced by initializeSecurity(), and initializeSecurityClient().

+ Here is the caller graph for this function:

◆ initializeSecurity()

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().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initializeSecurityClient()

void ScriptApiSecurity::initializeSecurityClient ( )

References copy_safe(), createEmptyEnv(), ScriptApiBase::getStack(), getThread(), ScriptApiBase::m_secure, SECURE_API, and setLuaEnv().

Referenced by ClientScripting::ClientScripting().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isSecure()

bool ScriptApiSecurity::isSecure ( lua_State * L)
static

References Client, CUSTOM_RIDX_GLOBALS_BACKUP, and ModApiBase::getScriptApiBase().

Referenced by checkSettingSecurity(), and ModApiUtil::l_request_insecure_environment().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ safeLoadFile()

bool ScriptApiSecurity::safeLoadFile ( lua_State * L,
const char * path,
const char * display_name = NULL )
static

References safeLoadString().

Referenced by ScriptApiBase::loadScript(), and sl_g_loadfile().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ safeLoadString()

bool ScriptApiSecurity::safeLoadString ( lua_State * L,
const std::string & code,
const char * chunk_name )
static

Referenced by safeLoadFile(), sl_g_load(), sl_g_loadfile(), and sl_g_loadstring().

+ Here is the caller graph for this function:

◆ setLuaEnv()

void ScriptApiSecurity::setLuaEnv ( lua_State * L,
int thread )
private

References FATAL_ERROR_IF.

Referenced by initializeSecurity(), and initializeSecurityClient().

+ Here is the caller graph for this function:

◆ sl_g_dofile()

int ScriptApiSecurity::sl_g_dofile ( lua_State * L)
staticprivate

References sl_g_loadfile().

+ Here is the call graph for this function:

◆ sl_g_load()

int ScriptApiSecurity::sl_g_load ( lua_State * L)
staticprivate

References safeLoadString().

+ Here is the call graph for this function:

◆ sl_g_loadfile()

int ScriptApiSecurity::sl_g_loadfile ( lua_State * L)
staticprivate

References CHECK_SECURE_PATH_INTERNAL, Client, ModApiBase::getScriptApiBase(), ScriptApiBase::getType(), LuaHelper::readParam(), safeLoadFile(), and safeLoadString().

Referenced by sl_g_dofile().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sl_g_loadstring()

int ScriptApiSecurity::sl_g_loadstring ( lua_State * L)
staticprivate

References safeLoadString().

+ Here is the call graph for this function:

◆ sl_g_require()

int ScriptApiSecurity::sl_g_require ( lua_State * L)
staticprivate

◆ sl_io_input()

int ScriptApiSecurity::sl_io_input ( lua_State * L)
staticprivate

References CHECK_SECURE_PATH_INTERNAL, and push_original().

+ Here is the call graph for this function:

◆ sl_io_lines()

int ScriptApiSecurity::sl_io_lines ( lua_State * L)
staticprivate

References CHECK_SECURE_PATH_INTERNAL, and push_original().

+ Here is the call graph for this function:

◆ sl_io_open()

int ScriptApiSecurity::sl_io_open ( lua_State * L)
staticprivate

References CHECK_SECURE_PATH_INTERNAL, and push_original().

+ Here is the call graph for this function:

◆ sl_io_output()

int ScriptApiSecurity::sl_io_output ( lua_State * L)
staticprivate

References CHECK_SECURE_PATH_INTERNAL, and push_original().

+ Here is the call graph for this function:

◆ sl_os_remove()

int ScriptApiSecurity::sl_os_remove ( lua_State * L)
staticprivate

References CHECK_SECURE_PATH_INTERNAL, and push_original().

+ Here is the call graph for this function:

◆ sl_os_rename()

int ScriptApiSecurity::sl_os_rename ( lua_State * L)
staticprivate

References CHECK_SECURE_PATH_INTERNAL, and push_original().

+ Here is the call graph for this function:

◆ sl_os_setlocale()

int ScriptApiSecurity::sl_os_setlocale ( lua_State * L)
staticprivate

References push_original().

+ Here is the call graph for this function:

The documentation for this class was generated from the following files: