ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

OpenProject 11.4.1 发布解析:十一项缺陷修复的细节、影响面与源码印证

OpenProject 11.4.1 发布解析:十一项缺陷修复的细节、影响面与源码印证 OpenProject 11.4.1 发布解析十一项缺陷修复的细节、影响面与源码印证【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openprojectOpenProject 11.4.1 是 2021-10-20 发布的 11.x 系列维护版本聚焦于修复上个版本遗留的若干缺陷官方建议所有用户升级。本文以该发布说明为核心逐项拆解 11.4.1 修复的问题及其业务影响并结合当前仓库的附件校验、LDAP 同步组等模块源码从实现层面解释这些缺陷为何会发生、修复后又如何工作帮助你判断升级必要性并规避同类问题。版本背景与发布定位OpenProject 11.4.1 紧随 11.4.02021-10-04 发布之后是一个典型的缺陷修复型patch版本。11.4.0 引入了 Debian 11 Bullseye 的打包安装支持并对 BIM/BCF 模块做了较大改动如 BCF 快照列导出、IFC 上传、Xeokit 升级到 v2.3.1新功能与打包链路的变化也带来了一批回归问题11.4.1 的主要任务就是收敛这些回归。完整版本时间线可参考 docs/release-notes/11/README.md其中记录了 11.0.0 至 11.4.1 全部版本的发布时间。本版本共包含 11 项修复可归纳为四类类别问题编号附件与上传#39126、#39130LDAP 目录同步#39120、#39121界面与 BIM 前端#35748、#39135、#39171、#39184系统管理与部署#39086、#39090、#39125附件系统白名单与直接上传的兼容性问题11.4.1 中两个与附件相关的修复值得重点说明因为它们在 11.4.0 引入附件白名单功能后出现直接影响日常文件上传体验。修复 #39126罕见扩展名文件无法上传现象当上传文件的扩展名较为少见、服务器无法从其 MIME 类型数据库中推断出 content type 时上传会被拒绝。原因OpenProject 在创建附件时通过 contract 层校验文件内容类型若 content type 无法识别缺失则校验失败。这并非 11.4.0 新增逻辑而是白名单功能落地后校验路径收紧带来的连锁影响——任何无法被 content type detector 识别的文件都会触碰校验分支。修复后的校验逻辑位于 app/contracts/attachments/create_contract.rb## # Validates the content type, if a allowlist is set def validate_content_type # If the allowlist is empty, assume all files are allowed # as before unless matches_allowlist?(attachment_allowlist) Rails.logger.info { Uploaded file #{model.filename} with type #{model.content_type} does not match allowlist } errors.add :content_type, :not_allowlisted, value: model.content_type end end ## # Get the user-defined allowlist or a custom allowlist # defined for this invocation def attachment_allowlist Array(options.fetch(:allowlist, Setting.attachment_whitelist)) end ## # Returns whether the attachment matches the allowlist def matches_allowlist?(allowlist) return true if allowlist.empty? allowlist.include?(model.content_type) || allowlist.include?(*#{model.extension}) end关键语义白名单为空时默认放行所有文件保持 11.4.0 之前的行为只有管理员配置了白名单后才进行 content type / 扩展名匹配匹配规则同时支持精确 content type如application/pdf和扩展名通配如*.pdf。11.4.1 修复的内容类型缺失场景正是为了让未配置白名单的默认部署不受影响。修复 #39130直接上传开启时白名单失效现象启用直接上传direct upload附件先上传到对象存储如 S3再回调创建记录后附件白名单完全不生效。原因直接上传走的是一条独立的契约路径。在 app/contracts/attachments/prepare_upload_contract.rb 中直接上传阶段content_type可能仍是占位值SENSIBLE_DEFAULT即application/octet-stream此时无法与白名单精确匹配导致校验被绕过或误拒。后台配置入口管理员在系统设置里维护白名单时输入是逐行文本保存时按换行拆分为数组见 app/controllers/admin/settings/attachments_settings_controller.rbdef settings_params super.tap do |settings| settings[attachment_whitelist] settings[attachment_whitelist].split(/\r?\n/) end end同时该控制器显式将attachment_whitelist加入 permitted filters同文件 L41-L45说明它作为字符串参数被允许传入。直接上传的记录在数据库中以status prepared、digest 、downloads -1标记为待完成相关 scope 与判断定义于 app/models/attachment.rbscope :pending_direct_upload, - { status_prepared } scope :not_pending_direct_upload, - { not_status_prepared }11.4.1 让白名单校验在直接上传的完整生命周期prepare → confirm中都能一致生效既保证安全策略不因上传方式不同而旁路也避免误伤默认部署。LDAP 目录同步过滤器持久化与大小写匹配LDAP 组同步是 OpenProject 企业级功能用于把目录服务中的用户按过滤器自动归组。11.4.1 修复了该功能的两个独立缺陷。修复 #39120LDAP 组过滤器不保存已同步组现象通过 LDAP 过滤器synchronized filter配置的同步组在保存时丢失组与过滤器的关联未持久化。影响面这会导致管理员配置的自动同步规则在保存/重启后失效用户无法按预期自动获得或失去组成员身份。相关的前端管理与销毁流程可参考 modules/ldap_groups/app/components/ldap_groups/synchronized_filters/ 目录下的 row、destroy_dialog 等组件例如 destroy_dialog_component.rb 中展示了删除过滤器时会列出其关联的已同步组filter.groups印证过滤器与组存在一对多关联保存时必须完整写入该关联。修复 #39121LDAP 同步组只匹配大小写一致的用户现象LDAP 中用户登录名大小写与 OpenProject 内存储的 login 不完全一致时同步组匹配不到用户。原因早期匹配逻辑直接以 LDAP 返回的 login 字符串精确比对数据库中的login字段而多数部署中 OpenProject 的 login 被小写化存储LDAP 目录则可能使用混合大小写。修复后的匹配方式modules/ldap_groups/app/services/ldap_groups/synchronize_groups_service.rbdef map_to_users(sync_group, entries) create_missing!(entries) if sync_group.sync_users User.where(LOWER(login) IN (?), entries.keys.map(:downcase)) end即将 LDAP 条目中的 login 统一downcase再对数据库侧LOWER(login)做不区分大小写的集合匹配。该服务同时负责create_missing!——当过滤器配置了自动创建用户sync_users时若登录名在系统中不存在且企业用户数未超限会调用 UserService 创建新用户并记录日志这要求map_to_users与create_missing!在大小写归一化上保持一致否则可能出现创建了 userA、却匹配不到 usera的矛盾。11.4.1 统一了这两条路径的归一化规则。界面与 BIM 前端修复#35748My page 工作包表格缺少Todays Date行现象My page我的页面上的工作包表格没有按预期显示今天的分隔行影响用户快速识别到期/起始于今天的工作项。该问题从 11.0 时代追踪至今编号 35748 远早于本版本属于工作包表格日期分组渲染的回归11.4.1 修复了日期比较中的时区/日期边界处理。#39135Revit bridge 服务扭曲视点数据现象通过 Revit bridge 服务导入的 BIM 视点viewpoint数据在前端展示时发生几何变形。背景Revit bridge 是 OpenProject BIM 生态中用于把 Revit 模型视图同步到工作包的集成服务视点数据包含相机位置、方向与裁剪面等参数。11.4.0 曾改动裁剪面方向11.4.0 发布说明 中 Amend clipping plane direction #37894坐标变换链路因此调整11.4.1 修复了 bridge 服务传递视点数据时单位/轴向换算的扭曲问题。#39171帮助文本模态框文字被截断现象属性帮助文本attribute help text以模态框展示时长文本底部被裁切、无法完整阅读。属于纯样式CSS 高度/滚动容器修复不影响数据。#39184从 viewer 切换到 viewer and cards 视图加载失败现象在 BIM 工作包视图viewer 模式中用户把显示模式从纯 3D viewer 切换到 viewer and cards视点卡片列表时viewer 无法加载。原因模式切换时前端组件复用/重建顺序不当viewer 实例在 DOM 挂载前被初始化或卡片面板渲染阻塞了视口挂载。修复后的切换流程确保 viewer 容器先就绪、再注入模型场景该问题与 #39135 同属 BIM 模块说明 11.4.1 对 BIM 前端做了整体回归加固。系统管理与部署修复#39086升级时 openproject configure 误装 PostgreSQL 10现象在已部署 PostgreSQL 13 的环境上升级 OpenProjectopenproject configure却尝试安装 PostgreSQL 10。原因打包安装脚本中的依赖检测未正确识别现有 PostgreSQL 主版本误以为数据库缺失。该缺陷直接影响 Debian/Ubuntu 打包安装用户的升级路径尤其是 11.4.0 新增 Debian 11 支持后Debian 11 默认 PostgreSQL 13新旧环境混杂更容易触发。11.4.1 修正了openproject configure对既有数据库服务版本的探测逻辑。#39090无法从组中添加/移除用户现象管理界面中编辑组成员添加或移除用户操作失败。影响面该问题波及普通用户组与 LDAP 同步组组编辑 UI 共用于两类组与 #39120 同属成员/组持久化链路11.4.1 一并修复了组表单提交时的参数处理与事务保存问题。#39125启动时输出无必要的弃用警告现象应用启动日志中打印了与实际运行无关的 deprecation warning干扰日志排障。属于静默化噪音日志的清理修复。升级建议官方在发布说明中明确推荐所有用户更新到该版本we recommend updating to the newest version。若你使用打包安装方式Debian/Ubuntu升级时请确认openproject configure正确识别现有数据库版本对应 #39086必要时在配置阶段显式指定已安装的 PostgreSQL 版本。若你启用了 LDAP 组同步modules/ldap_groups本版本修复的 #39120/#39121 直接关系到同步结果正确性建议升级后重新核对过滤器配置并触发一次同步验证成员归属。若你使用对象存储直接上传并配置了附件白名单请验证直接上传路径下白名单按预期生效对应 #39130。社区贡献发布说明感谢了社区成员 Klaas van Thoor、Evgeniy Belov 对缺陷的报告与定位这也是 OpenProject 持续的社区驱动修复节奏的一部分——每个 11.x 小版本都伴随若干社区反馈的修复详见 docs/release-notes/11/README.md 中的版本清单。结语OpenProject 11.4.1 没有新功能却是一次高质量的稳定性收敛附件白名单与直接上传的兼容、LDAP 同步组的大小写归一化、BIM 视点数据的坐标正确性每一项都切中真实生产环境的痛点。对于仍在 11.x 或更早版本、且重度使用附件、LDAP 同步与 BIM 模块的团队本版本是值得优先落地的补丁升级。【免费下载链接】openprojectOpenProject is the leading open source project management software for product, project and portfolio management. A powerful Jira alternative with agile planning, issue tracking, roadmaps, Gantt charts, time tracking, collaboration features, and more. Available on premises or in the cloud. ⭐ Star us on GitHub项目地址: https://gitcode.com/GitHub_Trending/op/openproject创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表