📄 gateway-registrations.jsp
字号:
<%@ 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 + -