Commit Graph
447 Commits
Author SHA1 Message Date
youpaishidifu 182545de59 feat: 密码错误阈值封禁(Bukkit真实封禁+邮件报警) + OAuth登录IP风控 + 配置多退少补
Auto Release / build (push) Successful in 34s
1. RiskControlManager: triggerBan改用Bukkit BanList API真实封禁玩家
   - BanList.addBan(name, reason, expiry)阻止重连加入
   - onJoin检查isBanned()双重防护
   - cleanup()定时清理过期封禁并pardon
   - unban()同步解除Bukkit封禁

2. Main.java onJoin: 新增风控封禁检查,封禁期内玩家无法加入

3. ConfigManager: loadSettings()自动补齐缺失配置项(多退少补)

4. 已有功能(上一次commit实现但未推送):
   - 密码错误阈值封禁+报警邮件
   - 正版OAuth登录IP风控
v2.8
2026-07-19 14:41:04 +08:00
youpaishidifu c4a5fc9a61 fix: Add detailed logging to Create Release step for debugging
Auto Release / build (push) Successful in 27s
2026-07-19 01:23:43 +08:00
youpaishidifu caaf09fce0 fix: Gitea release tag now extracted from plugin.yml instead of build-N
Auto Release / build (push) Failing after 27s
2026-07-19 01:20:14 +08:00
youpaishidifu 1133f37bf9 fix: 改用actions/setup-java@v4从Temurin下载JDK25,彻底绕开服务器JDK探测和sdkman冲突
Auto Release / build (push) Successful in 49s
build-18
2026-07-19 01:14:27 +08:00
youpaishidifu 0ddc47b5d4 fix: 彻底绕开sdkman,直接用/usr/lib/jvm最高版本JDK,JAVA_HOME写入GITHUB_ENV并强制export到PATH
Auto Release / build (push) Failing after 7s
2026-07-19 01:10:21 +08:00
youpaishidifu c0be75474f fix: 改用<release>25替代<source>/<target>,确保JAVA_HOME正确传递到Maven步骤
Auto Release / build (push) Failing after 8s
2026-07-19 01:06:54 +08:00
youpaishidifu daa4a3cb7c fix: 升级Maven compiler-plugin到3.15.0,优化Java检测逻辑
Auto Release / build (push) Failing after 9s
2026-07-19 01:01:55 +08:00
youpaishidifu 09873425b9 fix: Maven检测优先用系统已安装(command -v mvn),下载源换阿里云镜像
Auto Release / build (push) Failing after 43s
2026-07-19 00:56:13 +08:00
youpaishidifu 2b20098f09 fix: release token 改用 GITEA_TOKEN||GITHUB_TOKEN 回退,零配置可跑通
Auto Release / build (push) Failing after 2m16s
2026-07-19 00:47:18 +08:00
youpaishidifu e2dd59e89e fix: Gitea工作流改用服务器已装JDK+Maven二进制,绕开dnf拉java-17冲突
Auto Release / build (push) Failing after 2m19s
2026-07-19 00:46:09 +08:00
youpaishidifu d66a792a2e 更新 README.md
Auto Release / build (push) Failing after 8s
2026-07-19 00:03:51 +08:00
youpaishidifu 87d190a013 Gitea工作流改用self-hosted + --no-docker模式
Auto Release / build (push) Has been cancelled
2026-07-18 23:37:29 +08:00
youpaishidifu 481e2ea90b 简化Gitea工作流:移除外部action依赖,使用原生命令构建和API创建release
Auto Release / build (push) Has been cancelled
2026-07-18 23:26:03 +08:00
youpaishidifu 4b19b65a84 简化Gitea工作流:单job + ubuntu-latest + JDK 21
Auto Release / build-and-release (push) Failing after 4s
2026-07-18 23:01:41 +08:00
youpaishidifu 7f425f2c9f Gitea Actions: 硬编码token用于release创建
Auto Release / build (push) Failing after 8s
Auto Release / release (push) Has been skipped
2026-07-18 22:49:55 +08:00
youpaishidifu 4a03608540 更新Gitea Actions工作流:添加release job,使用gitea release-action
Auto Release / build (push) Failing after 1m30s
Auto Release / release (push) Has been skipped
2026-07-18 22:35:34 +08:00
youpaishidifu 60504ebdf1 修复Release工作流:JDK 26 + zulu发行版,Gitea改用self-hosted runner
Auto Release / build (push) Failing after 32s
2026-07-18 22:01:09 +08:00
youpaishidifu 79e6e8354b 清理JVM崩溃日志并添加gitignore
Auto Release / build (push) Has been cancelled
2026-07-18 21:53:45 +08:00
youpaishidifu b890480a55 简化Release工作流:先确保构建通过
Auto Release / build (push) Has been cancelled
2026-07-18 21:53:11 +08:00
youpaishidifu 104286a66e 修复自动Release工作流:GitHub用标准action,Gitea用专用release-action
Auto Release / build-and-release (push) Has been cancelled
2026-07-18 21:49:03 +08:00
youpaishidifu 996fd41d8a 添加GitHub/Gitea自动release工作流:每次push到main分支自动构建并发布JAR
Auto Release / build-and-release (push) Has been cancelled
2026-07-18 21:32:23 +08:00
youpaishidifu c6e4e0a520 邮箱校验拒绝时显示允许的后缀列表:新增getAllowedSuffixHint()方法,3处校验点全部附带提示 2026-07-18 18:42:16 +08:00
youpaishidifu 3f7f7f6c33 移除敏感文件deploy_sftp.py
移除敏感文件deploy_sftp.py
2026-07-18 18:36:26 +08:00
youpaishidifu 1f4f9e343a 修复email复读机+配置文件自动补全不生效:1.给独立/email和/绑定命令添加处理器 2.saveSmtp保留未知key 3.writeLines renameTo失败时fallback到copy+delete 2026-07-18 18:28:44 +08:00
youpaishidifu b96cf8c664 修复邮箱黑白名单不生效+email复读机bug:loadMap支持多行值(裸行续行),email命令添加args长度检查,移除重复email处理器死代码 2026-07-18 18:11:00 +08:00
youpaishidifu 9d52051023 修复SMTP配置加载:移除重复loadMap调用,确保文件不存在时也能正确加载默认值,添加详细日志输出 2026-07-18 17:40:38 +08:00
youpaishidifu d96f16e337 修复SMTP配置热更新问题:加载时自动补全缺失配置项,支持UTF-8 BOM,添加email reload命令 2026-07-18 17:03:28 +08:00
youpaishidifu 535d32f2bb 新增邮箱黑白名单校验功能:SMTP配置文件重命名为邮件配置,分为SMTP信息区和运行模式区,默认不校验,白名单模式仅允许列表后缀,黑名单模式禁止列表后缀 2026-07-18 16:40:53 +08:00
youpaishidifu c79924f67d refactor: 移除/mscode命令,正版验证全部交web后端接管
- 移除/mscode命令(plugin.yml + onCommand + executor注册)
- 移除extractCodeFromInput()方法(仅/mscode使用)
- 移除verifyMinecraftAuthCode()方法(仅/mscode使用)
- Java端仅负责:创建session → 轮询PHP状态 → 自动登录
- 所有授权码输入由PHP粘贴页全权处理(自动提交)
- 解决MC聊天框256字符硬限导致URL截断的根本问题
2026-07-17 20:55:31 +08:00
youpaishidifu f5a3dfbda5 fix: AreaGUIManager硬编码URL改为从插件配置读取
- AreaGUIManager删除用户组时通知PHP同步,URL和密钥之前写死为caoyuan.ypshidifu.cn
- 现在改为从webManager.getWebBaseUrl()和getSecretKey()读取,支持其他服主自定义web后端
- extractCodeFromInput增强支持#code=fragment形式(上一轮修复)
- verifyMinecraftAuthCode加debug日志便于排查
- deploy_sftp.py备份后缀改为.jar.old/.old.N(不以.jar结尾,避免MC加载冲突)
- .gitignore添加hs_err_pid*.log
2026-07-17 19:40:01 +08:00
youpaishidifu c568703996 fix: 自动正版验证移至verifyPremiumAsync回调中触发 2026-07-17 17:16:41 +08:00
youpaishidifu 3251a48b99 feat: 玩家加入后延时5秒自动触发正版验证 2026-07-17 16:49:46 +08:00
youpaishidifu f83458fd4b 修复正版验证三大问题:1)paste_code_page Content-Type改为text/html修复HTML源码输出 2)/mscode支持粘贴完整URL自动提取code参数 3)HTTP错误处理改进,非200也返回body显示PHP错误信息 4)verify_code改为JSON格式POST 2026-07-17 16:13:40 +08:00
youpaishidifu c3d2f81e9e 添加/mscode命令:支持粘贴Microsoft OAuth授权码(公共客户端流程) 2026-07-17 14:02:08 +08:00
youpaishidifu f8b44dd97b 修复自动登录安全漏洞:移除verifyPremiumAsync自动登录路径
问题:离线模式服务器中,所有玩家UUID都是离线格式。
旧代码通过Mojang API检查名字是否存在,如果存在就autoLogin。
这意味着盗版客户端只要用正版玩家的名字就能跳过登录。

