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

📄 conductorcontrollerservlet.java

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