public String checkTName(User u, String name) { if (Server.srv.getProperty("costum.userAgent") == null) return name; String browseragent = name; if (u != null && u.getUserAgent() != null) { browseragent = u.getUserAgent(); } else return name; boolean defaultFile = true; String ta[] = Server.srv.getProperty("costum.userAgent").split(","); Vector<String> tempAgent = new Vector<String>(); for (int i = 0; i < ta.length; i++) { tempAgent.add(ta[i].trim().toLowerCase()); } int fn = 0; int found = 0; for (Enumeration<String> e = tempAgent.elements(); e.hasMoreElements(); ) { StringBuilder customAgent = new StringBuilder((String) e.nextElement()); fn++; if (browseragent.toLowerCase().indexOf(customAgent.toString().toLowerCase()) >= 0) { defaultFile = false; Server.log( this, "Found Browser '" + customAgent + "'(" + u.getUserAgent() + ")", Server.MSG_STATE, Server.LVL_VERBOSE); found = fn; continue; } else { if (u != null && u.getUserAgent() != null) Server.log( this, "Browser '" + customAgent + "' not found(" + u.getUserAgent() + ")", Server.MSG_STATE, Server.LVL_VERBOSE); } customAgent = null; } StringBuilder fName = null; if (defaultFile) { return name; } else { fName = new StringBuilder(name).append("_custom").append(found); if (ts == null || u == null | u.getName() == null) return name; tpl = ts.getTemplate(fName.toString()); if (tpl == null) { Server.log( this, u.getTemplateSet() + " File " + fName + " not found", Server.MSG_STATE, Server.LVL_VERBOSE); fName = new StringBuilder(name).append("_custom"); tpl = ts.getTemplate(fName.toString()); } if (tpl == null) { Server.log( this, u.getTemplateSet() + " File " + fName + " not found- loading default input File", Server.MSG_ERROR, Server.LVL_MAJOR); return name; } } return fName.toString(); }
public boolean execute(MessageState msgState, String param) { if (isPunished(msgState)) return false; if (param.length() < 1) { msgState.msgTemplate = "error.su.noArg"; msgState.sender.sendMessage(msgState.mp); return false; } msgState.targetGroup = msgState.sender.getGroup(); Group sg = msgState.sender.getGroup(); if (sg == null) return false; boolean mayChangeRights = msgState.sender.hasRight(IUserStates.MAY_CHANGE_RIGHT); if (!mayChangeRights && !sg.usrIsSu(msgState.sender)) { msgState.msgTemplate = "error.noRight.noSuVipAdmin"; msgState.sender.sendMessage(msgState.mp); return false; } if (param.indexOf(" ") > -1 && !msgState.sender.hasRight(IUserStates.ROLE_VIP)) { msgState.msgTemplate = "error.mass.noRight.noVipAdmin"; msgState.sender.sendMessage(msgState.mp); return false; } msgState.useRenderCache = false; GroupUserList gul = new GroupUserList(); Vector<User> found = getMultibleUsers(msgState, param); for (Iterator<User> i = found.iterator(); i.hasNext(); ) { User cu = (User) i.next(); if (cu.hasRight(IUserStates.ROLE_GOD)) { msgState.msgTemplate = "error.noRight.isAdmin"; msgState.usercontext = cu; msgState.sender.sendMessage(msgState.mp); i.remove(); continue; } else if (cu.hasRight(IUserStates.ROLE_VIP)) { msgState.msgTemplate = "error.noRight.isVip"; msgState.usercontext = cu; msgState.sender.sendMessage(msgState.mp); i.remove(); continue; } else if (cu.hasRight(IUserStates.ROLE_ASSHOLE)) { msgState.msgTemplate = "error.su.noRight"; msgState.usercontext = cu; msgState.sender.sendMessage(msgState.mp); i.remove(); continue; } if (!mayChangeRights && !msgState.sender.getGroup().equals(cu.getGroup())) { msgState.msgTemplate = "error.noRight.noVipAdmin"; msgState.sender.sendMessage(msgState.mp); i.remove(); continue; } if (cu.getMembership(sg.getSuForbiddenMembership()) != null) { msgState.msgTemplate = "error.noRight.isSuForbiddenMembership"; msgState.usercontext = cu; msgState.sender.sendMessage(msgState.mp); i.remove(); continue; } if (cu.getGroup() == null // user is currently changing groups... || cu.getGroup().usrIsSu(cu)) { i.remove(); continue; } if (cu.getGroup().hasState(IGroupState.ENTRANCE) && !mayChangeRights && sg.suUserCount() >= Server.srv.MAX_SUUSERS_PER_STARTGROUP) { msgState.msgTemplate = "error.su.tooManyForStartgroup"; msgState.param = String.valueOf(Server.srv.MAX_SUUSERS_PER_STARTGROUP); msgState.sender.sendMessage(msgState.mp); i.remove(); while (i.hasNext()) { // Object o = i.next(); i.remove(); } break; } msgState.usrList = null; if (setSuRight(msgState, cu, true)) { msgState.usercontext = cu; gul.addUser(cu, null); if (found.size() > 1) { msgState.msgTemplate = "message.su.personal"; cu.sendMessage(msgState.mp); } StringBuffer sb = new StringBuffer(); sb.append(msgState.sender.getName()); sb.append(" gave su-rights to user "); sb.append(cu.getName()); sb.append(" in group "); sb.append(cu.getGroup().getRawName()); Server.log(this, sb.toString(), Server.MSG_STATE, Server.LVL_MINOR); } else if (!sg.usrIsSu(msgState.sender) && !msgState.sender.hasRight(IUserStates.ROLE_VIP)) { User u = msgState.usercontext; msgState.usercontext = cu; msgState.msgTemplate = "error.noRight.noSuVipAdmin"; msgState.sender.sendMessage(msgState.mp); i.remove(); msgState.usercontext = u; } else if (!isSu(msgState.sender, cu.getGroup(), msgState)) { if (msgState.usrList != null) { // user doesn't have apropriate membership msgState.targetGroup = cu.getGroup(); if (msgState.usrList.length > 1) { msgState.msgTemplate = "error.membership.notMember.many"; } else { msgState.msgTemplate = "error.membership.notMember"; } msgState.usercontext = cu; msgState.sender.sendMessage(msgState.mp); i.remove(); continue; } } else { User u = msgState.usercontext; msgState.usercontext = cu; msgState.msgTemplate = "error.noRight.deactivated"; msgState.sender.sendMessage(msgState.mp); i.remove(); msgState.usercontext = u; } } if (found.size() == 0) return false; if (found.size() == 1) { msgState.msgTemplate = "message.su.singular"; msgState.usercontext = (User) found.get(0); Group g = msgState.usercontext.getGroup(); g.sendMessage(msgState.mp); if (!msgState.sender.getGroup().equals(g)) { msgState.msgTemplate = "message.su.confirm.singular"; msgState.sender.sendMessage(msgState.mp); } return true; } msgState.msgTemplate = "message.su.confirm.plural"; msgState.usrList = found.toArray(); msgState.sender.sendMessage(msgState.mp); gul.sendMessage(msgState, "message.su", false); return true; }