Skip to content

Commit 1fb4114

Browse files
authored
Merge pull request #515 from bgashebr/master
doc: add drupal public doc
2 parents a814d9b + 1b8da7b commit 1fb4114

4 files changed

Lines changed: 220 additions & 0 deletions

File tree

docs/.vuepress/components/ELSTechnology.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1558,6 +1558,11 @@ const techData = [
15581558
versions: "0.8.x | 1.2.x | 3.1.0",
15591559
link: "./dompdf/",
15601560
},
1561+
{
1562+
name: "Drupal",
1563+
versions: "9.5.x",
1564+
link: "./drupal/",
1565+
},
15611566
{
15621567
name: "php-svg-lib",
15631568
versions: "0.3.4",

docs/.vuepress/config-client/sidebar.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,10 @@ export default {
272272
path: '/els-for-libraries/craftcms-feed-me/',
273273
icon: '/images/feed-me.webp',
274274
},
275+
{
276+
path: '/els-for-libraries/drupal/',
277+
icon: '/images/drupal.webp',
278+
},
275279
{
276280
path: '/els-for-libraries/firebase-php-jwt/',
277281
icon: '/images/firebase.webp',
42.3 KB
Loading
Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
# Drupal
2+
3+
Endless Lifecycle Support (ELS) for Drupal from TuxCare provides security fixes for Drupal core versions that have reached their end-of-life. This allows you to continue running your applications without vulnerability concerns, even after official support has ended.
4+
5+
## Supported Versions and Components
6+
7+
* **drupal/core** 9.5.x
8+
9+
Other versions upon request.
10+
11+
## Connection to ELS for Drupal Repository
12+
13+
This guide outlines the steps needed to integrate the TuxCare ELS for Drupal repository into your application. The repository provides trusted Drupal packages that can be easily integrated into your **Composer** projects.
14+
15+
### Step 1: Get user credentials
16+
17+
You need a username and password in order to use TuxCare ELS for Drupal repository. Anonymous access is disabled. To receive the credentials, please contact [[email protected]](mailto:[email protected]).
18+
19+
### Step 2: Configure Composer authentication
20+
21+
1. Create or edit the `auth.json` file for the user running Composer:
22+
23+
* **Linux/macOS**:
24+
25+
```text
26+
~/.composer/auth.json
27+
```
28+
29+
* **Windows**:
30+
31+
```text
32+
%APPDATA%\Composer\auth.json
33+
```
34+
35+
2. Use either the Composer CLI or edit `auth.json` directly to add your credentials for `nexus.repo.tuxcare.com`.
36+
37+
<CodeTabs :tabs="[
38+
{ title: 'Composer CLI', content: `composer config --global --auth http-basic.nexus.repo.tuxcare.com USERNAME PASSWORD` },
39+
{ title: 'auth.json', content: authjson }
40+
]" />
41+
42+
Replace `USERNAME` and `PASSWORD` with the credentials you received in [Step 1](#step-1-get-user-credentials).
43+
44+
### Step 3: Register the TuxCare repository
45+
46+
Add the `els_php` Composer repository either via CLI or by editing `composer.json`:
47+
48+
<CodeTabs :tabs="[
49+
{ title: 'Composer CLI', content: cli },
50+
{ title: 'composer.json', content: composerjson }
51+
]" />
52+
53+
### Step 4: Install Drupal core
54+
55+
Install the TuxCare-maintained Drupal core release that matches your project:
56+
57+
<CodeTabs :tabs="[
58+
{ title: 'Composer CLI', content: `composer require drupal/core:9.5.11-p1+tuxcare` },
59+
{ title: 'composer.json', content: packagejson }
60+
]" />
61+
62+
**Check the exact version listed in your TuxCare Nexus account to ensure you receive the most recent patched release.**
63+
64+
If you edited `composer.json` manually, run `composer update` to install the package:
65+
66+
```text
67+
composer update
68+
```
69+
70+
Composer will resolve dependencies against the TuxCare repository and install the patched releases.
71+
72+
### Composer Repository Configuration
73+
74+
If you encounter dependency resolution errors like:
75+
76+
`packages from higher priority repository do not match your constraint`
77+
78+
it usually means your project requires a package version that is not yet available in the TuxCare repository.
79+
80+
**Solution**: Update your `composer.json` to set the TuxCare repository as non-canonical:
81+
82+
```
83+
{
84+
"repositories": [
85+
{
86+
"type": "composer",
87+
"url": "https://nexus.repo.tuxcare.com/repository/els_php/",
88+
"canonical": false
89+
}
90+
]
91+
}
92+
```
93+
94+
This allows Composer to fall back to Packagist for packages not available in the TuxCare repository, while still preferring TuxCare patches when available.
95+
96+
## Customer Instructions
97+
98+
### For legacy-project customers
99+
100+
No special steps are needed. The `^9.5` range matches `9.5.11-p1+tuxcare` directly:
101+
102+
```
103+
{
104+
"repositories": [
105+
{"type": "composer", "url": "https://nexus.repo.tuxcare.com/repository/els_php/"},
106+
{"type": "composer", "url": "https://packages.drupal.org/8"}
107+
]
108+
}
109+
```
110+
111+
Then run:
112+
113+
```text
114+
composer update drupal/core --with-all-dependencies
115+
```
116+
117+
### For recommended-project customers (needs an alias)
118+
119+
Because `drupal/core-recommended:9.5.11` requires exactly `drupal/core:9.5.11`, customers need a Composer inline alias to tell Composer that `9.5.11-p1+tuxcare` should be treated as `9.5.11`:
120+
121+
```
122+
{
123+
"repositories": [
124+
{"type": "composer", "url": "https://nexus.repo.tuxcare.com/repository/els_php/"},
125+
{"type": "composer", "url": "https://packages.drupal.org/8"}
126+
],
127+
"require": {
128+
"drupal/core": "9.5.11-p1+tuxcare as 9.5.11",
129+
"drupal/core-recommended": "^9.5"
130+
}
131+
}
132+
```
133+
134+
Then run:
135+
136+
```text
137+
composer update "drupal/core-*" drupal/core --with-all-dependencies
138+
```
139+
140+
The `"9.5.11-p1+tuxcare as 9.5.11"` alias is the key — it tells Composer to install the Satis version but pretend it's `9.5.11` for dependency resolution, satisfying `core-recommended`'s exact version constraint.
141+
142+
## How to Upgrade to a Newer Version
143+
144+
If you have already installed a TuxCare Drupal package and want to upgrade to a newer release, update the version string in your `composer.json` file or run the `composer require` command with the new version:
145+
146+
```text
147+
composer require drupal/core:VERSION-pN+tuxcare
148+
```
149+
150+
Then run `composer update` to apply the changes:
151+
152+
```text
153+
composer update
154+
```
155+
156+
## Resolved CVEs
157+
158+
| CVE ID | Vulnerable versions | Fixed in version |
159+
|---------------------|--------------------------------------------------------------------------------------------|---------------------|
160+
| CVE-2024-45440 | >=8.0.0, <=11.0.4 | 9.5.11-p1+tuxcare |
161+
| CVE-2024-55634 | >=8.0.0, <10.2.11 \|\| >=10.3.0, <10.3.9 \|\| >=11.0.0, <11.0.8 | 9.5.11-p1+tuxcare |
162+
| CVE-2024-55636 | >=8.0.0, <10.2.11 \|\| >=10.3.0, <10.3.9 \|\| >=11.0.0, <11.0.8 | 9.5.11-p1+tuxcare |
163+
| CVE-2024-55637 | >=8.0.0, <10.2.11 \|\| >=10.3.0, <10.3.9 \|\| >=11.0.0, <11.0.8 | 9.5.11-p1+tuxcare |
164+
| CVE-2024-55638 | >=7.0 < 7.102 \|\| >= 8.0.0 < 10.2.11 \|\| >= 10.3.0 < 10.3. 9 | 9.5.11-p1+tuxcare |
165+
| GHSA-6ccv-8fgf-cjpw | >=8.0.0, <10.1.8 \|\| >=10.2.0, <10.2.2 | 9.5.11-p1+tuxcare |
166+
| CVE-2024-12393 | >=8.8.0, <10.2.11 \|\| >=10.3.0, <10.3.9 \|\| >=11.0.0, <11.0.8 | 9.5.11-p1+tuxcare |
167+
| CVE-2025-3057 | >=8.0.0, <10.3.13 \|\| >=10.4.0, <10.4.3 \|\| >=11.0.0, <11.0.12 \|\| >=11.1.0, <11.1.3 | 9.5.11-p1+tuxcare |
168+
| CVE-2025-31675 | >=8.0.0, <10.3.14 \|\| >=10.4.0, <10.4.5 \|\| >=11.0.0, <11.0.13 \|\| >=11.1.0, <11.1.5 | 9.5.11-p1+tuxcare |
169+
| CVE-2025-31673 | >=8.0.0, <10.3.13 \|\| >=10.4.0, <10.4.3 \|\| >=11.0.0, <11.0.12 \|\| >=11.1.0, <11.1.3 | 9.5.11-p1+tuxcare |
170+
| CVE-2025-31674 | >=8.0.0, <10.3.13 \|\| >=10.4.0, <10.4.3 \|\| >=11.0.0, <11.0.12 \|\| >=11.1.0, <11.1.3 | 9.5.11-p1+tuxcare |
171+
172+
If you are interested in the TuxCare Endless Lifecycle Support, contact [[email protected]](mailto:[email protected]).
173+
174+
<script setup>
175+
176+
const authjson =
177+
`{
178+
"http-basic": {
179+
"nexus.repo.tuxcare.com": {
180+
"username": "USERNAME",
181+
"password": "PASSWORD"
182+
}
183+
}
184+
}`
185+
186+
const composerjson =
187+
`{
188+
"repositories": [
189+
{
190+
"type": "composer",
191+
"url": "https://nexus.repo.tuxcare.com/repository/els_php/",
192+
"options": {
193+
"http": {
194+
"verify": true
195+
}
196+
}
197+
}
198+
]
199+
}`
200+
201+
const cli =
202+
`composer config repositories.tuxcare '{"type":"composer","url":"https://nexus.repo.tuxcare.com/repository/els_php/","options":{"http":{"verify":true}}}' --json`
203+
204+
const packagejson =
205+
`{
206+
"require": {
207+
"drupal/core": "9.5.11-p1+tuxcare"
208+
}
209+
}`
210+
211+
</script>

0 commit comments

Comments
 (0)