Ban interface tested.
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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.");
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user