mirror of
https://github.com/TotalFreedomMC/TF-Captchafy.git
synced 2024-12-22 16:25:15 +00:00
v1.1.0. Performance improvements and changes to throttling. Adds /capatchafy status. Light cleanup.
This commit is contained in:
parent
1ba051ebe6
commit
1e642ae243
5 changed files with 50 additions and 30 deletions
2
pom.xml
2
pom.xml
|
@ -3,7 +3,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>me.hockey</groupId>
|
||||
<artifactId>Capatchafy</artifactId>
|
||||
<version>1.0.1</version>
|
||||
<version>1.1.0</version>
|
||||
<packaging>jar</packaging>
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
|
|
|
@ -35,20 +35,20 @@ public class CapatchafyCommand implements CommandExecutor
|
|||
if (!sender.hasPermission("capatchafy.command"))
|
||||
{
|
||||
sender.sendMessage(ChatColor.RED + "You do not have permission to use this command.");
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Capatchafy.configs.config.getBoolean("always-on"))
|
||||
{
|
||||
sender.sendMessage(ChatColor.RED + "The server owner has Capatchafy enabled at all times. You are not allowed to turn it off or change the security level.");
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
//TODO Fix arguments problem, it will throw errors if the parameters aren't filled out properly. Also, make it show usage when the security level arg is spelled wrong.
|
||||
if (args.length < 1)
|
||||
{
|
||||
sender.sendMessage("Usage: /capatchafy <on:off> <friendly:moderate:strict>");
|
||||
return true;
|
||||
sender.sendMessage("Usage: /capatchafy <on:off:status> <friendly:moderate:strict>");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (args[0].equalsIgnoreCase("on"))
|
||||
|
@ -83,9 +83,11 @@ public class CapatchafyCommand implements CommandExecutor
|
|||
}
|
||||
else
|
||||
{
|
||||
sender.sendMessage("Usage: /capatchafy <on:off> <friendly:moderate:strict>");
|
||||
sender.sendMessage("Usage: /capatchafy <on:off:status> <friendly:moderate:strict>");
|
||||
return false;
|
||||
}
|
||||
sender.sendMessage("Capatchafy will run in security level " + Capatchafy.securityLevel + ". It will not be auto-disabled.");
|
||||
return true;
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("off"))
|
||||
{
|
||||
|
@ -99,8 +101,19 @@ public class CapatchafyCommand implements CommandExecutor
|
|||
{
|
||||
Capatchafy.forced = true;
|
||||
sender.sendMessage(ChatColor.YELLOW + "Capatchafy " + ChatColor.RED + "will not" + ChatColor.YELLOW + " automatically enable if the server detects an attack.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("status"))
|
||||
{
|
||||
sender.sendMessage(ChatColor.GRAY + "Capatchafy is enabled: " + ChatColor.YELLOW + Capatchafy.enabled);
|
||||
sender.sendMessage(ChatColor.GRAY + "Capatchafy is set to run in mode: " + ChatColor.YELLOW + Capatchafy.securityLevel);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
sender.sendMessage("Usage: /capatchafy <on:off:status> <friendly:moderate:strict>");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,7 +36,6 @@ public class Configuration
|
|||
|
||||
public void startup() throws IOException
|
||||
{
|
||||
//startup()
|
||||
saveConfig();
|
||||
saveNames(false);
|
||||
loadConfigs();
|
||||
|
@ -62,7 +61,6 @@ public class Configuration
|
|||
{
|
||||
ips.set("authorized-ips", alwaysAuthorizedList);
|
||||
ips.save(ipsFile);
|
||||
//Bukkit.broadcastMessage("IP Config Saved(?)");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,7 +75,6 @@ public class Configuration
|
|||
{
|
||||
Capatchafy.plugin.saveResource("config.yml", false);
|
||||
}
|
||||
//Bukkit.broadcastMessage("Default config saved.");
|
||||
}
|
||||
|
||||
public void loadConfigs() throws IOException
|
||||
|
@ -85,7 +82,6 @@ public class Configuration
|
|||
config = YamlConfiguration.loadConfiguration(configFile);
|
||||
ips = YamlConfiguration.loadConfiguration(ipsFile);
|
||||
alwaysAuthorizedList = ips.getStringList("authorized-ips");
|
||||
//Bukkit.broadcastMessage("Configs loaded");
|
||||
}
|
||||
|
||||
public void setAuthorized(String ip, boolean authorize)
|
||||
|
|
|
@ -16,12 +16,14 @@
|
|||
*/
|
||||
package me.hockey.capatchafy;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerPreLoginEvent;
|
||||
|
||||
import java.util.Date;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class Listeners implements Listener
|
||||
|
@ -33,22 +35,22 @@ public class Listeners implements Listener
|
|||
|
||||
public long throttleTime; //The higher, the more often players will be counted as possible spammers. Required time between each login to not be considered an attack.
|
||||
public int throttleLogins; //The lower, the quicker the capatchas will auto-enable. Aka max points before capatchafy is enabled.
|
||||
public long removeAllPointsTime = 7L; //Remove all points after x seconds.
|
||||
public int maxAttacks = 3; //Set to 0 to disable this function.
|
||||
public long removeAllPointsTime = 7L; //Remove all points after x seconds. Default: 7
|
||||
public int maxAttacks = 3; //Set to 0 to disable this function. Default: 3
|
||||
|
||||
public long startupThrottleTime = 1L; //The throttle time on startup. Default: 1
|
||||
public int startupThrottleLogins = 20; //The throttle logins on startup. Default: 20
|
||||
|
||||
public long defaultThrottleTime = 3L; //After 30 seconds, the server defaults back to this. Default: 3
|
||||
public int defaultThrottleLogins = 8; //Default: 9
|
||||
public int defaultThrottleLogins = 8; //Default: 8
|
||||
|
||||
public static String url;
|
||||
|
||||
//TODO If IP matches IP in TFM, dont force admins to verify.
|
||||
@EventHandler
|
||||
public void onPlayerLogin(PlayerPreLoginEvent event)
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onPlayerLogin(PlayerLoginEvent event)
|
||||
{
|
||||
if (!Capatchafy.forced && !Capatchafy.configs.config.getBoolean("always-on"))
|
||||
if (!Capatchafy.forced && !Capatchafy.configs.config.getBoolean("always-on") && !Capatchafy.enabled)
|
||||
{
|
||||
throttleConnections();
|
||||
}
|
||||
|
@ -56,7 +58,7 @@ public class Listeners implements Listener
|
|||
String ip = event.getAddress().toString().replaceAll("/", "");
|
||||
if (!Capatchafy.configs.isAuthorized(ip))
|
||||
{
|
||||
event.disallow(PlayerPreLoginEvent.Result.KICK_OTHER, ChatColor.RED + "" + ChatColor.BOLD + "Yikes, we're under attack! Please solve the capatcha.\n" +
|
||||
event.disallow(PlayerLoginEvent.Result.KICK_OTHER, ChatColor.RED + "" + ChatColor.BOLD + "Yikes, we're under attack! Please solve the capatcha.\n" +
|
||||
ChatColor.WHITE + "Please go to " + ChatColor.GOLD + url + ChatColor.WHITE + " in your web browser and solve the capatcha.\n" +
|
||||
"Once solved successfully, you will be able to join.");
|
||||
return;
|
||||
|
@ -64,8 +66,6 @@ public class Listeners implements Listener
|
|||
if (Capatchafy.securityLevel == 3)
|
||||
{
|
||||
Capatchafy.configs.setAuthorized(ip, false);
|
||||
//Bukkit.broadcastMessage("Player unauthorized.");
|
||||
//Bukkit.broadcastMessage("Player is authorized: " + Capatchafy.configs.isAuthorized(ip));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -83,24 +83,37 @@ public class Listeners implements Listener
|
|||
points++;
|
||||
}
|
||||
|
||||
if (diffInSeconds >= removeAllPointsTime && !Capatchafy.forced)
|
||||
if (diffInSeconds >= removeAllPointsTime)
|
||||
{
|
||||
points = 0;
|
||||
//Bukkit.broadcastMessage("[Capatchafy] Disabled");
|
||||
Capatchafy.enabled = false;
|
||||
}
|
||||
|
||||
if (points == throttleLogins && !Capatchafy.enabled)
|
||||
{
|
||||
//Bukkit.broadcastMessage("[Capatchafy] Enabled");
|
||||
Bukkit.broadcastMessage(ChatColor.DARK_RED + "Capatcha-based verification has been enabled.");
|
||||
Capatchafy.enabled = true;
|
||||
numberOfAttacks++;
|
||||
points = 0;
|
||||
|
||||
new BukkitRunnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (!Capatchafy.forced && Capatchafy.enabled)
|
||||
{
|
||||
Bukkit.broadcastMessage(ChatColor.GREEN + "Capatcha-based verification has been disabled.");
|
||||
Capatchafy.enabled = false;
|
||||
}
|
||||
}
|
||||
}.runTaskLater(Capatchafy.plugin, 5 * 60 * 20); //Default 5 * 60 * 20
|
||||
}
|
||||
if (numberOfAttacks >= maxAttacks && maxAttacks != 0)
|
||||
{
|
||||
//Bukkit.broadcastMessage("[Capatchafy] Enabled for good.");
|
||||
Capatchafy.enabled = true;
|
||||
Capatchafy.forced = true;
|
||||
lastLogin = currentTime;
|
||||
Bukkit.broadcastMessage(ChatColor.DARK_RED + "Capatchafy will not auto-disable.");
|
||||
return;
|
||||
}
|
||||
lastLogin = currentTime;
|
||||
|
@ -120,7 +133,6 @@ public class Listeners implements Listener
|
|||
{
|
||||
this.throttleTime = startupThrottleTime;
|
||||
this.throttleLogins = startupThrottleLogins;
|
||||
//Bukkit.getLogger().info("[Capatchafy] Delay started. " + throttleTime + " " + throttleLogins);
|
||||
new BukkitRunnable()
|
||||
{
|
||||
@Override
|
||||
|
@ -128,7 +140,6 @@ public class Listeners implements Listener
|
|||
{
|
||||
throttleTime = defaultThrottleTime;
|
||||
throttleLogins = defaultThrottleLogins;
|
||||
//Bukkit.broadcastMessage("[Capatchafy] Delay ended: " + throttleTime + " " + throttleLogins);
|
||||
}
|
||||
}.runTaskLater(Capatchafy.plugin, 1200);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
name: Capatchafy
|
||||
version: 1.0.1
|
||||
version: 1.1.0
|
||||
main: me.hockey.capatchafy.Capatchafy
|
||||
|
||||
commands:
|
||||
|
|
Loading…
Reference in a new issue