Alex
скорее всего так как это get то в url строке ожидалось что то вроде этого 'https://api.exmo.com/v1/user_info?nonce=any'
Anatoliy
скорее всего так как это get то в url строке ожидалось что то вроде этого 'https://api.exmo.com/v1/user_info?nonce=any'
Не непрокатывает, пробовал в скрипте изменить запрос на https://api.exmo.com/v1/user_info?nonce=any', на https://api.exmo.com/v1/user_info?nonce="any" пробовал в headers добавить - headers = {Key='MyAPIKey', nonce="any"} никак неработает
Anatoliy
скорее всего так как это get то в url строке ожидалось что то вроде этого 'https://api.exmo.com/v1/user_info?nonce=any'
Спасибо, это навело меня на мысль и я разобрался - да надо выполнить так https://api.exmo.com/v1/user_info?nonce=any, только не any а после равно нужно поставить время в миллисекундах с начала эпохи юникс, посмотрел их пример на пифоне там такие строки: nonce = int(round(time.time()*1000)), погуглил что это за функция time.time() на пифоне и стало ясно
Anatoliy
Хотя видимо необязательно это должно быть время юникс да и еще в миллисекундах, там в документации такие строки есть: "All the requests should also include the obligatory POST parameter ‘nonce’ with incremental numerical value (>0). The incremental numerical value should never reiterate or decrease." Сразу необратил внимание, то есть видимо nonce это просто счетчик который в каждом запросе просто должен быть больше чем в предыдущем
Anatoliy
А вот дальше уже сложнее, там у них в headers надо еще добавить элемент Sign , т.е. headers = {Key='MyAPIKey', Sign=....} Где ... - цифровая подпись поторую надо создать самому с помощью закрытого API ключа, в строке Key='MyAPIKey' - это был открытый ключ никак незашифрованный, У них в примере на пифоне код http запроса выглядит так:
Anatoliy
import httplib import urllib import json import hashlib import hmac import time api_key = "your_key" api_secret = "your_secret" nonce = int(round(time.time()*1000)) params = {"nonce": nonce} params = urllib.urlencode(params) H = hmac.new(api_secret, digestmod=hashlib.sha512) H.update(params) sign = H.hexdigest() headers = {"Content-type": "application/x-www-form-urlencoded", "Key":api_key, "Sign":sign} conn = httplib.HTTPSConnection("api.exmo.com") conn.request("POST", "/v1/user_info", params, headers) response = conn.getresponse() print response.status, response.reason print json.load(response) conn.close()
Anatoliy
Как я вижу шифрование идёт в строках H = hmac.new(api_secret, digestmod=hashlib.sha512) H.update(params) sign = H.hexdigest()
Anatoliy
по этим функциям пифона мануал найти несложно, например https://docs.python.org/3/library/hmac.html Только вот как это всё реализовать в луа?
Alex
ну первое что вам нужно это библиотека для hash
Alex
точно сейчас не вспомню но она есть
Alex
вообще это просто поизите такие же библиотеки хэширования для lua
Alex
hmac hashlib
Alex
просто помсотрите какой метод хэширования выполняет та и другая lib'а и поищите аналоги на lua
Alex
и проделаете теже самые функции (зачастую они одинаково называются)
Anatoliy
и проделаете теже самые функции (зачастую они одинаково называются)
Полазил по луарокс, вроде есть там много чего для этого, буду разбираться
Alex
Полазил по луарокс, вроде есть там много чего для этого, буду разбираться
я бы постралась помочь более конкретнее , но для этого у меня сейчас мало времени.
Anatoliy
я бы постралась помочь более конкретнее , но для этого у меня сейчас мало времени.
Да разберусь, на луарокс много либ для крипто хэширования смотрю
Anatoliy
Теперь новый вопрос, теперь я уже сам похоже не разберусь - нашел что нужно на луарокс - https://luarocks.org/modules/user-none/lua-hashings Либу lua-hashings, в ней есть все что нужно, но мануал к ней просто удручает - Lua-hashings ============ Pure Lua cryptographic hash library. Supported hashes ---------------- * adler32 * blake2b * blake2s * crc32 * md5 * ripemd160 * sha1 * sha256 * sha3_256 * sha3_512 * sha512 * whirlpool Additional hash functions ------------------------- * hmac * pbkdf2 API --- All hash modules support the same API and any module implementing this API can be used by the additional hash functions. * new(data) or (data) * copy() * update(data) * digest() * hexdigest() The digest and hexdigest functions will not change the internal state of the object. Multiple calls to these will return the same result. All hash modules provide the following information about the hash. * digest_size * block_size There are some functions, such as hexdigest, which are the same implementation in multiple modules. This is by design because modules are intended to be independent of the library itself. Each module can be copied into another project without needing the rest of the library. The hash functions are the same in that they can be dropped into another project and used independent of the library provided that anything using the hash functions implements the above API. Dependencies ------------ This library depnds on [lua-nums](https://github.com/user-none/lua-nums) because many hashes rely on fixed width integers. It's also nedded to support 64 bit hashes. Example Use ----------- lua local digest = require("hashings.sha256") print(digest:new("Hello"):hexdigest())
Anatoliy
Мне как человеку в криптографии ничерта несоображающему конечно же сразу же должно быть все ясно после этих строчек
Anatoliy
Можно сделать как в примере - local digest = require("hashings.sha256") print(digest:new("Hello"):hexdigest()) И получить хэш-сумму нужной строки заменив "Hello", и подключив нужный алгоритм вместо SHA256 в строчке require
Anatoliy
Но только этого мало - нужно потом еще обработать полученный по алгоритму SHA-512 хэш еще и с помощью Hmac, а как это сделать нихр-на не понятно
Aleksandr
Пробовал кто ембедить lua от iponweb ?
Highly Likely
Думаю @igelhaus пробовал :-)
Anton
Пробовал кто ембедить lua от iponweb ?
Define эмбедить. Если «линковать с приложением, которое расширяется Lua-кодом», то пробовали, да. Работает, ибо все стандартные API реализованы.
Aleksandr
а либы почуствуют замену ?
Anton
а либы почуствуют замену ?
Сорри, я не понимаю вопрос.
Anton
Если библиотеки используют только стандартный Lua C API для взаимодействия с виртуальной машиной Lua, то нет.
Serhii
Кто-то работал с LuaBridge?
Serhii
Как мне передать в луа объект плюсов? Например, структуру Допустим struct S { int x; int y; }; S foo; Как мне передать в луа foo
Serhii
Luabridge принципиально или можно предложить sol2 ?
та просто удобно, первое, что я нашел да и мануал неплохой
Serhii
Luabridge принципиально или можно предложить sol2 ?
в принципе могу рассмотреть и этот вариант
Aleksandr
После обеда скажу щас митинги
Serhii
После обеда скажу щас митинги
у вас митинги во время обеда?
Serhii
или я как-то не так понял
Aleksandr
щас обеденое время и в обеденое время митинг
Aleksandr
@tumbris это один из спсобов сделать то что тебе надо https://gist.github.com/kotbegemot/728c6793893244b1bbbbe801f4a3b570
Serhii
@tumbris это один из спсобов сделать то что тебе надо https://gist.github.com/kotbegemot/728c6793893244b1bbbbe801f4a3b570
мне не совсем это нужно например, есть структура struct Point { float x; float y; }; Есть переменная этого типа: Point x; И мне нужно сделать так, что б я с луа мог написать например x.x = 15 И значение поменяла не просто локальная переменная луа стека, а переменная x в плюсах
Snusmumriken
Но это sol, на чистых луях это тоже более чем реализуется.
Snusmumriken
Просто выдашь userdata, вешаешь на неё метатаблицу с __index
Александр
Но это sol, на чистых луях это тоже более чем реализуется.
Так конечно, sol же lua C api юзает. Просто как обёртка он крайне удобен, если уж есть возможность юзать С++, а не чистый C
Александр
У меня кстати товарищ интересовался, есть ли хорошие биндинги луа к дельфи. Может кто-то по своему опыту посоветует? Да-да, дельфи
mva
а есть уже какой-нибудь простенький алгоритм для нарезания таблички на пучок более мелких через каждые N записей в первоначальной?
mva
а то что-то не хочется изобретать велосипед, а гугл по поводу сплиттинга выдаёт немного не то
Snusmumriken
Довольно специфичная задача, надо мапать.
Snusmumriken
Или изобретать велосипед : )
Snusmumriken
У меня кстати товарищ интересовался, есть ли хорошие биндинги луа к дельфи. Может кто-то по своему опыту посоветует? Да-да, дельфи
М? http://lua-users.org/wiki/LuaDelphi Сам кейс нормальный, делфи более чем умеет в вызов сишной фигни, соответственно можно экстендить и луями тоже.
Александр
М? http://lua-users.org/wiki/LuaDelphi Сам кейс нормальный, делфи более чем умеет в вызов сишной фигни, соответственно можно экстендить и луями тоже.
2009 год с битыми ссылками.. На самом деле товарищ уже гуглил и нашел разные варианты, так что я спрашиваю чисто для того, чтобы понять, может кто-то по собственному опыту что-то посоветует, а не за меня погуглит
Snusmumriken
А, да.
Snusmumriken
Ну типа вот. https://github.com/danieleteti/lua4delphi Сомнительно что кто-то пробовал (кейс пусть и нормальный, но надо сначала найти делфятника).
Snusmumriken
Кстати, надо бы потереть deleted account'ы.
mva
Кстати, надо бы потереть deleted account'ы.
да ладно, пусть вес группе набивают :Р
mva
114 local orders = {} 115 local otcn = { "date","place","op","sum","detail" } -- order table column names 116 for i,v in ipairs(fpt) do 117 › local row = math.floor((i-1)/5)+1; 118 › local col = math.fmod(i,5); 119 › › if col == 0 then col = 5 end 120 › local colname = otcn[col]; 121 › orders[row] = orders[row] or {}; 122 › orders[row][colname] = v:getcontent(); 123 end
mva
такой вот велосипед получился
mva
пока не вижу путей улучшения, но чувствую что какашка >_> // особенно мне не нравятся костыли по рихтованию результатов floor и fmod
Snusmumriken
Что должно быть на входе, а что на выходе?
Snusmumriken
У тебя есть заголовок { "date","place","op","sum","detail" } и список { "22.22.2222", "place1", "op1", "100500", "blabla1", "33.33.3333", "place2", "op2", "100501", "blabla2", } И надо трансформировать в { { date = "22.22.2222", place = "place1", op = "op1", summ = "100500", detail = "blabla1" }, { date = "33.33.3333", place = "place2", op = "op2", summ = "100501", detail = "blabla2" }, }?
mva
я думал в эту сторону, но не дошёл в размышлениях именно до такого варианта :)
Snusmumriken
Ща накатаю предельно оптимизированный по скорости вариант.
mva
но суть та же, да
mva
я граблю html-таблицу, пропуская её заголовок, а потом знчение ячеек в строке поколоночно распихиваю в табличку
mva
получается чтото типа такого
mva
// да, у электронной системы контроля посещаемости и питания детей нету API и приходится вручную костылять доставание нужной информации оттуда >_>
mva
хочу, вот, сделать TG-бота, который будет рассказывать что ребёнок поел и когда пора бабла на карточку закинуть >_>
Anonymous
/help@FailsBot
FailsBot
USAGE: /help - prints this message; /vzhuh [message] - do vzhuh; /start - info about bot.
FailsBot
USAGE: /help - prints this message; /vzhuh [message] - do vzhuh; /start - info about bot.
Anatoliy
Ребята всем привет, тут кто нибудь занимался созданием с последующим компилированием в dll либ на Си с экспортируемыми для Луа функциями? Я так понимаю что такие люди тут есть, нужна помощь
Anatoliy
Вообщем вот такой код: https://pastebin.com/Eknm1exp
Anatoliy
делал всё один в один по образцу https://quik2dde.ru/viewtopic.php?id=18
Anatoliy
И не компилится ничего, все время лупит ошибки: