diff --git a/kissmp-server/src/config.rs b/kissmp-server/src/config.rs index 945a15a..ec67be8 100644 --- a/kissmp-server/src/config.rs +++ b/kissmp-server/src/config.rs @@ -13,6 +13,7 @@ pub struct Config { pub show_in_server_list: bool, pub upnp_enabled: bool, pub server_identifier: String, + pub unsafe_debug_library: bool, #[serde(skip_serializing_if = "Option::is_none")] pub mods: Option>, } @@ -30,6 +31,7 @@ impl Default for Config { show_in_server_list: false, upnp_enabled: false, server_identifier: rand_string(), + unsafe_debug_library: false, mods: None, } } diff --git a/kissmp-server/src/lib.rs b/kissmp-server/src/lib.rs index 3df0a98..af05eff 100644 --- a/kissmp-server/src/lib.rs +++ b/kissmp-server/src/lib.rs @@ -90,7 +90,7 @@ pub struct Server { impl Server { pub fn from_config(config: config::Config) -> Self { - let (lua, receiver) = lua::setup_lua(); + let (lua, receiver) = lua::setup_lua(config.unsafe_debug_library); let (watcher_tx, watcher_rx) = std::sync::mpsc::channel(); let lua_watcher = notify::Watcher::new(watcher_tx, std::time::Duration::from_secs(2)).unwrap(); diff --git a/kissmp-server/src/lua.rs b/kissmp-server/src/lua.rs index 5f4bf02..a8fcf71 100644 --- a/kissmp-server/src/lua.rs +++ b/kissmp-server/src/lua.rs @@ -358,8 +358,14 @@ pub struct MpscChannelSender(mpsc::Sender); impl rlua::UserData for MpscChannelSender {} -pub fn setup_lua() -> (rlua::Lua, mpsc::Receiver) { - let lua = rlua::Lua::new(); +pub fn setup_lua(debug_lib: bool) -> (rlua::Lua, mpsc::Receiver) { + let lua; + if debug_lib { + unsafe { lua = rlua::Lua::unsafe_new_with(rlua::StdLib::all()); }; + } else { + lua = rlua::Lua::new(); + } + let (tx, rx) = mpsc::channel(); lua.context(|lua_ctx| { let globals = lua_ctx.globals();