вопрос
Здравствуйте, возникла проблема по организации общей авторизации стриминг сервера и DLE. Цель организовать авторизацию потоковой трансляции по авторизации с базы данных DLE.
На сервере стоит стример Astra с него идет онлайн трансляции такого вида http://адрес-сервера:порт/идентификатор-канала?login=user&pass=12345 нужно сделать так что бы при начале просмотра стример сверил логин и пароль на наличия такого в базе сайта если отсутствует то трансляция не идет, а если есть то транслировать.
От разработчика получил скрипт LUA для стримера на подобную организацию авторизации но теперь нужно поковырять DLE.
Так как моих знаний в этой области мало прошу помощи в решении задачи может кому будет интересно что то не обычное.
Прикрепляю код скрипта для стримера если нужен доступ к сайту и стримеру для тестирования пишем в ЛС
На сервере стоит стример Astra с него идет онлайн трансляции такого вида http://адрес-сервера:порт/идентификатор-канала?login=user&pass=12345 нужно сделать так что бы при начале просмотра стример сверил логин и пароль на наличия такого в базе сайта если отсутствует то трансляция не идет, а если есть то транслировать.
От разработчика получил скрипт LUA для стримера на подобную организацию авторизации но теперь нужно поковырять DLE.
Так как моих знаний в этой области мало прошу помощи в решении задачи может кому будет интересно что то не обычное.
Прикрепляю код скрипта для стримера если нужен доступ к сайту и стримеру для тестирования пишем в ЛС
site_url = parse_url("http://127.0.0.1/login/")
error_stream = "/error"
function escape(s)
return string.gsub(s, "([^A-Za-z0-9_])", function(c)
return string.format("%%%02x", string.byte(c))
end)
end
function auth_request(client_id, request, callback)
if not request then
return nil
end
local login = request.query["login"] or ""
local pass = request.query["pass"] or ""
if login == "" or pass == "" then
request.path = error_stream
callback(true)
return nil
end
local content = "login=" .. escape(login) .. "&pass=" .. escape(pass)
http_request({
method = "POST",
host = site_url.host,
port = site_url.port,
path = site_url.path,
headers = {
"User-Agent: Astra",
"Host: " .. site_url.host .. ":" .. site_url.port,
"Content-Type: application/x-www-form-urlencoded",
"Content-Length: " .. #content,
"Connection: close",
},
content = content,
callback = function(_, response)
if response.code == 200 then
log.info("ip:" .. request.addr .. " login:" .. login)
else
request.path = error_stream
end
callback(true)
end,
})
end