diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java index cf1296c0f..99de1227a 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/AdminRequestHandler.java @@ -79,6 +79,8 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur addItemsToCollection(request, responseWriter); } else if (uri.equals("/banUser") && request.getMethod() == HttpMethod.POST) { banUser(request, responseWriter); + } else if (uri.equals("/banMultiple") && request.getMethod() == HttpMethod.POST) { + banMultiple(request, responseWriter); } else if (uri.equals("/banUserTemp") && request.getMethod() == HttpMethod.POST) { banUserTemp(request, responseWriter); } else if (uri.equals("/unBanUser") && request.getMethod() == HttpMethod.POST) { @@ -98,7 +100,7 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur List similarPlayers = _playerDAO.findSimilarAccounts(login); if (similarPlayers == null) - responseWriter.writeError(404); + throw new HttpProcessingException(404); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); @@ -107,7 +109,7 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur Element players = doc.createElement("players"); for (Player similarPlayer : similarPlayers) { - Element playerElem = doc.createElement("league"); + Element playerElem = doc.createElement("player"); playerElem.setAttribute("id", String.valueOf(similarPlayer.getId())); playerElem.setAttribute("name", similarPlayer.getName()); playerElem.setAttribute("password", similarPlayer.getPassword()); @@ -140,6 +142,9 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); String login = getFormParameterSafely(postDecoder, "login"); + if (login==null) + throw new HttpProcessingException(404); + final boolean success = _playerDAO.banPlayerPermanently(login); if (!success) throw new HttpProcessingException(404); @@ -147,6 +152,23 @@ public class AdminRequestHandler extends LotroServerRequestHandler implements Ur responseWriter.writeHtmlResponse("OK"); } + private void banMultiple(HttpRequest request, ResponseWriter responseWriter) throws Exception { + validateAdmin(request); + + HttpPostRequestDecoder postDecoder = new HttpPostRequestDecoder(request); + List logins = getFormParametersSafely(postDecoder, "login"); + if (logins == null) + throw new HttpProcessingException(404); + + for (String login : logins) { + final boolean success = _playerDAO.banPlayerPermanently(login); + if (!success) + throw new HttpProcessingException(404); + } + + responseWriter.writeHtmlResponse("OK"); + } + private void banUserTemp(HttpRequest request, ResponseWriter responseWriter) throws Exception { validateAdmin(request); diff --git a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LotroServerRequestHandler.java b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LotroServerRequestHandler.java index 906bc072e..86fab039f 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LotroServerRequestHandler.java +++ b/gemp-lotr/gemp-lotr-async/src/main/java/com/gempukku/lotro/async/handler/LotroServerRequestHandler.java @@ -11,6 +11,7 @@ import com.gempukku.lotro.db.vo.CollectionType; import com.gempukku.lotro.game.Player; import org.jboss.netty.channel.MessageEvent; import org.jboss.netty.handler.codec.http.CookieEncoder; +import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.SET_COOKIE; import org.jboss.netty.handler.codec.http.HttpRequest; import org.jboss.netty.handler.codec.http.QueryStringDecoder; import org.jboss.netty.handler.codec.http.multipart.Attribute; @@ -26,8 +27,6 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import static org.jboss.netty.handler.codec.http.HttpHeaders.Names.SET_COOKIE; - public class LotroServerRequestHandler { protected PlayerDAO _playerDao; protected LoggedUserHolder _loggedUserHolder; @@ -128,6 +127,20 @@ public class LotroServerRequestHandler { } } + protected List getFormParametersSafely(HttpPostRequestDecoder postRequestDecoder, String parameterName) throws IOException, HttpPostRequestDecoder.NotEnoughDataDecoderException { + List datas = postRequestDecoder.getBodyHttpDatas(parameterName); + if (datas == null) + return null; + List result = new LinkedList(); + for (InterfaceHttpData data : datas) { + if (data.getHttpDataType() == InterfaceHttpData.HttpDataType.Attribute) { + Attribute attribute = (Attribute) data; + result.add(attribute.getValue()); + } + } + return result; + } + protected T extractObject(Map context, Class clazz) { Object value = context.get(clazz); return (T) value; diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/ban.html b/gemp-lotr/gemp-lotr-async/src/main/web/ban.html index 66c437bd4..da6aa0014 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/ban.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/ban.html @@ -8,18 +8,10 @@ background-color: #000000; color: #ffffff; } - - .leagueName { - font-size: 150%; - font-weight: bolder; - } - - .serieName { - font-size: 120%; - font-weight: bolder; - } + + @@ -59,7 +51,7 @@ function submitFormToAddress(url, formElem, success, error) { var data = {}; - var inputs = $("input[type='text'], option:selected", formElem).each( + var inputs = $("input[type='text'], input[type='checkbox']:checked, option:selected", formElem).each( function () { var input = $(this); var name = null; @@ -90,6 +82,22 @@ }); } + function banMultiple() { + var actionSuccess = function () { + alert("Operation was successful"); + }; + + var actionFailure = function (xhr) { + var status = xhr.status; + if (status == 404) + alert("Specified resource (player, league) does not exist. Check the spelling and try again."); + else + alert("Unknown error. Status code - "+status); + }; + + submitFormToAddress("/gemp-lotr-server/admin/banMultiple", $("#banMultipleForm").eq(0), actionSuccess, actionFailure); + } + $(document).ready( function () { var actionSuccess = function () { @@ -110,9 +118,10 @@ var playersDiv = $("#displayUsers"); playersDiv.html(""); playersDiv.append("Similar accounts:"); + var form = $("
"); - var table = $("
"); - table.append("IdNamePassword (hash)Create IPLogin IPUser status"); + var table = $("
"); + table.append("IdNamePassword (hash)Create IPLogin IPUser status"); var players = root.getElementsByTagName("player"); for (var j=0; j"+id+""+name+""+password+""+createIp+""+loginIp+""+status+""); + table.append(""+id+""+name+""+password+""+createIp+""+loginIp+""+status+""); } - playersDiv.append(table); + form.append(table); + form.append(""); + + playersDiv.append(form); } }; @@ -141,7 +153,7 @@ function() { submitFormToAddress("/gemp-lotr-server/admin/unBanUser", $("#unBanUserForm").eq(0), actionSuccess, actionFailure); }); - $("findMultipleAccounts").click( + $("#findMultipleAccounts").click( function() { submitFormToAddress("/gemp-lotr-server/admin/findMultipleAccounts", $("#findMultipleAccountsForm").eq(0), displayUsers, actionFailure); }); diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/index.html b/gemp-lotr/gemp-lotr-async/src/main/web/index.html index a2e9ae0a7..d08b48973 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/index.html +++ b/gemp-lotr/gemp-lotr-async/src/main/web/index.html @@ -123,7 +123,7 @@ "409": function() { $(".error").html("You have been temporarily banned. You can try logging in at a later time. If you think it was a mistake you can try sending a private message to CoS on TLHH forums."); $(".interaction").html(""); - } + }, "503": function() { $(".error").html("Server is down for maintenance. Please come at a later time."); } diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbPlayerDAO.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbPlayerDAO.java index bb88deeb1..ffada8fbe 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbPlayerDAO.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/db/DbPlayerDAO.java @@ -59,11 +59,13 @@ public class DbPlayerDAO implements PlayerDAO { int nextParamIndex = 2; if (player.getCreateIp() != null) { statement.setString(nextParamIndex, player.getCreateIp()); - nextParamIndex++; + statement.setString(nextParamIndex+1, player.getCreateIp()); + nextParamIndex+=2; } if (player.getLastIp() != null) { statement.setString(nextParamIndex, player.getLastIp()); - nextParamIndex++; + statement.setString(nextParamIndex+1, player.getLastIp()); + nextParamIndex+=2; } ResultSet rs = statement.executeQuery(); try {