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

📄 conductorcontrollerservlet.java

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