При запуске Луа в маде есть некоторые особенности о которых хотелось бы написать отдельно. Проблема в том, что стандартный старт Луа и библиотек выглядит примерно так:
lua_State *vLm; vLm = lua_open(); luaL_openlibs(vLm);
|
При При таком запуске Lua у нас запускается сам Луа,дальше подгружаются все стандартные библиотеки. Не знаю как вас, а меня это не очень устраивает по причине того, что в этом случае любой сторонний пользователь кого мы будем допускать к работе с нашим Луа будет иметь полный доступ к файловой системе сервера и ряду функций операционной системы, что имхо не очень хорошо. Что же делать?
Совсем не подключать стандартные бибилиотеки плохо нам наверняка понадобится и математическая библиотека и библиотека для работы со строками ну и конечно библиотека таблиц. Погуглив интернет я нашел следующее решение проблемы:
//Сам Lua мы открываем как обычно
lua_State *vLm; vLm = lua_open(); //А вот дальше грузим только нужные нам библиотеки следующим образом lua_pushcfunction(vLm,luaopen_base); |
И вуаля! У нас загрузилась базовая, математическая, табличная библиотека и библиотека для работы с пакетами, а вот библиотека ввода-вывода(IO) и библиотека операционной системы (OS) не загружены и функции их не работают. В процессе работы вы все же выясните, что разрешить пользователю Луа доступ к вводу-выводу все же надо, но как-то ограничить, неплохую возможность для этого я опишу в следующей статье.
Навигация по статьям | |
Портирование структур Си в Lua, прерывание скриптов по времени |
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
|