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

📄 webadminrequesthandler.java

📁 使用工具jublider开发的一个聊天室实现基本功能,
💻 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>&nbsp;|&nbsp;"); 
		    sb.append("<a href=/ADMIN?do=banlist>show banlist</a>&nbsp;|&nbsp;");
		    sb.append("<a href=/ADMIN?do=grouplist>grouplist</a>&nbsp;|&nbsp;"); 
            sb.append("<a href=/ADMIN?do=configoverview>configoverview</a>&nbsp;|&nbsp;"); 
            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 + -