Addition of loginserver restart schedule configurations.
This commit is contained in:
@@ -102,9 +102,10 @@ IpUpdateTime = 0
|
|||||||
# Ppimer : 10.1
|
# Ppimer : 10.1
|
||||||
NetworkList = 192.168.;10.0.
|
NetworkList = 192.168.;10.0.
|
||||||
|
|
||||||
# ===============================================================
|
|
||||||
# Test server configuration, not to switch on the game server! =
|
# ---------------------------------------------------------------------------
|
||||||
# ===============================================================
|
# Test server configuration, not to switch on the game server!
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
# Use the GG client authentication
|
# Use the GG client authentication
|
||||||
# Login server access let the client without GameGuard
|
# Login server access let the client without GameGuard
|
||||||
ForceGGAuth = False
|
ForceGGAuth = False
|
||||||
@@ -112,3 +113,15 @@ ForceGGAuth = False
|
|||||||
# Including protection from flood
|
# Including protection from flood
|
||||||
# IMPORTANT: Put True for server security.
|
# IMPORTANT: Put True for server security.
|
||||||
EnableFloodProtection = True
|
EnableFloodProtection = True
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Scheduled Login Restart
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Enable disable scheduled login restart.
|
||||||
|
# Default: False
|
||||||
|
LoginRestartSchedule = False
|
||||||
|
|
||||||
|
# Time in hours.
|
||||||
|
# Default: 24
|
||||||
|
LoginRestartTime = 24
|
||||||
|
@@ -130,6 +130,8 @@ public class Config
|
|||||||
public static int TRADE_PVP_AMOUNT;
|
public static int TRADE_PVP_AMOUNT;
|
||||||
public static boolean GLOBAL_CHAT_WITH_PVP;
|
public static boolean GLOBAL_CHAT_WITH_PVP;
|
||||||
public static int GLOBAL_PVP_AMOUNT;
|
public static int GLOBAL_PVP_AMOUNT;
|
||||||
|
public static boolean LOGIN_SERVER_SCHEDULE_RESTART;
|
||||||
|
public static long LOGIN_SERVER_SCHEDULE_RESTART_TIME;
|
||||||
public static int MAX_CHAT_LENGTH;
|
public static int MAX_CHAT_LENGTH;
|
||||||
public static boolean TRADE_CHAT_IS_NOOBLE;
|
public static boolean TRADE_CHAT_IS_NOOBLE;
|
||||||
public static boolean PRECISE_DROP_CALCULATION;
|
public static boolean PRECISE_DROP_CALCULATION;
|
||||||
@@ -2839,6 +2841,8 @@ public class Config
|
|||||||
MYSQL_BIN_PATH = serverSettings.getString("MySqlBinLocation", "C:/xampp/mysql/bin/");
|
MYSQL_BIN_PATH = serverSettings.getString("MySqlBinLocation", "C:/xampp/mysql/bin/");
|
||||||
BACKUP_PATH = serverSettings.getString("BackupPath", "../backup/");
|
BACKUP_PATH = serverSettings.getString("BackupPath", "../backup/");
|
||||||
BACKUP_DAYS = serverSettings.getInt("BackupDays", 30);
|
BACKUP_DAYS = serverSettings.getInt("BackupDays", 30);
|
||||||
|
LOGIN_SERVER_SCHEDULE_RESTART = serverSettings.getBoolean("LoginRestartSchedule", false);
|
||||||
|
LOGIN_SERVER_SCHEDULE_RESTART_TIME = serverSettings.getLong("LoginRestartTime", 24);
|
||||||
SHOW_LICENCE = serverSettings.getBoolean("ShowLicence", false);
|
SHOW_LICENCE = serverSettings.getBoolean("ShowLicence", false);
|
||||||
IP_UPDATE_TIME = serverSettings.getInt("IpUpdateTime", 15);
|
IP_UPDATE_TIME = serverSettings.getInt("IpUpdateTime", 15);
|
||||||
FORCE_GGAUTH = serverSettings.getBoolean("ForceGGAuth", false);
|
FORCE_GGAUTH = serverSettings.getBoolean("ForceGGAuth", false);
|
||||||
|
@@ -50,20 +50,14 @@ public class LoginServer extends FloodProtectedListener
|
|||||||
{
|
{
|
||||||
public static Logger LOGGER = Logger.getLogger(LoginServer.class.getName());
|
public static Logger LOGGER = Logger.getLogger(LoginServer.class.getName());
|
||||||
|
|
||||||
private static LoginServer _instance;
|
public static int PROTOCOL_REV = 0x0102;
|
||||||
|
private static LoginServer INSTANCE;
|
||||||
|
private Thread _restartLoginServer;
|
||||||
private static GameServerListener _gameServerListener;
|
private static GameServerListener _gameServerListener;
|
||||||
|
private final ThreadPoolExecutor _generalPacketsExecutor;
|
||||||
private TelnetStatusThread _statusServer;
|
private TelnetStatusThread _statusServer;
|
||||||
private ServerSocket _serverSocket;
|
private ServerSocket _serverSocket;
|
||||||
|
|
||||||
private final ThreadPoolExecutor _generalPacketsExecutor;
|
|
||||||
|
|
||||||
public static int PROTOCOL_REV = 0x0102;
|
|
||||||
|
|
||||||
public static LoginServer getInstance()
|
|
||||||
{
|
|
||||||
return _instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args)
|
public static void main(String[] args)
|
||||||
{
|
{
|
||||||
// GUI
|
// GUI
|
||||||
@@ -81,8 +75,8 @@ public class LoginServer extends FloodProtectedListener
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
_instance = new LoginServer();
|
INSTANCE = new LoginServer();
|
||||||
_instance.start();
|
INSTANCE.start();
|
||||||
LOGGER.info("Login Server ready on " + Config.LOGIN_BIND_ADDRESS + ":" + Config.PORT_LOGIN);
|
LOGGER.info("Login Server ready on " + Config.LOGIN_BIND_ADDRESS + ":" + Config.PORT_LOGIN);
|
||||||
}
|
}
|
||||||
catch (IOException e)
|
catch (IOException e)
|
||||||
@@ -242,6 +236,14 @@ public class LoginServer extends FloodProtectedListener
|
|||||||
{
|
{
|
||||||
LOGGER.config("IP Bans file (" + bannedFile.getName() + ") is missing or is a directory, skipped.");
|
LOGGER.config("IP Bans file (" + bannedFile.getName() + ") is missing or is a directory, skipped.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Config.LOGIN_SERVER_SCHEDULE_RESTART)
|
||||||
|
{
|
||||||
|
LOGGER.info("Scheduled LS restart after " + Config.LOGIN_SERVER_SCHEDULE_RESTART_TIME + " hours");
|
||||||
|
_restartLoginServer = new LoginServerRestart();
|
||||||
|
_restartLoginServer.setDaemon(true);
|
||||||
|
_restartLoginServer.start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public TelnetStatusThread getStatusServer()
|
public TelnetStatusThread getStatusServer()
|
||||||
@@ -296,6 +298,31 @@ public class LoginServer extends FloodProtectedListener
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class LoginServerRestart extends Thread
|
||||||
|
{
|
||||||
|
public LoginServerRestart()
|
||||||
|
{
|
||||||
|
setName("LoginServerRestart");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
while (!isInterrupted())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Thread.sleep(Config.LOGIN_SERVER_SCHEDULE_RESTART_TIME * 3600000);
|
||||||
|
}
|
||||||
|
catch (InterruptedException e)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
shutdown(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void shutdown(boolean restart)
|
public void shutdown(boolean restart)
|
||||||
{
|
{
|
||||||
// Backup database.
|
// Backup database.
|
||||||
@@ -341,4 +368,9 @@ public class LoginServer extends FloodProtectedListener
|
|||||||
{
|
{
|
||||||
new LoginClient(socket);
|
new LoginClient(socket);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static LoginServer getInstance()
|
||||||
|
{
|
||||||
|
return INSTANCE;
|
||||||
|
}
|
||||||
}
|
}
|
@@ -102,9 +102,10 @@ IpUpdateTime = 0
|
|||||||
# Ppimer : 10.1
|
# Ppimer : 10.1
|
||||||
NetworkList = 192.168.;10.0.
|
NetworkList = 192.168.;10.0.
|
||||||
|
|
||||||
# ===============================================================
|
|
||||||
# Test server configuration, not to switch on the game server! =
|
# ---------------------------------------------------------------------------
|
||||||
# ===============================================================
|
# Test server configuration, not to switch on the game server!
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
# Use the GG client authentication
|
# Use the GG client authentication
|
||||||
# Login server access let the client without GameGuard
|
# Login server access let the client without GameGuard
|
||||||
ForceGGAuth = False
|
ForceGGAuth = False
|
||||||
@@ -113,18 +114,33 @@ ForceGGAuth = False
|
|||||||
# IMPORTANT: Put True for server security.
|
# IMPORTANT: Put True for server security.
|
||||||
EnableFloodProtection = True
|
EnableFloodProtection = True
|
||||||
|
|
||||||
# =============================================================
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
# Anti Bruteforce protection. (credits RT-Interlude)
|
# Anti Bruteforce protection. (credits RT-Interlude)
|
||||||
# =============================================================
|
# ---------------------------------------------------------------------------
|
||||||
#Count of trying connection to server, after which will be made checking IP address
|
# Count of trying connection to server, after which will be made checking IP address
|
||||||
#for a possible BrutForce
|
# for a possible BrutForce
|
||||||
#Reducing this value will increase the likelihood of false positives
|
# Reducing this value will increase the likelihood of false positives
|
||||||
#Increasing this value will reduce the effectiveness of security (more chance find passwords for large accounts)
|
# Increasing this value will reduce the effectiveness of security (more chance find passwords for large accounts)
|
||||||
BrutLogonAttempts = 15
|
BrutLogonAttempts = 15
|
||||||
#The average time (in seconds) between attempts to connect to the server
|
|
||||||
#Reducing this value will increase the likelihood of false positives
|
# The average time (in seconds) between attempts to connect to the server
|
||||||
#Increasing this value will reduce the effectiveness of security (more chance find passwords for large accounts)
|
# Reducing this value will increase the likelihood of false positives
|
||||||
|
# Increasing this value will reduce the effectiveness of security (more chance find passwords for large accounts)
|
||||||
BrutAvgTime = 30
|
BrutAvgTime = 30
|
||||||
#Number of second, for ban IP address, who time BrutAvgTime less specified
|
|
||||||
#900 second = 15 minute
|
# Number of second, for ban IP address, who time BrutAvgTime less specified
|
||||||
|
# 900 second = 15 minute
|
||||||
BrutBanIpTime = 900
|
BrutBanIpTime = 900
|
||||||
|
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Scheduled Login Restart
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# Enable disable scheduled login restart.
|
||||||
|
# Default: False
|
||||||
|
LoginRestartSchedule = False
|
||||||
|
|
||||||
|
# Time in hours.
|
||||||
|
# Default: 24
|
||||||
|
LoginRestartTime = 24
|
||||||
|
@@ -134,6 +134,8 @@ public class Config
|
|||||||
public static int BRUT_AVG_TIME;
|
public static int BRUT_AVG_TIME;
|
||||||
public static int BRUT_LOGON_ATTEMPTS;
|
public static int BRUT_LOGON_ATTEMPTS;
|
||||||
public static int BRUT_BAN_IP_TIME;
|
public static int BRUT_BAN_IP_TIME;
|
||||||
|
public static boolean LOGIN_SERVER_SCHEDULE_RESTART;
|
||||||
|
public static long LOGIN_SERVER_SCHEDULE_RESTART_TIME;
|
||||||
public static int MAX_CHAT_LENGTH;
|
public static int MAX_CHAT_LENGTH;
|
||||||
public static boolean TRADE_CHAT_IS_NOOBLE;
|
public static boolean TRADE_CHAT_IS_NOOBLE;
|
||||||
public static boolean PRECISE_DROP_CALCULATION;
|
public static boolean PRECISE_DROP_CALCULATION;
|
||||||
@@ -2908,6 +2910,8 @@ public class Config
|
|||||||
BRUT_AVG_TIME = serverSettings.getInt("BrutAvgTime", 30); // in Seconds
|
BRUT_AVG_TIME = serverSettings.getInt("BrutAvgTime", 30); // in Seconds
|
||||||
BRUT_LOGON_ATTEMPTS = serverSettings.getInt("BrutLogonAttempts", 15);
|
BRUT_LOGON_ATTEMPTS = serverSettings.getInt("BrutLogonAttempts", 15);
|
||||||
BRUT_BAN_IP_TIME = serverSettings.getInt("BrutBanIpTime", 900); // in Seconds
|
BRUT_BAN_IP_TIME = serverSettings.getInt("BrutBanIpTime", 900); // in Seconds
|
||||||
|
LOGIN_SERVER_SCHEDULE_RESTART = serverSettings.getBoolean("LoginRestartSchedule", false);
|
||||||
|
LOGIN_SERVER_SCHEDULE_RESTART_TIME = serverSettings.getLong("LoginRestartTime", 24);
|
||||||
SHOW_LICENCE = serverSettings.getBoolean("ShowLicence", false);
|
SHOW_LICENCE = serverSettings.getBoolean("ShowLicence", false);
|
||||||
IP_UPDATE_TIME = serverSettings.getInt("IpUpdateTime", 15);
|
IP_UPDATE_TIME = serverSettings.getInt("IpUpdateTime", 15);
|
||||||
FORCE_GGAUTH = serverSettings.getBoolean("ForceGGAuth", false);
|
FORCE_GGAUTH = serverSettings.getBoolean("ForceGGAuth", false);
|
||||||
|
@@ -74,12 +74,11 @@ public class LoginClient extends MMOClient<MMOConnection<LoginClient>>
|
|||||||
{
|
{
|
||||||
super(con);
|
super(con);
|
||||||
_state = LoginClientState.CONNECTED;
|
_state = LoginClientState.CONNECTED;
|
||||||
final String ip = getConnection().getInetAddress().getHostAddress();
|
_ip = getConnection().getInetAddress().getHostAddress();
|
||||||
_ip = ip;
|
|
||||||
final String[] localip = Config.NETWORK_IP_LIST.split(";");
|
final String[] localip = Config.NETWORK_IP_LIST.split(";");
|
||||||
for (String oneIp : localip)
|
for (String oneIp : localip)
|
||||||
{
|
{
|
||||||
if (ip.startsWith(oneIp) || ip.startsWith("127.0"))
|
if (_ip.startsWith(oneIp) || _ip.startsWith("127.0"))
|
||||||
{
|
{
|
||||||
_usesInternalIP = true;
|
_usesInternalIP = true;
|
||||||
}
|
}
|
||||||
@@ -92,13 +91,13 @@ public class LoginClient extends MMOClient<MMOConnection<LoginClient>>
|
|||||||
_loginCrypt = new LoginCrypt();
|
_loginCrypt = new LoginCrypt();
|
||||||
_loginCrypt.setKey(_blowfishKey);
|
_loginCrypt.setKey(_blowfishKey);
|
||||||
LoginController.getInstance().addLoginClient(this);
|
LoginController.getInstance().addLoginClient(this);
|
||||||
|
|
||||||
// This checkup must go next to BAN because it can cause decrease ban account time
|
// This checkup must go next to BAN because it can cause decrease ban account time
|
||||||
if (!BruteProtector.canLogin(ip))
|
if (!BruteProtector.canLogin(_ip))
|
||||||
{
|
{
|
||||||
LoginController.getInstance().addBanForAddress(getConnection().getInetAddress(), Config.BRUT_BAN_IP_TIME * 1000);
|
LoginController.getInstance().addBanForAddress(getConnection().getInetAddress(), Config.BRUT_BAN_IP_TIME * 1000);
|
||||||
LOGGER.warning("Drop connection from IP " + ip + " because of BruteForce.");
|
LOGGER.warning("Drop connection from IP " + _ip + " because of BruteForce.");
|
||||||
}
|
}
|
||||||
// Closer.getInstance().add(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getIntetAddress()
|
public String getIntetAddress()
|
||||||
|
@@ -46,6 +46,7 @@ public class LoginServer
|
|||||||
|
|
||||||
public static final int PROTOCOL_REV = 0x0102;
|
public static final int PROTOCOL_REV = 0x0102;
|
||||||
private static LoginServer INSTANCE;
|
private static LoginServer INSTANCE;
|
||||||
|
private Thread _restartLoginServer;
|
||||||
private GameServerListener _gameServerListener;
|
private GameServerListener _gameServerListener;
|
||||||
private SelectorThread<LoginClient> _selectorThread;
|
private SelectorThread<LoginClient> _selectorThread;
|
||||||
private TelnetStatusThread _statusServer;
|
private TelnetStatusThread _statusServer;
|
||||||
@@ -113,6 +114,7 @@ public class LoginServer
|
|||||||
LOGGER.warning("WARNING: The LoginServer bind address is invalid, using all avaliable IPs " + e1);
|
LOGGER.warning("WARNING: The LoginServer bind address is invalid, using all avaliable IPs " + e1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load telnet status
|
// Load telnet status
|
||||||
if (Config.IS_TELNET_ENABLED)
|
if (Config.IS_TELNET_ENABLED)
|
||||||
{
|
{
|
||||||
@@ -171,11 +173,39 @@ public class LoginServer
|
|||||||
|
|
||||||
// load bannedIps
|
// load bannedIps
|
||||||
Config.loadBanFile();
|
Config.loadBanFile();
|
||||||
|
|
||||||
|
if (Config.LOGIN_SERVER_SCHEDULE_RESTART)
|
||||||
|
{
|
||||||
|
LOGGER.info("Scheduled LS restart after " + Config.LOGIN_SERVER_SCHEDULE_RESTART_TIME + " hours");
|
||||||
|
_restartLoginServer = new LoginServerRestart();
|
||||||
|
_restartLoginServer.setDaemon(true);
|
||||||
|
_restartLoginServer.start();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameServerListener getGameServerListener()
|
class LoginServerRestart extends Thread
|
||||||
{
|
{
|
||||||
return _gameServerListener;
|
public LoginServerRestart()
|
||||||
|
{
|
||||||
|
setName("LoginServerRestart");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
while (!isInterrupted())
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Thread.sleep(Config.LOGIN_SERVER_SCHEDULE_RESTART_TIME * 3600000);
|
||||||
|
}
|
||||||
|
catch (InterruptedException e)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
shutdown(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shutdown(boolean restart)
|
public void shutdown(boolean restart)
|
||||||
@@ -190,6 +220,11 @@ public class LoginServer
|
|||||||
Runtime.getRuntime().exit(restart ? 2 : 0);
|
Runtime.getRuntime().exit(restart ? 2 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public GameServerListener getGameServerListener()
|
||||||
|
{
|
||||||
|
return _gameServerListener;
|
||||||
|
}
|
||||||
|
|
||||||
public int getStatus()
|
public int getStatus()
|
||||||
{
|
{
|
||||||
return _loginStatus;
|
return _loginStatus;
|
||||||
|
Reference in New Issue
Block a user