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

📄 gateway-registrations.jsp

📁 基于Jabber协议的即时消息服务器
💻 JSP
📖 第 1 页 / 共 2 页
字号:
<%@ page import="java.util.*,
                 org.xmpp.packet.Presence,
                 org.jivesoftware.wildfire.ClientSession,
                 org.jivesoftware.wildfire.SessionManager,
                 org.jivesoftware.wildfire.XMPPServer,
                 org.jivesoftware.wildfire.user.UserNotFoundException,
                 org.jivesoftware.util.*,
                 org.jivesoftware.wildfire.gateway.GatewayPlugin,
                 org.jivesoftware.wildfire.gateway.Registration,
                 org.jivesoftware.wildfire.gateway.RegistrationManager,
                 org.xmpp.packet.JID"
    errorPage="error.jsp"
%>

<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/fmt_rt" prefix="fmt" %>

<jsp:useBean id="webManager" class="org.jivesoftware.util.WebManager" />

<%
    GatewayPlugin plugin = (GatewayPlugin)XMPPServer.getInstance().getPluginManager().getPlugin("gateway");
    HashMap<String,Boolean> trEnabled = new HashMap<String,Boolean>();
    trEnabled.put("aim", plugin.getTransportInstance("aim").isEnabled());
    trEnabled.put("icq", plugin.getTransportInstance("icq").isEnabled());
    trEnabled.put("irc", plugin.getTransportInstance("irc").isEnabled());
    trEnabled.put("msn", plugin.getTransportInstance("msn").isEnabled());
    trEnabled.put("yahoo", plugin.getTransportInstance("yahoo").isEnabled());

    String success = request.getParameter("success");
    webManager.init(request, response, session, application, out);

    RegistrationManager registrationManager = new RegistrationManager();

    String action = ParamUtils.getParameter(request, "action");
    if (action != null) {
        if (action.equals("delete")) {
            long regId = ParamUtils.getLongParameter(request, "deleteid", -1);
            try {
                Registration reg = new Registration(regId);
                if (!trEnabled.get(reg.getTransportType().toString())) {
                    response.sendRedirect("gateway-registrations.jsp?success=false");
                }
                plugin.getTransportInstance(reg.getTransportType().toString()).getTransport().deleteRegistration(reg.getJID());
                response.sendRedirect("gateway-registrations.jsp?success=true");
                return;
            }
            catch (NotFoundException e) {
                // Ok, nevermind.
                Log.error("Not found while deleting id "+regId, e);
                response.sendRedirect("gateway-registrations.jsp?success=false");
                return;
            }
            catch (UserNotFoundException e) {
                // Ok, nevermind.
                Log.error("Not found while deleting id "+regId, e);
                response.sendRedirect("gateway-registrations.jsp?success=false");
                return;
            }
        }
        else if (action.equals("edit")) {
            long regId = ParamUtils.getLongParameter(request, "editid", -1);
            try {
                Registration reg = new Registration(regId);
                reg.setUsername(ParamUtils.getParameter(request, "gatewayUsername"));
                if (!ParamUtils.getParameter(request, "gatewayPassword").equals("********")) {
                    reg.setPassword(ParamUtils.getParameter(request, "gatewayPassword"));
                }
                reg.setNickname(ParamUtils.getParameter(request, "gatewayNickname"));
                response.sendRedirect("gateway-registrations.jsp?success=true");
                return;
            }
            catch (NotFoundException e) {
                // Ok, nevermind.
                Log.error("Not found while editing id "+regId, e);
                response.sendRedirect("gateway-registrations.jsp?success=false");
                return;
            }
        }
        else if (action.equals("add")) {
            JID jid;
            String jidStr = ParamUtils.getParameter(request, "gatewayJID");
            if (jidStr.contains("@")) {
                jid = new JID(jidStr);
            }
            else {
                jid = new JID(jidStr, XMPPServer.getInstance().getServerInfo().getName(), null);
            }
            String typeStr = ParamUtils.getParameter(request, "gatewayType");
            String username = ParamUtils.getParameter(request, "gatewayUser");
            String password = ParamUtils.getParameter(request, "gatewayPass");
            String nickname = ParamUtils.getParameter(request, "gatewayNick");
            if (!trEnabled.get(typeStr)) {
                response.sendRedirect("gateway-registrations.jsp?success=false");
                return;
            }
            try {
                plugin.getTransportInstance(typeStr).getTransport().addNewRegistration(jid, username, password, nickname);
                response.sendRedirect("gateway-registrations.jsp?success=true");
                return;
            }
            catch (UserNotFoundException e) {
                Log.error("Not found while adding account for "+jid.toString());
                response.sendRedirect("gateway-registrations.jsp?success=false");
                return;
            }
            catch (IllegalAccessException e) {
                Log.error("Domain of JID specified for registration is not on this server: "+jid.toString());
                response.sendRedirect("gateway-registrations.jsp?success=false");
                return;
            }
            catch (IllegalArgumentException e) {
                Log.error("Username specified for registration is not valid.");
                response.sendRedirect("gateway-registrations.jsp?success=false");
                return;
            }
        }
    }

    Collection<Registration> registrations = registrationManager.getRegistrations();

    // Get the user manager
    SessionManager sessionManager = webManager.getSessionManager();

    // Lets gather what information we are going to display
    class regResult {
        public JID jid = null;
        public long id = -1;
        public String type = null;
        public String username = null;
        public String nickname = null;
        public String status = "unavailable";
        public String linestatus = "offline";
        public String lastLogin = null;
        public boolean sessionActive = false;
    }
    Collection<regResult> regResults = new ArrayList<regResult>();

    ArrayList<String> filteropts = new ArrayList<String>();
    if (ParamUtils.getParameter(request, "filter[]") != null) {
        String[] optlist = ParamUtils.getParameters(request, "filter[]");
        for (String opt : optlist) {
            filteropts.add(opt);
        }
    }
    else if (webManager.getPageProperty("gateway-registrations", "filterSET", 0) != 0) {
        if (webManager.getPageProperty("gateway-registrations", "filterAIM", 0) != 0) { filteropts.add("aim"); }
        if (webManager.getPageProperty("gateway-registrations", "filterICQ", 0) != 0) { filteropts.add("icq"); }
        if (webManager.getPageProperty("gateway-registrations", "filterMSN", 0) != 0) { filteropts.add("msn"); }
        if (webManager.getPageProperty("gateway-registrations", "filterYAHOO", 0) != 0) { filteropts.add("yahoo"); }
        if (webManager.getPageProperty("gateway-registrations", "filterIRC", 0) != 0) { filteropts.add("irc"); }
        if (webManager.getPageProperty("gateway-registrations", "filterSIGNEDON", 0) != 0) { filteropts.add("signedon"); }
    }
    else {
        filteropts.add("aim");
        filteropts.add("icq");
        filteropts.add("msn");
        filteropts.add("yahoo");
        filteropts.add("irc");
    }

    webManager.setPageProperty("gateway-registrations", "filterSET", 1);
    webManager.setPageProperty("gateway-registrations", "filterAIM", filteropts.contains("aim") ? 1 : 0);
    webManager.setPageProperty("gateway-registrations", "filterICQ", filteropts.contains("icq") ? 1 : 0);
    webManager.setPageProperty("gateway-registrations", "filterMSN", filteropts.contains("msn") ? 1 : 0);
    webManager.setPageProperty("gateway-registrations", "filterYAHOO", filteropts.contains("yahoo") ? 1 : 0);
    webManager.setPageProperty("gateway-registrations", "filterIRC", filteropts.contains("irc") ? 1 : 0);
    webManager.setPageProperty("gateway-registrations", "filterSIGNEDON", filteropts.contains("signedon") ? 1 : 0);

    int resCount = 0;
    for (Registration registration : registrations) {
        regResult res = new regResult();
        res.id = registration.getRegistrationID();
        res.jid = registration.getJID();
        res.username = registration.getUsername();
        res.nickname = registration.getNickname();
        res.type = registration.getTransportType().toString();
        if (!filteropts.contains(res.type)) { continue; }

    	try {
            ClientSession clientSession = (ClientSession)sessionManager.getSessions(res.jid.getNode()).toArray()[0];
            if (clientSession != null) {
                Presence presence = clientSession.getPresence();
                if (presence == null) {
                    // not logged in, leave alone
                }
                else if (presence.getShow() == Presence.Show.xa) {
                    res.status = "away";
                    res.linestatus = "online";
                }
                else if (presence.getShow() == Presence.Show.away) {
                    res.status = "away";
                    res.linestatus = "online";
                }
                else if (presence.getShow() == Presence.Show.chat) {
                    res.status = "free_chat";
                    res.linestatus = "online";
                }
                else if (presence.getShow() == Presence.Show.dnd) {
                    res.status = "dnd";
                    res.linestatus = "online";
                }
                else if (presence.isAvailable()) {
                    res.status = "available";
                    res.linestatus = "online";
                }
            }
        }
        catch (Exception e) {
        }

        if (res.linestatus.equals("offline") && filteropts.contains("signedon")) { continue; }

        Date lastLogin = registration.getLastLogin();
        res.lastLogin = ((lastLogin != null) ? lastLogin.toString() : "<i>never</i>");

        res.sessionActive = false;
        try {
            plugin.getTransportInstance(res.type).getTransport().getSessionManager().getSession(res.jid);
            res.sessionActive = true;
        }
        catch (Exception e) {
            res.sessionActive = false;
        }
        resCount++;
        regResults.add(res);
    }

    final int DEFAULT_RANGE = 15;
    final int[] RANGE_PRESETS = {15, 30, 50, 100};

    int start = ParamUtils.getIntParameter(request,"start",0);
    int range = ParamUtils.getIntParameter(request,"range",webManager.getRowsPerPage("gateway-registrations", DEFAULT_RANGE));

    if (request.getParameter("range") != null) {
        webManager.setRowsPerPage("gateway-registrations", range);
    }

    // paginator vars
    int numPages = (int)Math.ceil((double)resCount/(double)range);
    int curPage = (start/range) + 1;

    int topRange = ((start+range) < resCount) ? (start+range) : resCount;
%>

<html>

<head>
<title>Gateway Registrations</title>
<meta name="pageID" content="gateway-registrations">
<style type="text/css">
<!--	@import url("style/gateways.css");    -->
</style>
<script language="JavaScript" type="text/javascript" src="scripts/gateways.js"></script>
</head>

<body>

<p><fmt:message key="gateway.web.registrations.instructions" /></p>

<%
    if (success != null) {
        if (success.equals("true")) {
%>

    <div class="jive-success">
    <table cellpadding="0" cellspacing="0" border="0">
    <tbody>
        <tr><td class="jive-icon"><img src="images/success-16x16.gif" width="16"
 height="16" border="0" alt=""></td>
        <td class="jive-icon-label">
            <fmt:message key="gateway.web.registrations.regsuccess" />
        </td></tr>
    </tbody>
    </table>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -