package games.strategy.net;
import java.net.SocketAddress;
import java.util.Map;
/**
* Code to validate a login attempt.
*/
public interface ILoginValidator {
/**
* The challenge properties to send to the client. The client will be sent the challenge properties,
* and will be expected to return a properties object to validate its connection.
*/
Map<String, String> getChallengeProperties(String userName, SocketAddress remoteAddress);
/**
* @param propertiesReadFromClient
* - client properties written by the client after receiving the challange string.
* @param remoteAddress
* - the remote adress
* @param clientName
* - the user name given by the client
* @return - null if the attempt was successful, an error message otherwise
*/
String verifyConnection(Map<String, String> propertiesSentToClient,
Map<String, String> propertiesReadFromClient, String clientName, String clientMac, SocketAddress remoteAddress);
}