Merge pull request #22386 from opf/merge-release/17.2-20260318041917

Merge release/17.2 into dev
This commit is contained in:
Klaus Zanders
2026-03-18 09:30:10 +01:00
committed by GitHub
69 changed files with 182 additions and 97 deletions
+9 -2
View File
@@ -1,10 +1,11 @@
name: Package
on:
push:
tags:
- v*
branches:
- packaging/*
- release/*
- stable/*
workflow_dispatch:
schedule:
- cron: '0 3 * * *' # Daily at 03:00
@@ -42,6 +43,12 @@ jobs:
run: |
VERSION=$(ruby -r ./lib/open_project/version.rb -e "puts OpenProject::VERSION")
echo "version=$VERSION" >> $GITHUB_OUTPUT
if [[ "${{ github.ref_type }}" == "tag" ]]; then
MAJOR=$(ruby -r ./lib/open_project/version.rb -e "puts OpenProject::VERSION::MAJOR")
echo "channel=stable/${MAJOR}" >> $GITHUB_OUTPUT
else
echo "channel=${{ github.ref_name }}" >> $GITHUB_OUTPUT
fi
- name: Package
uses: pkgr/action/package@main
id: package
@@ -58,5 +65,5 @@ jobs:
target: ${{ matrix.target }}
token: ${{ secrets.PACKAGER_PUBLISH_TOKEN }}
repository: opf/openproject
channel: ${{ github.ref_name }}
channel: ${{ steps.setup.outputs.channel }}
file: ${{ steps.package.outputs.package_path }}
+1 -1
View File
@@ -208,7 +208,7 @@ gem "aws-sdk-core", "~> 3.241"
# File upload via fog + screenshots on travis
gem "aws-sdk-s3", "~> 1.213"
gem "openproject-token", "~> 8.8.0"
gem "openproject-token", "~> 8.8.2"
gem "plaintext", "~> 0.3.7"
+3 -3
View File
@@ -905,7 +905,7 @@ GEM
activesupport (>= 7.2.0)
openproject-octicons (>= 19.30.1)
view_component (>= 3.1, < 5.0)
openproject-token (8.8.0)
openproject-token (8.8.2)
activemodel
openssl (4.0.1)
openssl-signature_algorithm (1.3.0)
@@ -1689,7 +1689,7 @@ DEPENDENCIES
openproject-reporting!
openproject-storages!
openproject-team_planner!
openproject-token (~> 8.8.0)
openproject-token (~> 8.8.2)
openproject-two_factor_authentication!
openproject-webhooks!
openproject-wikis!
@@ -2071,7 +2071,7 @@ CHECKSUMS
openproject-reporting (1.0.0)
openproject-storages (1.0.0)
openproject-team_planner (1.0.0)
openproject-token (8.8.0) sha256=832a493e05dcce806134faf63ae8011cc5a48422fbed9ebb552f8028912954d4
openproject-token (8.8.2) sha256=081cbff7269d92a82fa1d63e9e09c87b70d47d7aefadcbb80d1e7368bc2cf096
openproject-two_factor_authentication (1.0.0)
openproject-webhooks (1.0.0)
openproject-wikis (1.0.0)
+4 -2
View File
@@ -111,8 +111,10 @@ class AdminController < ApplicationController
@smtp_addr = ActionMailer::Base.smtp_settings[:address]
@safe_ip = OpenProject::SsrfProtection.safe_ip?(@smtp_addr)
if !@safe_ip
flash[:error] = I18n.t :notice_smtp_address_unsafe, address: @smtp_addr
unless @safe_ip
flash[:error] = I18n.t :notice_smtp_address_unsafe_env_hint,
address: @smtp_addr,
env_name: Settings::Definition[:ssrf_protection_ip_allowlist].env_name
redirect_to admin_settings_mail_notifications_path, status: :see_other
end
+10 -2
View File
@@ -1400,6 +1400,14 @@ module Settings
end
end
def env_name
self.class.env_name(self)
end
def possible_env_names
self.class.possible_env_names(self)
end
def derive_default(default)
@default = default.is_a?(Hash) ? default.deep_stringify_keys : default
@default.freeze
@@ -1689,8 +1697,6 @@ module Settings
].compact
end
public :possible_env_names
def env_name_nested(definition)
"#{ENV_PREFIX}#{definition.name.upcase.gsub('_', '__')}"
end
@@ -1709,6 +1715,8 @@ module Settings
definition.env_alias.upcase
end
public :possible_env_names, :env_name
##
# Extract the configuration value from the given environment variable
# using YAML.
+1 -1
View File
@@ -4209,7 +4209,7 @@ af:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4437,7 +4437,7 @@ ar:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "لم يتم حذف المشروع."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "اتصال ناجح."
notice_successful_create: "إنشاء ناجح."
notice_successful_delete: "حذف ناجح."
+1 -1
View File
@@ -4209,7 +4209,7 @@ az:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4323,7 +4323,7 @@ be:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4209,7 +4209,7 @@ bg:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Проектът не е изтрит."
notice_project_not_found: "Проектът не е намерен."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Успешна връзка."
notice_successful_create: "Успешно създаване."
notice_successful_delete: "Успешно изтриване."
+1 -1
View File
@@ -4203,7 +4203,7 @@ ca:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "El projecte no s'ha suprimit."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "S'ha connectat correctament."
notice_successful_create: "Creat correctament."
notice_successful_delete: "Esborrat correctament."
+1 -1
View File
@@ -4209,7 +4209,7 @@ ckb-IR:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4322,7 +4322,7 @@ cs:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Projekt nebyl odstraněn."
notice_project_not_found: "Projekt nebyl nalezen."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Úspěšné připojení."
notice_successful_create: "Úspěšné vytvoření."
notice_successful_delete: "Úspěšné odstranění."
+1 -1
View File
@@ -4207,7 +4207,7 @@ da:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Projektet blev ikke slettet."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Forbindelse gennemført."
notice_successful_create: "Oprettelse gennemført."
notice_successful_delete: "Sletning gennemført."
+1 -1
View File
@@ -4201,7 +4201,7 @@ de:
notice_parent_item_not_found: "Übergeordnetes Element nicht gefunden."
notice_project_not_deleted: "Das Projekt wurde nicht gelöscht."
notice_project_not_found: "Projekt nicht gefunden."
notice_smtp_address_unsafe: "Die SMTP-Adresse %{address} ist nicht sicher. Bitte fügen Sie sie zu OPENPROJECT_SSRF_PROTECTION_ALLOWLIST hinzu."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Verbindung erfolgreich."
notice_successful_create: "Erfolgreich angelegt."
notice_successful_delete: "Erfolgreich gelöscht."
+1 -1
View File
@@ -4204,7 +4204,7 @@ el:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Το έργο δεν διαγράφηκε."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Επιτυχής σύνδεση."
notice_successful_create: "Επιτυχής δημιουργία."
notice_successful_delete: "Επιτυχής διαγραφή."
+1 -1
View File
@@ -4209,7 +4209,7 @@ eo:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4206,7 +4206,7 @@ es:
notice_parent_item_not_found: "Elemento padre no encontrado."
notice_project_not_deleted: "El proyecto no fue eliminado."
notice_project_not_found: "Proyecto no encontrado."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Conexión exitosa."
notice_successful_create: "Creación exitosa."
notice_successful_delete: "Eliminado con éxito."
+1 -1
View File
@@ -4209,7 +4209,7 @@ et:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Projekti ei ole kustutatud."
notice_project_not_found: "Projekti ei leitud."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Ühenduse loomine õnnestus."
notice_successful_create: "Loomine õnnestus."
notice_successful_delete: "Kustutamine õnnestus."
+1 -1
View File
@@ -4209,7 +4209,7 @@ eu:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4209,7 +4209,7 @@ fa:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4209,7 +4209,7 @@ fi:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Yhteyden muodostus onnistui."
notice_successful_create: "Luonti onnistui."
notice_successful_delete: "Poisto onnistui."
+1 -1
View File
@@ -4209,7 +4209,7 @@ fil:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Ang proyekto ay hindi nabura."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Matagumpay na ikonekta."
notice_successful_create: "Matagumpay pagkalikha."
notice_successful_delete: "Matagumpay ang pagtanggal."
+1 -1
View File
@@ -4207,7 +4207,7 @@ fr:
notice_parent_item_not_found: "L'élément parent est introuvable."
notice_project_not_deleted: "Le projet n'a pas été supprimé."
notice_project_not_found: "Projet introuvable."
notice_smtp_address_unsafe: "L'adresse SMTP %{address} n'est pas sûre. Veuillez l'ajouter à OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Connexion réussie."
notice_successful_create: "Création réussie."
notice_successful_delete: "Suppression réussie."
+1 -1
View File
@@ -4323,7 +4323,7 @@ he:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4207,7 +4207,7 @@ hi:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4266,7 +4266,7 @@ hr:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Projekt nije izbrisan."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Uspješna spojen."
notice_successful_create: "Uspješno kreirano."
notice_successful_delete: "Brisanje uspješno."
+1 -1
View File
@@ -4207,7 +4207,7 @@ hu:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "A projekt nem lett törölve."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Sikeresen létrejött a kapcsolat."
notice_successful_create: "Sikeres létrehozás."
notice_successful_delete: "Sikeres törlés."
+1 -1
View File
@@ -4148,7 +4148,7 @@ id:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Project tidak dihapus."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Sambungan berhasil."
notice_successful_create: "Berhasil dibuat."
notice_successful_delete: "Berhasil dihapus."
+1 -1
View File
@@ -4206,7 +4206,7 @@ it:
notice_parent_item_not_found: "L'elemento genitore non è stato trovato."
notice_project_not_deleted: "Il progetto non è stato eliminato."
notice_project_not_found: "Progetto non trovato."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Connesso con successo."
notice_successful_create: "Creato con successo."
notice_successful_delete: "Cancellato con successo."
+1 -1
View File
@@ -4151,7 +4151,7 @@ ja:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "プロジェクトを削除していません。"
notice_project_not_found: "プロジェクトが見つかりません。"
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "正常に接続しました。"
notice_successful_create: "正常に作成しました。"
notice_successful_delete: "正常に削除しました。"
+1 -1
View File
@@ -4209,7 +4209,7 @@ ka:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4209,7 +4209,7 @@ kk:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4152,7 +4152,7 @@ ko:
notice_parent_item_not_found: "부모 항목을 찾을 수 없습니다."
notice_project_not_deleted: "프로젝트가 삭제되지 않았습니다."
notice_project_not_found: "프로젝트를 찾을 수 없습니다."
notice_smtp_address_unsafe: "SMTP 주소 %{address}은(는) 안전하지 않습니다. OPENPROJECT_SSRF_PROTECTION_ALLOWLIST에 추가하세요."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "연결에 성공했습니다."
notice_successful_create: "생성에 성공했습니다."
notice_successful_delete: "삭제에 성공했습니다."
+1 -1
View File
@@ -4320,7 +4320,7 @@ lt:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Projektas nebuvo panaikintas."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Sėkmingas susijungimas."
notice_successful_create: "Sėkmingas sukūrimas."
notice_successful_delete: "Sėkmingas panaikinimas."
+1 -1
View File
@@ -4266,7 +4266,7 @@ lv:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4209,7 +4209,7 @@ mn:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4150,7 +4150,7 @@ ms:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Projek tersebut tidak dipadam."
notice_project_not_found: "Projek tidak ditemui."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Sambungan berjaya."
notice_successful_create: "Penciptaan yang berjaya."
notice_successful_delete: "Pemadaman yang berjaya."
+1 -1
View File
@@ -4209,7 +4209,7 @@ ne:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4204,7 +4204,7 @@ nl:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Het project is niet verwijderd."
notice_project_not_found: "Project niet gevonden."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Geslaagde verbinding."
notice_successful_create: "Aanmaak geslaagd."
notice_successful_delete: "Verwijdering geslaagd."
+1 -1
View File
@@ -4208,7 +4208,7 @@
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Prosjektet ble ikke slettet."
notice_project_not_found: "Prosjektet ble ikke funnet."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Vellykket tilkobling."
notice_successful_create: "Opprettelsen var vellykket."
notice_successful_delete: "Slettingen var vellykket."
+1 -1
View File
@@ -4318,7 +4318,7 @@ pl:
notice_parent_item_not_found: "Nie znaleziono elementu nadrzędnego."
notice_project_not_deleted: "Projekt nie został usunięty."
notice_project_not_found: "Nie znaleziono projektu."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Połączenie zakończone sukcesem."
notice_successful_create: "Tworzenie zakończone sukcesem."
notice_successful_delete: "Usuwanie zakończone sukcesem."
+1 -1
View File
@@ -4205,7 +4205,7 @@ pt-BR:
notice_parent_item_not_found: "Item pai não encontrado."
notice_project_not_deleted: "O projeto não foi excluído."
notice_project_not_found: "Projeto não encontrado."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Conectado com sucesso."
notice_successful_create: "Criado com sucesso."
notice_successful_delete: "Exclusão bem sucedida."
+1 -1
View File
@@ -4205,7 +4205,7 @@ pt-PT:
notice_parent_item_not_found: "O elemento pai não foi encontrado."
notice_project_not_deleted: "O projeto não foi eliminado."
notice_project_not_found: "Projeto não encontrado."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Ligação bem sucedida."
notice_successful_create: "Criado com sucesso."
notice_successful_delete: "Eliminado com sucesso."
+1 -1
View File
@@ -4265,7 +4265,7 @@ ro:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Proiectul nu a fost şters."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Conectare reușită."
notice_successful_create: "Creare reuşită."
notice_successful_delete: "Ştergere reuşită."
+1 -1
View File
@@ -4320,7 +4320,7 @@ ru:
notice_parent_item_not_found: "Родительский элемент не найден."
notice_project_not_deleted: "Проект удалён не был."
notice_project_not_found: "Проект не найден."
notice_smtp_address_unsafe: "SMTP-адрес %{address} небезопасен. Пожалуйста, добавьте его в список OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Подключение выполнено."
notice_successful_create: "Создание выполнено."
notice_successful_delete: "Удаление выполнено."
+1 -1
View File
@@ -4209,7 +4209,7 @@ rw:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4209,7 +4209,7 @@ si:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "ව්යාපෘතිය මකා දැමුවේ නැත."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "සාර්ථක සම්බන්ධතාවයක්."
notice_successful_create: "සාර්ථක නිර්මාණය."
notice_successful_delete: "සාර්ථක මකාදැමීම."
+1 -1
View File
@@ -4322,7 +4322,7 @@ sk:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Projekt nebol odstránený."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Úspešne pripojené."
notice_successful_create: "Úspešne vytvorené."
notice_successful_delete: "Úspešne zmazané."
+1 -1
View File
@@ -4322,7 +4322,7 @@ sl:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Projekt ni bil izbrisan."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Povezava uspela."
notice_successful_create: "Ustvarjanje uspelo."
notice_successful_delete: "Uspešen izbris."
+1 -1
View File
@@ -4266,7 +4266,7 @@ sr:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4209,7 +4209,7 @@ sv:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "Projektet raderades ej."
notice_project_not_found: "Projektet hittas inte."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Lyckad anslutning."
notice_successful_create: "Skapades utan problem."
notice_successful_delete: "Raderades utan problem."
+1 -1
View File
@@ -4152,7 +4152,7 @@ th:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "ไม่ได้ลบโครงการ"
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "การเชื่อมต่อสำเร็จ"
notice_successful_create: "สร้างเรียบร้อยแล้ว"
notice_successful_delete: "ลบเรียบร้อยแล้ว"
+1 -1
View File
@@ -4208,7 +4208,7 @@ tr:
notice_parent_item_not_found: "Üst öğe bulunamadı."
notice_project_not_deleted: "Proje silinemedi."
notice_project_not_found: "Proje bulunamadı."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Bağlantı başarılı."
notice_successful_create: "Oluşturma başarılı."
notice_successful_delete: "Silme başarılı."
+1 -1
View File
@@ -4316,7 +4316,7 @@ uk:
notice_parent_item_not_found: "Батьківський об’єкт не знайдено."
notice_project_not_deleted: "Проект не був видалений."
notice_project_not_found: "Проєкт не знайдено."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Підключення успішно встановлене."
notice_successful_create: "Створення успішно завершене."
notice_successful_delete: "Видалення успішно завершене."
+1 -1
View File
@@ -4209,7 +4209,7 @@ uz:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -4150,7 +4150,7 @@ vi:
notice_parent_item_not_found: "Không tìm thấy mục gốc."
notice_project_not_deleted: "Dự án không bị xóa."
notice_project_not_found: "Dự án không được tìm thấy."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Kết nối thành công."
notice_successful_create: "Sáng tạo thành công."
notice_successful_delete: "Xóa thành công."
+1 -1
View File
@@ -4146,7 +4146,7 @@ zh-CN:
notice_parent_item_not_found: "未找到父项"
notice_project_not_deleted: "项目没有被删除"
notice_project_not_found: "未找到项目。"
notice_smtp_address_unsafe: "SMTP 地址 %{address} 不安全。请将其添加到 OPENPROJECT_SSRF_PROTECTION_ALLOWLIST。"
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "成功连接。"
notice_successful_create: "成功创建。"
notice_successful_delete: "成功删除。"
+1 -1
View File
@@ -4147,7 +4147,7 @@ zh-TW:
notice_parent_item_not_found: "未找到父項目。"
notice_project_not_deleted: "專案沒有被刪除"
notice_project_not_found: "未找到專案。"
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "連接成功"
notice_successful_create: "建立成功"
notice_successful_delete: "刪除成功"
+1 -1
View File
@@ -4376,7 +4376,7 @@ en:
notice_parent_item_not_found: "Parent item not found."
notice_project_not_deleted: "The project wasn't deleted."
notice_project_not_found: "Project not found."
notice_smtp_address_unsafe: "SMTP address %{address} is not safe. Please add it to OPENPROJECT_SSRF_PROTECTION_ALLOWLIST."
notice_smtp_address_unsafe_env_hint: "SMTP address %{address} is not safe. Please add it to the whitelist using the %{env_name} environment variable."
notice_successful_connection: "Successful connection."
notice_successful_create: "Successful creation."
notice_successful_delete: "Successful deletion."
+1 -1
View File
@@ -141,7 +141,7 @@ ENV PGDATA=/var/openproject/pgdata
COPY --from=openproject/gosu /go/bin/gosu /usr/local/bin/gosu
RUN chmod +x /usr/local/bin/gosu && gosu nobody true
COPY --from=openproject/hocuspocus:17.2.1 --chown=$APP_USER:$APP_USER /app /opt/hocuspocus
COPY --from=openproject/hocuspocus:17.2.2 --chown=$APP_USER:$APP_USER /app /opt/hocuspocus
# Keep node/npm in all-in-one for bundled hocuspocus even when BIM support is disabled.
COPY --from=build-base /usr/local/bin/node /usr/local/bin/node
COPY --from=build-base /usr/local/lib/node_modules /usr/local/lib/node_modules
@@ -27,7 +27,7 @@ A work package in OpenProject can basically be everything you need to keep track
## Create a new work package
To get started, create a new work package in your project, [open the project](../projects/#open-an-existing-project) with the project drop-down menu, navigate to the **work packages module** in the project menu.
To get started, create a new work package in your project, [open the project](../projects/#open-an-existing-project) with the project dropdown menu, navigate to the **work packages module** in the project menu.
Within the work packages module, click the + Create button to create a new work package. In the drop down menu, choose which type of work package you want to create, e.g. a task or a milestone.
@@ -69,7 +69,7 @@ Click any of the fields to **update a work package**, e.g. description. Click th
![Update a work package in a split screen view in OpenProject](openproject_getting_started_work_packages_wp_detailed_view_edit.png)
To **update the status**, click on the highlighted displayed status on top of the form and select the new status from the drop-down.
To **update the status**, click on the highlighted displayed status on top of the form and select the new status from the dropdown.
![Work package status dropdown menu opened in a detailed work package view in OpenProject](openproject_getting_started_work_packages_update_status.png)
+33
View File
@@ -0,0 +1,33 @@
---
title: OpenProject 17.2.2
sidebar_navigation:
title: 17.2.2
release_version: 17.2.2
release_date: 2026-03-17
---
# OpenProject 17.2.2
Release date: 2026-03-17
We released OpenProject [OpenProject 17.2.2](https://community.openproject.org/versions/2284).
The release contains several bug fixes and we recommend updating to the newest version.
Below you will find a complete list of all changes and bug fixes.
<!-- BEGIN CVE AUTOMATED SECTION -->
<!-- END CVE AUTOMATED SECTION -->
<!--more-->
## Bug fixes and changes
<!-- Warning: Anything within the below lines will be automatically removed by the release script -->
<!-- BEGIN AUTOMATED SECTION -->
- Bugfix: Send test email fails when using SMTP and TLS \[[#73099](https://community.openproject.org/wp/73099)\]
- Bugfix: Webhook sends wrong Content-Type header \[[#73145](https://community.openproject.org/wp/73145)\]
- Bugfix: Cannot set the &quot;Used as backlog&quot; field in the Project Version settings. \[[#73187](https://community.openproject.org/wp/73187)\]
<!-- END AUTOMATED SECTION -->
<!-- Warning: Anything above this line will be automatically removed by the release script -->
+7
View File
@@ -13,6 +13,13 @@ Stay up to date and get an overview of the new features included in the releases
<!--- New release notes are generated below. Do not remove comment. -->
<!--- RELEASE MARKER -->
## 17.2.2
Release date: 2026-03-17
[Release Notes](17-2-2/)
## 17.2.1
Release date: 2026-03-16
+1 -1
View File
@@ -79,7 +79,7 @@ When you create a new team planner, it will be empty, like so:
![An example of a newly-created empty team planner in OpenProject](openproject_user_guide_teamplanner_new_unnamed_empty.png)
The first step in setting up your team planning calendar is to add team members. To do so, click on the **+ Assignee** button then search for the team member you would like to add from the the drop-down list (1). This will add a new row to the calendar view for that team member.
The first step in setting up your team planning calendar is to add team members. To do so, click on the **+ Assignee** button then search for the team member you would like to add from the the dropdown list (1). This will add a new row to the calendar view for that team member.
Repeat this step until all relevant team members are added and then save it using the floppy disk icon in the top header (2).
+53
View File
@@ -0,0 +1,53 @@
# frozen_string_literal: true
#-- copyright
# OpenProject is an open source project management software.
# Copyright (C) the OpenProject GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License version 3.
#
# OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
# Copyright (C) 2006-2013 Jean-Philippe Lang
# Copyright (C) 2010-2013 the ChiliProject Team
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# See COPYRIGHT and LICENSE files for more details.
#++
require "mail"
##
# Correctly pass tls_hostname from Rails until [1] is resolved and the gem updated.
#
# [1] https://github.com/mikel/mail/issues/1660
module OpenProject::Patches
module Mail
module SMTP
private
def build_smtp_session
super.tap do |smtp|
smtp.tls_hostname = settings[:tls_hostname] if settings[:tls_hostname]
end
end
end
end
end
OpenProject::Patches.patch_gem_version "mail", "2.9.0" do
Mail::SMTP.prepend OpenProject::Patches::Mail::SMTP
end
@@ -1,25 +0,0 @@
##
# This is a fix for a new SMTP bug introduced with Ruby 3.
# This can be removed once the official fix from the `mail` gem maintainers
# has been released and the gem bumped by us.
#
# Details: https://community.openproject.org/projects/openproject/work_packages/42385/activity
module OpenProject
module Patches
module MailSmtpStartTlsAutoHotfix
def build_smtp_session
super.tap do |smtp|
smtp.disable_starttls if disable_starttls?
end
end
def disable_starttls?
settings[:enable_starttls_auto] == false && !settings[:enable_starttls]
end
end
end
end
require "mail"
Mail::SMTP.prepend OpenProject::Patches::MailSmtpStartTlsAutoHotfix
+2 -2
View File
@@ -7,8 +7,8 @@ name: OpenProject
applicationSuite: openDesk
url: 'https://github.com/opf/openproject'
roadmap: 'https://www.openproject.org/roadmap'
releaseDate: '2026-03-16'
softwareVersion: '17.2.1'
releaseDate: '2026-03-17'
softwareVersion: '17.2.2'
developmentStatus: stable
softwareType: standalone/web
logo: 'publiccode_logo.svg'
+1 -1
View File
@@ -143,7 +143,7 @@ RSpec.describe AdminController do
it "redirects back, showing an error" do
expect(response).to redirect_to admin_settings_mail_notifications_path
expect(flash[:error]).to match /OPENPROJECT_SSRF_PROTECTION_ALLOWLIST/
expect(flash[:error]).to match /OPENPROJECT_SSRF_PROTECTION_IP_ALLOWLIST/
end
end