anton
anton
в "моём" проекте разница если лезешь или не лезешь в хедер может составлять 10-15 минут сборки
LISP
anton
LISP
не понял
Что можно словить, кроме долгой сборки?
LISP
LISP
Anonymous
Всем привет парни
Anonymous
Сильно не ругайтесь
Я новичек...
Появилась нужда перенести часть кода на сервер (аки библиотека) содержащая функции и переменные, и потом использовать его в скрипте.
Anonymous
С переменными то понятно все ,а вот с функциями вопрос
Anonymous
Как мне подрубить их к коду?
Anonymous
Можно конечно так
Anonymous
local lib = gg.makeRequest('адрес').content
local file = io.open(gg.EXT_FILES_DIR..'tmp', "w")
file:write(lib)
file:close()
dofile(lib)
Anonymous
Но хотелось бы обойти этап записи в файл
Anonymous
Можно ли создать массив с функциями и затем использоват фкнкции из него? Если да ,то дайте пример плиз
Snusmumriken
Ты хочешь цеплять луа-библиотеку с сайта?
Snusmumriken
И зачем тебе это? ))
Snusmumriken
Ты хочешь сделать подписку на свои хаки? ))
Anonymous
Со своего сервера
Anonymous
Есть системные функции для каждого скрипта
Anonymous
И бывает нужно что то поправить
Snusmumriken
Ненене, просто так, абстрактно, по желанию левой пятки, подобные затеи не появляются.
Snusmumriken
Ну ты такой возьмёшь, поправишь и зальёшь новую версию скрипта хака.
Anonymous
И после этого разослать всем обновленные версии скриптов. Что занимает массу времени. Что бы этого избежать,проще подрубить один файл с сервера к скрипту и в нем вносить правки
Snusmumriken
У твоего хака много пользователей?
Anonymous
Около 50
Anonymous
И 11 скриптов на данный момент
Snusmumriken
Жуть какая.
Snusmumriken
Самое простое —
local lib = gg.makeRequest('адрес').content
loadstring(lib)
Но это лишняя уязвимость ))
Anonymous
Да я знаю о уязвимостях
Anonymous
Всеравно врядли кто то будет ломать что то
Anonymous
Им по пол дня объясняешь как запустить скрипт...
Snusmumriken
Но.
Snusmumriken
Что твои пользователи будут делать, если твой сайт упал? Или если у них нет интернета в данный момент?
Snusmumriken
Поэтому придумай как сделать работающий вариант, который будет работать в том числе без интернета и с падениями сайта. Это где-то пятнадцать строчек кода.
Anonymous
Anonymous
Нет такой функции...
Snusmumriken
Ооо
Anonymous
Anonymous
Сделано для защиты от распостранения
Anonymous
И сбора аналитики. Детский вариант конечно, но мои потребности удовлетворяет пока
Snusmumriken
Тогда load(lib)
Anonymous
Anonymous
Нет...
Anonymous
local lib = gg.makeRequest(adr).content
load(lib)
print(str)
Snusmumriken
Ну и чего?
Anonymous
У lib пока содержание только одна строка
Snusmumriken
Ты сделал print(str), это nil.
Anonymous
str = 'Hi!'
Anonymous
Через запись и dofile работает
Snusmumriken
Ой всё, тогда
load(lib)()
Anonymous
Так работает)
Anonymous
Спасибо
Snusmumriken
Кароч.
Первая часть load(lib) превращает кусочек строки с кодом в функцию. Если не получилось (в строке с кодом ошибки) — оно вернёт nil и ошибку. Если норм — вернёт функцию типа function() chunk_of_your_code end, которую уже можно вызвать вторыми скобочками.
Snusmumriken
Require и dofile делают то же самое, кстати, только в один этап.
Anonymous
Ну вот со вторыми скобками конечно пока смутно
.. попробую разобраться и почитать еще
Anonymous
В любом случае спасибо за направление
Snusmumriken
function loadsource(code_string)
return assert(load(code_string))()
end
Вот тебе функция которая делает то же самое, в один этап, и с выдачей ошибок в т.ч. в синтаксисе.
Anonymous
Пошел пробовать) спасибо
usernameak
Anonymous
usernameak
просто другой логики в твоих действиях не вижу
usernameak
Anonymous
Вопрос в другом
mva
Anonymous
mva
а с твоим способом я находясь в одной локалке с любым из пользователей легко засуну ему троян
Anonymous
mva
.
"новичок" и "50 пользователей" как-то плохо сочетаются между собой
mva
а ещё готов поспорить, что твоя защита от распространения - хрень на постном масле и не стоила потраченных на её запиливание сил
Anonymous
Anonymous
Но тем не менее мои потребности удовлетворяет
Anonymous
И она не столько для защиты как для контроля
Anonymous