feat: support ping srv record mc server

This commit is contained in:
2024-10-23 13:32:46 +08:00
parent 57d0737f21
commit f48b2ea8b3
2 files changed
+12 -3

No files matched your search

@@ -35,7 +35,7 @@ class NslookupCommand : BaseCommand() {
} }
private val dirContext = InitialDirContext(env) private val dirContext = InitialDirContext(env)
private fun srv(host: String): MutableList<String> { fun srv(host: String): MutableList<String> {
val srvDomain = "$MC_SRV_PREFIX.$host" val srvDomain = "$MC_SRV_PREFIX.$host"
val attrs = dirContext.getAttributes(srvDomain, arrayOf("SRV")) val attrs = dirContext.getAttributes(srvDomain, arrayOf("SRV"))
val srvRecords = mutableListOf<String>() val srvRecords = mutableListOf<String>()
@@ -9,6 +9,7 @@
package cn.rtast.fancybot.commands.misc package cn.rtast.fancybot.commands.misc
import cn.rtast.fancybot.annotations.CommandDescription import cn.rtast.fancybot.annotations.CommandDescription
import cn.rtast.fancybot.commands.lookup.NslookupCommand
import cn.rtast.fancybot.commands.lookup.WikipediaCommand.Companion.extractPlainTextFromHtml import cn.rtast.fancybot.commands.lookup.WikipediaCommand.Companion.extractPlainTextFromHtml
import cn.rtast.fancybot.configManager import cn.rtast.fancybot.configManager
import cn.rtast.fancybot.db.deleteAccessTokenById import cn.rtast.fancybot.db.deleteAccessTokenById
@@ -56,11 +57,13 @@ import okhttp3.FormBody
import java.awt.AlphaComposite import java.awt.AlphaComposite
import java.awt.Color import java.awt.Color
import java.awt.image.BufferedImage import java.awt.image.BufferedImage
import java.net.InetAddress
import java.net.SocketException import java.net.SocketException
import java.net.URI import java.net.URI
import java.util.concurrent.Executors import java.util.concurrent.Executors
import javax.imageio.ImageIO import javax.imageio.ImageIO
import kotlin.random.Random import kotlin.random.Random
import kotlin.text.split
@CommandDescription("获取MC最新的版本!") @CommandDescription("获取MC最新的版本!")
class MCVersionCommand : BaseCommand() { class MCVersionCommand : BaseCommand() {
@@ -344,8 +347,14 @@ class MCPingCommand : BaseCommand() {
when (platform) { when (platform) {
"java", "je", "Java", "JAVA" -> { "java", "je", "Java", "JAVA" -> {
val parts = args.first().split(":") val parts = args.first().split(":")
val port = if (parts.size == 1) 25565 else parts.last().toInt() var port = if (parts.size == 1) 25565 else parts.last().toInt()
val host = parts.first() var host = parts.first()
val srv = NslookupCommand.srv(host)
if (srv.isNotEmpty()) {
val srv = srv.first().split(" ")
port = srv[2].toInt()
host = srv.last()
}
val response = JavaPing().ping(host, port, 10000) val response = JavaPing().ping(host, port, 10000)
if (response == null) { if (response == null) {
message.reply("无法获取服务器的消息请检查输入是否正确 >>> $host:$port") message.reply("无法获取服务器的消息请检查输入是否正确 >>> $host:$port")