mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
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
This commit is contained in:
parent
2e53801fc0
commit
f3ad75691a
24 changed files with 230 additions and 101 deletions
|
@ -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_ */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue