📄 conductorcontrollerservlet.java
字号:
if (simNumber == null || "".equals(simNumber.trim())) {
if (userID == null || "".equals(userID.trim())) {
request.getSession().invalidate();
request.setAttribute("Msg", "userid not found");
throw new RightsException(
RightsException.NULL_ARGUMENT,
"Missing SIM# and User ID. Either SIM Number or User ID is required.");
}
/*
*retrieve the user information for userid in the requested URL
*
*/
logger.finer("userID="+userID);
userInfo = sms.getSubscriberInfoFromID(userID);
if (userInfo== null){
request.getSession().invalidate();
request.setAttribute("Msg", "User details not found");
throw new RightsException(
RightsException.NULL_ARGUMENT,
"Missing SIM# and User ID. Either SIM Number or User ID is required.");
}
simNumber = userInfo.SimCardNum;
} else {
/*
* retrieves the user information for a SIM number in the requested URL
*/
userInfo = sms.getSubscriberInfoFromID(simNumber);
if (userInfo == null) {
request.getSession().invalidate();
throw new RightsException(
RightsException.NULL_ARGUMENT,
"User with SIM Number "
+ simNumber
+ " is not registered.");
}
}
}
String passwd = request.getParameter(Const.PASSWORD);
if(!ssoflag) {
if (passwd != null && ! passwd.trim().equals("")) {
if (!passwd.trim().equals(userInfo.pin)) {
request.getSession().invalidate();
request.setAttribute("Msg", "Password not valid");
throw new RightsException(
RightsException.NULL_ARGUMENT,
"Password not valid");
}
}
}
/*
*retrieve movie metadata for a movie from conductor bean
*/
MovieMetaData movieInfo = cond.getMovieInfo(movieName);
if (movieInfo== null){
request.getSession().invalidate();
request.setAttribute("Msg", "Moviedetails not found");
throw new RightsException(
RightsException.NULL_ARGUMENT,
"Moviedetails not found");
}
contentID = movieInfo.ContentID;
drmType = movieInfo.DrmType;
if (licenseServerURL == null) {
licenseServerURL = (String) osLicenseServerURLMap.get(movieInfo.DrmType);
logger.finer("license server url from drm type"+ licenseServerURL);
}
/*
*retrieve the rights information for the user
*
*/
logger.finer("calling getUserRightsForContent");
String[] list = contentID.split("\\,");
logger.finer("userID="+userID);
com.sun.sjc.idtv.vod.shared.data.RightsInfo singleRights = null;
Vector v = new Vector();
if(list == null){
logger.finer("list == null");
list = new String[1];
list[0] = contentID;
}
logger.finer("list:"+list.length);
//FIX THIS
for(int i=0; i<list.length; i++) {
logger.finer("calling getUserRightsForContent");
logger.finer("ARGUMENTS TO CONDUCTOR BEAN: "+userID + " "+list[i]);
singleRights = cond.getUserRightsForContent(userID, list[i]);
logger.finer("RESULTS OF CONDUCTOR BEAN" + singleRights.userID+" "+singleRights.movieName+" ");
logger.finer("calling getUserRightsForContent called");
if (singleRights== null){
logger.finer("singlerights=null");
// request.getSession().invalidate();
// request.setAttribute("Msg", "User Rights not found");
// throw new RightsException(RightsException.NULL_ARGUMENT,"User Rights not found.");
} else {
logger.finer("singlerights added to vector");
v.add(singleRights);
}
}
com.sun.sjc.idtv.vod.shared.data.RightsInfo[] userRights = null;
if(v.size() > 0){
userRights = new com.sun.sjc.idtv.vod.shared.data.RightsInfo[v.size()];
for(int j=0;j<v.size();j++) {
logger.finer("calling getUserRightsForContent called3 "+v.size());
userRights[j] = (com.sun.sjc.idtv.vod.shared.data.RightsInfo)v.elementAt(j);
}
logger.finer("VECTOR: v="+v.size());
logger.finer("userID="+userID);
logger.finer("exit getUserRightsForContent");
// String voucher = generateVouchers((RightsInfo[])v.toArray());
//response.sendRedirect(licenseServerURL+"?"+request.getQueryString()+"&"+voucher);
if(request.getParameter("MMIVersion") == null){
int licenseType = userRights[0].rightsType;
int remaining = userRights[0].remainingRights;
java.util.Date endTime = userRights[0].rightsEndDate;
java.util.Date startTime = userRights[0].rightsStartDate;
if (licenseType == Const.FIXED_USE_LICENSE_TYPE) {
if (remaining < 1) {
errorMessage = Const.ERROR_LIMIT_EXCEEDED;
}
} else if (licenseType == Const.TIME_BOUND_LICENSE_TYPE) {
//check the difference in date
if (!isTodayInBetween(startTime,endTime)){
errorMessage = Const.ERROR_EXPIRED;
}
} else {
// license check returned false
errorMessage = Const.ERROR_NOT_SUPPORTED;
}
logger.severe("ERRORMESG"+errorMessage);
}
}
logger.severe("ERRORMESG"+errorMessage);
if (errorMessage == null) {
SIMVerificationInfo simVerificationInfo =
new SIMVerificationInfo(
simNumber,
userID,
userRights,
userInfo.SimCardNum,
null,
licenseServerURL,
licenseSignature);
/*
* Call the generateLicense function if authentication is success
*/
if (passwd != null && ! passwd.trim().equals("")) {
logger.finer("Checking password...");
if (passwd.trim().equals(userInfo.pin)) {
String strQuery = request.getQueryString();
String strMMIMessage = strQuery.substring(strQuery.indexOf("MMIVersion"),strQuery.indexOf("&password"));
logger.info("EXTRACTED QUERY="+strMMIMessage);
MMIMessage mmiMessageRequest = null;
MMIParserFactory mmiParserFactory = MMIParserFactory.PLAINTEXT;
MMIPlainTextParser mmiPlainTextParser = (MMIPlainTextParser)mmiParserFactory.createParser();
try {
mmiMessageRequest = mmiPlainTextParser.parseMessage(strMMIMessage);
} catch (Exception e) {
e.printStackTrace();
}
if(((MMIRequest)mmiMessageRequest.getMMIDataObject()).getMMIMessageType().getMMIMessageType().equalsIgnoreCase("MMIRightsRequest")) {
logger.finer("generating license...");
generateLicense(request, response,simVerificationInfo);
request.setAttribute("Msg", "request succeeded check ur account");
return;
} else if(((MMIRequest)mmiMessageRequest.getMMIDataObject()).getMMIMessageType().getMMIMessageType().equalsIgnoreCase("MMIRightsRelease")) {
logger.finer("releasing rights...");
releaseRights(request, response, simVerificationInfo);
return;
}
} else {
errorMessage = Const.ERROR_AUTHENTICATION_FAILED;
logger.severe("ERRORMESG"+errorMessage);
}
} else {
double randomKey = randomGenerator.nextDouble();
while(smsVerificationTable.containsKey(new Double(randomKey))) {
randomKey = randomGenerator.nextDouble();
}
logger.finer(randomKey+"");
simVerificationInfo.setSMSMessage(Double.toString(randomKey));
smsVerificationTable.put(new Double(randomKey), simVerificationInfo);
// SMSInteraction.sendMessage(simVerificationInfo);
request.getSession().setAttribute(Const.RANDOM_KEY, new Double(randomKey));
refreshInterval = iProperties.getProperty(Const.REFRESH_INTERVAL, "5");
timeoutInterval = iProperties.getProperty(Const.TIMEOUT_INTERVAL, "30");
//start ticking
request.getSession().setAttribute(
Const.TIMEOUT_INTERVAL,
new Integer(timeoutInterval));
request.getSession().setAttribute(
Const.REFRESH_INTERVAL,
new Integer(refreshInterval));
}
}
request.getSession().setAttribute(Const.RECALL, "true");
request.setAttribute(Const.ERROR_MESSAGE, errorMessage);
request.setAttribute(Const.MESSAGE, null);
if (errorMessage == null &&
"true".equalsIgnoreCase(blockOnLicenseRequest)) {
long currentTime = System.currentTimeMillis();
long maxTime = currentTime + Integer.parseInt(timeoutInterval) * 1000;
long sleepTime = Integer.parseInt(refreshInterval) * 1000;
while (true) {
boolean succ = doRefresh(request, response, false);
if (succ) return;
try {
Thread.sleep(sleepTime);
} catch (InterruptedException ex) {
return;
}
}
} else {
jspPath = request.getParameter(Const.JSP_PATH);
if (jspPath == null || "".equals(jspPath.trim())) {
jspPath = NOTIFY_JSP;
}
if (errorMessage != null) {
request.setAttribute("Msg", errorMessage);
} else {
request.setAttribute("Msg", "Rights not found");
}
forwardToJSP(request, response, jspPath);
}
}
}catch (Exception ex) {
logger.severe("exception in doGet "+ex);
//MMI response with error must be sent back
sendDeniedResponse(request, response);
jspPath = request.getParameter(Const.JSP_PATH);
if (jspPath == null || "".equals(jspPath.trim())) {
jspPath = NOTIFY_JSP;
}
try{
forwardToJSP(request, response, jspPath);
}catch(Exception f) {
logger.severe("exception in forwardToJSP" +f);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -