From f3ad75691aea30d2d68aab19fbfa9031409c39d7 Mon Sep 17 00:00:00 2001 From: red-001 Date: Fri, 30 Jun 2017 19:14:39 +0100 Subject: Create a filesystem abstraction layer for CSM and only allow accessing files that are scanned into it. (#5965) * Load client-side mods into memory before executing them. This removes the remaining filesystem access that client-sided mods had and it will hopefully make then more secure. * Lua Virtual filesystem: don't load the files into memory just scan the filenames into memory. * Fix the issues with backtrace * fix most of the issues * fix code style. * add a comment --- src/script/cpp_api/s_base.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/script/cpp_api/s_base.h') diff --git a/src/script/cpp_api/s_base.h b/src/script/cpp_api/s_base.h index 38ee9901b..28fefdd37 100644 --- a/src/script/cpp_api/s_base.h +++ b/src/script/cpp_api/s_base.h @@ -54,6 +54,12 @@ extern "C" { #define setOriginFromTable(index) \ setOriginFromTableRaw(index, __FUNCTION__) +enum class ScriptingType: u8 { + Client, + Server, + MainMenu +}; + class Server; #ifndef SERVER class Client; @@ -73,6 +79,10 @@ public: void loadMod(const std::string &script_path, const std::string &mod_name); void loadScript(const std::string &script_path); +#ifndef SERVER + void loadModFromMemory(const std::string &mod_name); +#endif + void runCallbacksRaw(int nargs, RunCallbacksMode mode, const char *fxn); @@ -82,6 +92,8 @@ public: IGameDef *getGameDef() { return m_gamedef; } Server* getServer(); + void setType(ScriptingType type) { m_type = type; } + ScriptingType getType() { return m_type; } #ifndef SERVER Client* getClient(); #endif @@ -133,6 +145,7 @@ private: IGameDef *m_gamedef = nullptr; Environment *m_environment = nullptr; GUIEngine *m_guiengine = nullptr; + ScriptingType m_type; }; #endif /* S_BASE_H_ */ -- cgit v1.2.3