首页

Moodle是一个用于制作网络课程或网站的软件包,您可以通过它搭建您自己的课程网站。DRM-X 4.0 与Moodle集成是当用户打开受保护的文件获取许可证时,将会判断其是否登录Moodle,是否拥有课程的学习权限,这样您就可以验证客户是否可以获取许可证,并调用DRM-X许可证发送给客户。最后我们还会介绍将受保护的文件嵌入Moodle,用户登录您的网站后即可观看课程,无需多余的验证。


 

一、 安装Moodle,配置您的网站。

从官网上下载最新moodle安装包,解压上传至您的服务器中,按照它的提示修改必要的配置文件并完成安装(包括Moodle数据库的建立,因此您必须拥有自己的服务器和数据库,下面示范使用了本地搭建的Apache和Mysql数据库)。Moodle的安装教程网上很多,这里不多做示范。

完成安装后,注册管理员账号,账号注册完成后登陆管理员账号创建您的课程。


“示例课程”添加成功后为您的学生创建账户


学生账户创建成功后给您的学生添加学习“示例课程”的权限。在“示例课程”的“成员”中点击“加入用户”,选择您的学生加入。

这样我们完成了一个最简单基础的课程创建并加入学生用户。接着,我们要在空白的课程中加入加密内容,通过最新DRM-X 4.0加密平台加密音视频或pdf文件,将之与您moodle网站集成并嵌入网页,使您的学生用户轻松安全地登录学习课程。

二 注册一个DRM-X 4.0账号,加密您的课程文件。

从Xvast官网下载Windows 版的Xvast浏览器https://www.xvast.cn, 安装后打开软件。

通过Xvast浏览器访问 https://4.drm-x.cn/register.aspx注册一个DRM-X 4.0加密系统的账号。


登录到DRM-X 4.0加密后台,我们首先点击 "许可证权限 ",添加一个许可证权限。 在这里设置权限价格,是否允许打开次数设置有效期,保护文档,选择是否允许打印,是否启用水印功能,您可以任意设置水印内容以防止盗版,动态水印支持两种方式的显示,第一种方式可以设置水印的位置和变化频率,第二种水印的显示方式为跑马灯效果,安全等级更高。


DRM-X 4.0继承了3.0的黑名单防录屏功能,通过黑名单程序的设置,可以有效的防止黑名单中的程序录屏或截图。当用户打开受保护的文件时,如果程序检测到有黑名单中的程序在运行,程序将会立即拦阻黑名单程序的运行。目前黑名单程序中涵盖了市面上上百种录屏截图程序,您可以任意选择禁止可能盗取您知识产权的软件。


海海软件提供了独特的智能防录屏技术,它可以有效的自动检测市面上的录屏软件,甚至是未来的录屏软件。它能帮助内容提供商更好地控制其DRM-X 4.0受保护的内容版权。


这样我们就获得了一个自定义的许可证权限。


接下来我们再创建一个使用以上权限的许可证模板,有了它就可以加密文件了。


这里特别要强调的是,“您系统中的产品ID”这一项必须与您数据库中的将要使用该模板加密的课程号相对应,一般moodle的学生选课结果储存在“mdl_role_assignments”表中,这里我们“示例课程”的课程ID是56,这个数字必须与上文提到的“您系统中的产品ID”相同,且可以看到ID为6的用户也就是之前创建的“学生”已经可以学习该课程。


当然,如果您感觉在冗长的数据库中寻找参数过于繁琐,您也可以直接在moodle后台后台找到该参数。在课程的‘成员’栏中点击设置,将鼠标移到权限上,再查看屏幕左下角的跳转网址,最后一个数字就是我们在寻找的该课程产品ID了。


用该模板加密文件,我们拿一个视频文件做示范。

进入加密文件页面选择刚刚创建的许可证模板和权限。


点击 “浏览”选择文件,开始加密,加密后的文件结尾会带有_P。

