Improve email recall task. Fix #529

This commit is contained in:
DNx5 2016-02-16 06:16:49 +07:00
parent 29cc69407c
commit 814bc8df4e

View File

@ -1,38 +1,9 @@
package fr.xephi.authme; package fr.xephi.authme;
import java.io.File; import com.earth2me.essentials.Essentials;
import java.io.IOException;
import java.net.URL;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger;
import com.google.common.base.Charsets; import com.google.common.base.Charsets;
import com.google.common.io.Resources; import com.google.common.io.Resources;
import fr.xephi.authme.datasource.DataSourceType;
import fr.xephi.authme.permission.PlayerStatePermission;
import fr.xephi.authme.settings.SettingsMigrationService;
import org.apache.logging.log4j.LogManager;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;
import com.earth2me.essentials.Essentials;
import com.onarandombox.MultiverseCore.MultiverseCore; import com.onarandombox.MultiverseCore.MultiverseCore;
import net.minelink.ctplus.CombatTagPlus;
import fr.xephi.authme.api.API; import fr.xephi.authme.api.API;
import fr.xephi.authme.api.NewAPI; import fr.xephi.authme.api.NewAPI;
import fr.xephi.authme.cache.auth.PlayerAuth; import fr.xephi.authme.cache.auth.PlayerAuth;
@ -49,6 +20,7 @@ import fr.xephi.authme.command.help.HelpProvider;
import fr.xephi.authme.converter.ForceFlatToSqlite; import fr.xephi.authme.converter.ForceFlatToSqlite;
import fr.xephi.authme.datasource.CacheDataSource; import fr.xephi.authme.datasource.CacheDataSource;
import fr.xephi.authme.datasource.DataSource; import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.datasource.DataSourceType;
import fr.xephi.authme.datasource.FlatFile; import fr.xephi.authme.datasource.FlatFile;
import fr.xephi.authme.datasource.MySQL; import fr.xephi.authme.datasource.MySQL;
import fr.xephi.authme.datasource.SQLite; import fr.xephi.authme.datasource.SQLite;
@ -69,6 +41,7 @@ import fr.xephi.authme.output.Log4JFilter;
import fr.xephi.authme.output.MessageKey; import fr.xephi.authme.output.MessageKey;
import fr.xephi.authme.output.Messages; import fr.xephi.authme.output.Messages;
import fr.xephi.authme.permission.PermissionsManager; import fr.xephi.authme.permission.PermissionsManager;
import fr.xephi.authme.permission.PlayerStatePermission;
import fr.xephi.authme.process.Management; import fr.xephi.authme.process.Management;
import fr.xephi.authme.security.HashAlgorithm; import fr.xephi.authme.security.HashAlgorithm;
import fr.xephi.authme.security.PasswordSecurity; import fr.xephi.authme.security.PasswordSecurity;
@ -76,6 +49,7 @@ import fr.xephi.authme.security.crypts.HashedPassword;
import fr.xephi.authme.settings.NewSetting; import fr.xephi.authme.settings.NewSetting;
import fr.xephi.authme.settings.OtherAccounts; import fr.xephi.authme.settings.OtherAccounts;
import fr.xephi.authme.settings.Settings; import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.SettingsMigrationService;
import fr.xephi.authme.settings.Spawn; import fr.xephi.authme.settings.Spawn;
import fr.xephi.authme.settings.properties.DatabaseSettings; import fr.xephi.authme.settings.properties.DatabaseSettings;
import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.HooksSettings;
@ -87,9 +61,33 @@ import fr.xephi.authme.util.GeoLiteAPI;
import fr.xephi.authme.util.StringUtils; import fr.xephi.authme.util.StringUtils;
import fr.xephi.authme.util.Utils; import fr.xephi.authme.util.Utils;
import fr.xephi.authme.util.Wrapper; import fr.xephi.authme.util.Wrapper;
import net.minelink.ctplus.CombatTagPlus;
import org.apache.logging.log4j.LogManager;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger;
import static fr.xephi.authme.settings.properties.EmailSettings.MAIL_ACCOUNT; import static fr.xephi.authme.settings.properties.EmailSettings.MAIL_ACCOUNT;
import static fr.xephi.authme.settings.properties.EmailSettings.MAIL_PASSWORD; import static fr.xephi.authme.settings.properties.EmailSettings.MAIL_PASSWORD;
import static fr.xephi.authme.settings.properties.EmailSettings.RECALL_PLAYERS;
import static fr.xephi.authme.settings.properties.PluginSettings.HELP_HEADER; import static fr.xephi.authme.settings.properties.PluginSettings.HELP_HEADER;
/** /**
@ -118,7 +116,11 @@ public class AuthMe extends JavaPlugin {
private PasswordSecurity passwordSecurity; private PasswordSecurity passwordSecurity;
private DataSource database; private DataSource database;
// Public Instances /*
* Public Instances
* TODO: Encapsulation
*/
public NewAPI api; public NewAPI api;
public SendMailSSL mail; public SendMailSSL mail;
public DataManager dataManager; public DataManager dataManager;
@ -313,7 +315,7 @@ public class AuthMe extends JavaPlugin {
autoPurge(); autoPurge();
// Start Email recall task if needed // Start Email recall task if needed
recallEmail(); scheduleRecallEmailTask();
// Show settings warnings // Show settings warnings
showSettingsWarnings(); showSettingsWarnings();
@ -797,21 +799,19 @@ public class AuthMe extends JavaPlugin {
return player.getWorld().getSpawnLocation(); return player.getWorld().getSpawnLocation();
} }
private void recallEmail() { private void scheduleRecallEmailTask() {
if (!Settings.recallEmail) if (!newSettings.getProperty(RECALL_PLAYERS)) {
return; return;
Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { }
Bukkit.getScheduler().runTaskTimerAsynchronously(this, new Runnable() {
@Override @Override
public void run() { public void run() {
for (Player player : Utils.getOnlinePlayers()) { for (PlayerAuth auth : database.getLoggedPlayers()) {
if (player.isOnline()) { String email = auth.getEmail();
String name = player.getName().toLowerCase(); if (email == null || email.isEmpty() || email.equalsIgnoreCase("your@email.com")) {
if (database.isAuthAvailable(name) && PlayerCache.getInstance().isAuthenticated(name)) { Player player = Utils.getPlayer(auth.getRealName());
String email = database.getAuth(name).getEmail(); if (player != null) {
if (email == null || email.isEmpty() || email.equalsIgnoreCase("your@email.com")) { messages.send(player, MessageKey.ADD_EMAIL_MESSAGE);
messages.send(player, MessageKey.ADD_EMAIL_MESSAGE);
}
} }
} }
} }