Ministra and Nginx TMP links

660 views
Skip to first unread message

Богдан Булак

unread,
Nov 11, 2017, 6:43:58 PM11/11/17
to Stalker Middleware
Testing Ministra - first error which i saw, - not working nginx tmp links for channels? for before i used stalker 5.0.1 - its working very well.
i have next nginx config on separate streaming server:
server {
        listen   18513; ## listen for ipv4; this line is default and implied
        server_name streamer1.localhost
        location / {
               secure_link $arg_st,$arg_e;
               secure_link_md5 MYPASS$uri$arg_e;
                if ($secure_link = "") {
                        return 403;
                }

                if ($secure_link = "0") {
                        return 403;
                }

                proxy_pass       http://localhost:18503;
                proxy_set_header Host      $host;
                proxy_set_header X-Real-IP $remote_addr;
        }
        }
        access_log /var/log/nginx/18513.log;
        error_log /var/log/nginx/18513.log crit;
}
----------------------------------------------------
end next in custom.ini:
tv_tmp_link_ttl = 300
nginx_secure_link_secret = MYPASS
nginx_secure_link_ttl = 300
nginx_secure_link_order = "$secret$uri$secure_link_expires"

------------------------------------------------
in nginx log i see error 403 for access to stream ( nginx tmp in ministra for need channel enabled)

Богдан Булак

unread,
Nov 12, 2017, 12:51:34 PM11/12/17
to Stalker Middleware
Відповім сам собі, найшов я причину чому не працює, все діло в наступному :
  • Исправлена генерация токена временной ссылки для Nginx Secure Link в случае работы с HLS.
але є помилка алгоритму в коді  public static function getNginxSecureLink($cmd) файл /var/www/stalker_portal/server/lib/itv.class.php

            if (strpos($nginx_secure_link_order, '$uri') !== FALSE) {
                $url_path = parse_url($path, PHP_URL_PATH);
                $playlist = substr($url_path, strrpos($url_path, '/'));
                $nginx_secure_link_field['$uri'] = str_replace($playlist, '', $path);
            }
при такій організацію коду з $uri усікається останній слеш і все що після нього
але якщо стрім має uri наприклад /rus/canal-pervuy , то тимчасовий лінк згенерується на основі /rus - відповідно нжинкс це не пропустить.
пропоную цей кусок коду замінити на наступний, ящо потрібно усікти .m3u8  файл, добавивши відповідну провірку:
            if (strpos($nginx_secure_link_order, '$uri') !== FALSE) {
                $url_path = parse_url($path, PHP_URL_PATH);
                if(substr($url_path, -5)=='.m3u8' ){
                        $playlist = substr($url_path, strrpos($url_path, '/'));
                        $path=str_replace($playlist, '', $path);
                }
                $nginx_secure_link_field['$uri'] = $path;
            }
Прошу звернути увагу на цей баг адміністрацію та розробників infomir

Oleksii Zhurbytskyi

unread,
Nov 13, 2017, 8:03:44 AM11/13/17
to Stalker Middleware
Спасибо, добавим исправление в ближайший релиз.

cs

unread,
Oct 20, 2024, 2:20:36 PM10/20/24
to Ministra TV platform (formerly Stalker Middleware)
whats on 5.6.10? thx
Reply all
Reply to author
Forward
0 new messages