这样,就完成了对一个视频文件的加密,包括其他各种格式的音视频和pdf文档、网页内容都可以如上加密。

加密的详细过程可以参照以下教程:

视频加密:https://www.drm-x.com/DRM-X4.0_encryption_tutorial.aspx

网页加密:https://www.drm-x.com/DRM_web_page_html_encryption_tutorial.aspx

PDF加密:https://www.drm-x.com/How_To_Encrypt_PDF.aspx

三 moodle与DRM-X 4.0集成,修改集成代码。

现在,我们需要将DRM-X 4.0与moodle网站集成。集成后,选择了您相应课程的学生只用登录您的moodle网站即可查看课程中的加密内容,无需做多余的登录验证操作,下面就来示范一下集成的具体操作。


按照样例代码,您需要编写四个页面,分别是index.php, reindex.php, login.php和licstore.php。当用户打开加密文件后,会自动跳转到index.php,检查他有没有登录他的moodle账户,如果没有,跳转到reindex.php登录账号,反之,则直接跳转到login.php验证用户的密码是否正确,是否选择了相应课程等等,您可以在该页面自由地添加修改您的验证代码,之后,如果用户通过了验证,则跳转至licstore.php获取许可证,打开加密文件。


在index.php中,获取加密文件的相应信息,包括profileid, clientinfo, rightsid, yourproductid, platform, contenttype, version, return_url,将这些参数储存在全局变量$USER中,方便以后调用,然后判断学生用户有没有登录其moodle账户。

									
require_once("../config.php");
$USER->ProfileID = $_REQUEST["profileid"];
$USER->ClientInfo = $_REQUEST["clientinfo"];
$USER->Platform = $_REQUEST["platform"];
$USER->ContentType = $_REQUEST["contenttype"];
$USER->ProductID = $_REQUEST["yourproductid"];
$USER->RightsID = $_REQUEST["rightsid"];
$USER->Version = $_REQUEST["version"];
$USER->Return_URL = $_REQUEST["return_url"];

if (isloggedin() or isguestuser()){
    echo "<SCRIPT language=JavaScript>location='login.php';</SCRIPT>";
}else{
    echo "<SCRIPT language=JavaScript>location='reindex.php';</SCRIPT>";
}
									
								


如果学生没有登录moodle,则跳转到登录页面reindex.php(该登录页面不是moodle的初始登录页面,可以让用户在不登录moodle的情况下获取许可证查看加密文件),否则跳转到login.php进行具体验证。


