Skip to content

Commit

Permalink
上传
Browse files Browse the repository at this point in the history
  • Loading branch information
mcchampions committed Jul 23, 2023
1 parent 7668b74 commit 04b959c
Show file tree
Hide file tree
Showing 8 changed files with 205 additions and 89 deletions.
15 changes: 0 additions & 15 deletions src/main/java/me/qscbm/plugins/dodochat/common/Verify.java
Original file line number Diff line number Diff line change
@@ -1,22 +1,7 @@
package me.qscbm.plugins.dodochat.common;

import io.github.minecraftchampions.dodoopenjava.api.v2.PersonalApi;
import io.github.minecraftchampions.dodoopenjava.command.CommandExecutor;
import io.github.minecraftchampions.dodoopenjava.command.CommandSender;
import io.github.minecraftchampions.dodoopenjava.event.events.v2.PersonalMessageEvent;
import me.qscbm.plugins.dodochat.common.Config;
import me.qscbm.plugins.dodochat.common.DataStorage;
import me.qscbm.plugins.dodochat.common.dodocommands.Help;
import me.qscbm.plugins.dodochat.common.hook.LuckPermsHook;
import org.json.JSONArray;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ExecutionException;

public class Verify {
public static Map<String,Map<String,String>> tempMap = new HashMap<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@ public void onCommand(CommandSender commandSender, String[] strings) {
String code = stringBuilder.toString();
String message;
if (Platform.isVelocity) {
message = "<gray>服务器悄悄的对你说:你收到这条消息的原因是Dodo频道中有人要绑定你的账号,如果非本人操作,请不要理会。验证码:"+code+",输入验证:验证 验证码(不要斜杆,没人会看到,一次机会)</gray>";
message = "<gray>服务器悄悄的对你说:你收到这条消息的原因是Dodo频道中有人要绑定你的账号,如果非本人操作,请不要理会。验证码:"+code+",输入:'/dodochat confirm 验证码'以确认</gray>";
} else {
message = "§7服务器悄悄的对你说:你收到这条消息的原因是Dodo频道中有人要绑定你的账号,如果非本人操作,请不要理会。验证码:"+code+",输入验证:验证 验证码(不要斜杆,没人会看到,一次机会)";
message = "§7服务器悄悄的对你说:你收到这条消息的原因是Dodo频道中有人要绑定你的账号,如果非本人操作,请不要理会。验证码:"+code+",输入:'/dodochat confirm 验证码'以确认";
}
Platform.sendMessage(strings[0],message);
Verify.tempMap.put(strings[0], Map.of(commandSender.getSenderDodoSourceId(),code));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package me.qscbm.plugins.dodochat.common.dodocommands;

import io.github.minecraftchampions.dodoopenjava.api.v2.ChannelMessageApi;
import io.github.minecraftchampions.dodoopenjava.api.v2.PersonalApi;
import io.github.minecraftchampions.dodoopenjava.command.CommandExecutor;
import io.github.minecraftchampions.dodoopenjava.command.CommandSender;
import me.qscbm.plugins.dodochat.common.Config;
Expand All @@ -11,12 +12,50 @@
import org.json.JSONArray;

import java.io.IOException;
import java.security.SecureRandom;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.ExecutionException;

public class ResetPassword implements CommandExecutor {
private static final String str = "abcdefghijklmnopqrstuvwxyz";
private static final String numStr = "0123456789";

private static char getRandomChar(String str) {
SecureRandom random = new SecureRandom();
return str.charAt(random.nextInt(str.length()));
}

private static char getLowChar() {
return getRandomChar(str);
}

private static char getUpperChar() {
return Character.toUpperCase(getLowChar());
}

private static char getNumChar() {
return getRandomChar(numStr);
}
private static char getRandomChar(int funNum) {
switch (funNum) {
case 1 -> {
return getUpperChar();
}
case 2 -> {
return getNumChar();
}
default -> {
return getLowChar();
}
}
}


@Override
public String getMainCommand() {
return "resetpassword";
Expand Down Expand Up @@ -51,9 +90,24 @@ public void onCommand(CommandSender commandSender, String[] strings) {
ChannelMessageApi.sendTextMessage(Config.authorization, Config.getConfiguration().getString("settings.dodoCommandChannelId"),"你没有绑定这个账号");
return;
}

DodoChat.getINSTANCE().getServer().getCommandManager().executeAsync(DodoChat.getINSTANCE().getServer().getConsoleCommandSource(),"forceunregister " + strings[0]);
ChannelMessageApi.sendTextMessage(Config.authorization, Config.getConfiguration().getString("settings.dodoCommandChannelId"),"已重置密码,请及时登录");
List<Character> list = new ArrayList<>(12);
list.add(getLowChar());
list.add(getUpperChar());
list.add(getNumChar());
for (int i = 3; i < 12; i++) {
SecureRandom random = new SecureRandom();
int funNum = random.nextInt(3);
list.add(getRandomChar(funNum));
}
Collections.shuffle(list);
StringBuilder stringBuilder = new StringBuilder(list.size());
for (Character c : list) {
stringBuilder.append(c);
}
String newPassword = stringBuilder.toString();
DodoChat.getINSTANCE().getServer().getCommandManager().executeAsync(DodoChat.getINSTANCE().getServer().getConsoleCommandSource(),"forcechangepassword " + strings[0] + " " + newPassword);
PersonalApi.sendPersonalMessage(Config.authorization, commandSender.getIslandSourceId(),commandSender.getSenderDodoSourceId(),"你的密码已经重置,重置后密码为: `" + newPassword + "`,请上线后及时更改密码");
ChannelMessageApi.sendTextMessage(Config.authorization, commandSender.getIslandSourceId(),"已重置密码,请查看私信");
} catch (SQLException | IOException | InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/me/qscbm/plugins/dodochat/spigot/DodoChat.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ public void onEnable() {
Bukkit.getPluginCommand("dodochat").setExecutor(new MinecraftCommand());
Bukkit.getPluginCommand("dodochat").setTabCompleter(new MinecraftCommand());
saveDefaultConfig();
Command.registerCommand(Config.authorization,new Help(),new Bind(),new Status(),new BindList(),new Unbind(),
new Call(),new MInfo());
saveResource("database.json",false);
getLogger().info("DodoChat已加载");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,38 +2,55 @@

import io.github.minecraftchampions.dodoopenjava.api.v2.ChannelMessageApi;
import me.qscbm.plugins.dodochat.common.Config;
import me.qscbm.plugins.dodochat.common.DataStorage;
import me.qscbm.plugins.dodochat.common.Verify;
import me.qscbm.plugins.dodochat.common.hook.LuckPermsHook;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.json.JSONArray;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.Objects;
import java.util.concurrent.ExecutionException;

public class MinecraftCommand implements TabExecutor {
public static void sendHelp(CommandSender sender) {
sender.sendMessage("§e<----DodoChat帮助---->");
sender.sendMessage("§e/dodochat send <channelId> <text> 发送一条消息到Dodo频道");
sender.sendMessage("§e/dodochat reload 重载配置文件");
sender.sendMessage("§e/dodochat help 打开帮助界面");
sender.sendMessage("§e/dodochat send <channelId> <text> - 发送一条消息到Dodo频道(管理专用)");
sender.sendMessage("§e/dodochat reload - 重载配置文件(管理专用)");
sender.sendMessage("§e/dodochat help - 打开帮助界面");
sender.sendMessage("§edodochat confirm <code> - 绑定账号验证");
}

@Nullable
@Override
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
if (args.length == 0|| args.length == 1) {
return List.of("help","reload","send");
return List.of("help","reload","send","confirm");
} else if (args.length <= 3) {
if (!args[0].equals("send")) {
return List.of("你确定后面还有参数?");
} else {
if (args[0].equals("send")) {
if (args.length == 2) {
return List.of("频道");
return List.of("频道id");
} else {
return List.of("消息");
}
} else if (args[0].equals("confirm")) {
if (args.length == 2) {
return List.of("验证码");
} else {
return List.of("你确定后面还有参数?");
}
} else {
return List.of("你确定后面还有参数?");
}
} else {
return List.of("你确定后面还有参数?");
Expand All @@ -45,7 +62,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
if (!sender.hasPermission("dodochat.permission")) {
return false;
}
if (args.length == 0 || args.length>3 || args.length == 2) {
if (args.length == 0 || args.length>3) {
sendHelp(sender);
return true;
}
Expand All @@ -61,16 +78,51 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command
default -> sendHelp(sender);
}
} else {
if (!Objects.equals(args[0], "send")) {
sendHelp(sender);
} else {
try {
ChannelMessageApi.sendTextMessage(Config.authorization,args[1], args[2]);
} catch (IOException e) {
throw new RuntimeException(e);
}
if (Objects.equals(args[0], "send")) {
if (sender.hasPermission("dodochat.send"))
try {
ChannelMessageApi.sendTextMessage(Config.authorization, args[1], args[2]);
} catch (IOException e) {
throw new RuntimeException(e);
}
sender.sendMessage("已发送");
} else if (Objects.equals(args[0], "confirm")) {
if (sender instanceof Player player) {
if (Verify.tempMap.containsKey(player.getName())) {
if (args.length == 2) {
String key = args[1];
if (Verify.tempMap.get(player.getName()).values().contains(key)) {
try {
String uuid = LuckPermsHook.luckPerms.getUserManager().lookupUniqueId(player.getName()).get().toString();
String id = (String) Verify.tempMap.get(player.getName()).keySet().toArray()[0];
ResultSet rs = DataStorage.stmt.executeQuery("select * from users where id = " + id + " limit 1");
rs.next();
String data = rs.getString("data");
JSONArray jsonArray = new JSONArray(data);
jsonArray.put(uuid);
DataStorage.conn.prepareStatement("replace into users(id,data) values(" + id + ",'" + jsonArray + "')").executeUpdate();
player.sendMessage("绑定成功");

} catch (InterruptedException | ExecutionException | SQLException e) {
throw new RuntimeException(e);
}
} else {
player.sendMessage("你这参数不对,请在dodo重新绑定");
}
} else {
player.sendMessage("你这参数不对,请在dodo重新绑定");
}
Verify.tempMap.remove(player.getName());
} else {
sender.sendMessage("没有需要验证的绑定");
}
} else {
sender.sendMessage("请玩家使用");
}
} else {
sendHelp(sender);
}
return true;
}
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public void onProxyInitialization(ProxyInitializeEvent event) {
server.getEventManager().register(this, new MinecraftEventListener());
EventManage.registerEvents(new DodoEventListener(),Config.authorization); //注册DodoOpenJava事件
logger.info("注册命令解析器中");
CommandMeta meta = server.getCommandManager().metaBuilder("dpdochat").aliases("dochat","dc").plugin(this).build();
CommandMeta meta = server.getCommandManager().metaBuilder("dodochat").aliases("dochat","dc").plugin(this).build();
server.getCommandManager().register(meta,new MinecraftCommand());
Command.registerCommand(Config.authorization,new Help(),new Bind(),new Status(),new BindList(),new Unbind(),
new ResetPassword(),new Call(),new GetBanHistory(),new MInfo());
Expand Down
Loading

0 comments on commit 04b959c

Please sign in to comment.