修复:
- 移除verifyViaPhpBackend和fetchMojangUuid
- 离线UUID玩家一律视为非正版,需手动登录或OAuth验证
- 保留3条安全的自动登录路径:
  1. 检查点0: isVerifiedPremiumPlayer (OAuth验证)
  2. 检查点1: hasJavaLogin (5分钟内重连)
  3. 检查点2: isWebLoginVerified (Web密码验证)
2026-07-17 11:06:03 +08:00
youpaishidifu ab4fe441fe 新增Microsoft OAuth正版验证功能
1. PHP端新增minecraft_auth.php,实现完整的Microsoft OAuth流程
   - 支持Microsoft账号登录验证
   - 获取Minecraft Profile(UUID、用户名)
   - 验证状态持久化到SQLite
   - 生成可点击的授权URL

2. Java端新增/mslogin和/正版命令
   - 调用PHP后端获取授权URL
   - 显示可点击链接给玩家
   - 轮询PHP检查验证状态
   - 验证成功后自动登录

3. 修改VerificationManager,集成PHP后端验证
   - 优先通过PHP验证(支持Microsoft OAuth)
   - PHP不可用时降级到Mojang API
   - 支持已验证正版玩家自动登录

4. 新增verifiedPremiumPlayers内存存储
   - 服务器重启前有效
   - 支持快速重连无需重复验证
   - 下线时保留验证状态

5. 新增plugin.yml命令定义
   - /mslogin: 英文版正版验证
   - /正版: 中文版正版验证
2026-07-17 10:22:31 +08:00
youpaishidifu 317d1fdbcc 注释快速补单日志减少噪音 2026-07-16 15:38:52 +08:00
youpaishidifu 7ba43d820a 修复领地权限拦截:豁免VISITOR(领地授权成员)在非安全权限检查 2026-07-16 14:37:56 +08:00
youpaishidifu a5edbfe314 修复: Java doGet超时30秒+poller详细日志
- doGet超时从10秒增加到30秒,确保poller有足够时间
- poller调用添加耗时统计和详细日志
- 修复pullPendingTransactions中的语法错误
- 解决: Java调用poller超时导致补单失败
2026-07-15 20:25:01 +08:00
youpaishidifu e791548e87 doTransactionPollCheck添加高频补单触发器(15秒间隔)
- WebManager: doTransactionPollCheck每~5秒触发poller_online.php(限流15秒)
- 解决补单延迟(原PollC~30-60秒才触发)

关闭 #1059
2026-07-15 18:01:06 +08:00
youpaishidifu 501aa40677 feat: Web在线充值(recharge)分支 — 支付平台0.01元测试到账
- processWebTransaction 新增 type=recharge/pay_recharge 专用分支
- 支付成功后 addBonds 发放债券 + 游戏内即时通知
- 复用现有 ~5s 轮询 + ackTransaction 防重 + confirmed_transactions 双保险
2026-07-14 20:55:04 +08:00
youpaishidifu 181c2acb34 chore: 关闭背包翻译的INFO日志刷屏
- 移除MaterialTranslator.translate()和translateWithFallback()中的info日志
- 保留warning仅用于翻译源异常降级场景
- 控制台不再被每条物品的翻译缓存/命中日志淹没
- 旧版: Sdf1_login.jar.old.9
2026-07-14 19:00:19 +08:00
youpaishidifu bf0688b291 feat: 背包备份物品名走官方翻译+机翻兜底
- translateMaterial() 由硬编码替换为 MaterialTranslator.translate()
- 与领地方块记录系统一致: 优先查 zh_cn.json 官方翻译, 机翻兜底
- 旧版: Sdf1_login.jar.old.8
2026-07-14 18:48:15 +08:00
youpaishidifu 765fbd74c1 fix: 交易拉取即贴标导致自己跳过处理
根因: ackTransaction()将txId加入confirmedTxIds内存set,
processWebTransaction()检查到set包含该ID就跳过处理。
交易还没处理就被自己标记的内存set跳过了。

修复: ackTransaction()不再写confirmedTxIds,
仅写PHP confirmed_transactions表。
confirmedTxIds仅在confirmTransaction()处理完后才写入。
旧版: Sdf1_login.jar.old.7
2026-07-14 17:03:12 +08:00
youpaishidifu d2180cec1c feat: 告示牌放置/编辑监控记录
1. land_block_log表新增detail列(已有数据库ALTER兼容)
2. DatabaseManager新增recordLandBlockWithDetail方法
3. LandRecordManager新增recordSignEdit方法,记录sign_place/sign_edit动作+内容
4. AreaProtection.onSignChange()延迟1tick记录(等事件处理完)
5. 回声碎片显示告示牌内容: 玩家XXX在HH:MM放置/编辑告示牌 [内容]
2026-07-14 16:47:57 +08:00
youpaishidifu 9ccda3f541 fix: ack_transaction补tx_type + 告示牌权限豁免授权成员
1. WebManager.ackTransaction()增加txType参数, bodyJson发送tx_id+tx_type
2. AreaProtection.onSignChange(): 白名单内授权成员跳过denySignEdit检查
   PermissionLevel无MEMBER枚举, 授权成员=白名单VISITOR, 通过isPlayerWhitelisted判定
2026-07-14 15:32:52 +08:00
youpaishidifu 401fa2453a fix(area-gui): 告示牌权限动态名称:允许/禁止编辑告示牌 2026-07-14 12:55:40 +08:00
youpaishidifu 6946cfef6d feat(area-gui): CLI/GUI菜单添加禁止编辑告示牌权限条目 2026-07-14 12:42:49 +08:00
youpaishidifu 89fa765351 fix(web): 拉取交易即刻贴标ack,防止SSL断路器后重复扣费 2026-07-14 11:27:46 +08:00
youpaishidifu a118aac18c feat(land): 添加告示牌编辑独立权限和红石状态记录 2026-07-14 10:39:59 +08:00