⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conductorcontrollerservlet.java

📁 Sun公司Dream项目
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
                                                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 + -