Tverd
Дык давай задачу, может у кого-то была похожая )
ShadoWalkeR
Классика жанра - вывод программой своего кода. Только надо дергать из С - чтобы таблица, содержащая функцию вернула код этой функции. Исходники на диске трогать нельзя - только в рантайме
ShadoWalkeR
Хотя луа же в байткод компилирует - врятли получится
Tverd
Интересная задача... Квайн вроде как называется?
ShadoWalkeR
Да я в астериск хочу прикрутить чтобы dialplan show выводил что там в экстенах из луа лежит, а не просто
[ Context 'incomming' created by 'pbx_lua' ]
Alt. Switch => 'Lua/' [pbx_lua]
ShadoWalkeR
Вот например диалплан родного астерискового ЯП:
[ Context 'default' created by 'pbx_ael' ]
'call_close_by_debt' => 1. Wait(2) [pbx_ael]
2. Playback(voicecon/service_messages/interrupted_call_by_debt) [pbx_ael]
3. Hangup() [pbx_ael]
halt
ShadoWalkeR
Ну суть в том, что диалплан кладется в память и оттуда выводится как есть. А вот с Lua несколько сложней. На диске трогать не хочу потому что ктото диалплан может править и содержимое диска не соотвтествует содержимому в памяти
Tverd
ShadoWalkeR
Еще нет
Tverd
string.dump(function() print "Hello" end)
ShadoWalkeR
Спасибо за наводку - поиграюсь
ShadoWalkeR
Походу замыкание нельзя через dump прогнать
mihacooper [МСК -2]
для этого в Lua есть upvalues
ShadoWalkeR
Ну да ладно - сейчас поважней задачи есть, главное есть наводка с чем играться
Group Butler [beta]
Hi White2Demon!
Group Butler [beta]
Hi Насибуллин!
ShadoWalkeR
Коллеги, а поясните разницу между function tbl:callPreCheck(exten) и tbl.callPreCheck = function(exten)
Потому как в первом случае в функцию не передается параметр
ㅤ
tbl.callPreCheck = function(self, exten)
Теперь и во втором не будет передаваться.
ㅤ
Вызывай через двоеточие, чтобы первым параметром приходила tbl.
ShadoWalkeR
Да - у меня через точку вызывается
Group Butler [beta]
Hi 5h4r3r!
fgntfg
#чтотынесешь
Mikhail
Ребят, нужно из LUA подключаться посредством SSH
к удаленным серверам, слать команды и грабить корованы...
если короче, с LIBSSH кто-нибудь работал в скриптах Lua?
Mikhail
Чувак, который сделал lpty для LUA ( http://tset.de/lpty/index.html )
как раз жаловался, что эко не отключается....в Ubuntu.
у меня тупо не удается ничего.
Ilya
os.exec('ssh ... ') 😊
Mikhail
мне нужно держать сессию открытой. и интерактивно слать команды.. и принимать файлы там
Mikhail
os.exec('ssh ... ') 😊
и да... ты же в курсе, что в таком случае результат просто за кадром.
и чтобы хоть что то получить делают io.popen("command",)
Ilya
Теперь в курсе, спасибо 😊
Mikhail
ну почему извращение. хочу на любимой Луа сделатьполлинг миллиона дивайсов. с запуском команд, чтением конфигов с них...
Ilya
Use Ansible.
Ilya
..., Luke.
Mikhail
это ебаный монстр
Mikhail
Luke? пошел читать. вообще с админами обсуждали вопрос...
Kukuzapa
luasec
Ilya
Luke - это из серии https://www.youtube.com/watch?v=o2we_B6hDrY
Kukuzapa
я с его помощью вроде подключался... или я путаю https и ssh?
Kukuzapa
Мда... Стормознул.
Mikhail
нет. мой монстр простой бэкэнд. чтоыб мог крутиться на мини дивайсах. в теории
Ilya
Вот еще есть крутой модуль - правда, с нулем документации и на си. https://github.com/fnordpipe/lua-ssh
Ilya
я не гуглил, я луароксил 😎
Mikhail
серьезно? у меня куча луарокс роков поставилась.. а этот даже с указанием адреса сервера не ставится и не находится
Ilya
в смысле искал через луарокс, а так тоже не ставится, да.
Vsevolod
поставить nginx + lua и дергать его по https
Mikhail
Mikhail
нашел нечто.. но на японском
https://bitbucket.org/senanetworksinc/libssh/src
Mikhail
воу!!! а вот libssh японская СТАВИТСЯ через luarocks. потрогаю ее
Alexey
.как идея- curl
Alexey
Не пробовал ssh с curl вообще
ShadoWalkeR
Идея написать свою управлялку устройствами на луа так себе
ShadoWalkeR
Я это на питоне делал, где это проще чем на луа и решение было не очень
Tverd
https://github.com/fnordpipe/lua-ssh/blob/master/src/ssh.c
Tverd
а, уже было... По мне так не плохой модуль на первый взгляд, можно компильнуть попробовать
Mikhail
ShadoWalkeR
Жесть.
ShadoWalkeR
Просто жесть
ShadoWalkeR
if elseif else end и if else if else end end
Mikhail
@Snusmumriken привет!!!
ставлю в 16ю Ubuntu пакет libssh
с помощью luarocks
luajit: /usr/local/share/lua/5.1/libssh/libssh.lua:164: libssh.so: cannot open shared object file: No such file or directory
https://bitbucket.org/senanetworksinc/libssh
этот.
а он бинарники сук найти не может.
Не подскажешь в чем затык? ((
Saphire
ls -s /lib/path/to/your/darn/libssh.so /usr/local/share/lua/5.1/libssh/libssh.so
Mikhail
ShadoWalkeR
Господа, а как изнутри таблицы получить индекс который был вызван? Я вешаю метатаблицу на несуществующий индекс и хочу логировать что было вызвано.
Mikhail
ShadoWalkeR
Скорее всего я так до конца не вкуриваю что он от меня хочет - потому как __index все равно null, а если в параметрах указать что либо прилетает таблица в качестве значения
Snusmumriken
Логировать - через прокси. Но в целом, тут все описано.
Snusmumriken
Для тех кто ещё не освоил метатаблицы
https://habrahabr.ru/post/346892/
ShadoWalkeR
Да как так
ShadoWalkeR
__index = function() - иногда работает __index
__index = function(k,v) - в k и v одна и та же таблица - та на которую метатаблица навешана
__index = function(self,key) - в key вызванный ключ
ㅤ
ㅤ
Обращайся к своей таблице через дополнительную пустую прокси-таблицу, у которой будет метатаблица с твоей __index.
ShadoWalkeR
У меня задача как раз стояла чтобы получить ключ при обращении к несуществующему индексу. Просто странно что иногда работает просто __index, иногда __index = function(k). А сегодня __index(self, key)
Я и навешиваю её как положено:
local tbl = {}
local mt_t = { __index = function() .. end;}
—заполнение tbl
return setmetatable(tbl, mt_t)
Tverd
так работает, если во первых такого ключа еще нет в таблице, во вторых, если ты не присваиваешь а получаешь, то тогда newindex
Tverd
a = tbl[b] - это __index
tbl[b] = a - это __newindex
ShadoWalkeR
Проехали
Kukuzapa
Добрый день. Пишу апи которая подключаются к серверу по хттпс через луасек. Сегодня заметил, что если два клиента обращаются одновременно, то одному из них приходится ждать пока другой не получит ответ от сервера. Кто-нибудь сталкивался с подобной проблемой в luasec?
Kukuzapa
Все это крутится на nginx