mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-07-05 21:56:42 +00:00
Stage 3 of IP -> UUID migration: completely removing the verification system
This commit is contained in:
@ -1,9 +1,6 @@
|
||||
package me.totalfreedom.totalfreedommod.discord;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.time.Instant;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
@ -22,7 +19,6 @@ import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import net.dv8tion.jda.api.EmbedBuilder;
|
||||
import net.dv8tion.jda.api.JDA;
|
||||
import net.dv8tion.jda.api.JDABuilder;
|
||||
@ -41,7 +37,6 @@ import net.dv8tion.jda.api.requests.GatewayIntent;
|
||||
import net.dv8tion.jda.api.utils.ChunkingFilter;
|
||||
import net.dv8tion.jda.api.utils.MemberCachePolicy;
|
||||
import net.dv8tion.jda.internal.utils.concurrent.CountingThreadFactory;
|
||||
import org.apache.commons.codec.digest.DigestUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.WordUtils;
|
||||
import org.bukkit.GameRule;
|
||||
@ -57,18 +52,12 @@ public class Discord extends FreedomService
|
||||
{
|
||||
|
||||
public static HashMap<String, PlayerData> LINK_CODES = new HashMap<>();
|
||||
public static HashMap<String, PlayerData> VERIFICATION_CODES = new HashMap<>();
|
||||
public static JDA bot = null;
|
||||
public ScheduledThreadPoolExecutor RATELIMIT_EXECUTOR;
|
||||
public List<CompletableFuture<Message>> sentMessages = new ArrayList<>();
|
||||
public Boolean enabled = false;
|
||||
private final Pattern DISCORD_MENTION_PATTERN = Pattern.compile("(<@!?([0-9]{16,20})>)");
|
||||
|
||||
public static String getMD5(String string)
|
||||
{
|
||||
return DigestUtils.md5Hex(string);
|
||||
}
|
||||
|
||||
public static String getCode(PlayerData playerData)
|
||||
{
|
||||
for (String code : LINK_CODES.keySet())
|
||||
@ -157,12 +146,6 @@ public class Discord extends FreedomService
|
||||
|
||||
public void startBot()
|
||||
{
|
||||
boolean verificationEnabled = ConfigEntry.DISCORD_VERIFICATION.getBoolean();
|
||||
if (!verificationEnabled)
|
||||
{
|
||||
FLog.info("Discord Verification has been manually disabled.");
|
||||
}
|
||||
|
||||
enabled = !Strings.isNullOrEmpty(ConfigEntry.DISCORD_TOKEN.getString());
|
||||
if (!enabled)
|
||||
{
|
||||
@ -199,15 +182,15 @@ public class Discord extends FreedomService
|
||||
.setMemberCachePolicy(MemberCachePolicy.ALL)
|
||||
.enableIntents(GatewayIntent.GUILD_MEMBERS)
|
||||
.build();
|
||||
FLog.info("Discord verification bot has successfully enabled!");
|
||||
FLog.info("Discord integration has successfully enabled!");
|
||||
}
|
||||
catch (LoginException e)
|
||||
{
|
||||
FLog.warning("An invalid token for the discord verification bot, the bot will not enable.");
|
||||
FLog.warning("An invalid token for Discord integration was provided, the bot will not enable.");
|
||||
}
|
||||
catch (IllegalArgumentException e)
|
||||
{
|
||||
FLog.warning("Discord verification bot failed to start.");
|
||||
FLog.warning("Discord integration failed to start.");
|
||||
}
|
||||
catch (NoClassDefFoundError e)
|
||||
{
|
||||
@ -261,35 +244,6 @@ public class Discord extends FreedomService
|
||||
return member.getUser();
|
||||
}
|
||||
|
||||
public boolean sendBackupCodes(PlayerData playerData)
|
||||
{
|
||||
List<String> codes = generateBackupCodes();
|
||||
List<String> encryptedCodes = generateEncryptedBackupCodes(codes);
|
||||
User user = getUser(playerData.getDiscordID());
|
||||
File file = generateBackupCodesFile(playerData.getName(), codes);
|
||||
if (file == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
PrivateChannel privateChannel = user.openPrivateChannel().complete();
|
||||
privateChannel.sendMessage("Do not share these codes with anyone as they can be used to impose as you.").addFile(file).complete();
|
||||
playerData.setBackupCodes(encryptedCodes);
|
||||
plugin.pl.save(playerData);
|
||||
//noinspection ResultOfMethodCallIgnored
|
||||
file.delete();
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<String> generateBackupCodes()
|
||||
{
|
||||
List<String> codes = new ArrayList<>();
|
||||
for (int i = 0; i < 10; i++)
|
||||
{
|
||||
codes.add(FUtil.randomAlphanumericString(10));
|
||||
}
|
||||
return codes;
|
||||
}
|
||||
|
||||
public String generateCode(int size)
|
||||
{
|
||||
StringBuilder code = new StringBuilder();
|
||||
@ -301,58 +255,6 @@ public class Discord extends FreedomService
|
||||
return code.toString();
|
||||
}
|
||||
|
||||
public List<String> generateEncryptedBackupCodes(List<String> codes)
|
||||
{
|
||||
List<String> encryptedCodes = new ArrayList<>();
|
||||
for (String code : codes)
|
||||
{
|
||||
encryptedCodes.add(getMD5(code));
|
||||
}
|
||||
return encryptedCodes;
|
||||
}
|
||||
|
||||
public File generateBackupCodesFile(String name, List<String> codes)
|
||||
{
|
||||
StringBuilder text = new StringBuilder();
|
||||
text.append("Below are your backup codes for use on TotalFreedom in the event you lose access to your discord account.\n")
|
||||
.append("Simply pick a code, and run /verify <code> on the server. Each code is one use, so be sure to cross it off once you use it.\n")
|
||||
.append("To generate new codes, simply run /generatebackupcodes\n\n");
|
||||
|
||||
for (String code : codes)
|
||||
{
|
||||
text.append(code).append("\n");
|
||||
}
|
||||
|
||||
String fileUrl = plugin.getDataFolder().getAbsolutePath() + "/TF-Backup-Codes-" + name + ".txt";
|
||||
try
|
||||
{
|
||||
FileWriter fileWriter = new FileWriter(fileUrl);
|
||||
fileWriter.write(text.toString());
|
||||
fileWriter.close();
|
||||
}
|
||||
catch (IOException e)
|
||||
{
|
||||
FLog.severe("Failed to generate backup codes file: " + e.toString());
|
||||
return null;
|
||||
}
|
||||
return new File(fileUrl);
|
||||
}
|
||||
|
||||
public void addVerificationCode(String code, PlayerData playerData)
|
||||
{
|
||||
VERIFICATION_CODES.put(code, playerData);
|
||||
}
|
||||
|
||||
public void removeVerificationCode(String code)
|
||||
{
|
||||
VERIFICATION_CODES.remove(code);
|
||||
}
|
||||
|
||||
public HashMap<String, PlayerData> getVerificationCodes()
|
||||
{
|
||||
return VERIFICATION_CODES;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.MONITOR)
|
||||
public void onPlayerDeath(PlayerDeathEvent event)
|
||||
{
|
||||
@ -475,7 +377,7 @@ public class Discord extends FreedomService
|
||||
messageChatChannel("**Server has stopped**");
|
||||
}
|
||||
|
||||
FLog.info("Discord verification bot has successfully shutdown.");
|
||||
FLog.info("Discord integration has successfully shutdown.");
|
||||
}
|
||||
|
||||
public String deformat(String input)
|
||||
|
@ -22,7 +22,6 @@ public class PrivateMessageListener extends ListenerAdapter
|
||||
PlayerData player = Discord.LINK_CODES.get(code);
|
||||
name = player.getName();
|
||||
player.setDiscordID(event.getMessage().getAuthor().getId());
|
||||
player.setVerification(true);
|
||||
|
||||
Admin admin = TotalFreedomMod.getPlugin().al.getEntryByUuid(player.getUuid());
|
||||
if (admin != null)
|
||||
@ -37,8 +36,7 @@ public class PrivateMessageListener extends ListenerAdapter
|
||||
{
|
||||
return;
|
||||
}
|
||||
event.getChannel().sendMessage("Link successful. Now this Discord account is linked with your Minecraft account **" + name + "**.\n"
|
||||
+ "Now when you are an impostor on the server, you may use `/verify` to verify.").complete();
|
||||
event.getChannel().sendMessage("Link successful. Now this Discord account is linked with your Minecraft account **" + name + "**.").complete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user