Skip to content

[Question]: 离线/正版/皮肤站全开时无法使用皮肤站验证 #24

@XXJNOTFOUND

Description

@XXJNOTFOUND

你的目标

同时离线/正版/皮肤站

当前环境

代理:Velocity 3.5.0#601
后端:Leaf-1.21.11#166
数据库:默认Sqlite
模块:

modules {
    # Floodgate 认证;仅在已安装 floodgate 时生效
    auth-floodgate=true
    # 离线认证
    auth-offline=true
    # Yggdrasil 认证
    auth-yggd=true
    # 安全防护
    safe=true
    # 皮肤缓存
    profile-skin=true
    # 数据迁移
    data-merge=false
}

关键配置

# 数据库
database {
    # 数据库类型
    # 支持的值: SQLITE, MYSQL, MARIADB
    type=SQLITE
    # SQLite 数据库配置
    sqlite {
        # 数据库文件路径(相对于插件数据目录)
        path="data/hyperzone_login.db"
    }
    # MySQL 数据库配置
    mysql {
        # 地址
        host=localhost
        # 端口
        port=3306
        # 库名
        database="hyperzone_login"
        # 用户名
        username=root
        # 密码
        password=password
        # 额外的连接参数
        parameters="useSSL=false&serverTimezone=UTC&characterEncoding=utf8"
        # JDBC 驱动类
        driver-class-name="com.mysql.cj.jdbc.Driver"
    }
    # MariaDB 数据库配置
    mariadb {
        # 地址
        host=localhost
        # 端口
        port=3306
        # 库名
        database="hyperzone_login"
        # 用户名
        username=root
        # 密码
        password=password
        # 额外的连接参数
        parameters="useSSL=false&characterEncoding=utf8"
        # JDBC 驱动类
        driver-class-name="org.mariadb.jdbc.Driver"
    }
    # 数据库表前缀
    table-prefix="hz_"
    # 连接池配置
    pool {
        # 最大连接数
        maximum-pool-size=10
        # 最小空闲连接数
        minimum-idle=2
        # 连接超时时间(毫秒)
        connection-timeout=30000
        # 空闲连接超时时间(毫秒)
        idle-timeout=600000
        # 连接最大生命周期(毫秒)
        max-lifetime=1800000
    }
}
# UUID映射
remap {
    # 未开启对应渠道UUID透传时的生成前缀,如果填OfflinePlayer则为行业标准离线生成法
    prefix=OfflinePlayer
}
# 杂项
misc {
    # 不给服务器发送 CHAT_SESSION_UPDATE包
    kill-chat-session=true
}
# Debug
debug {
    # 日志调试开关;建议统一放在此分支下配置
    log {
        # 通用 debug 日志
        general=false
        # Floodgate / OutPre 预登录链路追踪日志
        out-pre-trace=false
        # ProfileSkin 相关调试日志
        profile-skin=false
        # 后端等待区兼容链路调试日志
        backend-compat=false
        # Netty / GameProfile 重写链路调试日志
        network-rewrite=false
        # Yggdrasil 认证链路调试日志
        yggdrasil-auth=false
    }
    # 慢测试模式相关配置
    slow-test {
        # 开启后,外部模块直接调用 overVerify 将被忽略,只有等待区 /over 才会真正完成 overVerify
        enabled=false
    }
}
# 模块开关
modules {
    # Floodgate 认证;仅在已安装 floodgate 时生效
    auth-floodgate=true
    # 离线认证
    auth-offline=true
    # Yggdrasil 认证
    auth-yggd=true
    # 安全防护
    safe=true
    # 皮肤缓存
    profile-skin=true
    # 数据迁移
    data-merge=false
}
# 等待区服务器
v-server {
    # 登录服实现模式:backend 或 outpre。推荐 outpre 模式,若有问题请使用backend模式。
    mode=outpre
    # 认证完成后默认进入的服务器
    post-auth-default-server=lobby
    # 记住认证时收到的服务器跳转请求
    remember-requested-server-during-auth=true
    backend {
        # 使用的真实认证等待服 Velocity 服务器名
        fallback-auth-server=*******
        # 等待区 UpsertPlayerInfo/TabList 兼容过滤补偿
        enable-player-info-compensation=true
        # 档案补偿同步
        enable-profile-compensation=true
        # 在线热改 name(风险较低,默认开启)
        enable-name-hot-change=true
        # 在线热改 UUID(高风险,默认关闭)
        enable-uuid-hot-change=false
    }
    outpre {
        # 认证服的逻辑名,仅用于日志/状态标识;不需要在 Velocity 的 servers 中注册。
        # 如果使用 ViaVersion,你需要在 Velocity 的 servers 中添加注册条目,如 outpre-auth = "127.0.0.1:30066",但不需要将其配置到 try 队列。
        auth-label=outpre-auth
        # 认证服的直连 Host
        auth-host="127.0.0.1"
        # 认证服的直连 Port
        auth-port=20002
        # 转接给认证服时,在连接握手中对后端暴露的 Host;留空时使用 authHost
        presented-host=""
        # 转接给认证服时,在连接握手中对后端暴露的 Port;<=0 时使用 authPort
        presented-port=-1
        # 转接给认证服时,在连接握手中对后端暴露的玩家源 IP;留空时使用玩家真实 IP
        presented-player-ip=""
    }
}
# 认证行为配置
auth {
    # 禁止通过以下渠道进行新档案注册(建档)的凭证渠道 ID 列表。
    # 填入渠道 ID(如 offline、yggdrasil、floodgate)后,该渠道的凭证将无法用于创建新玩家档案。
    # 已有档案的登录不受影响。
    disable-registration=[]
}
# 消息
messages {
    # 默认语言;当未启用客户端语言检测,或客户端语言没有对应语言文件时使用
    default-locale="zh_cn"
    # 消息缺失时的回退语言;建议始终保留 en_us 或 zh_cn 之一
    fallback-locale="zh_cn"
    # 优先尝试读取客户端语言
    use-client-locale=true
}

插件版本与下载渠道

https://github.com/HyperZoneLogin/HyperzoneLogin/releases/tag/26.4.6-RC

服务器插件列表

VC:

HAProxyDetectorPaper-1.3.jar
HyperZoneLogin-26.4.6-RC-29a32a89-all.jar
minimotd-velocity-2.1.7.jar

Leaf:

None

具体问题

复现步骤
在保证一切正常,VC与后端服务器可以互通时进行以下步骤

  1. 修改配置,并测试 玩家A(在使用皮肤站) 确实可以在关闭offline的情况下进入服务器;测试 玩家B(使用正版) 确实可以在关闭offline的情况下进入服务器;玩家C(使用离线)无法进入服务器(登录失败:无效会话(请尝试重启游戏及启动器))
  2. 修改配置(开启offline),测试玩家A(使用皮肤站,并且之前进过服务器)无法进入服务器,被卡在验证服,玩家B(正版,并且之前进过服务器)可以进入服务器;玩家C(使用离线,之前没进过服务器)可以在验证服完成注册,并进入服务器

你已经看过哪些文档

https://docs.h2l.icu/manual/zh/
全看了

其他补充

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionFurther information is requested

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions