Zanonimizowana wersja forum tylko do odczytu

Zabezpieczenie serwera nginx na token

Wszystko na temat innych serwerów streaming'u.
anonim
Początkujący
Posts: 10
Joined: 2015-03-21, 09:00

Post by anonim »

nginx.conf

Code: Select all

#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 lock$arg_addr$arg_e; 
            if ($secure_link = "") { 
                return 401; 
            } 
            if ($secure_link = "0") { 
                return 402; 
            } 
            #sprawdzenie adresu domeny 
            if ($arg_pageurl !~* (http://domena.pl|http://www.domena.pl|http://198.50.145.217)) { 
            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://198.50.145.217:8080/on_play; 
            #maksymalna liczba osob online 
            max_connections 1000; 
        } 
    } 
}
IP w niginx.conf to ip serwera na którym jest nginx, to samo w pliku watch.php
Watch.php

Code: Select all

<?php 

    //generowanie tokena 
    $kanal = $_GET['name']; 
    $e = date('U')+20; // 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 = "lock"; 
    $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://198.50.145.217/live/'.$rtmp; 
    
?>


<br />


<script type="text/javascript" src="http://jwpsrv.com/library/Ks4h0gAkEeOLHiIACusDuQ.js"></script><script type="text/javascript">jwplayer.key="mkMbCfvoyQF92pS9SCse47lYfk+8L7RlFGgaEe6o5r8=";</script>
<div id="player_wrapper" style="position: relative; width: 630px; height: 400px;">
	<object bgcolor="#000000" data="http://p.jwpcdn.com/6/8/jwplayer.flash.swf" height="100%" id="player" name="player" tabindex="0" type="application/x-shockwave-flash" width="100%"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="seamlesstabbing" value="true" /><param name="wmode" value="opaque" /></object>
	<div id="sitemtv_jwpsrv" style="position: absolute; top: 0px; z-index: 10;">
		<script type="text/javascript">
  jwplayer('player').setup({
    file: "rtmp://198.50.145.217/live/<? echo $rtmp; ?>",
    image: '',
    title: '',
    aspectratio: '16:9',
    width: '700',
    height: '450',
    fallback: 'false',
    primary: 'flash',
    autostart: true,    
  });
</script>

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

Post by anonim »

Jak wchodzę na twój serwer to widzę, że na stałe masz dodany w player'ze kanał test

Code: Select all

http://198.50.145.217/watch.php
a player ma na stałe wpisane

Code: Select all

file: "rtmp://198.50.145.217/live/test",
Zaktualizuj plik watch.php w katalogu jak już wcześniej zauważyłeś w twoim przypadku:

Code: Select all

/var/www/html

anonim
Początkujący
Posts: 10
Joined: 2015-03-21, 09:00

Post by anonim »

już zaktualizowane
Było co innego ponieważ ciągle próbuje cos z tym zrobić , niestety bezskutecznie

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

Post by anonim »

Zmień

Code: Select all

file: "rtmp://198.50.145.217/live/<? echo $rtmp; ?>",
na

Code: Select all

file: "rtmp://198.50.145.217/live/<?php echo $rtmp; ?>",

anonim
Początkujący
Posts: 10
Joined: 2015-03-21, 09:00

Post by anonim »

zmieniłem
Ale teraz nie widzi streamu

[ Dodano: 2015-03-29, 20:28 ]
Teraz mi pisze
Error loading stream:
ID not found on server
Ale dlaczego skoro powinien pobierac nazwe

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

Post by anonim »

konda, U mnie działa

Code: Select all

http://198.50.145.217/watch.php?name=test
Generalnie uruchom sobie statystyki tzn wrzuć plik stat.xsl do katalogu /usr/local/nginx/html/ - patrz film https://www.youtube.com/watch?v=hoT1-vx2bXI

anonim
Początkujący
Posts: 10
Joined: 2015-03-21, 09:00

Post by anonim »

Tak to zadziałało
A co do statystyk to widze że w pliku nginx.conf juz jest to co potrzebne więc wystarczy ten pliczek wstawic , to ma być pusty plik stat.xsl ?
Tak coś zadziałało po wpisaniu adresu

Code: Select all

http://198.50.145.217:8080/statystyki
Bez portu nie działa
Ale nie wygląda to tak fajnie jak na filmiku ;-)

Mam tylko coś z czego nie bardzo wiem cokolwiek :-(

Code: Select all

1.5.3
1.1.4
gcc 4.8.2 (Ubuntu 4.8.2-19ubuntu1) 
Mar 26 2015 14:11:52
13265
2564
17
0
201803063
0
16405834


live


test
49030
444992
0
0
0
0
52188.0.32.2456380-216067
6403601000H264High03.0AACLC144100
1



1
Tutaj wygląda to inaczej na stronie mam to w jednej linii
Last edited by anonim on 2015-03-29, 20:08, edited 1 time in total.

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

Post by anonim »

Nie pusty, tylko ten plik

Code: Select all

https://raw.githubusercontent.com/arut/nginx-rtmp-module/master/stat.xsl

anonim
Początkujący
Posts: 10
Joined: 2015-03-21, 09:00

Post by anonim »

Jarku jesteś naprawdę wielki
Wszystko działa jak należy , super wielki DZIĘKI

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

Post by anonim »

Witam. Mam pytanie, a mianowicie chciałbym, aby dany kanał mógł prowadzić kilka streamów, a streamy, które już się odbyły, widzowie mogli odtworzyć ponownie.

Pozdrawiam i z góry dziękuję za pomoc.

anonim
Posts: 4
Joined: 2015-04-12, 00:11

Post by anonim »

thanks jarek,

How to hls token?

http://my-ip-adress/hls/test.m3u8?token=*******&e=******

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

Post by anonim »

kieropmi, kilka streamów to de facto kilka kanałów, zależy co dokładnie masz na myśli.
Co do zapisu to jest to wykonalne, wystarczy mały skrypcik, albo dopisanie jednej linijki nginx, w zależności czego dokładnie oczekujesz ?

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

Post by anonim »

Chodzi mi o zapis video po streamie na serwerze, aby móc go potem odtworzyć.

anonim
Początkujący
Posts: 189
Joined: 2013-06-07, 06:16
Location: Olsztyn

Post by anonim »

Tak samo jak polsky.tv ?

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

Post by anonim »

Chodzi mi o to, że podczas nadawania, stream zapisywał się również na serwerze.

Post Reply