Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Общие вопросы » Как организовать авторизацию стриминг сервера и DLE?

Как организовать авторизацию стриминг сервера и DLE?


     29.03.2016    Общие вопросы, Общие вопросы по PHP, MySQL    1895

вопрос
Здравствуйте, возникла проблема по организации общей авторизации стриминг сервера и DLE. Цель организовать авторизацию потоковой трансляции по авторизации с базы данных 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

Ответа пока нет


6 комментариев

dj-avtosh
PHP-developer

dj-avtosh - 29 марта 2016 22:06 -

При чем тут lua и php? Подгружайте в lua через io.open скрипт php-cli, внутри которого сверяйтесь с данными из dle_users, и возвращайте булеву - по ответу пусть lua и строит логику.

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

warl91
Юзер

warl91 - 29 марта 2016 22:14 -

dj-avtosh,Если бы еще знать как сделать моих знаний здесь не достаточно так что если возможно по подробней объясните как и что

dj-avtosh
PHP-developer

dj-avtosh - 29 марта 2016 23:47 -

Знаний в lua или php? Или mysql?

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

warl91
Юзер

warl91 - 30 марта 2016 00:21 -

dj-avtosh, знаний в lua нет не разбирал раньше в php и в mysql есть но их не хватает в этом направлении

dj-avtosh
PHP-developer

dj-avtosh - 30 марта 2016 12:00 -

Подскажу по lua, если обещаешь на php сделать проверку валидности связки логин+пароль сам.

Пусть определенный script.php (который лежит в самом корне сервера) возвращает при несовпадении пары 0, иначе 1. Если 0, то метод возвращает null (nil).

Все что остается в скрипте: через тот-же банальный PDO выполнить запрос вида:
"SELECT 1 FROM dle_users WHERE login = 'логин' AND password = md5('Пароль') "


А уже в lua


    local phpcli      = 'php-cli /script.php '
    local check_data  = io.popen(phpcli .. login .. ' ' .. pass)
    local check_login = check_data:read('*all')
    check_data:close()

    if check_login == 0 then
        return nil
    end;


Отсюда мы видим, что для php переданы аргументы:
$argv[1] - Логин
$argv[2] - Пароль

По заказам пишем сюда: @Rud00y

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.):
В телегу писать сразу задачу и бюджет.

warl91
Юзер

warl91 - 30 марта 2016 21:07 -

dj-avtosh, Все работает спасибо за помощь )

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх