Zanonimizowana wersja forum tylko do odczytu

Zabezpieczenie serwera nginx na token

Wszystko na temat innych serwerów streaming'u.
anonim
Weteran
Posts: 826
Joined: 2013-05-04, 15:44

Post by anonim »

kieropmi, To da się tak zrobić ;-) Postaram się w najbliższym czasie nagrać jakieś wideo ;-)

anonim
Początkujący
Posts: 15
Joined: 2015-04-08, 17:14

Post by anonim »

jarek, po zainstalowaniu nginx i próbie zabezpieczenia poprzez token, wrzuciłem nginx.conf i watch.php, jednak po zresetowaniu modułu, strona nie ładuje się, natomiast "welcome to nginx" pokazuje się jak dodam port :8080. Nie mam także w katalogu /var folderu www. Jakieś rady? :)

anonim
Weteran
Posts: 826
Joined: 2013-05-04, 15:44

Post by anonim »

kieropmi, apache z php zainstalowany ? ;-)

anonim
Początkujący
Posts: 15
Joined: 2015-04-08, 17:14

Post by anonim »

Mój błąd, działa.

Teraz kolejny problemik xD mam ustawioną nazwę kanału na test, próbuję streamować przez OBS'a, wpisuję w FMS URL: rtmp://xxx/live/test w play path hasło, jakie ustawiłem i wyskakuje błąd podczas łączenia się z serwerem.

anonim
Weteran
Posts: 826
Joined: 2013-05-04, 15:44

Post by anonim »

kieropmi, nie dałej zawartośći nginx.conf, ani logów także trudno coś więcej powiedzieć.

anonim
Początkujący
Posts: 15
Joined: 2015-04-08, 17:14

Post by anonim »

Code: Select all

[spoiler]#user  nobody; 
worker_processes  1; 

events { 
    worker_connections  1024; 
} 

http { 
    include       mime.types; 
    default_type  application/octet-stream; 

    sendfile        on; 
    #tcp_nopush     on; 

    #keepalive_timeout  0; 
    keepalive_timeout  65; 

    #gzip  on; 

    server { 
        listen       8080; 
        server_name  localhost; 
        
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
        root   html; 
        } 
        
        location / { 
            root   html; 
            index  index.html index.htm; 
        } 
        
        #statystyki 
        location /statystyki { 
            rtmp_stat all; 
            rtmp_stat_stylesheet stat.xsl; 
        } 
        location /stat.xsl { 
            root html; 
        } 
        
        #zabezpieczenie na token i domenę 
        location /on_play { 
            secure_link $arg_token,$arg_e; 
            secure_link_md5 aaa$arg_addr$arg_e; 
            if ($secure_link = "") { 
                return 401; 
            } 
            if ($secure_link = "0") { 
                return 402; 
            } 
            #sprawdzenie adresu domeny 
            if ($arg_pageurl !~* (http://188.68.238.174/)) { 
            return 403; 
            } 
            return 200; 
        }        
    } 
} 

rtmp { 
    server { 
        listen 1935; 
        ping 5s; 
        ping_timeout 7s; 
        notify_method get; 
        publish_notify on; 
        drop_idle_publisher 10s; 
        busy on; 
        application live { 
            live on; 
            idle_streams off; 
            #wywołanie zapytania sprawdzającego 
            on_play http://188.68.238.174:8080/on_play; 
            #maksymalna liczba osob online 
            max_connections 150; 
        } 
    } 
}[/spoiler]

anonim
Weteran
Posts: 826
Joined: 2013-05-04, 15:44

Post by anonim »

Wystarczy że dasz:

Code: Select all

FMS URL: rtmp://188.68.238.174/live/
Play path: test

anonim
Początkujący
Posts: 15
Joined: 2015-04-08, 17:14

Post by anonim »

Połączyło się, lecz teraz od strony www nie pokazuje streama.
view.html

Code: Select all

<!DOCTYPE html>
<html>
<head>
  <title>Video.js | HTML5 Video Player</title>

  <!-- Chang URLs to wherever Video.js files will be hosted -->
  <link href="video-js.css" rel="stylesheet" type="text/css">
  <!-- video.js must be in the <head> for older IEs to work. -->
  <script src="video.js"></script>

  <!-- Unless using the CDN hosted version, update the URL to the Flash SWF -->
  <script>
    videojs.options.flash.swf = "video-js.swf";
  </script>
<link href="//example.com/path/to/video-js.css" rel="stylesheet">
<script src="//example.com/path/to/video.js"></script>
<script>
  videojs.options.flash.swf = "http://example.com/path/to/video-js.swf"
</script>
</head>
<?php 

    //generowanie tokena 
    $kanal = 'test'; 
    $e = date('U')+10; // ważność linku w sekundach (jezezeli rtmp i www są na dwóch różnych maszynach lepiej podać większą wartość, gdyż może być różnica czasu.) 
    $haslo = "aaa"; 
    $ajpi = $_SERVER['REMOTE_ADDR']; 
    $md5 = base64_encode(md5($haslo . $ajpi . $e , true)); 
    $md5 = strtr($md5, '+/', '-_'); 
    $md5 = str_replace('=', '', $md5); 
    $rtmp = $kanal."?token=".$md5."&e=".$e; 
    
    //link z tokenem do wstawienia do odtwarzacza 
    echo 'rtmp://188.68.238.174/live/' .$rtmp; 
    
?>

<html>

 
  <body>
    <object width="640" height="360">
        <param name="movie" value="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf"></param>
        <param name="flashvars" value="src=rtmp://188.68.238.174/live/"></param>
        <param name="allowFullScreen" value="true"></param>
        <param name="allowscriptaccess" value="always"></param>
        <embed src="http://fpdownload.adobe.com/strobe/FlashMediaPlayback.swf" 
        type="application/x-shockwave-flash" allowscriptaccess="always" 
        allowfullscreen="true" width="640" height="360"
        flashvars="src=rtmp://188.68.238.174/live/">
        </embed>
    </object>
  </body>

</html>

anonim
Początkujący
Posts: 45
Joined: 2013-10-21, 15:33

Re: Zabezpieczenie serwera nginx na token

Post by anonim »

Jak zmodyfikować plik stat.xsl żeby w osobnej rubryce wyświetlał ogólną liczbe osób oglądających
Zakładając że na serwerze mam powiedzmy 4 kanał , to chciał bym żeby wyświetlało się:

oglądających online: ..........

Coś takiego mniej więcej , co trzeba by dopisać do tego pliku stat.xsl

anonim
Weteran
Posts: 826
Joined: 2013-05-04, 15:44

Re: Zabezpieczenie serwera nginx na token

Post by anonim »

Dowolnie możesz przerabiać widok statystyk, wyjaśnienie masz na wiki:
https://github.com/arut/nginx-rtmp-modu ... ubscribers

Poniżej inny przykład:

Code: Select all

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html"/>

<xsl:template match="/">
	Liczba wszystkich klientów: <xsl:value-of select="count(//application/live/stream/client)"/><br />
	Liczba oglądających: <xsl:value-of select="count(//application/live/stream/client[not(publishing)])"/><br />
	Liczba nadających: <xsl:value-of select="count(//application/live/stream/client[publishing])"/><br />
	Liczba wszystkich klientów na kanale test: <xsl:value-of select="count(//application/live/stream[name='test']/client[publishing])"/><br />
</xsl:template>

</xsl:stylesheet>
Pozdrawiam

Post Reply