mirror of
https://github.com/correl/mage.git
synced 2024-11-28 19:19:55 +00:00
Some minor changes to server connect handling and logging.
This commit is contained in:
parent
804fb12b1d
commit
8ad957447e
3 changed files with 32 additions and 30 deletions
|
@ -27,6 +27,10 @@
|
||||||
*/
|
*/
|
||||||
package mage.server;
|
package mage.server;
|
||||||
|
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
import javax.management.timer.Timer;
|
||||||
import mage.MageException;
|
import mage.MageException;
|
||||||
import mage.cards.decks.DeckCardLists;
|
import mage.cards.decks.DeckCardLists;
|
||||||
import mage.cards.repository.CardInfo;
|
import mage.cards.repository.CardInfo;
|
||||||
|
@ -65,11 +69,6 @@ import mage.view.ChatMessage.MessageColor;
|
||||||
import org.apache.commons.lang3.StringEscapeUtils;
|
import org.apache.commons.lang3.StringEscapeUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import javax.management.timer.Timer;
|
|
||||||
import java.security.SecureRandom;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.concurrent.ExecutorService;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author BetaSteward_at_googlemail.com, noxx
|
* @author BetaSteward_at_googlemail.com, noxx
|
||||||
*/
|
*/
|
||||||
|
@ -163,7 +162,7 @@ public class MageServerImpl implements MageServer {
|
||||||
public boolean connectUser(String userName, String password, String sessionId, MageVersion version, String userIdStr) throws MageException {
|
public boolean connectUser(String userName, String password, String sessionId, MageVersion version, String userIdStr) throws MageException {
|
||||||
try {
|
try {
|
||||||
if (version.compareTo(Main.getVersion()) != 0) {
|
if (version.compareTo(Main.getVersion()) != 0) {
|
||||||
logger.info("MageVersionException: userName=" + userName + ", version=" + version);
|
logger.info("MageVersionException: userName=" + userName + ", version=" + version + " sessionId=" + sessionId);
|
||||||
throw new MageVersionException(version, Main.getVersion());
|
throw new MageVersionException(version, Main.getVersion());
|
||||||
}
|
}
|
||||||
return SessionManager.instance.connectUser(sessionId, userName, password, userIdStr);
|
return SessionManager.instance.connectUser(sessionId, userName, password, userIdStr);
|
||||||
|
@ -1118,14 +1117,14 @@ public class MageServerImpl implements MageServer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void toggleActivation(final String sessionId, final String userName) throws MageException {
|
public void toggleActivation(final String sessionId, final String userName) throws MageException {
|
||||||
execute("toggleActivation", sessionId, () ->
|
execute("toggleActivation", sessionId, ()
|
||||||
UserManager.instance.getUserByName(userName).ifPresent(user ->
|
-> UserManager.instance.getUserByName(userName).ifPresent(user
|
||||||
{
|
-> {
|
||||||
user.setActive(!user.isActive());
|
user.setActive(!user.isActive());
|
||||||
if (!user.isActive() && user.isConnected()) {
|
if (!user.isActive() && user.isConnected()) {
|
||||||
SessionManager.instance.disconnectUser(sessionId, user.getSessionId());
|
SessionManager.instance.disconnectUser(sessionId, user.getSessionId());
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1158,12 +1157,10 @@ public class MageServerImpl implements MageServer {
|
||||||
@Override
|
@Override
|
||||||
public void sendFeedbackMessage(final String sessionId, final String username, final String title, final String type, final String message, final String email) throws MageException {
|
public void sendFeedbackMessage(final String sessionId, final String username, final String title, final String type, final String message, final String email) throws MageException {
|
||||||
if (title != null && message != null) {
|
if (title != null && message != null) {
|
||||||
execute("sendFeedbackMessage", sessionId, () ->
|
execute("sendFeedbackMessage", sessionId, ()
|
||||||
SessionManager.instance.getSession(sessionId).ifPresent(
|
-> SessionManager.instance.getSession(sessionId).ifPresent(
|
||||||
session -> FeedbackServiceImpl.instance.feedback(username, title, type, message, email, session.getHost())
|
session -> FeedbackServiceImpl.instance.feedback(username, title, type, message, email, session.getHost())
|
||||||
|
));
|
||||||
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1253,6 +1250,7 @@ public class MageServerImpl implements MageServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class MyActionWithNullNegativeResult extends ActionWithNullNegativeResult<Object> {
|
private static class MyActionWithNullNegativeResult extends ActionWithNullNegativeResult<Object> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object execute() throws MageException {
|
public Object execute() throws MageException {
|
||||||
return CompressUtil.compress(ServerMessagesUtil.instance.getMessages());
|
return CompressUtil.compress(ServerMessagesUtil.instance.getMessages());
|
||||||
|
@ -1260,6 +1258,7 @@ public class MageServerImpl implements MageServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ListActionWithNullNegativeResult extends ActionWithNullNegativeResult<List<UserView>> {
|
private static class ListActionWithNullNegativeResult extends ActionWithNullNegativeResult<List<UserView>> {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<UserView> execute() throws MageException {
|
public List<UserView> execute() throws MageException {
|
||||||
List<UserView> users = new ArrayList<>();
|
List<UserView> users = new ArrayList<>();
|
||||||
|
@ -1282,6 +1281,7 @@ public class MageServerImpl implements MageServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class GameViewActionWithNullNegativeResult extends ActionWithNullNegativeResult<GameView> {
|
private static class GameViewActionWithNullNegativeResult extends ActionWithNullNegativeResult<GameView> {
|
||||||
|
|
||||||
private final String sessionId;
|
private final String sessionId;
|
||||||
private final UUID gameId;
|
private final UUID gameId;
|
||||||
private final UUID playerId;
|
private final UUID playerId;
|
||||||
|
@ -1306,6 +1306,7 @@ public class MageServerImpl implements MageServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class MyActionWithBooleanResult extends ActionWithBooleanResult {
|
private static class MyActionWithBooleanResult extends ActionWithBooleanResult {
|
||||||
|
|
||||||
private final String sessionId;
|
private final String sessionId;
|
||||||
private final UUID tableId;
|
private final UUID tableId;
|
||||||
|
|
||||||
|
@ -1328,6 +1329,7 @@ public class MageServerImpl implements MageServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class DraftPickViewActionWithNullNegativeResult extends ActionWithNullNegativeResult<DraftPickView> {
|
private static class DraftPickViewActionWithNullNegativeResult extends ActionWithNullNegativeResult<DraftPickView> {
|
||||||
|
|
||||||
private final String sessionId;
|
private final String sessionId;
|
||||||
private final UUID draftId;
|
private final UUID draftId;
|
||||||
private final UUID cardPick;
|
private final UUID cardPick;
|
||||||
|
@ -1353,6 +1355,7 @@ public class MageServerImpl implements MageServer {
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class MyActionWithTableViewResult extends ActionWithTableViewResult {
|
private static class MyActionWithTableViewResult extends ActionWithTableViewResult {
|
||||||
|
|
||||||
private final String sessionId;
|
private final String sessionId;
|
||||||
private final MatchOptions options;
|
private final MatchOptions options;
|
||||||
private final UUID roomId;
|
private final UUID roomId;
|
||||||
|
|
|
@ -265,7 +265,7 @@ public final class Main {
|
||||||
String sessionId = client.getSessionId();
|
String sessionId = client.getSessionId();
|
||||||
Optional<Session> session = SessionManager.instance.getSession(sessionId);
|
Optional<Session> session = SessionManager.instance.getSession(sessionId);
|
||||||
if (!session.isPresent()) {
|
if (!session.isPresent()) {
|
||||||
logger.error("Session not found : " + sessionId);
|
logger.trace("Session not found : " + sessionId);
|
||||||
} else {
|
} else {
|
||||||
UUID userId = session.get().getUserId();
|
UUID userId = session.get().getUserId();
|
||||||
StringBuilder sessionInfo = new StringBuilder();
|
StringBuilder sessionInfo = new StringBuilder();
|
||||||
|
|
|
@ -31,14 +31,12 @@ import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
import mage.MageException;
|
import mage.MageException;
|
||||||
import mage.players.net.UserData;
|
import mage.players.net.UserData;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.jboss.remoting.callback.InvokerCallbackHandler;
|
import org.jboss.remoting.callback.InvokerCallbackHandler;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author BetaSteward_at_googlemail.com
|
* @author BetaSteward_at_googlemail.com
|
||||||
*/
|
*/
|
||||||
|
@ -46,13 +44,12 @@ public enum SessionManager {
|
||||||
instance;
|
instance;
|
||||||
private static final Logger logger = Logger.getLogger(SessionManager.class);
|
private static final Logger logger = Logger.getLogger(SessionManager.class);
|
||||||
|
|
||||||
|
|
||||||
private final ConcurrentHashMap<String, Session> sessions = new ConcurrentHashMap<>();
|
private final ConcurrentHashMap<String, Session> sessions = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public Optional<Session> getSession(@Nonnull String sessionId) {
|
public Optional<Session> getSession(@Nonnull String sessionId) {
|
||||||
Session session = sessions.get(sessionId);
|
Session session = sessions.get(sessionId);
|
||||||
if(session == null){
|
if (session == null) {
|
||||||
logger.error("Session with sessionId " + sessionId + " is not found");
|
logger.trace("Session with sessionId " + sessionId + " is not found");
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
if (session.getUserId() != null && UserManager.instance.getUser(session.getUserId()) == null) {
|
if (session.getUserId() != null && UserManager.instance.getUser(session.getUserId()) == null) {
|
||||||
|
@ -136,8 +133,10 @@ public enum SessionManager {
|
||||||
logger.debug("DISCONNECT " + reason.toString() + " - sessionId: " + sessionId);
|
logger.debug("DISCONNECT " + reason.toString() + " - sessionId: " + sessionId);
|
||||||
sessions.remove(sessionId);
|
sessions.remove(sessionId);
|
||||||
switch (reason) {
|
switch (reason) {
|
||||||
case Disconnected: // regular session end
|
case Disconnected: // regular session end or wrong client version
|
||||||
session.kill(reason);
|
if (session.getUserId() != null) { // if wrong client version no userId is set
|
||||||
|
session.kill(reason);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case SessionExpired: // session ends after no reconnect happens in the defined time span
|
case SessionExpired: // session ends after no reconnect happens in the defined time span
|
||||||
session.kill(reason);
|
session.kill(reason);
|
||||||
|
@ -173,7 +172,7 @@ public enum SessionManager {
|
||||||
public void disconnectUser(String sessionId, String userSessionId) {
|
public void disconnectUser(String sessionId, String userSessionId) {
|
||||||
if (isAdmin(sessionId)) {
|
if (isAdmin(sessionId)) {
|
||||||
getUserFromSession(sessionId).ifPresent(admin -> {
|
getUserFromSession(sessionId).ifPresent(admin -> {
|
||||||
Optional<User> u = getUserFromSession(userSessionId);
|
Optional<User> u = getUserFromSession(userSessionId);
|
||||||
if (u.isPresent()) {
|
if (u.isPresent()) {
|
||||||
User user = u.get();
|
User user = u.get();
|
||||||
user.showUserMessage("Admin operation", "Your session was disconnected by Admin.");
|
user.showUserMessage("Admin operation", "Your session was disconnected by Admin.");
|
||||||
|
|
Loading…
Reference in a new issue