package com.avaw.urlverify.util;
import com.avaw.util.MD5;
import java.io.InputStream;
import java.util.Properties;
import javax.servlet.jsp.JspWriter;
/**
* <p>Title: URLVerify插件点播串生成类</p>
*
* <p>Description: URL Verify</p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: Avaw urlverify.avaw.com</p>
*
* @author madfool@avaw.com
* @version 1.0
*/
public class UrlVerify {
private String RealIPAndPort[] = null; //Real或Media Service服务器的IP和端口号(默认端口号为554)
private String FileName; //电影文件名
private String IPAddress; //你要使用这个点播串的IP地址(一般情况下,应该是客户端的IP地址)
private String UserID; //用户在Web页面或系统中登陆的ID号,服务端插件利用它来识别用户
private String Form; //点播串的生成来源(可以用来区分各业务系统)
private String MoveID; //要点播的文件的ID号
private String Token; //随机加密的密码名称串名称
private String TokenPasswd; //随机加密的密码名称串
private String StringMd5; //MD5签名
private String NewUrl;
private int iRand;
/**
* 构造方法
*/
public UrlVerify() {
NewUrl = "";
StringMd5 = "";
Init();
}
/**
* 构造方法 (主要是用于支持TestConfig.jsp)
* @param out JspWriter 输出流
*/
public UrlVerify(JspWriter out) {
NewUrl = "";
StringMd5 = "";
Init(out);
}
/**
* 初始化,用于加载配置信息
*/
private void Init() {
Init(null);
}
/**
* 初始化,用于加载配置信息 (主要是用于支持TestConfig.jsp)
* @param out JspWriter 输出流
*/
private void Init(JspWriter out) {
if (out == null && UrlVerifyConfig.TokenSize() > 0) return; //如果不是测试,且已经加载配置信息则返回
InputStream in = null;
Properties Props = new Properties();
try {
in = getClass().getResourceAsStream("/UrlVerify.properties"); //得到文件输入流
Props.load(in); //加载属性文件
if (UrlVerifyConfig.InitProperties(Props) == false && out != null) {
out.println("Test Fail! Please Check You Setup.<br><br>");
out.println("1." + UrlVerifyConfig.ErrorMessage + "<br>");
out.println("2.Read install.txt or install.mth File.<br>");
out.println("3.Check UrlVerify.properties File.<br>");
out.println("4.Check UrlVerify.xml File.<br>");
out.println("5.Check Web Server Configure.<br>");
out.println("6.Send You Error Info to http://urlverify.avaw.com<br>");
return;
}
if (out != null) {
out.println("Test OK!<br>");
}
}
catch (Exception e) { e.printStackTrace(); }
finally {
try {
if (in != null) in.close();
if (Props != null) Props = null;
}
catch (Exception e) {}
}
}
/**
* 设置Real或Media Service服务器的IP和端口号(如果不设置,默认端口号为554)
* @param IPAndPort String 服务器的IP和端口号
*/
public void setRealIPAndPort(String IPAndPort) {
if (IPAndPort == null || IPAndPort.length()<=0) return;
RealIPAndPort = IPAndPort.split(":"); //拆分服务器的IP和端口号
}
/**
* 设置电影文件名
* @param FileName String 电影文件名
*/
public void setFileName(String FileName) { this.FileName = FileName; }
/**
* 设置你要使用这个点播串的IP地址(一般情况下,应该是客户端的IP地址)
* @param IPAddress String 客户端IP地址
*/
public void setIPAddress(String IPAddress) { this.IPAddress = IPAddress; }
/**
* 设置用户在Web页面或系统中登陆的ID号,服务端插件利用它来识别用户
* @param UserID String 用户ID
*/
public void setUserID(String UserID) { this.UserID = UserID; }
/**
* 设置点播串的生成来源(可以用来区分各业务系统)
* @param Form String 点播来源ID
*/
public void setForm(String Form) { this.Form = Form; }
/**
* 设置要点播的文件的ID号
* @param MoveID String 点播的文件的ID号
*/
public void setMoveID(String MoveID) { this.MoveID = MoveID; }
/**
* 随机选择Token(MD5密钥)中的一个
*/
private void RandomToken() {
double drand = Math.random() * 1000;
iRand = (int )drand % UrlVerifyConfig.TokenSize(); //生成随机数
Token = "p" + iRand;
}
/**
* 组合生成点播的URL
*/
private void GenerateURL() {
if (FileName == null || FileName.length() <=0) return;
if (IPAddress == null || IPAddress.length() <=0) return;
if (UserID == null || UserID.length() <=0) return;
if (Form == null || Form.length() <=0) return;
if (MoveID == null || MoveID.length() <=0) return;
NewUrl = FileName + "?ip=" + IPAddress + "&uid=" + UserID + "&form=" + Form + "&mid=" + MoveID +
"&st=" + System.currentTimeMillis() / 1000 + "&token=" + Token;
if (RealIPAndPort != null && RealIPAndPort.length == 2) { //如果长度为2,则证明带端口号(不带则默认为554)
if (RealIPAndPort[1].equals("554") == false) //如果带的端口号不是554则...
NewUrl += "&port=" + RealIPAndPort[1]; //加入新的端口号参数
}
}
/**
* 根据点播URL生成MD5加密数据,此方法暂不公开.
*/
private void GenerateMD5() {
StringMd5 = 生成的加密签名字符串; //生成加密签名字符串的方法暂不公开.
}
/**
* 获取加密的RTSP或MMS点播串
* @return String 返回生成的串,生成失败返回空
*/
public String GetUrl() {
RandomToken();
GenerateURL();
GenerateMD5();
if (StringMd5 == null || StringMd5.length() <=0) return null;
else return NewUrl + "&Key="+StringMd5;
}
}
流媒体服务器防盗链插件
5星 · 超过95%的资源 需积分: 20 42 浏览量
2008-12-14
17:37:20
上传
评论
收藏 2.04MB ZIP 举报
norain5000
- 粉丝: 1
- 资源: 7
最新资源
- 重启进行BIOS快捷方式,不需要开机按BIOS键
- 威纶通触摸屏编程软件Easy builder pro V6.09.01.556安装包(2024.04).txt
- WindowsAdminCenter
- 老飞飞搭建基础通用数据库V19数据库.rar
- jquery.js
- 机械设计多工位ACF贴胶带&预压设备sw18可编辑非常好的设计图纸100%好用.zip
- 基于Pytorch复现Point-Transformer,用于ShapeNet数据集点云分割
- 【医学影像分析】2D超声图像的分割检测(Ultrasound Nerve Segmentation - Kaggle数据集)
- 嘎嘎香的五款神仙谷歌插件
- .arch书源导入教程.mp4
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论1