1 package freecs.external; 2 3 import freecs.Server; 4 import freecs.content.BanObject; 5 import freecs.content.ContentContainer; 6 import freecs.core.Group; 7 import freecs.core.GroupManager; 8 import freecs.core.User; 9 import freecs.core.UserManager; 10 import freecs.interfaces.IRequest; 11 import freecs.layout.Template; 12 import freecs.layout.TemplateSet; 13 14 public class WebadminRequestHandler extends AbstractRequestHandler { 15 16 public WebadminRequestHandler(String handlerName) { 17 super(handlerName); 18 } 19 20 public void handle(IRequest req, ContentContainer c) throws AccessForbiddenException { 21 checkAccessIp(req, c); 22 checkAccessAuth(req, c); 23 24 StringBuffer sb = new StringBuffer (); 25 renderTemplate(req, "admin_header", sb); 26 27 String action = req.getValue("do"); 28 if ("removeuser".equalsIgnoreCase(action)) { 29 removeUser(req, sb); 30 } else if ("removeban".equalsIgnoreCase(action)) { 31 removeBan(req, sb); 32 } else if ("sendmessage".equalsIgnoreCase(action)) { 33 sendMessage(req, sb); 34 } else if ("sendmessagetouser".equalsIgnoreCase(action)) { 35 sendMessageToUser(req, sb); 36 } else if ("sendmessagetogroup".equalsIgnoreCase(action)) { 37 sendMessageToGroup(req, sb); 38 } else if ("grouplist".equalsIgnoreCase(action)) { 39 renderGrouplist(req, sb); 40 } else if ("userlist".equalsIgnoreCase(action)) { 41 renderUserlist(req, sb); 42 } else if ("searchuser".equalsIgnoreCase(action)) { 43 searchUser(req, sb); 44 } else if ("banlist".equalsIgnoreCase(action)) { 45 renderBanlist(req, sb); 46 } else if ("configoverview".equalsIgnoreCase(action)) { 47 renderConfigoverview(req, sb); 48 } else if ("shutdown".equalsIgnoreCase(action)) { 49 System.exit(0); 51 } else { 52 sb.append("<form action=/ADMIN method=post>"); 53 sb.append("send message: <input type=text name=msg><input type=submit value=send>"); 54 sb.append("<input type=hidden name=do value=sendmessage></form>"); 55 sb.append("<form action=/ADMIN method=post>"); 56 sb.append("send message: <input type=text name=msg><br>"); 57 sb.append(" to user: <input type=text name=username><input type=submit value=send>"); 58 sb.append("<input type=hidden name=do value=sendmessagetouser></form>"); 59 sb.append("<form action=/ADMIN method=post>"); 60 sb.append("send message: <input type=text name=msg><br>"); 61 sb.append(" to group: <input type=text name=groupname><input type=submit value=send>"); 62 sb.append("<input type=hidden name=do value=sendmessagetogroup></form>"); 63 64 sb.append("<form action=/ADMIN method=post>"); 65 sb.append("find user: <input type=text name=usr>"); 66 sb.append("<input type=submit value=send>"); 67 sb.append("<input type=hidden name=do value=searchuser></form>"); 68 69 sb.append("<a HREF=/ADMIN?do=userlist>show userlist</a> | "); 70 sb.append("<a HREF=/ADMIN?do=banlist>show banlist</a> | "); 71 sb.append("<a HREF=/ADMIN?do=grouplist>grouplist</a> | "); 72 sb.append("<a HREF=/ADMIN?do=configoverview>configoverview</a> | "); 73 sb.append("<a HREF=/ADMIN?do=shutdown>shutdown</a>"); 74 } 75 76 c.wrap (sb.toString()); 77 } 78 79 public void removeUser(IRequest req, StringBuffer sb) { 80 String usrName = req.getValue("name"); 81 String usrCookie = req.getValue("cookie"); 82 String force = req.getValue("force"); 83 User ur = UserManager.mgr.getUserByCookie(usrCookie); 84 if (ur==null) 85 ur = UserManager.mgr.getUserByName (usrName); 86 if (ur!=null) { 87 ur.sendQuitMessage(false); 88 if ("true".equalsIgnoreCase(force)) { 89 UserManager.mgr.ustr.removeUser(ur); 90 sb.append("forcibly removed user"); 91 } else { 92 sb.append("removed user"); 93 } 94 } else { 95 sb.append("user not found"); 96 } 97 } 98 99 public void removeBan(IRequest req, StringBuffer sb) { 100 String val = req.getValue("name"); 101 if (val != null) { 102 if (Server.srv.removeBan(val)) 103 sb.append("removed ban for user " + val); 104 else 105 sb.append("No ban found for user " + val); 106 } else { 107 val = req.getValue("host"); 108 if (Server.srv.removeBan(val)) 109 sb.append("removed ban for host " + val); 110 else 111 sb.append("No ban found for host " + val); 112 } 113 } 114 115 public void sendMessage(IRequest req, StringBuffer sb) { 116 if (req.getValue("msg") == null) { 117 sb.append("no message!"); 118 } else { 119 AdminCore.messageToAll(req.getValue("msg")); 120 sb.append("message sent!"); 121 } 122 } 123 public void sendMessageToUser(IRequest req, StringBuffer sb) { 124 if (req.getValue("msg") == null || req.getValue("username") == null) { 125 sb.append("no message or username!"); 126 } else { 127 AdminCore.messageToUser(req.getValue("msg"),req.getValue("username")); 128 sb.append("message sent!"); 129 } 130 } 131 public void sendMessageToGroup(IRequest req, StringBuffer sb) { 132 if (req.getValue("msg") == null || req.getValue("groupname") == null) { 133 sb.append("no message or groupname!"); 134 } else { 135 AdminCore.messageToGroup(req.getValue("msg"),req.getValue("groupname")); 136 sb.append("message sent!"); 137 } 138 } 139 140 public void renderUserlist(IRequest req, StringBuffer sb) { 141 sb.append ("<b>FreeCS-Userlist</b><br><table class=mainTable>"); 142 User[] users = UserManager.mgr.ustr.toArray(); 143 for (int i = 0; i < users.length; i++) { 144 User u = users[i]; 145 sb.append ("<tr>"); 146 sb.append ("<td class=logout><a HREF=/admin?do=removeuser&name="); 147 sb.append (u.getName().toLowerCase()); 148 sb.append ("&cookie="); 149 sb.append (u.getCookie()); 150 sb.append (">logout</a>"); 151 sb.append ("</td>"); 152 sb.append ("<td class=remove>"); 153 sb.append ("<a HREF=/admin?do=removeuser&name="); 154 sb.append (u.getName().toLowerCase()); 155 sb.append ("&cookie="); 156 sb.append (u.getCookie()); 157 sb.append ("&force=true>remove</a>"); 158 sb.append ("</td>"); 159 sb.append ("<td class=username>"); 160 sb.append (u.getName()); 161 sb.append ("</td>"); 162 sb.append ("<td class=groupname>in "); 163 Group g = u.getGroup(); 164 sb.append (g != null ? g.getRawName() : "<i>currently changing group</i>"); 165 sb.append ("</td>"); 166 sb.append ("</tr>\r\n"); 167 } 168 } 169 170 public void searchUser(IRequest req, StringBuffer sb) { 171 String usrName = req.getValue("usr"); 172 sb.append ("<b>FreeCS-Usersearch</b><br><table class=mainTable>"); 173 User u = UserManager.mgr.getUserByName(usrName); 174 if (u != null) { 175 sb.append ("<tr>"); 176 sb.append ("<td class=logout><a HREF=/admin?do=removeuser&name="); 177 sb.append (u.getName().toLowerCase()); 178 sb.append ("&cookie="); 179 sb.append (u.getCookie()); 180 sb.append (">logout</a>"); 181 sb.append ("</td>"); 182 sb.append ("<td class=remove>"); 183 sb.append ("<a HREF=/admin?do=removeuser&name="); 184 sb.append (u.getName().toLowerCase()); 185 sb.append ("&cookie="); 186 sb.append (u.getCookie()); 187 sb.append ("&force=true>remove</a>"); 188 sb.append ("</td>"); 189 sb.append ("<td class=username>"); 190 sb.append (u.getName()); 191 sb.append ("</td>"); 192 sb.append ("<td class=groupname>in "); 193 Group g = u.getGroup(); 194 sb.append (g != null ? g.getRawName() : "<i>currently changing group</i>"); 195 sb.append ("</td>"); 196 sb.append ("</tr>\r\n"); 197 } else sb.append ("<br>User not found"); 198 } 199 200 public void renderBanlist(IRequest req, StringBuffer sb) { 201 BanObject[] bArr = Server.srv.getBanList(); 202 sb.append ("<b>FreeCS-BanList</b><br>"); 203 if (bArr.length<1) { 204 sb.append ("There are no BanObjects at the moment"); 205 } else { 206 StringBuffer ub = new StringBuffer (); 207 StringBuffer hb = new StringBuffer (); 208 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>"); 209 hb.append ("<table border=0><tr><td><b>Host</b></td><td><td>Banned until</td><td>Release</td><td>details</td></tr>"); 210 for (int i = 0; i<bArr.length; i++) { 211 BanObject curr = bArr[i]; 212 if (curr.hostban==null) { 213 ub.append ("<tr><td>"); 214 ub.append (curr.usr); 215 ub.append (" ("); 216 ub.append (curr.con); 217 ub.append (")</td><td>"); 218 ub.append (curr.bannedBy); 219 ub.append ("</td><td>"); 220 ub.append (Server.formatDefaultTimeStamp(curr.time)); 221 ub.append ("</td><td>"); 222 ub.append ("<a HREF=/admin?do=removeban&name="); 223 ub.append (curr.usr); 224 ub.append (">X</a></td><td>"); 225 ub.append (curr.msg); 226 ub.append ("</td></tr>"); 227 } else { 228 hb.append ("<tr><td>"); 229 hb.append (curr.hostban); 230 hb.append ("</td><td>"); 231 hb.append (Server.formatDefaultTimeStamp(curr.time)); 232 hb.append ("</td><td>"); 233 hb.append ("<a HREF=/admin?do=removeban&host="); 234 hb.append (curr.hostban); 235 hb.append (">X</a></td><td>"); 236 hb.append (curr.msg); 237 hb.append ("</td></tr>"); 238 } 239 } 240 ub.append("</table>"); 241 hb.append("</table>"); 242 sb.append ("<table border=0><tr><td valign=top>"); 243 sb.append (ub.toString()); 244 sb.append ("</td><td width=2 bgcolor=#000000></td><td valign=top>"); 245 sb.append (hb.toString()); 246 sb.append ("</td></tr></table>"); 247 } 248 sb.append ("</table>"); 249 } 250 251 public void renderGrouplist(IRequest req, StringBuffer sb) { 252 Group[] grps = GroupManager.mgr.currentGroupList(); 253 sb.append (GroupManager.mgr.openGroupsCount() + " open group(s)<br><br>"); 254 for (int i = 0; i < grps.length; i++) { 255 sb.append (grps[i].toString()).append("<br>"); 256 } 257 } 258 259 public void renderConfigoverview(IRequest req, StringBuffer sb) { 260 sb.append ("<b>FreeCS-Config Overview</b><br>"); 261 sb.append ("<table class=mainTable>"); 262 sb.append ("<tr>"); 263 sb.append ("<td>"); 264 sb.append ("maxUsers: "+Server.srv.MAX_USERS); 265 sb.append ("</td>"); 266 sb.append ("</tr>"); 267 sb.append ("<tr>"); 268 sb.append ("<td>"); 269 sb.append ("Usertimeout: "+Server.srv.USER_TIMEOUT/60000+" min"); 270 sb.append ("</td>"); 271 sb.append ("</tr>"); 272 sb.append ("<tr>"); 273 sb.append ("<td>"); 274 sb.append ("Userawaytimeout: "+Server.srv.USER_AWAY_TIMEOUT/60000+" min"); 275 sb.append ("</td>"); 276 sb.append ("</tr>"); 277 sb.append ("<tr>"); 278 sb.append ("<td>"); 279 sb.append ("Viptimeout: "+Server.srv.VIP_TIMEOUT/60000+" min"); 280 sb.append ("</td>"); 281 sb.append ("</tr>"); 282 sb.append ("<tr>"); 283 sb.append ("<td>"); 284 sb.append ("Max Suusers: "+Server.srv.MAX_SUUSERS_PER_STARTGROUP); 285 sb.append ("</td>"); 286 sb.append ("</tr>"); 287 sb.append ("<tr>"); 288 sb.append ("<td>"); 289 sb.append ("Max Groupnamelength: "+Server.srv.MAX_GROUPNAME_LENGTH); 290 sb.append ("</td>"); 291 sb.append ("</tr>"); 292 sb.append ("<tr>"); 293 sb.append ("<td>"); 294 sb.append ("Max Groupthemelength: "+Server.srv.MAX_GROUPTHEME_LENGTH); 295 sb.append ("</td>"); 296 sb.append ("</tr>"); 297 sb.append ("<tr>"); 298 sb.append ("<td>"); 299 sb.append ("Max Banduration: "+Server.srv.MAX_BAN_DURATION+" min"); 300 sb.append ("</td>"); 301 sb.append ("</tr>"); 302 sb.append ("<tr>"); 303 sb.append ("<td>"); 304 sb.append ("Max Floodbanduration: "+Server.srv.FLOOD_BAN_DURATION+" millis"); 305 sb.append ("</td>"); 306 sb.append ("</tr>"); 307 sb.append ("<tr>"); 308 sb.append ("<td>"); 309 sb.append ("Floodprotectmillis: "+Server.srv.FLOOD_PROTECT_MILLIS); 310 sb.append ("</td>"); 311 sb.append ("</tr>"); 312 sb.append ("<tr>"); 313 sb.append ("<td>"); 314 sb.append ("Floodprotecttoleranc: "+Server.srv.FLOOD_PROTECT_TOLERANC); 315 sb.append ("</td>"); 316 sb.append ("</tr>"); 317 sb.append ("<tr>"); 318 sb.append ("<td>"); 319 sb.append ("Max Toolbanduration: "+Server.srv.TOOL_BAN_DURATION+" millis"); 320 sb.append ("</td>"); 321 sb.append ("</tr>"); 322 sb.append ("<tr>"); 323 sb.append ("<td>"); 324 sb.append ("Toolprotectcounter: "+Server.srv.TOOL_PROTECT_COUNTER); 325 sb.append ("</td>"); 326 sb.append ("</tr>"); 327 sb.append ("<tr>"); 328 sb.append ("<td>"); 329 sb.append ("Toolprotecttoleranc: "+Server.srv.TOOL_PROTECT_TOLERANC); 330 sb.append ("</td>"); 331 sb.append ("</tr>"); 332 sb.append ("<tr>"); 333 sb.append ("<td>"); 334 sb.append ("Toolprotectminmills: "+Server.srv.TOOL_PROTECT_MINMILLS); 335 sb.append ("</td>"); 336 sb.append ("</tr>"); 337 sb.append ("<tr>"); 338 sb.append ("<td>"); 339 sb.append ("Toolprotectmincounter: "+Server.srv.TOOL_PROTECT_MINCOUNTER); 340 sb.append ("</td>"); 341 sb.append ("</tr>"); 342 sb.append ("<tr>"); 343 sb.append ("<td>"); 344 sb.append ("Startgroups/Theme: "+Server.srv.props.getProperty("startgroups")); 345 sb.append ("</td>"); 346 sb.append ("</tr>"); 347 sb.append ("</table>"); 348 } 349 private void renderTemplate(IRequest req, String name, StringBuffer sb) { 350 sb.append(renderTemplate(req, name)); 351 } 352 353 private String renderTemplate(IRequest req, String name) { 354 TemplateSet ts = Server.srv.templatemanager.getTemplateSet ("admin"); 355 Template tpl = ts.getTemplate (name); 356 return tpl.render(req); 357 } 358 359 360 } 361 | Popular Tags |