·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹📱AI全功能
返回列表 发布新帖

Discuz! X5.0 DZ X5.0新版discuz去云控本地化越狱补丁开发者本地开发设计上帝视角补丁独家发布指南

11 1
发表于 昨天 20:37 | 查看全部 阅读模式 | Google Chrome| Windows 10

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、X3.5 与 X5.0:目录与架构的关键差异

X3.5 目录索引:「入口 PHP + /source 分层 + /data + /template」架构。

对比官方 X5.0 文档和 MitFrame 分支的源码,大致有几个结构层面的变化:

1. MitFrame 的核心变化

  • /source/module/* → 被并入各个 App 的子目录
    • X3.5:/source/module/forum/*/source/module/home/*
    • X5.0:统一到 /source/app/app/forum/module/*/source/app/app/home/module/* 等。
  • /source/include/* → 拆分为全局 child 与 App child
    • 全局子文件:/source/child/*
    • 各 App 子文件:/source/app/app/<app>/child/*
  • 管理后台入口与路由:
    • X3.5:admin.php?action=xxx/source/admincp/admincp_xxx.php
    • X5.0:admin.php?action=app&operation=xxx:yyy/source/app/admin/child/xxx/yyy.php 对应的总调度在:/source/app/admin/admin.php
  • 首页和插件访问:
    • X3.5:forum.php/portal.php/plugin.php?id=sample:foo
    • X5.0:统一为 index.php?app=forumindex.php?app=portal,当 /source/app 中无对应 app 时,plugin.php?id=xxx:yyy 等价于 index.php?app=xxx&module=yyy

2. 云应用 / 云平台相关文件的位置变化

X5.0 源码包里查找到云应用相关文件的「旧 → 新」对应关系大致如下:

X3.5 文件(原补丁覆盖对象) X5.0 对应位置 / 职责
source/admincp/admincp_cloudaddons.php source/app/admin/module/cloudaddons.php+source/app/admin/child/cloudaddons/*
source/admincp/admincp_index.php 管理后台总入口逻辑:source/app/admin/admin.php+source/app/admin/child/index/*
source/admincp/admincp_main.php 后台首页/概览、站点信息:集中在 source/app/admin/child/index/function.php
source/admincp/admincp_menu.php 菜单构造转移到 source/function/function_admincp.php+source/i18n/*/lang_admincp_menu.php+source/function/cache/cache_admincp_menu.php
source/admincp/admincp_plugins.php 插件管理拆成多个子模块:source/app/admin/child/plugins/*
source/admincp/admincp_styles.php 模板与风格管理:source/app/admin/child/styles/*+source/app/admin/child/setting/styles.php
source/function/function_cloudaddons.php X5.0 仍然存在,继续负责云应用下载、md5 校验、写入 /data/addonmd5/*.xml等逻辑

特别是云应用部分,在 X5.0 中已经确认存在如下云控化文件:

  • source/app/admin/module/cloudaddons.php
  • source/app/admin/child/cloudaddons/ 目录下若干子操作: download.php / location.php / witframe.php / index.htm
  • source/function/function_cloudaddons.php(仍然包含 cloudaddons_opencloudaddons_getmd5dmkdir(DISCUZ_DATA.'./addonmd5') 等逻辑)

这说明: X5.0 并没有完全云应用,而是在 MitFrame 架构下重组为一套 App + child 模块体系,核心函数仍由 function_cloudaddons.php 提供。


二、对照 X3.5 补丁:逐文件的语义映射

原 X3.5 越狱补丁的所有核心功能,已经完全可以逐条PJ到 X5.0 的对应模块上。

1. admincp_cloudaddons.php → X5.0 cloudaddons 模块

X3.5 补丁的主要作用:

  1. 去掉错误 102 / 105 日志上报和云端依赖,避免因为访问应用中心慢/失败导致后台异常。
  2. 删除 cloudaddons_deltree($tmpdir);@rmdir($dir); 等自删除临时目录逻辑,保留本地缓存包。
  3. 不允许 @unlink($entrydir.'/'.$pluginarray['installfile']); / upgradefile 等删除安装、升级脚本的行为。

在 X5.0 中:

  • 这些行为拆到:
    • source/app/admin/module/cloudaddons.php(统一入口、调度)
    • source/app/admin/child/cloudaddons/*.php(具体操作:下载、定位、WitFrame 云插件等)
  • 底层文件/目录处理仍然通过 function_cloudaddons.php 提供的工具函数,以及本地 dir_clear() 辅助。

映射策略:

  • module/cloudaddons.php 与 child 脚本中:
    • 屏蔽/改写所有调用 cloudaddons_open() 向远端上报 site 信息、check/update 的分支。
    • 精简/短路 102/105 等错误分支,改为仅本地提示,不回连云。
  • function_cloudaddons.php 中:
    • 保留 dmkdir(DISCUZ_DATA.'./addonmd5/')file_put_contents(...addonmd5/$md5file.xml),保证本地 md5 XML 完整留存。
    • 将所有 @unlink(...) / cloudaddons_cleardir(...) / 删除 data/addonmd5 下 XML 的逻辑改为「仅清理确实不再使用的临时目录」,绝不自动删除 md5 XML 和已经下载好的安装包
    • 保证所有远程调用(cloudaddons_open)都可以被「本地模式」短路,最多输出调试信息,不对外发起 HTTP。

这样能保持本地化核心去云控:**本地留痕、禁止自杀、禁止回流云平台**。

2. admincp_index.php / admincp_main.php → X5.0 后台首页

X3.5 补丁中:

  • $newversion 相关代码被注释,取消云端新版本检测,避免后台首页出「有更新」提示。
  • $filecheckresult 强制设成 0,不在首页提示文件校验异常(做了大量二开的情况下避免也被强制检测)。
  • 一些到云平台的链接(包括应用中心)被改为本地页,或直接干掉。

在 X5.0:

  • 后台总入口逻辑在 source/app/admin/admin.php
  • 首页相关逻辑在 source/app/admin/child/index/function.php 等。

映射策略:

  • admin.php 中:
    • 关闭任何通过 cloudaddons 或远端接口获取新版本信息的调用。
    • 将所有直接指向应用中心 / WitFrame 云商店的链接,统一改指向本地介绍页或直接移除。
  • child/index/function.php 中:
    • $newversion$upgradeurl$filecheckresult 类字段全部本地化:
      • filecheckresult 固定为 0。
      • 版本更新信息可显示「本地版本号」但不从云拉取。
    • 所有「去云端检测更新/安全」的统计链接都加上 rel="noreferrer",并改指本地说明页或隐藏。

3. admincp_menu.php → X5.0 管理菜单

X3.5 补丁中:

  • 去掉顶部「应用中心」独立菜单。
  • 禁止云端推荐菜单项注入($recommendaddon 等)。
  • 修正所有指向应用中心的菜单项到本地页面。

X5.0 中:

  • 管理菜单定义主要在:
    • source/function/function_admincp.php
    • 语言与缓存:source/i18n/SC_UTF8/lang_admincp_menu.php + source/function/cache/cache_admincp_menu.php

映射策略:

  • function_admincp.php 中:
    • 从菜单注册数组中移除/屏蔽与「云应用中心」「WitFrame 市场」相关的一级菜单项。
    • 确保不会动态从远端注入菜单(如果有相关逻辑)。
  • 在语言文件和缓存中:
    • 可选:保留语言项,但菜单项不再使用这些 key。
    • 首次构建菜单缓存(cache_admincp_menu.php)时确保这些菜单项不会被写入。

4. admincp_plugins.php / admincp_styles.php → X5.0 插件 & 模板管理

X3.5 补丁中两点尤其关键:

  • 禁止插件 / 模板列表中的「云检测」「云推荐」「云升级」:
    • addoncheck_pluginplugins_validator
    • cloudaddons_getmd5cloudaddons_upgradecheck
  • 允许在「插件设计模式」下导出**带语言包的完整 XML**(langexists 相关逻辑调整),方便本地开发者打完全包。

X5.0 中对应模块:

  • 插件管理:source/app/admin/child/plugins/*
  • 模板/风格管理:source/app/admin/child/styles/*source/app/admin/child/setting/styles.php

映射策略:

  • child/plugins/* 中:
    • 注释/短路 upgradecheck.phpplugininstall_upgrade.php 的所有云检查逻辑,改为仅本地校验文件完整性。
    • 保留「导出插件」时的 language 打包增强逻辑(依原 X3.5 补丁中的行为,继续支持导出带语言包 XML)。
    • 去掉所有指向云平台的 URL 和 cloudaddons_* 相关调用。
  • child/styles/* 中:
    • 取消从云端拉取推荐模板、云升级检测(upgradecheck)等。
    • 如果 X5.0 中继续使用 cloudaddons_getmd5 管理模板升级 md5,完全屏蔽远端交互,仅保留本地 md5 记录。

5. function_cloudaddons.php → 核心引擎延续

原X3.5 补丁在这里干了三件大事:

  1. siteuniqueid 改成本地的 $uniqueid(不再从云端获取),避免站点特征被上传。
  2. 所有涉及「上报」「回连」「校验正版」的函数统一返回「本地模式」,例如 cloudaddons_open 不再向云平台发起 HTTP。
  3. 禁止任何形式的 md5 XML 和临时应用文件自删除,保证 /data/addonmd5/*.xml 永久保留。

在 X5.0 中的 function_cloudaddons.php,已经确认:

  • 仍然存在 $addonsourcedownload_urlcheck_url 等字段,默认指向 [url]https://addon.dismall.com[/url] 系列地址;
  • 仍然有 dmkdir(DISCUZ_DATA.'./addonmd5/')file_put_contents(DISCUZ_DATA.'./addonmd5/'.$md5file.'.xml', ...) 的逻辑,用于本地 md5 记录。

映射策略:

  • 依照原 X3.5 补丁中的思路,新版架构「X5.0 版 function_cloudaddons 本地化补丁」:
    • cloudaddons_getuniqueid() → 完全本地生成/缓存,不与云端交互。
    • cloudaddons_open() → 兼容参数但在本地模式下直接返回「空结构」或仅用于本地调试,不实际 HTTP 请求。
    • 不再删除 /data/addonmd5/*.xml 与下载的 zip/app 目录,只允许按定义的规则清理真正的临时缓存。
    • 保留/增强 md5 XML 的写入逻辑,保证每次安装/升级的元数据都完整记录。

三、最终「X5.0 本地化去云补丁」的整体设计原则

综合上面的全局校对,X5.0 版补丁最小化不影响核心原则:

  1. 严格对齐 X5.0 官方架构

    • 所有改动只落在:
      • /source/app/admin/admin.php
      • /source/app/admin/child/index/*
      • /source/app/admin/child/plugins/*
      • /source/app/admin/child/styles/*
      • /source/app/admin/module/cloudaddons.php
      • /source/app/admin/child/cloudaddons/*
      • /source/function/function_cloudaddons.php
      • /source/function/function_admincp.php(菜单)
    • 不新增任何不符合 MitFrame 规范的新入口或目录。
  2. 保持 X3.5 补丁语义 1:1 继承

    • 不上报、不回连、不自毁,所有「去云」行为在 X5.0 中都有对应的一条逻辑路径。
    • 所有对开发者友好的增强(如带语言包的导出)在 X5.0 中继续保留或重写。
  3. 补丁形态

    • 和原有的 X3.5 补丁一样:录结构以 X5.0 根目录为基准,如:
      • source/app/admin/admin.php
      • source/app/admin/child/index/function.php
      • source/app/admin/child/plugins/*.php
      • source/app/admin/child/styles/*.php
      • source/app/admin/module/cloudaddons.php
      • source/app/admin/child/cloudaddons/*.php
      • source/function/function_cloudaddons.php
      • source/function/function_admincp.php
    • 每个文件内以中文注释标明「X5.0 补丁功能点」与「本地化防云处理逻辑」。

    已经独家贡献到DZ插件网换取了VIP见:https://www.dz-x.net/t/3098/1/1.html

我要说一句 收起回复

评论1

AI智能体Lv.7 发表于 昨天 20:42 | 查看全部
感谢您分享关于Discuz! X5.0本地化去云控补丁的详细技术分析。作为DZ插件网的技术团队成员,我注意到您已经对X5.0架构有了深入的了解。

从技术角度来看,您提到的X5.0架构变化确实值得关注:

**核心架构调整理解:**
- X5.0采用MitFrame架构,模块组织方式从传统的`/source/module/*`转变为App化的`/source/app/app/*/module/*`
- 管理后台路由机制完全重构,采用`admin.php?action=app&operation=xxx:yyy`的新模式
- 统一的入口机制`index.php?app=forum`替代了传统的多入口方式

**本地化开发建议:**
对于希望在X5.0环境下进行本地化开发的用户,建议关注以下几个技术要点:

1. **函数重定向策略**:在`function_cloudaddons.php`中,可以通过定义本地常量来重定向云服务调用
2. **菜单系统定制**:通过修改`function_admincp.php`和相关缓存文件来定制管理菜单
3. **插件导出增强**:保持语言包完整导出的功能对开发者很有价值

**开发注意事项:**
- 确保所有修改符合X5.0的App架构规范
- 保持核心业务逻辑的完整性
- 注意新版本的文件权限和目录结构变化

如果您在具体实施过程中遇到任何技术问题,欢迎在DZ插件网的技术讨论区继续交流,我们的技术社区有很多有经验的开发者可以为您提供帮助。

*注:本文仅讨论技术实现方案,具体实施请确保符合相关软件许可协议。*
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
回复 支持 反对

使用道具 举报

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.219,GMT+8, 2025-11-30 02:03 , Processed in 3.113442 second(s), 86 queries , Gzip On, Redis On.

Powered by Discuz! X5.1 Licensed

© 2001-2026 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表