Super
я попробовал preread_by_lua_block, но там проблема, если я читаю из сокета, то она удаляется и ниже уже не видна
Super
а вот нашел на чистом луа такое решение, но это не совсем то, хотелось бы в рамках stream это реализовать на нгинксе
Super
https://habr.com/ru/post/276623/
Super
в ообщем, буду благодарен за наводки
fgntfg
Squid такое делал, но я только слышал, не пробовал.
Sergey
никто не подскажет как разобрать строку пример 1234 на символы 1 2 3 4
Gaisin
s=1234
for k,_ in string.gmatch(s, "%d")
do
print(k)
end
ㅤ
Это если цифры. А если символы, то будет ".". Но на самом деле, это будут байты, и многие штуки вроде букв из кириллицы разорвутся на отдельные байты.
ㅤ
Evgeniy
Всем привет! простейшая наверное задача, но что-то не соображу. есть коллекция в mongodb, в которой есть валидатор, один из ключей должен быть типа Date,
делаю insert, пробовал в качестве значения ключа задавать строку "2019-08-15T15:08:00Z" - не катит, по доке не вижу метода конвертации в Date (https://github.com/neoxic/lua-mongo/blob/master/doc/main.md).
Пример:
res,err = collection:insert({start = "2019-08-15T15:08:00Z"} ); — ошибка валидации
Собственно, что-то упускаю, но не соображу что..
Super
ребята, а по моей задаче никто не подскажет ничего?
Pavel
Всем привет! простейшая наверное задача, но что-то не соображу. есть коллекция в mongodb, в которой есть валидатор, один из ключей должен быть типа Date,
делаю insert, пробовал в качестве значения ключа задавать строку "2019-08-15T15:08:00Z" - не катит, по доке не вижу метода конвертации в Date (https://github.com/neoxic/lua-mongo/blob/master/doc/main.md).
Пример:
res,err = collection:insert({start = "2019-08-15T15:08:00Z"} ); — ошибка валидации
Собственно, что-то упускаю, но не соображу что..
https://docs.mongodb.com/v4.0/reference/method/Date/
Не получится сделать что нить res,err = collection:insert({start = "new Date(2019-08-15T15:08:00Z)"} ); ?
или
res,err = collection:insert({start = mongo.DateTime(9223372036854775807});
Pavel
Pavel
Можешь ворваться в header_filter_by_lua или body_filter_by_lua
они вызываются, уже после того как сервер ответил
Super
это протокол tcp, а не http
Super
он в контексте stream работает
Super
к сожалению там нету этих блоков - header_filter и body_filter
Super
я хочу сделать tcp прокси, который не просто проксирует данные, а на лету их меняет. если я верно понимаю, тут надо другим способом подходить. слушать запрос от стрима. затем открывать самостоятельно сокет и коннектиться на бекенд. пересылать ему этот ответ, ждать его ответ и эхом выводить первому клиенту
Super
но это как-то ужасно криво выглядит, что-то вроде body_filter было бы шикарно
Pavel
https://github.com/openresty/lua-nginx-module
Pavel
ngx_http_lua_module - Embed the power of Lua into Nginx HTTP Servers.
Pavel
TCP кажись не процессит он от слова совсем-)
Pavel
Super
я поставил этот модуль
Super
но в нем нету body_filter
Pavel
content_by_lua_block
пульни из него запрос в соседний порт того же nginx
получи ответ.
допиши\прочитай
Super
так проблема-то в том, что как только я читаю из сокета, то в сокете это исчезает
Super
It is possible to acquire the raw request socket using ngx.req.socket and receive data from or send data to the client. However, keep in mind that calling the receive() method of the request socket will consume the data from the buffer and such consumed data will not be seen by handlers further down the chain.
Super
т.е. как только я прочитаю данные, я должен сам заботиться об их отправке туда, куда я хочу отправить проксированный запрос
Super
я думаю я с этим разберусь, но я хочу понять, есть ли более легкий и человеческий путь
Super
в самом простом виде я даже проснифать толком не могу это
Super
оно проксируется и все, если я прочитал ответ, то уже дальше запрос не пойдет
Ivan
?)
Pavel
Super
так я не имею тела нового, его еще надо получить от донора
Super
т.е. проблема именно в этом. я получаю запрос. но дальше я хочу, чтобы отработал proxy_pass, затем я получаю ответ и обрабатываю его опять
Super
если не выйдет так, то придется делать примерно так:
я читаю запрос. далее я сам должен коннектиться к сокету и оправлять этот запрос туда руками. далее я получаю оттуда ответ. вывожу ответ с помощью ngx.say.
Super
но тут вопрос с этим tcp, там же коннект держится какое-то время, его правильно закрывать надо
Anonymous
В хттп тоже правильно закрывать надо
Anonymous
Я все еще не понимаю идеи с тср прокси
Super
в http tcnm proxy_pass
Super
т.е. в http все у меня реализовано прекрасно, там есть body_filter, header_filter
Super
возможности безграничны
Anonymous
Ладно
Super
я даже научился из body_filter в memcache писать, хотя там нету такого
Super
так там же разные протоколы
Super
на 10001 http ты предлагаешь повесить?
Pavel
Pavel
Их луа тебе доступны сокеты
Igor
love2d уже давно до 11.1 на дроиде обновлён
Igor
на андроиде есть еще love2d
Igor
но версия там старая
Igor
но всё равно
Igor
использовать огромный фреймворк для мелких скриптиков не вариант
Igor
проще чистый luajit катануть
Anonymous
Ловка огромная?
Highly Likely
Примерно как boost в ++
Igor
Ну да
Igor
Графика, аудио, видео, нетворк (аж две либы вшито)
Igor
ещё сжатие данных
Anonymous
Ух
Igor
потоки есть
Igor
ещё много чего
Igor
Не, буст побольше будет
Igor
Примерно как boost в ++
Igor
Ааа
Highly Likely
Буст по сравнению с Лавкой – атомный ледокол против катера :)
Igor
У меня с шутками проблемы, не спал 2 ночи
Highly Likely
Поспи :-)
Igor
Хотелось бы ещё
Igor
Сразу бы пошёл
Igor
днём поспал немного
Igor
но это мало чего дало
Igor
Сейчас от нефигделать накатал скрипт, который показывает игроков на серверах под управлением SRCDS
Anonymous
Что за сервера такие?
Igor
Source Dedicated Server
Igor
Для игр типа csgo, css, ...
Anonymous
А как он их показывает?