📄 interceptors.jsp
字号:
if (!isGlobal) {
url.append("&wgID=" + workgroupID);
}
response.sendRedirect(url.toString());
return;
}
}
}
}
// Remove one of the String[] prop entries:
if (deletePropEntry) {
if (deletePropertyName != null) {
// The interceptor we're working with:
PacketInterceptor interceptor = (isGlobal ? interceptorManager
.getInterceptor(interceptorIndex) : interceptorManager
.getInterceptor(workgroup.getJID().toBareJID(), interceptorIndex));
PropertyDescriptor[] descriptors = (Introspector.getBeanInfo(interceptor.getClass()))
.getPropertyDescriptors();
PropertyDescriptor propDescriptor = null;
// Look for the property specified
for (int i = 0; i < descriptors.length; i++) {
if (descriptors[i].getName().equals(deletePropertyName)) {
propDescriptor = descriptors[i];
break;
}
}
if (propDescriptor != null) {
// Get both the read and write methods:
Method readMethod = propDescriptor.getReadMethod();
Method writeMethod = propDescriptor.getWriteMethod();
// Get the String[] via the read method:
String[] entries = (String[])readMethod.invoke(interceptor, (Object[])null);
// Make a new entry array of entries.length+1 because we're
// adding one more entry to the property
String[] newEntries = new String[entries.length - 1];
int offset = 0;
for (int i = 0; i < newEntries.length; i++) {
// Skip the index of the item we want to delete
if (i == deleteIndex) {
offset++;
}
newEntries[i] = entries[i + offset];
}
// Use the write method to save the new entries:
writeMethod.invoke(interceptor, new Object[]{newEntries});
// Save interceptors
interceptorManager.saveInterceptors();
// Done, so redirect
StringBuffer url = new StringBuffer();
url.append("interceptors.jsp?edit=true&pos=").append(interceptorIndex)
.append("&managerType=").append(managerType);
if (!isGlobal) {
url.append("&wgID=" + workgroupID);
}
response.sendRedirect(url.toString());
return;
}
}
}
// Save interceptor properties
if (saveProperties) {
if (interceptorIndex >= 0) {
// The interceptor we're working with
PacketInterceptor interceptor = (isGlobal ? interceptorManager
.getInterceptor(interceptorIndex) : interceptorManager
.getInterceptor(workgroup.getJID().toBareJID(), interceptorIndex));
// A map of name/value pairs. The names are the names of the bean
// properties and the values come as parameters to this page
Map properties = getInterceptorPropertyValues(request, interceptor);
// Set the properties
BeanUtils.setProperties(interceptor, properties);
// Save the interceptors
interceptorManager.saveInterceptors();
// Add the new Queue
//String queueID = request.getParameter("queues");
//try {
//long qID = Long.valueOf(queueID).longValue();
//requestRouter.setRoutingQueue(qID);
//}
//catch (NumberFormatException e) {
//e.printStackTrace();
//}
//routingUtils.saveWorkgroupRouters(workgroup);
// Done, so redirect to this page
String redirect = "interceptors.jsp?managerType=" + managerType;
if (!isGlobal) {
redirect += "&wgID=" + workgroupID;
}
response.sendRedirect(redirect);
return;
}
}
// Add a new interceptor to the list of installable interceptors
if (addInterceptor) {
try {
if (newClassname != null) {
// Load the specified class, make sure it's an insance of the interceptor class:
Class c = ClassUtils.forName(newClassname.trim());
Object obj = c.newInstance();
if (obj instanceof PacketInterceptor) {
interceptorManager.addInterceptorClass(c);
}
else {
error = newClassname.trim() + " is not a Packet Interceptor";
}
}
else {
error = "You must specify a Packet Interceptorr class to load.";
}
}
catch (ClassNotFoundException cnfe) {
error = newClassname.trim() + " is not a valid classname";
}
catch (InstantiationException ie) {
error = newClassname.trim() + " must have a valid constructor";
}
catch (Exception e) {
Log.error(e);
error = "Could not load class " + newClassname.trim();
}
String redirect = "interceptors.jsp?errorMessage=" + error + "&managerType=" + managerType;
if (!isGlobal) {
redirect += "&wgID=" + workgroupID;
}
response.sendRedirect(redirect);
return;
}
// Change the position of an interceptor
if (changePosition) {
if (interceptorIndex >= 0) {
// Get the interceptor at the specified interceptor position
if (isGlobal) {
PacketInterceptor interceptor = interceptorManager.getInterceptor(interceptorIndex);
// Re-add it based on the "direction" we're doing. First, remove it:
interceptorManager.removeInterceptor(interceptor);
if (up) {
interceptorManager.addInterceptor(interceptorIndex - 1, interceptor);
}
if (down) {
interceptorManager.addInterceptor(interceptorIndex + 1, interceptor);
}
}
else {
PacketInterceptor interceptor = interceptorManager
.getInterceptor(workgroup.getJID().toBareJID(), interceptorIndex);
// Re-add it based on the "direction" we're doing. First, remove it:
interceptorManager.removeInterceptor(workgroup.getJID().toBareJID(), interceptor);
if (up) {
interceptorManager.addInterceptor(workgroup.getJID().toBareJID(),
interceptorIndex - 1, interceptor);
}
if (down) {
interceptorManager.addInterceptor(workgroup.getJID().toBareJID(),
interceptorIndex + 1, interceptor);
}
}
// done, so redirect
String redirect = "interceptors.jsp?managerType=" + managerType;
if (!isGlobal) {
redirect += "&wgID=" + workgroupID;
}
response.sendRedirect(redirect);
return;
}
}
// Number of installed interceptors
List<PacketInterceptor> activeInterceptors = isGlobal ? interceptorManager.getInterceptors()
: interceptorManager.getInterceptors(workgroup.getJID().toBareJID());
int interceptorCount = activeInterceptors.size();
// All interceptor classes
if (install && classname != null) {
try {
Class interceptorClass = ClassUtils.forName(classname);
PacketInterceptor newInterceptor = (PacketInterceptor)interceptorClass.newInstance();
if (isGlobal) {
interceptorManager.addInterceptor(0, newInterceptor);
}
else {
interceptorManager
.addInterceptor(workgroup.getJID().toBareJID(), 0, newInterceptor);
}
String redirect = "interceptors.jsp?managerType=" + managerType;
if (!isGlobal) {
redirect += "&wgID=" + workgroupID;
}
response.sendRedirect(redirect);
return;
}
catch (Exception e) {
e.printStackTrace();
}
}
if (remove && position > -1) {
if (isGlobal) {
PacketInterceptor interceptor = interceptorManager.getInterceptor(position);
interceptorManager.removeInterceptor(interceptor);
}
else {
PacketInterceptor interceptor = interceptorManager
.getInterceptor(workgroup.getJID().toBareJID(), position);
interceptorManager.removeInterceptor(workgroup.getJID().toBareJID(), interceptor);
}
String redirect = "interceptors.jsp?managerType=" + managerType;
if (!isGlobal) {
redirect += "&wgID=" + workgroupID;
}
response.sendRedirect(redirect);
return;
}
%>
<html>
<head>
<%
if (isGlobal) { %>
<title>Global Packet Interceptors</title>
<meta name="pageID" content="settings-interceptors"/>
<% } else { %>
<title><%= "Packet Interceptors for " + workgroupID%></title>
<meta name="subPageID" content="workgroup-interceptors"/>
<meta name="extraParams" content="<%= "wgID="+workgroupID %>"/>
<% } %>
<!--<meta name="helpPage" content="edit_or_uninstall_global_interceptors.html"/>-->
</head>
<body>
<span>
<p>Interceptors examine packets before they enter the system and can modify or reject them. Use
the forms below to install and customize <%= isGlobal ? "global" : "local"%> interceptors.
<% if ("workgroup".equals(managerType)) { %>
Current interceptors will be invoked every time a packet is sent to <%= isGlobal ? "a" : "the"%>
workgroup or <%= isGlobal ? "a" : "the"%> workgroup is sending a packet to a user or an agent.
<% }
else if ("agent".equals(managerType)) { %>
Current interceptors will be invoked every time an agent sends a presence to
<%= isGlobal ? "a" : "the"%> workgroup.
<% }
else if ("chatbot".equals(managerType)) { %>
Current interceptors will be invoked every time the chatbot of <%= isGlobal ? "a" : "the"%>
workgroup receives or sends a packet.
<% }
else if ("queue".equals(managerType)) { %>
Current interceptors will be invoked every time a user tries to join a queue of
<%= isGlobal ? "a" : "the"%> workgroup.
<% }
else if ("room".equals(managerType)) { %>
Current interceptors will be invoked when sending packets for creating a room, configuring a room
or sending room invitations to an agent or a user.
<% }
else if ("offer".equals(managerType)) { %>
Current interceptors will be invoked when sending an offer to an agent or when an agent accepts
or rejects an offer of <%= isGlobal ? "a" : "the"%> workgroup.
<% } %>
</p>
</span>
<p>
<script language="JavaScript" type="text/javascript">
var routerInfo = new Array(
<% int i = 0;
for(PacketInterceptor interceptor : interceptorManager.getAvailableInterceptors()){
try {
BeanDescriptor descriptor = (Introspector.getBeanInfo(interceptor.getClass())).getBeanDescriptor();
%>
new Array(
"<%= descriptor.getBeanClass().getName() %>",
"<%= descriptor.getValue("version") %>",
"<%= descriptor.getValue("author") %>",
"<%= StringUtils.replace(descriptor.getShortDescription(), "\"", "\\\"") %>"
)
<% if ((interceptorManager.getAvailableInterceptors().size() - i) > 1) { %>
,
<% }
} catch (Exception e) {}
i++;
}
%>
);
function properties(theForm) {
var className = theForm.interceptors.options[theForm.interceptors.selectedIndex].value;
var selected = 0;
for (selected=0; selected<routerInfo.length; selected++) {
if (routerInfo[selected][0] == className) {
var version = routerInfo[selected][1];
var author = routerInfo[selected][2];
var description = routerInfo[selected][3];
theForm.version.value = ((version=="null")?"":version);
theForm.author.value = ((author=="null")?"":author);
theForm.description.value = ((description=="null")?"":description);
break;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -