Ban interface tested.

This commit is contained in:
marcins78@gmail.com
2013-06-01 13:44:02 +00:00
parent cb984a5293
commit 2eb1160214
5 changed files with 72 additions and 23 deletions

View File

@@ -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<Player> 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<String> 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);

View File

@@ -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<String> getFormParametersSafely(HttpPostRequestDecoder postRequestDecoder, String parameterName) throws IOException, HttpPostRequestDecoder.NotEnoughDataDecoderException {
List<InterfaceHttpData> datas = postRequestDecoder.getBodyHttpDatas(parameterName);
if (datas == null)
return null;
List<String> result = new LinkedList<String>();
for (InterfaceHttpData data : datas) {
if (data.getHttpDataType() == InterfaceHttpData.HttpDataType.Attribute) {
Attribute attribute = (Attribute) data;
result.add(attribute.getValue());
}
}
return result;
}
protected <T> T extractObject(Map<Type, Object> context, Class<T> clazz) {
Object value = context.get(clazz);
return (T) value;

View File

@@ -8,18 +8,10 @@
background-color: #000000;
color: #ffffff;
}
.leagueName {
font-size: 150%;
font-weight: bolder;
}
.serieName {
font-size: 120%;
font-weight: bolder;
}
</style>
<link rel="stylesheet" type="text/css" href="css/gemp-001/hall.css">
<link rel="stylesheet" type="text/css" href="css/dark-hive/jquery-ui-1.8.16.custom.css">
<link rel="stylesheet" type="text/css" href="css/jquery.contextMenu.css">
<link rel="stylesheet" type="text/css" href="js/jquery/styles/jquery.spinnercontrol.css">
@@ -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 = $("<form id='banMultipleForm' method='POST' action='/gemp-lotr-server/admin/banMultiple'></form>");
var table = $("<table></table>");
table.append("<tr><th>Id</th><th>Name</th><th>Password (hash)</th><th>Create IP</th><th>Login IP</th><th>User status</th></tr>");
var table = $("<table class='tables'></table>");
table.append("<tr><th></th><th>Id</th><th>Name</th><th>Password (hash)</th><th>Create IP</th><th>Login IP</th><th>User status</th></tr>");
var players = root.getElementsByTagName("player");
for (var j=0; j<players.length; j++) {
@@ -123,9 +132,12 @@
var createIp = player.getAttribute("createIp");
var loginIp = player.getAttribute("loginIp");
var status = player.getAttribute("status");
table.append("<tr><td>"+id+"</td><td>"+name+"</td><td>"+password+"</td><td>"+createIp+"</td><td>"+loginIp+"</td><td>"+status+"</td></tr>");
table.append("<tr><td><input type='checkbox' name='login' value='"+name+"'></td><td>"+id+"</td><td>"+name+"</td><td>"+password+"</td><td>"+createIp+"</td><td>"+loginIp+"</td><td>"+status+"</td></tr>");
}
playersDiv.append(table);
form.append(table);
form.append("<input type='button' value='Ban selected' onClick='banMultiple();'>");
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);
});

View File

@@ -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 <a href='http://lotrtcgwiki.com/forums/'>TLHH forums</a>.");
$(".interaction").html("");
}
},
"503": function() {
$(".error").html("Server is down for maintenance. Please come at a later time.");
}

View File

@@ -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 {