·软件知识库 ·模板素材库
注册 | 登录

您所在的位置: INDEX > linux > 系统单点登录coremail邮箱

系统单点登录coremail邮箱

许杰 Sun Jul 05 12:01:51 CST 2015 字号:

基本思路:在模块中配置好海信邮箱的域名、服务器IP和端口号。根据当前用户AD从系统配置库中获取到用户的邮箱地址,用户在KM系统中第一次(第一次操作之后,系统会保存一份文档,下次点击链接时直接登录)登录邮箱时,运行一个代理跳转到登录页面,在登录页面中选择好域名和登录语言,通过代理把“域名、服务器IP、端口号、用户邮箱、服务提供商(电信或网通)等参数传到servlet文件中,servlet文件根据coremail工程师提供的JAVA接口来写。代码如下:

iimport tebie.applib.api.APIContext;
import tebie.applib.api.IClient;
import java.net.Socket;
import javax.servlet.*;
import javax.servlet.http.*;
//import java.lang.*;
import java.util.*;
import java.net.*;
public class LoginCoreMail extends HttpServlet {
       String msg;
       String cookieValue = Long.toHexString(new Random().nextLong());   //随机生成一个数字字符串
       public LoginCoreMail() {
              msg = null;
       }
       public String getLoginURL(String AddrIP,String ParremoteIP,String Parport,String Parlanguage,String Pardomain,String 
ParmailName,String ParwebService){
              APIContext apic = null;
              IClient client = null;
              Socket socket;
              String mailsvrurl = null;
              try{
                     socket = new Socket(ParremoteIP, Integer.parseInt(Parport));
                     client = APIContext.getClient(socket);
               String UserName = ParmailName;
            String language = Parlanguage;
              String style = ParwebService;
              String IpCheck = "";
            apic = client.userLoginEx(UserName, "language=" + language + "&style=" + style + "&remote_ip=" + AddrIP + 
"&ipcheck=" + IpCheck +"&cookiecheck=" + cookieValue);     //通过coremail工程师提供的JAVA接口,获取到APIContext对象。
            int retcode = apic.getRetCode();
            if (retcode == 0) {
                String result = apic.getResult();
                int sidBegin = result.indexOf("sid=");
                    int webnameBegin = result.indexOf("webname=");
                 // assert sidBegin != -1 && webnameBegin != -1;
                  int sidEnd = result.indexOf('&', sidBegin);
                  int webnameEnd = result.indexOf('&', webnameBegin);
                  String sid = URLDecoder.decode((sidEnd != -1) ? result.substring(sidBegin+4 ,sidEnd) : result.substring
(sidBegin+4));        //得到当前用户登录的session id
                  String webname = URLDecoder.decode((webnameEnd != -1) ? result.substring(webnameBegin+8 , 
webnameEnd):result.substring(webnameBegin+8));
                mailsvrurl = webname + "/coremail/fcg/ldapapp?funcid=main&sid=" + sid;
            }
        }catch (Exception e){
                     e.printStackTrace();
                     msg = e.getMessage();
              }finally{
                     try{
                            client.close();
                     }catch(Exception e){
                            e.printStackTrace();
                     }
              }
              return mailsvrurl;
       }
       public void doGet(HttpServletRequest request, HttpServletResponse response)
                     throws ServletException, java.io.IOException {
              //String mailUrl=request.getParameter("mailUrl"); //用户邮箱地址
              String remoteIP=request.getParameter("IP");       //邮件服务器IP
              String port=request.getParameter("port");         //邮件服务器端口号
              String language=request.getParameter("lan");      //登录语言
              String domain=request.getParameter("do");        //域名
              String mailName=request.getParameter("Name");     
              String webService=request.getParameter("web");    //电信或是网通提供商
              ServletOutputStream servletoutputstream = response.getOutputStream();
              Cookie cookie = new Cookie("Coremail", cookieValue);    //根据cookieValue随机生成一个cookie值
              cookie.setPath("/");
              cookie.setDomain(domain);
              response.addCookie(cookie);
              String mailsvrurl = null;
              //String AddrIP = request.getRemoteAddr();
                String AddrIP = "";
              mailsvrurl = getLoginURL(AddrIP,remoteIP,port,language,domain,mailName,webService);    //通过代理传过来的参数
              if (mailsvrurl != null)
                     response.sendRedirect(mailsvrurl);     //成功登录海信邮箱
              else
                     servletoutputstream.println(msg);
       }
       public void doPost(HttpServletRequest request, HttpServletResponse response)
                     throws ServletException, java.io.IOException {
              doGet(request, response);       //通过dopost把附加在URL中的参数去掉,通过另外的流传递。                  
       }
}


『相关搜索』
版本信息:kms v1.3 鄂ICP备2023004815号-1 51LA统计