📄 conductorcontrollerservlet.java
字号:
riCountCheck++;
if(verbElements[l].getCount()!= null) {
if(Integer.parseInt(verbElements[l].getCount().getCount()) <= Integer.parseInt(riVerbElements[n].verbArgValue)) {
logger.finer("OLD COUNT: "+riVerbElements[n].verbArgValue);
int value = Integer.parseInt(riVerbElements[n].verbArgValue) - Integer.parseInt(verbElements[l].getCount().getCount());
logger.finer("NEW COUNT: "+value);
ri[j].verbElements[n].verbArgValue = String.valueOf(value);
v.add(ri[j]);
granted = true; n=riVerbElements.length; grantCount++;
logger.finer("GRANTED");
} else {
logger.finer("DENIED");
denied = true; n=riVerbElements.length;
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
if (riCountCheck == 0 && verbCount > 0) {
granted=true;grantCount++;
}
riCountCheck=0;
verbCount=0;
}
}
}
}
}
if(grantCount==mmiRightsRequestElement[i].getVerbElement().length) {
// decrement counter here
/// mmiRightsResponseElement[i].setNotification(new Notification("granted"));
logger.finer("DECREMENTING");
for(int z=0;z<v.size();z++) {
try {
sms.updateFixedRightsInfo((com.sun.sjc.idtv.vod.shared.data.RightsInfo)v.elementAt(z));
} catch(java.rmi.RemoteException rmire) {
logger.finer("CONDUCTOR NOT ABLE TO DECREMENT COUNT");
rmire.printStackTrace();
} catch(java.sql.SQLException sqle) {
logger.finer("CONDUCTOR NOT ABLE TO DECREMENT COUNT");
sqle.printStackTrace();
}
}
} else {
/// mmiRightsResponseElement[i].setNotification(new Notification("denied"));
logger.finer("NOT DECREMENTING");
}
grantCount=0;
//Fix for multiple keys
/*
try {
License lic = getLicense(ri[0].userID, mmiRightsRequestElement[i].getContentId()[0].getContentId());
InputStream is = lic.getLicense();
byte[] bytes = new byte[188]; // MAGIC NUMBER FIX THIS
try {
while(is.read(bytes) != -1) {
}
BASE64Encoder b = new BASE64Encoder();
String encodedKeys=b.encode(bytes);
encodedKeys=URLEncoder.encode(encodedKeys, "UTF-8");
logger.finer("END OF LINE EXIST? :"+encodedKeys.indexOf('\n'));
logger.finer("END OF LINE EXIST? :"+encodedKeys.indexOf('\r'));
mmiRightsResponseElement[i].setKeys(new Keys(encodedKeys));
} catch(Exception ioe) {
ioe.printStackTrace();
}
//m_log.finer("Leaving Function...");
} catch(LicenseServerException lse) {
lse.printStackTrace();
}
*/
}
}
/**
* The doPost method of the servlet. Handles all http POST request.
* Required by the servlet specification.
* @exception throws ServletException and IOException.
*/
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
doGet(request,response);
}
private String generateRightsInfoVouchers(com.sun.sjc.idtv.vod.shared.data.RightsInfo[] rightsInfo) throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(baos);
// FIX THIS
// os.writeObject(rightsInfo[0]);
os.writeObject(rightsInfo);
os.flush();
VoucherGenerator vg = new SimpleVoucherGenerator();
BASE64Encoder b = new BASE64Encoder();
String encodedRightsInfo=b.encode(baos.toByteArray());
encodedRightsInfo = URLEncoder.encode(encodedRightsInfo, "UTF-8");
logger.finer("END OF LINE EXIST? :"+encodedRightsInfo.indexOf('\n'));
vg.addParameter("voucher",encodedRightsInfo);
return vg.generateVoucher();
}
/* private String generateRightsInfoVouchers(RightsInfo[] rightsInfo) {
StringBuffer sb = new StringBuffer();
VoucherGenerator vg = new SimpleVoucherGenerator();
BASE64Encoder b = new BASE64Encoder();
String encodedRightsInfo = null;
for(int i=0; i<rightsInfo.length; i++) {
sb.append("userID="+rightsInfo[i].userID
+"&contentID="+rightsInfo[i].movieName
+"&count="+rightsInfo[i].remainingRights
+"&licensetype="+rightsInfo[i].rightsType
+"&starttime="+rightsInfo[i].rightsStartDate.getTime()
+"&endtime="+rightsInfo[i].rightsEndDate.getTime());
VerbElement[] verbElements = rightsInfo[i].verbElements;
for(int j=0;j<verbElements.length;j++) {
sb.append("&verb="+verbElements[j].getVerbName());
sb.append("&verbArgName="+verbElements[j].getVerbArgName());
sb.append("&verbArgValue="+verbElements[j].getVerbArgValue());
}
encodedRightsInfo=b.encode(sb.toString().getBytes());
vg.addParameter("voucher",encodedRightsInfo);
}
return vg.generateVoucher();
}
*/
private boolean releaseRights(HttpServletRequest request, HttpServletResponse response, SIMVerificationInfo simVerInfo)
throws ServletException, IOException, RightsException {
logger.finer("Entering releaseRights()");
String Uid= "";
com.sun.sjc.idtv.vod.shared.data.RightsInfo[] userRightsInfo = simVerInfo.getrightsInfo();
logger.info("CONDUCTOR request URL contains: "+request.getQueryString());
try {
String simNumber = simVerInfo.getSIM();
Uid = simVerInfo.getUID();
if (Uid == null) {
throw new RightsException(
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 releaseRights 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{}, incrementing will not execute when sendRedirect fails
logger.finer("MMIMessageType="+request.getParameter("MMIMessageType"));
/*
* OLD OPERA CODE NOT NEEDED FOR INCREMENTING ON A RELEASE OF RIGHTS
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("Incrementing count after redirect");
incrementCountFromRelease(request, userRightsInfo);
/*
}
*/
} catch(IOException ioe) {
ioe.printStackTrace();
/* } catch(SQLException sqle) {
sqle.printStackTrace();
*/
}
logger.finer("Leaving releaseRights()");
return true;
}
private boolean generateLicense(HttpServletRequest request,
HttpServletResponse response,SIMVerificationInfo simVerInfo )
throws ServletException, IOException, RightsException {
logger.finer("Entering generateLicense()");
String Uid= "";
com.sun.sjc.idtv.vod.shared.data.RightsInfo[] userRightsInfo = simVerInfo.getrightsInfo();
logger.info("CONDUCTOR request URL contains: "+request.getQueryString());
try {
String simNumber = simVerInfo.getSIM();
Uid = simVerInfo.getUID();
if (Uid == null) {
throw new RightsException(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -