CaaMoe / MultiLogin

外置共存
GNU General Public License v3.0
355 stars 51 forks source link

[错误报告] BC端 无法使用除正版登录以外的登录方式 #38

Closed xiamo070091 closed 2 years ago

xiamo070091 commented 2 years ago

BUG描述

正版可以直接进入游戏 YggdrasilOfficial 和 统一通行证 均无法进入游戏 image

MultiLogin版本

MultiLogin v0.3.13

服务端版本

travertine-1.16-191.jar

系统架构

centos 7 / amd64 | zulu JDK 11.54.25

配置文件

###################################
#       MultiLogin
#              --config
###################################

# 在这里,设置所有的 Yggdrasil 账户验证服务器。
services:

  # 这是一个示例配置:
  # 节点名称 'demo' 作为混合验证系统区分 Yggdrasil 验证服务器唯一性的凭据,设置好后请不要随意的去改动它,
  # 随意的更改节点名称将会导致二次验证系统无法验明用户身份而拒绝用户的登入请求。
  # 可以仿写此节点用来添加新的 Yggdrasil 账户验证服务器。
  demo:

    # 启用该验证服务器。
    # 值为 'false' 时将不添加该 Yggdrasil 账户验证服务器到混合登入系统中去,将拒绝一切使用该 Yggdrasil 账户验证服务器的玩家登入游戏。
    # 默认值 'true'
    enable: true

    # 该账户验证服务器中的别称。
    # 不用于父节点名称,此节点的值可以随意修改。
    # 必填值,在 Bukkit 服务端中作为变量传递。
    name: "Yggdrasil"

    # Yggdrasil 账户验证服务器的基本属性和信息设置。
    body:

      # Yggdrasil 账户验证服务器服务端 hasJoined 阶段部分验证请求链接设置。
      # 此节点必须指定完整的请求链接。
      # 其中 GET 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
      #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 一些例子:
      #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
      #      GET: "https://example.com/session/minecraft/hasJoined?username={username}&serverId={serverId}"
      #      POST: "https://example.com/session/minecraft/hasJoined"
      # 必填值
      url: "https://skins.域名.fun/api/yggdrasil/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

      # hasJoined 阶段使用 POST 请求的方式验证账户身份。
      # 绝大多数下, Yggdrasil 账户验证服务器 hasJoined 阶段都采用 GET 请求方式验证用户数据的,
      # 如果你不了解当前 Yggdrasil 验证流程的话,请勿擅自改动它。
      # 默认值 'false'
      postMode: false

      # hasJoined 阶段是否向 Yggdrasil 账户验证服务器传递用户 IP 信息,如果存在。
      # 默认值 'false'
      passIp: false

      # 设置 url 节点 {passIpContent} 变量内容,
      # 其中,变量 {ip} 为所获取到的 IP 信息。
      # 仅当 passIp 节点为 true 时此节点有效。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 请留意字符串拼接的特殊值 '&' 和 ', '
      # 一些例子:
      #      GET: '&ip={ip}'
      #      POST: ', "ip":"{ip}"'
      # 默认值 '&ip={ip}'
      passIpContent: "&ip={ip}"

      # 设置 post 的请求内容。
      # 其中 POST 请求中的占位变量 {username} 表示 username,占位变量 {serverId} 表示 serverId,
      #        占位变量 {passIpContent} 表示 passIpContent 节点所设置的内容。
      # 请求的 URL 对大小写敏感,设置需谨慎!
      # 一些例子:
      #        '{"username":"{username}", "serverId":"{serverId}"{passIpContent}}'
      #        '{"username":"{username}", "serverId":"{serverId}"}'
      # 默认值 '{"username":"{username}", "serverId":"{serverId}"}'
      postContent: '{"username":"{username}", "serverId":"{serverId}"}'

    # 设置玩家首次登入后游戏内的 UUID 生成规则
    # 目前只支持以下值:
    #   DEFAULT   - 使用 Yggdrasil 账户证服务器提供的在线 UUID
    #   OFFLINE   - 自动生成离线 UUID
    #   RANDOM    - 随机 UUID
    # 请谨慎设置和修改此节点,避免增加日后维护的心智负担。
    # 为避免触发 Paper 端的某些机制,强烈建议此值为 DEFAULT
    # 默认值 'DEFAULT'
    convUuid: DEFAULT

    # 当玩家首次登入时分配到的 UUID 已被使用,自动更正到随机的 UUID。
    # 请尽量保持此值为 true ,除非您了解后果是什么。
    # 默认值 'true'
    convRepeat: true

    # 玩家允许设置的用户名正则。
    # 若不匹配将会拒绝当前玩家的登入请求
    # 如果此值留空或未设置,则应用根节点下 'nameAllowedRegular' 节点值。
    # 默认值 ''
    nameAllowedRegular: ''

    # 是否为当前验证服务器单独开启白名单。
    # 当全局白名单为 true 时,此节点强制为 true。
    # 默认值: false
    whitelist: false

    # 设置占线登入机制,登入时游戏内存在有相同游戏内 UUID 的玩家时
    # 若为 false 将把游戏内玩家踢出,允许验证中的玩家登入(原版默认)
    # 若为 true 则拒绝当前的登入请求
    # 默认值: false
    refuseRepeatedLogin: true

    # 验证错误重试次数
    # 默认值: 1
    authRetry: 1

    # 皮肤修复规则,用来解决不同 Yggdrasil 账户验证服务器下的皮肤不可见问题。
    #    比如使用 Minecraft 原版验证服务器的玩家无法看到使用第三方外置验证登入玩家的皮肤。
    # 目前只支持设置以下值:
    #   OFF       - 关闭这个功能
    #   LOGIN     - 占用登入时间进行皮肤修复操作(修复时间过长会导致登入超时)
    #   ASYNC     - 登入后修复(修复成功后需要重新连接服务器)
    # 系统将会自动过滤掉皮肤源域名为 '*.minecraft.net' 的情况
    # 皮肤修复服务器来自 'mineskin.org'
    # 默认值 'OFF'
    skinRestorer: ASYNC

    # 皮肤修复错误重试次数
    # 默认值: 2
    skinRestorerRetry: 2

  # 此节点代表 Minecraft 原版验证
  official:
    name: "正版"
    body:
      url: "https://sessionserver.mojang.com/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"
  nide8:
    name: "统一通行证"
    body:
    # 假设当前服务器 UID 为 {uid}
      url: "https://auth2.nide8.com:233/7098f99d065e11e99250525400000000/sessionserver/session/minecraft/hasJoined?username={username}&serverId={serverId}{passIpContent}"

# 设置所有网络请求的超时时间
# 默认值 '10000'
servicesTimeOut: 10000

# 全局白名单开关
# 默认值 'true'
whitelist: false

# 玩家允许设置的用户名正则,不匹配将会拒绝登入请求。
# 当当前 Yggdrasil 账户验证服务器设置中对应设置节点存在值时,此节点对于该验证服务器无效。
# 默认值 '^[0-9a-zA-Z_]{1,16}$'
nameAllowedRegular: '^[0-9a-zA-Z_]{1,16}$'

# 插件数据的存放方式
sql:

  # 数据库类型设置
  # 目前至支持以下值:
  # H2
  # MYSQL
  # 默认值 'H2'
  backend: MYSQL

  # 数据库地址
  # 默认值 '127.0.0.1'
  ip: '127.0.0.1'

  # 数据库端口
  # 默认值 '3306'
  port: 3306

  # 数据库用户名
  # 默认值 'root'
  username: '用户名'

  # 数据库密码
  # 默认值 '12345'
  password: '密码'

  # 数据库名称
  # 默认值 'multilogin'
  database: '数据库'

  # 前缀
  # 默认值 'multilogin'
  prefix: 'multilogin'

日志

没有明显的错误

*** Hey! This build is potentially outdated :( ***
*** Please check for a new build from https://papermc.io/downloads ***
*** Should this build be outdated, you will get NO support for it. ***
*** Server will start in 10 seconds ***
[00:15:44 INFO]: Using mbed TLS based native cipher.
[00:15:44 INFO]: Using zlib based native compressor.
[00:15:44 INFO]: Enabled Travertine version git:Travertine-Bootstrap:1.16-R0.5-SNAPSHOT:fd9bd60:191
[00:15:44 INFO]: Not on Windows, attempting to use enhanced EpollEventLoop
[00:15:44 INFO]: Epoll is working, utilising it!
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_alert, file=modules/cmd_alert.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_find, file=modules/cmd_find.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_list, file=modules/cmd_list.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_send, file=modules/cmd_send.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=cmd_server, file=modules/cmd_server.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Discovered module: ModuleSpec(name=reconnect_yaml, file=modules/reconnect_yaml.jar, provider=JenkinsModuleSource())
[00:15:44 INFO]: Loaded plugin reconnect_yaml version git:reconnect_yaml:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:45 INFO]: Loaded plugin LuckPerms version 5.4.15 by Luck
[00:15:45 INFO]: Loaded plugin MiaoChat version 2.0.0 by 喵♂呜
[00:15:45 INFO]: Loaded plugin cmd_list version git:cmd_list:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:45 INFO] [MultiLogin]: Loading libraries...
[00:15:47 INFO]: Loaded plugin MultiLogin version 0.3.13 by ksqeib, CaaMoe
[00:15:47 INFO]: Loaded plugin cmd_find version git:cmd_find:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:47 INFO] [MiraiMC]: Verifying maven-metadata-net.mamoe.mirai-core-all.xml
[00:15:47 INFO] [MiraiMC]: Verifying mirai-core-all-2.11.0-M2.2.jar
[00:15:48 INFO] [MiraiMC]: Loading library mirai-core-all-2.11.0-M2.2.jar
WARNING: Illegal reflective access by me.dreamvoid.miraimc.internal.URLClassLoaderAccess$Reflection (file:/www/wwwroot/mc/S0r/BC/plugins/MiraiMC-Bungee.jar) to method java.net.URLClassLoader.addURL(java.net.URL)
[00:15:48 INFO]: Loaded plugin MiraiMC version 1.6 by DreamVoid
[00:15:48 INFO]: Loaded plugin ColorMOTD version 1.5.3 by andylizi
[00:15:48 INFO]: Loaded plugin HECore version 0.0.2 by Hellmessage
[00:15:48 INFO]: Loaded plugin cmd_server version git:cmd_server:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:48 INFO]: Loaded plugin cmd_alert version git:cmd_alert:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:48 INFO]: Loaded plugin yuanluServerDo version 1.1.7 by yuanlu
[00:15:48 INFO]: Loaded plugin cmd_send version git:cmd_send:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:48 INFO]: Loaded plugin BungeeTabListPlus version 3.4.4 by CodeCrafter47
[00:15:48 INFO]: Loaded plugin Chat2QQ version 1.5 by DreamVoid
[00:15:48 WARN]: Forced host server pvp is not defined
[00:15:48 INFO]: Enabled plugin reconnect_yaml version git:reconnect_yaml:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:48 INFO]:         __    
[00:15:48 INFO]:   |    |__)   LuckPerms v5.4.15
[00:15:48 INFO]:   |___ |      Running on BungeeCord - Travertine
[00:15:48 INFO]: 
[00:15:48 INFO] [LuckPerms]: Loading configuration...
[00:15:48 INFO] [LuckPerms]: Loading storage provider... [MYSQL]
[00:15:48 INFO] [me.lucko.luckperms.lib.hikari.HikariDataSource]: luckperms-hikari - Starting...
[00:15:49 INFO] [me.lucko.luckperms.lib.hikari.HikariDataSource]: luckperms-hikari - Start completed.
[00:15:49 INFO] [LuckPerms]: Loading messaging service... [SQL]
[00:15:49 INFO] [LuckPerms]: Loading internal permission managers...
[00:15:49 INFO] [LuckPerms]: Performing initial data load...
[00:15:49 INFO] [LuckPerms]: Successfully enabled. (took 1476ms)
[00:15:49 INFO]: Enabled plugin LuckPerms version 5.4.15 by Luck
[00:15:49 INFO] [MiaoChat]: 注意: 通过BC转发的聊天信息将不会在控制台显示 仅客户端可见!
[00:15:49 INFO]: Enabled plugin MiaoChat version 2.0.0 by 喵♂呜
[00:15:49 INFO]: Enabled plugin cmd_list version git:cmd_list:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:15:59 INFO] [MultiLogin]: 加载文件: config.yml
[00:16:00 INFO] [MultiLogin]: 加载文件: message.properties
[00:16:00 INFO] [MultiLogin]: 添加 Yggdrasil 账户验证服务器 Yggdrasil(demo)。
[00:16:00 INFO] [MultiLogin]: 添加 Yggdrasil 账户验证服务器 正版(official)。
[00:16:00 INFO] [MultiLogin]: 添加 Yggdrasil 账户验证服务器 统一通行证(nide8)。
[00:16:00 INFO] [moe.caa.multilogin.lib.com.zaxxer.hikari.HikariDataSource]: HikariPool-1 - Starting...
[00:16:00 INFO] [moe.caa.multilogin.lib.com.zaxxer.hikari.HikariDataSource]: HikariPool-1 - Start completed.
[00:16:00 INFO] [MultiLogin]: 成功连接到 MYSQL 数据库
[00:16:00 INFO] [MultiLogin]: 插件加载完毕
[00:16:00 INFO]: Enabled plugin MultiLogin version 0.3.13 by ksqeib, CaaMoe
[00:16:00 INFO]: Enabled plugin cmd_find version git:cmd_find:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:16:00 INFO] [MiraiMC]: Mirai working dir: default
[00:16:00 INFO] [MiraiMC]: Starting Mirai-Events listener.
[00:16:00 INFO] [MiraiMC]: Registering commands.
[00:16:00 INFO] [MiraiMC]: Loading auto-login file.
[00:16:00 INFO] [MiraiMC]: Initializing SQLite database.
[00:16:00 INFO] [MiraiMC]: [AutoLogin] Starting auto login task.
[00:16:00 INFO] [MiraiMC]: [AutoLogin] Auto login bot account: 503384825 Protocol: ANDROID_PHONE
[00:16:00 INFO] [MiraiMC]: 登录新的机器人账号: 删, 协议: ANDROID_PHONE
[00:16:00 INFO] [MiraiMC]: Initializing bStats metrics.
[00:16:00 WARN] [MiraiMC]: 确保您正在使用开源的MiraiMC插件,未知来源的插件可能会盗取您的账号!
[00:16:00 WARN] [MiraiMC]: 请始终从Github或作者指定的其他途径下载插件: https://github.com/DreamVoid/MiraiMC
[00:16:00 INFO] [MiraiMC]: All tasks done. Welcome to use MiraiMC!
[00:16:00 INFO]: Enabled plugin MiraiMC version 1.6 by DreamVoid
[00:16:00 INFO] [MiraiMC]: Checking update...
[00:16:00 INFO] [ColorMOTD]: ColorMOTD v1.5.3 开始加载...
[00:16:00 INFO] [ColorMOTD]: │├正在载入配置文件..
[00:16:00 INFO] [ColorMOTD]: │├正在加载图标...
[00:16:00 INFO] [ColorMOTD]: ││├成功加载图标"1.png"
[00:16:00 INFO] [ColorMOTD]: ││├找不到维护模式下的图标"serviceModeIcon.png",将使用正常状态下的图标
[00:16:00 INFO] [ColorMOTD]: ├您在配置文件里禁止了更新提示,那记得经常去发布贴检查有没有新版本哦~
[00:16:00 INFO] [ColorMOTD]: ├正在注册MOTD监听器...
[00:16:00 INFO] [ColorMOTD]: ColorMOTD v1.5.3加载完成,用时66毫秒
[00:16:00 INFO]: Enabled plugin ColorMOTD version 1.5.3 by andylizi
[00:16:00 INFO] [HECore]: ┍ HECore
[00:16:00 INFO] [HECore]: ┝ 地狱核心
[00:16:00 INFO] [HECore]: ┝ 
[00:16:00 INFO] [HECore]: ┝ 作者:删
[00:16:00 INFO] [HECore]: ┝ 创作: 删
[00:16:00 INFO] [HECore]: ┝ 官方网站:删
[00:16:00 INFO] [HECore]: ┝ 官方交流群: 删
[00:16:00 INFO] [HECore]: ┝ 
[00:16:00 INFO] [HECore]: ┝ 当前版本: v0.0.2
[00:16:00 INFO] [HECore]: ┝ 已为最新版本,无需更新
[00:16:00 INFO] [HECore]: ┝ 
[00:16:00 INFO] [HECore]: ┕ 地狱核心部署完成
[00:16:00 INFO]: Enabled plugin HECore version 0.0.2 by Hellmessage
[00:16:00 INFO]: Enabled plugin cmd_server version git:cmd_server:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:16:00 INFO]: Enabled plugin cmd_alert version git:cmd_alert:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:16:00 INFO] [yuanluServerDo]: 元路跨服操作插件-启动(bungee)
[00:16:00 INFO]: Enabled plugin yuanluServerDo version 1.1.7 by yuanlu
[00:16:00 INFO]: Enabled plugin cmd_send version git:cmd_send:1.16-R0.5-SNAPSHOT:fd9bd60:191 by WaterfallMC
[00:16:00 INFO]: Enabled plugin BungeeTabListPlus version 3.4.4 by CodeCrafter47
[00:16:00 INFO]: Enabled plugin Chat2QQ version 1.5 by DreamVoid
[00:16:00 INFO]: Listening on /0.0.0.0:25577
[00:16:01 INFO] [MiraiMC]: 你使用的是最新版本
[00:16:01 INFO] [MiraiMC]: Server list: 220.194.118.230:80, 157.148.54.249:443, 116.128.169.237:80, 111.206.99.88:443, 123.125.0.194:80, 59.83.208.163:14000, 112.65.195.55:443, 157.148.54.141:8080, msfwifi.3g.qq.com:8080, 123.125.0.224:80.
[00:16:02 INFO] [MiraiMC]: Loaded account secrets from local cache.
[00:16:02 INFO] [MiraiMC]: ECDH key is valid.
[00:16:02 INFO] [MiraiMC]: Saved account secrets to local cache for fast login.
[00:16:02 INFO] [MiraiMC]: Login successful.
[00:16:02 INFO] [MiraiMC]: Server time updated, serverTime: 1649175362, diff: 0ms=0.0s
[00:16:02 INFO] [MiraiMC]: Syncing friend message history...
[00:16:02 INFO] [MiraiMC]: Start loading friend list...
[00:16:02 INFO] [MiraiMC]: Start loading stranger list...
[00:16:02 INFO] [MiraiMC]: Successfully loaded stranger list: 0 in total
[00:16:02 INFO] [MiraiMC]: Syncing friend message history: Success.
[00:16:02 INFO] [MiraiMC]: No OtherClient online.
[00:16:02 INFO] [MiraiMC]: Start loading group list...
[00:16:02 INFO] [MiraiMC]: Successfully loaded friend list: 3 in total
[00:16:02 INFO] [MiraiMC]: Successfully loaded group list: 2 in total.
[00:16:02 INFO] [MiraiMC]: Scheduled refresh login session in 19d 23h 55min 0.0s.
[00:16:02 INFO] [MiraiMC]: Scheduled key refresh in 23h 55min 0.0s.
[00:16:02 INFO] [MiraiMC]: Bot login successful.
[00:16:02 INFO] [MiraiMC]: 艾兜(删) 登录成功
[00:16:16 INFO]: [/113.128.133.64:25673] <-> InitialHandler has connected
[00:16:21 INFO]: [/113.128.133.64:25678] <-> InitialHandler has connected

复现步骤

1.正常操作(应该是没有问题),他就是不行(好气啊) 2.客户端版本是1.7.10 3.BC端插件 image

4.子服务器没有开启正版验证,确定是BC端出现的问题,因为子服务器并没有收到玩家进入游戏的事件

5.如果还需要补充什么请告诉,我会补充的 ...

确认一遍

CaaMoe commented 2 years ago

请提供一下plugins/multilogin/logs

xiamo070091 commented 2 years ago

请提供一下plugins/multilogin/logs

尝试登陆(正版和统一通行证)过了,也只有这些信息 正版可以进入

[2022-04-06 - 11:10:05] [main - INFO]: 加载文件: config.yml
[2022-04-06 - 11:10:05] [main - INFO]: 加载文件: message.properties
[2022-04-06 - 11:10:05] [main - INFO]: 添加 Yggdrasil 账户验证服务器 Yggdrasil(yy)。
[2022-04-06 - 11:10:05] [main - INFO]: 添加 Yggdrasil 账户验证服务器 正版(official)。
[2022-04-06 - 11:10:05] [main - INFO]: 添加 Yggdrasil 账户验证服务器 统一通行证(nide8a)。
[2022-04-06 - 11:10:05] [main - DEBUG]: Database url(MYSQL): jdbc:mysql://127.0.0.1:3306/minecraft_sr?autoReconnect=true&useUnicode=true&amp&characterEncoding=UTF-8&useSSL=false
[2022-04-06 - 11:10:05] [main - INFO]: 成功连接到 MYSQL 数据库
[2022-04-06 - 11:10:05] [main - DEBUG]: bStats enabled
[2022-04-06 - 11:10:05] [main - INFO]: 插件加载完毕
xiamo070091 commented 2 years ago

发现问题了,是1.7.10版本的原因,1.8以上的登录信息可以正常被插件获取到 但是1.7.10版本无论是原版还是forge都无法获取到任何登录信息。。。

xiamo070091 commented 2 years ago

大佬,应该是Travertine对1.7.10的登录事件做了单独处理,您看可以支持一下吗

https://github.com/PaperMC/Travertine/blob/df43aeb41eb6859935623ca54c75c022afb33b34/Waterfall-Proxy-Patches/0003-1.7.x-Protocol-Patch.patch

CaaMoe commented 2 years ago

目前暂时不方便兼容较老的服务端,或许你可以考虑用其他更新的代理端 后续若有机会 会尝试兼容的