📄 conductorcontrollerservlet.java
字号:
RightsException.NULL_ARGUMENT,
"Missing UID.");
}
if (userRightsInfo == null && request.getParameter("MMIVersion") == null) {
throw new RightsException(
RightsException.NULL_ARGUMENT,
"License Info for SIM Number "
+ simNumber
+ " is not available.");
}
}catch(Exception e) {
logger.severe("inside generateLicense exception "+e);
}
String licenseServerURL = simVerInfo.getLicenseServerURL();
VoucherGenerator vgen = voucherGeneratorCreator.createObject(drmType);
vgen.addParameter("action" , "verify_signature");
String signature = simVerInfo.getSignature();
if (signature == null) {
signature = SIGNATURE;
}
StringBuffer sb = new StringBuffer();
if(userRightsInfo != null) {
sb.append(userRightsInfo[0].movieName);
for(int i=1;i<userRightsInfo.length; i++) {
sb.append(","+userRightsInfo[i].movieName);
}
}
// check case
vgen.addParameter("content_id", request.getParameter("content_id"));
vgen.addParameter("userid", request.getParameter("userid"));
String Shopid = "operaShop0";
vgen.addParameter("shopid", Shopid);
HttpSession httpSession = request.getSession(false);
if(httpSession == null) {
logger.finer("SESSION IS EMPTY");
}
String session_id = request.getParameter("session_id");
String encryptedURL = licenseServerURL + "?" +"session_id="+session_id+"&"+vgen.generateVoucher()+"&"+generateRightsInfoVouchers(simVerInfo.getrightsInfo());
logger.finer("CONDUCTOR redirecting to LICENSE SERVER: ");
request.getSession().setAttribute("encrypted_url", encryptedURL);
try {
logger.finer("Sending redirect");
String encodedRedirectURLencodedURL = response.encodeRedirectURL(response.encodeURL(encryptedURL));
logger.finer("ENCODED REDIRECT URL ENCODED URL"+encodedRedirectURLencodedURL);
response.sendRedirect(response.encodeRedirectURL(response.encodeURL(encryptedURL)));
// when in this try{}, decrementing will not execute when sendRedirect fails
logger.finer("MMIMessageType="+request.getParameter("MMIMessageType"));
if(request.getParameter("MMIVersion") == null) {
//NEEDS TO BE FIXED FOR VERB ELEMENTS
for(int i=0;i<userRightsInfo.length; i++) {
int licenseType = userRightsInfo[i].rightsType;
int remaining = userRightsInfo[i].remainingRights;
String userid = userRightsInfo[i].userID;
if (licenseType == Const.FIXED_USE_LICENSE_TYPE) {
int nowremaining = remaining - 1;
userRightsInfo[i].remainingRights = nowremaining;
sms.updateFixedRightsInfo(userRightsInfo[i]);
}
}
} else {
logger.finer("Decrementing count after redirect");
decrementCountFromRequest(request, userRightsInfo);
}
} catch(IOException ioe) {
ioe.printStackTrace();
} catch(SQLException sqle) {
sqle.printStackTrace();
}
logger.finer("Leaving generateLicense()");
return true;
}
private boolean isPasswordAuthenticated(String encrypted) {
return false;
}
private boolean isPasswordAuthenticated(String encrypted, String dbpasswd ) {
return decryptPassword(encrypted, dbpasswd);
}
/******** TAKEN FROM OPERA PROXY CODE AND MODIFIED TO DECRYPT **************/
private boolean decryptPassword(String encrypted, String dbpasswd) {
try {
MessageDigest md = (MessageDigest) MessageDigest.getInstance("MD5").clone();
md.update(dbpasswd.getBytes());
byte[] bytes = md.digest();
StringBuffer sb = new StringBuffer(bytes.length * 2);
for (int i=0 ; i < bytes.length; i++) {
sb.append(convertDigit((int) (bytes[i] >> 4)));
sb.append(convertDigit((int) (bytes[i] & 0x0f)));
}
return md.isEqual(encrypted.getBytes(), bytes);
} catch (Exception ex) {
//logger.debug(ex);
ex.printStackTrace();
return false;
}
}
/****** TAKEN FROM OPERA PROXY CODE ****************/
private char convertDigit(int value) {
value &= 0x0f;
if (value >= 10)
return ((char) (value - 10 + 'a'));
else
return ((char) (value + '0'));
}
private void forwardToJSP(
HttpServletRequest request,
HttpServletResponse response,
String jspPath)
throws ServletException, RightsException {
logger.finer("forwardToJSP: "+jspPath);
if (jspPath == null) {
throw new RightsException(
RightsException.NULL_ARGUMENT,
"JSP path is not specified.");
}
try {
getServletConfig().getServletContext().getRequestDispatcher(
jspPath).forward(
request,
response);
} catch (java.io.IOException ioException) {
ioException.printStackTrace();
throw new RightsException(
RightsException.INTERNAL_ERROR,
"Error in sending resource: " + ioException.getMessage());
}
}
private boolean isTodayInBetween(Date startTime, Date endTime) {
Date today = new Date();
if (today.before(startTime) || today.after(endTime)) {
return false;
}
return true;
}
protected boolean doRefresh(
HttpServletRequest request,
HttpServletResponse response,
boolean sendRefresh)
throws ServletException, IOException, RightsException {
HttpSession session = request.getSession();
logger.finer("DO REFRESH");
String encrURL = (String) session.getAttribute("encrypted_url");
if (encrURL != null) {
response.sendRedirect(encrURL);
return true;
}
boolean isRefresh = true;
int timeout = 0;
int refresh = 0;
Integer refreshInterval =
(Integer) session.getAttribute(Const.REFRESH_INTERVAL);
if (refreshInterval == null) {
session.invalidate();
throw new RightsException(
RightsException.SESSION_EXPIRED,
"Session has expired.");
} else {
refresh = refreshInterval.intValue();
}
Integer timeoutInterval =
(Integer) session.getAttribute(Const.TIMEOUT_INTERVAL);
if (timeoutInterval == null) {
session.invalidate();
throw new RightsException(
RightsException.SESSION_EXPIRED,
"Session has expired.");
} else {
timeout = timeoutInterval.intValue();
}
timeout -= refresh;
session.setAttribute(Const.TIMEOUT_INTERVAL, new Integer(timeout));
if (timeout < 1) {
isRefresh = false;
}
Double randomKey = (Double) session.getAttribute(Const.RANDOM_KEY);
SIMVerificationInfo simVerInfo =
(SIMVerificationInfo) smsVerificationTable.get(randomKey);
if(simVerInfo == null)
return true;
/*if (!simVerInfo.getSMSSendSuccess()) {
smsVerificationTable.remove(randomKey);
session.invalidate();
throw new RightsException(
RightsException.INTERNAL_ERROR,
"Failed to send verification SMS message.");
}*/
if (simVerInfo != null && simVerInfo.isVerified()) {
isRefresh = false;
//session.setAttribute(Const.TIMEOUT_INTERVAL, new Integer(0));
boolean gLicense = generateLicense(request, response, simVerInfo);
smsVerificationTable.remove(randomKey);
session.invalidate();
return gLicense;
} else {
String message = null;
if (!isRefresh) {
message = Const.MESSAGE_TIMEOUT;
smsVerificationTable.remove(randomKey);
} else {
message = Const.MESSAGE_IN_PROGRESS;
if (! sendRefresh ) {
return false;
}
}
request.setAttribute(Const.MESSAGE, message);
request.setAttribute(Const.ERROR_MESSAGE, null);
String jspPath = request.getParameter(Const.JSP_PATH);
if (jspPath == null || "".equals(jspPath.trim())) {
jspPath = NOTIFY_JSP;
}
forwardToJSP(request, response, jspPath);
return true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -