📄 webadminrequesthandler.java
字号:
package freecs.external;
import freecs.Server;
import freecs.content.BanObject;
import freecs.content.ContentContainer;
import freecs.core.Group;
import freecs.core.GroupManager;
import freecs.core.User;
import freecs.core.UserManager;
import freecs.interfaces.IRequest;
import freecs.layout.Template;
import freecs.layout.TemplateSet;
public class WebadminRequestHandler extends AbstractRequestHandler {
public WebadminRequestHandler(String handlerName) {
super(handlerName);
}
public void handle(IRequest req, ContentContainer c) throws AccessForbiddenException {
checkAccessIp(req, c);
checkAccessAuth(req, c);
StringBuffer sb = new StringBuffer();
renderTemplate(req, "admin_header", sb);
String action = req.getValue("do");
if ("removeuser".equalsIgnoreCase(action)) {
removeUser(req, sb);
} else if ("removeban".equalsIgnoreCase(action)) {
removeBan(req, sb);
} else if ("sendmessage".equalsIgnoreCase(action)) {
sendMessage(req, sb);
} else if ("sendmessagetouser".equalsIgnoreCase(action)) {
sendMessageToUser(req, sb);
} else if ("sendmessagetogroup".equalsIgnoreCase(action)) {
sendMessageToGroup(req, sb);
} else if ("grouplist".equalsIgnoreCase(action)) {
renderGrouplist(req, sb);
} else if ("userlist".equalsIgnoreCase(action)) {
renderUserlist(req, sb);
} else if ("searchuser".equalsIgnoreCase(action)) {
searchUser(req, sb);
} else if ("banlist".equalsIgnoreCase(action)) {
renderBanlist(req, sb);
} else if ("configoverview".equalsIgnoreCase(action)) {
renderConfigoverview(req, sb);
} else if ("shutdown".equalsIgnoreCase(action)) {
// Server.srv.startShutdown();
System.exit(0);
} else {
sb.append("<form action=/ADMIN method=post>");
sb.append("send message: <input type=text name=msg><input type=submit value=send>");
sb.append("<input type=hidden name=do value=sendmessage></form>");
sb.append("<form action=/ADMIN method=post>");
sb.append("send message: <input type=text name=msg><br>");
sb.append(" to user: <input type=text name=username><input type=submit value=send>");
sb.append("<input type=hidden name=do value=sendmessagetouser></form>");
sb.append("<form action=/ADMIN method=post>");
sb.append("send message: <input type=text name=msg><br>");
sb.append(" to group: <input type=text name=groupname><input type=submit value=send>");
sb.append("<input type=hidden name=do value=sendmessagetogroup></form>");
sb.append("<form action=/ADMIN method=post>");
sb.append("find user: <input type=text name=usr>");
sb.append("<input type=submit value=send>");
sb.append("<input type=hidden name=do value=searchuser></form>");
sb.append("<a href=/ADMIN?do=userlist>show userlist</a> | ");
sb.append("<a href=/ADMIN?do=banlist>show banlist</a> | ");
sb.append("<a href=/ADMIN?do=grouplist>grouplist</a> | ");
sb.append("<a href=/ADMIN?do=configoverview>configoverview</a> | ");
sb.append("<a href=/ADMIN?do=shutdown>shutdown</a>");
}
c.wrap (sb.toString());
}
public void removeUser(IRequest req, StringBuffer sb) {
String usrName = req.getValue("name");
String usrCookie = req.getValue("cookie");
String force = req.getValue("force");
User ur = UserManager.mgr.getUserByCookie(usrCookie);
if (ur==null)
ur = UserManager.mgr.getUserByName (usrName);
if (ur!=null) {
ur.sendQuitMessage(false);
if ("true".equalsIgnoreCase(force)) {
UserManager.mgr.ustr.removeUser(ur);
sb.append("forcibly removed user");
} else {
sb.append("removed user");
}
} else {
sb.append("user not found");
}
}
public void removeBan(IRequest req, StringBuffer sb) {
String val = req.getValue("name");
if (val != null) {
if (Server.srv.removeBan(val))
sb.append("removed ban for user " + val);
else
sb.append("No ban found for user " + val);
} else {
val = req.getValue("host");
if (Server.srv.removeBan(val))
sb.append("removed ban for host " + val);
else
sb.append("No ban found for host " + val);
}
}
public void sendMessage(IRequest req, StringBuffer sb) {
if (req.getValue("msg") == null) {
sb.append("no message!");
} else {
AdminCore.messageToAll(req.getValue("msg"));
sb.append("message sent!");
}
}
public void sendMessageToUser(IRequest req, StringBuffer sb) {
if (req.getValue("msg") == null || req.getValue("username") == null) {
sb.append("no message or username!");
} else {
AdminCore.messageToUser(req.getValue("msg"),req.getValue("username"));
sb.append("message sent!");
}
}
public void sendMessageToGroup(IRequest req, StringBuffer sb) {
if (req.getValue("msg") == null || req.getValue("groupname") == null) {
sb.append("no message or groupname!");
} else {
AdminCore.messageToGroup(req.getValue("msg"),req.getValue("groupname"));
sb.append("message sent!");
}
}
public void renderUserlist(IRequest req, StringBuffer sb) {
sb.append ("<b>FreeCS-Userlist</b><br><table class=mainTable>");
User[] users = UserManager.mgr.ustr.toArray();
for (int i = 0; i < users.length; i++) {
User u = users[i];
sb.append ("<tr>");
sb.append ("<td class=logout><a href=/admin?do=removeuser&name=");
sb.append (u.getName().toLowerCase());
sb.append ("&cookie=");
sb.append (u.getCookie());
sb.append (">logout</a>");
sb.append ("</td>");
sb.append ("<td class=remove>");
sb.append ("<a href=/admin?do=removeuser&name=");
sb.append (u.getName().toLowerCase());
sb.append ("&cookie=");
sb.append (u.getCookie());
sb.append ("&force=true>remove</a>");
sb.append ("</td>");
sb.append ("<td class=username>");
sb.append (u.getName());
sb.append ("</td>");
sb.append ("<td class=groupname>in ");
Group g = u.getGroup();
sb.append (g != null ? g.getRawName() : "<i>currently changing group</i>");
sb.append ("</td>");
sb.append ("</tr>\r\n");
}
}
public void searchUser(IRequest req, StringBuffer sb) {
String usrName = req.getValue("usr");
sb.append ("<b>FreeCS-Usersearch</b><br><table class=mainTable>");
User u = UserManager.mgr.getUserByName(usrName);
if (u != null) {
sb.append ("<tr>");
sb.append ("<td class=logout><a href=/admin?do=removeuser&name=");
sb.append (u.getName().toLowerCase());
sb.append ("&cookie=");
sb.append (u.getCookie());
sb.append (">logout</a>");
sb.append ("</td>");
sb.append ("<td class=remove>");
sb.append ("<a href=/admin?do=removeuser&name=");
sb.append (u.getName().toLowerCase());
sb.append ("&cookie=");
sb.append (u.getCookie());
sb.append ("&force=true>remove</a>");
sb.append ("</td>");
sb.append ("<td class=username>");
sb.append (u.getName());
sb.append ("</td>");
sb.append ("<td class=groupname>in ");
Group g = u.getGroup();
sb.append (g != null ? g.getRawName() : "<i>currently changing group</i>");
sb.append ("</td>");
sb.append ("</tr>\r\n");
} else sb.append ("<br>User not found");
}
public void renderBanlist(IRequest req, StringBuffer sb) {
BanObject[] bArr = Server.srv.getBanList();
sb.append ("<b>FreeCS-BanList</b><br>");
if (bArr.length<1) {
sb.append ("There are no BanObjects at the moment");
} else {
StringBuffer ub = new StringBuffer();
StringBuffer hb = new StringBuffer();
ub.append ("<table border=0><tr><td><b>User (ip)</b></td><td><b>Banned by</b></td><td>Banned until</td><td>Release</td><td>Message</td></tr>");
hb.append ("<table border=0><tr><td><b>Host</b></td><td><td>Banned until</td><td>Release</td><td>details</td></tr>");
for (int i = 0; i<bArr.length; i++) {
BanObject curr = bArr[i];
if (curr.hostban==null) {
ub.append ("<tr><td>");
ub.append (curr.usr);
ub.append (" (");
ub.append (curr.con);
ub.append (")</td><td>");
ub.append (curr.bannedBy);
ub.append ("</td><td>");
ub.append (Server.formatDefaultTimeStamp(curr.time));
ub.append ("</td><td>");
ub.append ("<a href=/admin?do=removeban&name=");
ub.append (curr.usr);
ub.append (">X</a></td><td>");
ub.append (curr.msg);
ub.append ("</td></tr>");
} else {
hb.append ("<tr><td>");
hb.append (curr.hostban);
hb.append ("</td><td>");
hb.append (Server.formatDefaultTimeStamp(curr.time));
hb.append ("</td><td>");
hb.append ("<a href=/admin?do=removeban&host=");
hb.append (curr.hostban);
hb.append (">X</a></td><td>");
hb.append (curr.msg);
hb.append ("</td></tr>");
}
}
ub.append("</table>");
hb.append("</table>");
sb.append ("<table border=0><tr><td valign=top>");
sb.append (ub.toString());
sb.append ("</td><td width=2 bgcolor=#000000></td><td valign=top>");
sb.append (hb.toString());
sb.append ("</td></tr></table>");
}
sb.append ("</table>");
}
public void renderGrouplist(IRequest req, StringBuffer sb) {
Group[] grps = GroupManager.mgr.currentGroupList();
sb.append (GroupManager.mgr.openGroupsCount() + " open group(s)<br><br>");
for (int i = 0; i < grps.length; i++) {
sb.append (grps[i].toString()).append("<br>");
}
}
public void renderConfigoverview(IRequest req, StringBuffer sb) {
sb.append ("<b>FreeCS-Config Overview</b><br>");
sb.append ("<table class=mainTable>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("maxUsers: "+Server.srv.MAX_USERS);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Usertimeout: "+Server.srv.USER_TIMEOUT/60000+" min");
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Userawaytimeout: "+Server.srv.USER_AWAY_TIMEOUT/60000+" min");
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Viptimeout: "+Server.srv.VIP_TIMEOUT/60000+" min");
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Max Suusers: "+Server.srv.MAX_SUUSERS_PER_STARTGROUP);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Max Groupnamelength: "+Server.srv.MAX_GROUPNAME_LENGTH);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Max Groupthemelength: "+Server.srv.MAX_GROUPTHEME_LENGTH);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Max Banduration: "+Server.srv.MAX_BAN_DURATION+" min");
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Max Floodbanduration: "+Server.srv.FLOOD_BAN_DURATION+" millis");
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Floodprotectmillis: "+Server.srv.FLOOD_PROTECT_MILLIS);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Floodprotecttoleranc: "+Server.srv.FLOOD_PROTECT_TOLERANC);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Max Toolbanduration: "+Server.srv.TOOL_BAN_DURATION+" millis");
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Toolprotectcounter: "+Server.srv.TOOL_PROTECT_COUNTER);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Toolprotecttoleranc: "+Server.srv.TOOL_PROTECT_TOLERANC);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Toolprotectminmills: "+Server.srv.TOOL_PROTECT_MINMILLS);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Toolprotectmincounter: "+Server.srv.TOOL_PROTECT_MINCOUNTER);
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("<tr>");
sb.append ("<td>");
sb.append ("Startgroups/Theme: "+Server.srv.props.getProperty("startgroups"));
sb.append ("</td>");
sb.append ("</tr>");
sb.append ("</table>");
}
private void renderTemplate(IRequest req, String name, StringBuffer sb) {
sb.append(renderTemplate(req, name));
}
private String renderTemplate(IRequest req, String name) {
TemplateSet ts = Server.srv.templatemanager.getTemplateSet ("admin");
Template tpl = ts.getTemplate (name);
return tpl.render(req);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -