[prev in list] [next in list] [prev in thread] [next in thread] 

List:       helix-server-cvs
Subject:    [Server-cvs]  admin/web/src/srvprxy config_drm_buydrm.html.wasm, 1.1, 1.2
From:       yijil () helixcommunity ! org
Date:       2013-01-29 5:34:20
[Download RAW message or body]

Update of /cvsroot/server/admin/web/src/srvprxy
In directory cvs01.internal.helixcommunity.org:/tmp/cvs-serv358

Added Files:
	config_drm_buydrm.html.wasm 
Log Message:
Committed to: HEAD, SERVER_15_0_RN

Reviewed by: Xiaocheng, Richard, James

Synopsis
========
BuyDRM HLS integration

Branches: HEAD, SERVER_15_0_RN

Reviewer: Anyone

Description
===========
I. Intro
===================================================
BuyDrm is an important DRM vendor in the world. With the so called KeyOS Device DRM \
solution, it could protect stream media content over smooth stream, windows media, \
HLS to IOS and android devices. Customers could use it with their VOD and OTT \
services.

For the feature, the Helix Universal Server fetch key from BuyDRM key server. The \
server uses the key to encrypt content stream and updates the m3u8 file with the key \
at the same time, send the content stream to client by using HLS. 

II. What feature will be implemented in Helix Server \
=================================================== 1. Could set the BuyDRM Key \
Server URL 2. Could connect to the BuyDRM Key Server and Fetch key.
3. Could map each stream with content ID and key ID, can support get/getall/del \
content ID and Key ID. 4. Could protect the stream with its random generated key when \
BuyDRM Key Server down 5. can support single-rate/multi-rate stream, can support hpl. \
5. Add a new web group "DRM" for all drm page, move admin page for Verimatrix to the \
group.

A new web page is created for BuyDRM HLS DRM, The cfg example lists below, <List \
Name="BuyDrm_DRM">  <Var EnableRandomKeyWhenFail="0"/>
	<Var KeyServerAddr="http://api.licensekeyserver.com/pck/"/>
	<Var UserKey="816c06ed-407b-abcd-0d4e-7dc123456783"/>
	<Var HttpPassword="abca"/>
    <Var KeyServerRequestTimeout="5"/>
</List>
6. refract code for verimatrix
7. update admin page for verimatrix, when modify HTTP API Password, make it needn`t \
restart.  
III. Solution Description
===================================================
1. In CStreamHandler, add codes to trigger buydrm scrambler and handle the response \
from buydrm.

2. CBuyDrmHandler and CBuyDrmScrambler implements key fetch process, 

3. Add class EnhancedHTTPParser which extends from HTTPParser to parse http message \
whose content length is non-zero, and fetch content from http message.

4. In CTSArchiver, updates code to use key from buydrm to encrypt content

5. In CPlaylistGenerator, add new code to support tag " #EXT-X-INI-PRHDR "

6. in m3ugen plugin, add codes to create m3u8 for hpl request

7. add BuyDrmHttpApiHandler to support API method for buydrm

8. modify codes which used by VCAS before to support multiple type of DRM

9. change HELIX_FEATURE_SERVER_DRM_VCAS to HELIX_FEATURE_SERVER_DRM

IV. New files
server_rn/common/util/buydrmscrambler.cpp
server_rn/common/util/pub/buydrmscrambler.h
server_rn/common/util/drmutil.cpp
server_rn/common/util/pub/drmutil.cpp

server_rn/datatype/mpeg2ts/drmhandler.cpp
server_rn/datatype/mpeg2ts/pub/drmhandler.h

server/admin/web/build/server/config_drm_buydrm.html
server/admin/web/build/mserver/config_drm_buydrm.html
server/admin/web/src/srvprxy/config_drm_buydrm.html.wasm

VI. Files Affected
==============
common/include/defslice.h
common/include/hxdrmscrambler.h
common/include/hxiids.h

datatype_rn/mpeg2/ts/filewriter/ctsarchiver.cpp
datatype_rn/mpeg2/ts/filewriter/pub/ctsarchiver.h
datatype_rn/mpeg2/ts/filewriter/pub/playlistgen.h

protocol/http/httppars.cpp
protocol/http/pub/httppars.h

server-restricted/installer/server/retailservinst.cpp

build/umakepf/helix-server-all-defines.pf

server/protocol/http/http_demux.cpp

server_rn/common/util/Umakefil
server_rn/common/util/drmpathmap.cpp
server_rn/common/util/m3uutil.cpp
server_rn/common/util/pub/drmpathmap.h
server_rn/common/util/pub/m3uutil.h
server_rn/common/util/pub/mpeg2ts_config_names.h
server_rn/common/util/pub/vcasscrambler.h

server_rn/appext/m3ugen/iphoneplaylistparser.cpp
server_rn/appext/m3ugen/m3ugenfsys.cpp
server_rn/appext/m3ugen/readm3u8.cpp
server_rn/datatype/mpeg2ts/Umakefil
server_rn/datatype/mpeg2ts/mpeg2tsplin.cpp
server_rn/datatype/mpeg2ts/streamhandler.cpp
server_rn/datatype/mpeg2ts/pub/streamhandler.h

server-restricted/protocol/http-ctrl/drmhttpapi_handler.cpp
server-restricted/protocol/http-ctrl/pub/drmhttpapi_handler.h

server/engine/core/Umakefil
server/engine/core/core_proc.cpp
server/engine/core/proc_container.cpp
server/engine/core/server_context.cpp
server/engine/core/pub/proc_container.h

server/admin/web/server.opt
server/admin/web/build/mproxy/config_pending.nc.html
server/admin/web/build/mserver/browse_content.html
server/admin/web/build/mserver/config_bookmarking.html
server/admin/web/build/mserver/config_broad_hls.html
server/admin/web/build/mserver/config_broad_mpeg2ts_ingress.html
server/admin/web/build/mserver/config_broad_push2cdn.html
server/admin/web/build/mserver/config_broad_rtmp_ingress.html
server/admin/web/build/mserver/config_broad_rtmp_send.html
server/admin/web/build/mserver/config_drm.html
server/admin/web/build/mserver/config_mpeg2ts.html
server/admin/web/build/mserver/config_multiplexer.html
server/admin/web/build/mserver/config_pending.nc.html
server/admin/web/build/mserver/toc.js
server/admin/web/build/proxy/config_pending.nc.html
server/admin/web/build/server/browse_content.html
server/admin/web/build/server/config_bookmarking.html
server/admin/web/build/server/config_broad_hls.html
server/admin/web/build/server/config_broad_mpeg2ts_ingress.html
server/admin/web/build/server/config_broad_push2cdn.html
server/admin/web/build/server/config_broad_rtmp_ingress.html
server/admin/web/build/server/config_broad_rtmp_send.html
server/admin/web/build/server/config_drm.html
server/admin/web/build/server/config_mpeg2ts.html
server/admin/web/build/server/config_multiplexer.html
server/admin/web/build/server/config_pending.nc.html
server/admin/web/build/server/toc.js
server/admin/web/src/srvprxy/config_drm.html.wasm
server/admin/web/src/srvprxy/config_mpeg2ts.html.wasm
server/admin/web/src/srvprxy/pageData.pm
server/admin/web/src/srvprxy/toc~server.js.wasm

Testing Performed
=================
   Test KeyOs on iPhone/iPad
   
   



--- NEW FILE: config_drm_buydrm.html.wasm ---
#include "header.wasm"

<@ 
	use configLib;
	use dbgLib;
@>

<HTML>
<HEAD>

<@ if( $DEFS::DEBUG ) { @><SCRIPT language="javascript">

var cvsHeader = "$Header: \
/cvsroot/server/admin/web/src/srvprxy/config_drm_buydrm.html.wasm,v 1.2 2013/01/29 \
05:34:13 yijil Exp $" ;

</SCRIPT><@ } @>

<@= titleTag @>

<@= commonInc @>
<SCRIPT SRC="propview.js"></SCRIPT>
<SCRIPT SRC="propview_nolist.js"></SCRIPT>

<SCRIPT SRC="servvar.get.html?buydrm=config.BuyDrm_DRM"></SCRIPT>

<SCRIPT LANGUAGE="javascript">

var propSet =
[
	new PropObj( 'KeyServerAddr', 	   null,       true, true, null, null, null, "BuyDRM \
Server Address" ),  new PropObj( 'UserKey', 	   null,        false,true, null, null, \
null, "User Key" ),   new PropObj( 'KeyServerRequestTimeout', "3", false, false, \
null, null, "int", "Key Request Timeout"),    new PropObj( 'HttpPassword',  "", \
false, false, null, null, "", "HTTP API Password" ),   new PropObj( \
'EnableRandomKeyWhenFail', "1", false, false,  null, null, "int", "Enable Random Key" \
) ];

function BuyDRMView ()
{
	this.base = PropListView ;
	this.base( "Buy DRM", propList, "config.BuyDrm_DRM.", 
    			"servvar", "theForm" );
}

BuyDRMView.prototype = new PropListView ;

var propList = new PropList( "Buy DRM", buydrm, propSet, null );
var propView = new BuyDRMView();
var theForm ;

BuyDRMView.prototype.postValidateSubList = function ()
{
	return validatePassword( "HttpPassword", false );
}

BuyDRMView.prototype.postOnLoad = function ()
{
	// no return value needed
    setCtrlValue( theForm.HttpPassword2, getCtrlValue(theForm.HttpPassword), true );
}

BuyDRMView.prototype.postValidate = function ()
{
    if( getCtrlValue( theForm.HttpPassword ) != getCtrlValue( theForm.HttpPassword2 ) \
)  {
		return rejectInput( theForm.HttpPassword, "Passwords do not match" );
    }
	return true;
}

function onLoad ()
{
	theForm = document.theForm;
	propView.onLoad( window );

}	// onLoad ()

</SCRIPT>

</HEAD>

<@= bodyTag( "onLoad" ); @>

<@= pageHeader( qq(

Buy DRM

) ); @>

<@ 
	LEFT_WIDTH( "50%" );
	RIGHT_WIDTH( "50%" );
	FORM_STYLE( "NOWRAP" );
@>

<@= formTag2 @>
<@= tabHeader @>
<@= formTableTag @>
	<@= formElemText( "BuyDRM Server Address", name => "KeyServerAddr" ); @>
	<@= formElemText( "User Key", name => "UserKey" ); @>
	<@= formElemText( "Key Request Timeout", name => "KeyServerRequestTimeout", class => \
"input", size=>5, maxlength=>5 ); @>  <@= formElemPassword( "HTTP API Password", name \
=> "HttpPassword" ); @>  <@= formElemSelectYesNo( "Enable Random Key", name => \
"EnableRandomKeyWhenFail" ); @> <@= submitResetBtns @>
<@= endHTMLTag @>


_______________________________________________
Server-cvs mailing list
Server-cvs@helixcommunity.org
http://lists.helixcommunity.org/mailman/listinfo/server-cvs


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic