Stage 3 of IP -> UUID migration: completely removing the verification system

This commit is contained in:
Video
2022-04-15 07:52:06 -06:00
parent 05745c4210
commit 6af9f240f4
26 changed files with 35 additions and 828 deletions

View File

@ -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)

View File

@ -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();
}
}
}