Укажите параметры




 Действующая ссылка

 Полезная информация


Пример кода токенайзера (backend)


<?php 
#<password> - пароль 
#<stream_app> -название аппликации live или svod
#<stream_name> - название потока для live, например, stream1. Для vod - название префикс/название_файла, например mp4:sCONF-ID/test.mp4

$pass = '<password>';
$ip = $_SERVER['REMOTE_ADDR'];
$time = time();
$file = "<stream_name>";
$hash = "?t=$time&h=".base64_encode( md5( $pass.$file.$time.$ip, true ) );
$host = "<sCONF-ID>.cdn.ngenix.net/<stream_app>/";
$url= "http://".$host.$file."playlist.m3u8".$hash;
?>   
      
#!/usr/bin/python 

import tornado.ioloop
import tornado.web
import time
import md5
import base64

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(self.request.remote_ip)
        self.write("Hi!\n")

    def post(self):
        uri = self.get_argument('uri', '')
        password = 'password'
        epoch_time = int(time.time())

        if not uri:
            content_response = {
               'error': True,
               'msg': 'Please set uri for hashing.'
            }
        else:
            content_response = {
               'error': False,
               'msg': 'Thank You.'
            }

        self.write(content_response)
        self.write("\n")
        self.write(uri)
        self.write(self.request.remote_ip)
        self.write(str(epoch_time))
        self.write("\n")
        self.write(base64.encodestring(md5.md5(password + uri + str(epoch_time) + self.request.remote_ip).digest()))

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(9999)
    tornado.ioloop.IOLoop.current().start() 
      
#!/usr/bin/python

import tornado.ioloop
import tornado.web
import time
from base64 import b64decode, b64encode

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write(self.request.remote_ip)
        self.write("Hi!\n")

    def post(self):
        uri = self.get_argument('uri', '')
        password = 'password'
        epoch_time = int(time.time())

        if not uri:
            content_response = {
               'error': True,
               'msg': 'Please set uri for hashing.'
            }
        else:
            content_response = {
               'error': False,
               'msg': 'Thank You.'
            }

        self.write(content_response)
        self.write("\n")
        self.write(uri)
        self.write(self.request.remote_ip)
        self.write(str(epoch_time))
        self.write("\n")
        m = hashlib.md5()
        m.update((password + uri + str(epoch_time) + self.request.remote_ip).encode('utf-8'))
        self.write(b64encode(m.digest()).decode('utf-8'))

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(9999)
    tornado.ioloop.IOLoop.current().start() 
      
//index.js
var http = require('http');
var math = require('mathjs');
var express = require("express");
var myParser = require("body-parser");
var CryptoJS = require("crypto-js");


var milliseconds = String(math.round((new Date).getTime() / 1000) - 2);
var app = express();

app.use(myParser.urlencoded({extended : true}));
app.post("/tkn", function(req, res) {
  var ip = req.headers['x-forwarded-for'] ||
     req.connection.remoteAddress ||
     req.socket.remoteAddress ||
     req.connection.socket.remoteAddress;
  var string = req.body.pass + req.body.uri + milliseconds + ip;
  var hash = CryptoJS.MD5(string).toString(CryptoJS.enc.Base64);
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end("?t=" + milliseconds + "&h=" + hash);
});

app.listen(9090);