如果用户是没有登录moodle从reindex转来的,则需要验证密码。如果用户已经登录了moodle,则无需验证密码。

									
if($_GET['un'] == 'login'){
	$username = $_REQUEST["username"];
	$pwd = $_REQUEST["password"];
	
	/****** verify the password *******/
	$result = mysqli_query($dbcon,"SELECT ID,password,email FROM mdl_user WHERE username ='" .$username. "'");
	$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
	$email = $row['email'];
	$t_hasher = new \PasswordHash(8, FALSE);
	$newpwd= $t_hasher->CheckPassword($pwd, $row['password']);
	if ($newpwd != true ) {
		$info = "Your Account or Password is incorrect! <br><br>Please revisit the course!
"; } else{ $ username = $username; $_SESSION['pwd'] = $pwd; $ userid = $row['ID']; $ userEmail = $email; } /***/ // If the user has already logged into moodle, there is no need to verify the password. }else{ $username = $USER->username; $userEmail = $USER->email; $userid = $USER->id; }


然后就是验证用户有没有学习相应课程的权限,如果验证成功,将用户信息存入DRM-X后台,然后获取许可证跳转至下个页面打开加密文件。注意,下面红色字体部分需要改成您的DRM-X账号、您设置的许可证服务的验证码(这个下面会做示范)以及您设置的GroupID。

									
// Query the order based on the user ID
$id_query = mysqli_query($dbcon,"SELECT id FROM mdl_user WHERE username='" .$username. "'");
$id_row = mysqli_fetch_array($id_query, MYSQLI_ASSOC);
$id_result = $id_row['id'];

$courseid_query = mysqli_query($dbcon,"SELECT contextid FROM mdl_role_assignments WHERE userid='" .$id_result. "'");
while($courseid_row = mysqli_fetch_array($courseid_query, MYSQLI_ASSOC)){
	$courseid_result = $courseid_row['contextid'];
	if ($courseid_result == $USER->ProductID){
		/******* Check whether the user exists on the DRM-X platform********/
		$wsdl="http://4.drm-x.cn/haihaisoftlicenseservice.asmx?wsdl";
		$CheckUser_param = array(
			'UserName' 		=> $username,
			'AdminEmail' 		=> 'yourEmail@163.com', //your DRM-X 4.0 account
			'WebServiceAuthStr' 	=> 'aaaaaa', // the Web Service Authentication String you set in DRM-X 4.0 background
		);

		$client = new nusoap_client($wsdl, 'wsdl');
		$client->soap_defencoding = 'UTF-8';
		$client->decode_utf8 = false;
		$CheckUser = $client->call('CheckUserExists', array('parameters' => $CheckUser_param), '', '', true, true);

		$CheckUser_result = $CheckUser['CheckUserExistsResult'];
		/*** End detecting whether the user exists **/

// If the username is not exists, call 'AddNewUser' to add user.
		if($CheckUser_result == "False"){
			$add_user_param = array(
				'AdminEmail' 		=> 'yourEmail@163.com',// your DRM-X 4.0 account
				'WebServiceAuthStr' => 'aaaaaa',// the Web Service Authentication String you set in DRM-X 4.0 background
				'GroupID' 		=> '11726',//GroupID
				'UserLoginName' 	=> $username,// Username or ID
				'UserPassword' 		=> 'N/A', 
				'UserEmail' 		=> $userEmail,
				'UserFullName' 		=> 'N/A', 
				'Title' 		=> 'N/A',
				'Company' 		=> 'N/A',
				'Address' 		=> 'N/A',
				'City' 			=> 'N/A',
				'Province' 		=> 'N/A',
				'ZipCode' 		=> 'N/A',
				'Phone' 		=> 'N/A',
				'CompanyURL' 		=> 'N/A',
				'SecurityQuestion' 	=> 'N/A',
				'SecurityAnswer' 	=> 'N/A',
				'IP' 			=> getIP(),//
				'Money' 		=> '0',// 
				'BindNumber' 		=> '2',// 
				'IsApproved' 		=> 'yes',// 
				'IsLockedOut' 		=> 'no',// 
			);

			$add_user = $client->call('AddNewUser', array('parameters' => $add_user_param), '', '', true, true);
			$result = $add_user['AddNewUserResult'];
		}
		/*** Successfully added new users ***/
						/***** obtain a license after the license authority is updated ****/
		$param = array(
		  'AdminEmail' 		=> 'yourEmail@163.com',// your DRM-X 4.0 account
		  'WebServiceAuthStr'  => 'aaaaaa',// the Web Service Authentication String you set in DRM-X 4.0 background
		  'ProfileID'          => $USER->ProfileID,
		  'ClientInfo'         => $USER->ClientInfo,        
		  'RightsID'           => $USER->RightsID,
		  'UserLoginName'      => $username, 
		  'UserFullName'       => 'N/A', 
		  'GroupID'            => 11726,//GroupID
		  'Message'            => 'N/A',
		  'IP'                 => getIP(),
		  'Platform'           => $USER->Platform, 
		  'ContentType'        => $USER->ContentType,
		  'Version'            => $USER->Version, 
		);

		$client = new nusoap_client($wsdl, 'wsdl');
		$client->soap_defencoding = 'UTF-8';
		$client->decode_utf8 = false;
		/***** Obtain a license by calling the getLicenseRemoteToTableWithVersion method ******/
		$result = $client->call('getLicenseRemoteToTableWithVersion', array('parameters' => $param), '', '', true, true);
		$license = $result['getLicenseRemoteToTableWithVersionResult'];
		$message = $result['Message'];

		if(stripos($license, '<div id="License_table_DRM-x4" style="display:none;">' )  === false )
		  echo "<SCRIPT language=JavaScript>location='LicError.php?error=".$license."&message=".$message."';</SCRIPT>";
		/***** After obtaining the license, store the license and message into $USER, then jump to the licstore page. ******/
		$USER->license = $license;
		$USER->message = $message;
		 echo "<SCRIPT language=JavaScript>location='licstore.php';</SCRIPT>";
		$flag = 1;
		$info = "Getting license...";
		exit;
	}
}
									
								

这里只是最简单的样例验证,如果您在moodle中安装了更多的功能插件,例如学生自主购买课程,支付课程费用等等,您还需在代码中加入是否购买,支付是否完成的验证。


再进入DRM-X平台的账户设置选项,选择网站集成参数设置,选择自定义登录页面集成,依次填入许可证服务的验证码和您集成页面的url,这样用户打开加密文件后就会跳转到您的moodle集成页面进行验证了。


这样就基本完成了将DRM-X与您的moodle网站的集成,之后您只需将加密文件发给您的学生用户,通过Xvast浏览器打开即可查看加密内容,而没有您课程学习权限的人就算拿到了加密文件也无法查看。


当然,您也可以直接将加密文件嵌入您的moodle页面,这样您的学生可以直接在您的网站内浏览学习您的课程。

在刚刚创建的示例课程的主题1中添加一个活动或资源,选择网页。


如图示在html栏目里加入嵌入代码,嵌入代码已保存在样例代码文件夹中,您只需将视频或音频地址修改成您加密文件的url即可。

									
<div id="LoadingText" style="display: none;" align="center">
	Please wait, connecting to obtain license page...
</div>
<div align="center" style="margin-top: 10px">

    <div id="playerButton" style="display: none;">
        <button onclick="supportType(event,'video/ogg','theora, vorbis')" class="playerButton" type="button">Get License...
    </button></div>

  <script type="text/javascript">
        if(navigator.userAgent.indexOf("Xvast") == -1){
            document.write('Please open the protected files in Xvast browser. Download Xvast');
        }else{
document.write('<video id="xvast_player" controls="controls" 
src="http://192.168.0.103/01James Hudson Taylor_P.mp4" class="video-js" 
data-setup=\'{ "autoplay":false, "playbackRates": [0.5, 0.7, 1, 1.5, 2, 3, 4], "width": 856, "height": 480 }\'>');
        }
</script>

									
								

四 播放您的课程。

集成完成后播放您的课程,首先在Xvast浏览器中打开您的网站登录学生账号。然后打开”示例课程”,浏览器会自动获取许可证,点击播放。

完成后效果如上图,视频播放时会有两个水印移动显示,您可以自定义水印的内容以防止被录屏,另外,DRM-X 4.0还拥有黑名单程序阻止录屏软件,以及智能防翻录功能杜绝恶意的录屏截屏。学生如果参加了示例课程的学习,就可以直接播放该课程下的加密视频。


同样,您可以直接将您加密的PDF文件链接加入您的网站课程中,您的用户同样可以直接获取许可证阅读该内容,并且其中的水印功能可以避免您的资料被恶意截屏传输,因为水印中的内容会暴露传输源头的用户的个人信息。

至此,我们介绍了如何搭建基于Moodle的教学网站,如何使用DRM-X4.0加密文件,如何将DRM-X 4.0与Moodle集成,使得用户可以便捷地观看您的加密文件的同时也让您摆脱因盗版问题无法对您的课程教学进行有效传递和销售的困扰。

询问DRM-X产品,定价,方案或其他相关咨询 - 我们专业的销售代表随时准备提供帮助。