Skip to content

Commit bc4cf20

Browse files
authored
chore(nifi): Add version 2.9.0 (#1463)
* chore(nifi): Add version 2.9.0 * changelog
1 parent 49b4e13 commit bc4cf20

12 files changed

Lines changed: 451 additions & 4 deletions

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file.
77
### Added
88

99
- hadoop: Add precompiled hadoop for later reuse in dependent images ([#1466]).
10+
- nifi: Add version `2.9.0` ([#1463]).
1011

1112
### Changed
1213

@@ -21,6 +22,7 @@ All notable changes to this project will be documented in this file.
2122
[#1452]: https://github.com/stackabletech/docker-images/pull/1452
2223
[#1453]: https://github.com/stackabletech/docker-images/pull/1453
2324
[#1454]: https://github.com/stackabletech/docker-images/pull/1454
25+
[#1463]: https://github.com/stackabletech/docker-images/pull/1463
2426
[#1466]: https://github.com/stackabletech/docker-images/pull/1466
2527

2628
## [26.3.0] - 2026-03-16

java-devel/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ARG STACKABLE_USER_UID
1212

1313
# Find the latest version here: https://github.com/apache/maven/releases
1414
# renovate: datasource=github-tags packageName=apache/maven
15-
ARG MAVEN_VERSION="3.9.11"
15+
ARG MAVEN_VERSION="3.9.14"
1616

1717
# See: https://adoptium.net/en-gb/installation/linux/#_centosrhelfedora_instructions
1818
RUN cat <<EOF > /etc/yum.repos.d/adoptium.repo

nifi/boil-config.toml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ java-devel = "11"
77
git-sync-version = "v4.4.1"
88
# Check for new versions at the upstream: https://github.com/stackabletech/nifi-opa-plugin/tags
99
# Checkout a Patchable version (patch-series) for the new tag
10-
nifi-opa-authorizer-plugin-version = "0.4.0"
10+
nifi-opa-authorizer-plugin-version = "0.5.0"
1111

1212
[versions."2.6.0".local-images]
1313
java-base = "21"
@@ -18,7 +18,7 @@ java-devel = "21"
1818
git-sync-version = "v4.4.1"
1919
# Check for new versions at the upstream: https://github.com/stackabletech/nifi-opa-plugin/tags
2020
# Checkout a Patchable version (patch-series) for the new tag
21-
nifi-opa-authorizer-plugin-version = "0.4.0"
21+
nifi-opa-authorizer-plugin-version = "0.5.0"
2222

2323
# Release a new version here: https://github.com/stackabletech/nifi-iceberg-bundle
2424
# Checkout a Patchable version (patch-series) for the new tag
@@ -33,4 +33,15 @@ java-devel = "21"
3333
git-sync-version = "v4.4.1"
3434
# Check for new versions at the upstream: https://github.com/stackabletech/nifi-opa-plugin/tags
3535
# Checkout a Patchable version (patch-series) for the new tag
36-
nifi-opa-authorizer-plugin-version = "0.4.0"
36+
nifi-opa-authorizer-plugin-version = "0.5.0"
37+
38+
[versions."2.9.0".local-images]
39+
java-base = "21" # As stated in GitHub README
40+
java-devel = "21"
41+
"shared/logback" = "1.5.32" # https://github.com/apache/nifi/blob/rel/nifi-2.9.0/pom.xml#L171
42+
43+
[versions."2.9.0".build-arguments]
44+
git-sync-version = "v4.4.1"
45+
# Check for new versions at the upstream: https://github.com/stackabletech/nifi-opa-plugin/tags
46+
# Checkout a Patchable version (patch-series) for the new tag
47+
nifi-opa-authorizer-plugin-version = "0.5.0"
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
mirror = "https://github.com/stackabletech/nifi-opa-plugin.git"
2+
base = "e544db52f445c449f97d809441079b04b5cb1a0b"
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
From d4f0275b86729bd28d83f8d4b28166c827a3385a Mon Sep 17 00:00:00 2001
2+
From: Nick Larsen <nick.larsen@stackable.tech>
3+
Date: Mon, 17 Feb 2025 17:26:20 +0100
4+
Subject: no zip assembly
5+
6+
---
7+
nifi-assembly/pom.xml | 1 -
8+
1 file changed, 1 deletion(-)
9+
10+
diff --git a/nifi-assembly/pom.xml b/nifi-assembly/pom.xml
11+
index 60250bd60e..d49fe6d0d9 100644
12+
--- a/nifi-assembly/pom.xml
13+
+++ b/nifi-assembly/pom.xml
14+
@@ -66,7 +66,6 @@ language governing permissions and limitations under the License. -->
15+
<tarLongFileMode>posix</tarLongFileMode>
16+
<formats>
17+
<format>dir</format>
18+
- <format>zip</format>
19+
</formats>
20+
</configuration>
21+
</execution>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
From a5e683212fa31aca9386654878e810a506154e16 Mon Sep 17 00:00:00 2001
2+
From: Nick Larsen <nick.larsen@stackable.tech>
3+
Date: Mon, 17 Feb 2025 17:31:17 +0100
4+
Subject: add cyclonedx plugin
5+
6+
---
7+
pom.xml | 18 ++++++++++++++++++
8+
1 file changed, 18 insertions(+)
9+
10+
diff --git a/pom.xml b/pom.xml
11+
index 3a865337ec..8ca44ad5ac 100644
12+
--- a/pom.xml
13+
+++ b/pom.xml
14+
@@ -1075,6 +1075,24 @@
15+
</rulesets>
16+
</configuration>
17+
</plugin>
18+
+ <plugin>
19+
+ <groupId>org.cyclonedx</groupId>
20+
+ <artifactId>cyclonedx-maven-plugin</artifactId>
21+
+ <version>2.8.0</version>
22+
+ <configuration>
23+
+ <projectType>application</projectType>
24+
+ <schemaVersion>1.5</schemaVersion>
25+
+ <skipNotDeployed>false</skipNotDeployed>
26+
+ </configuration>
27+
+ <executions>
28+
+ <execution>
29+
+ <phase>package</phase>
30+
+ <goals>
31+
+ <goal>makeBom</goal>
32+
+ </goals>
33+
+ </execution>
34+
+ </executions>
35+
+ </plugin>
36+
</plugins>
37+
</build>
38+
<profiles>
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
From 43fc3a1d33ae436c2add60adf72d2e0148ea7b56 Mon Sep 17 00:00:00 2001
2+
From: Benedikt Labrenz <benedikt@labrenz.org>
3+
Date: Thu, 22 May 2025 14:47:24 +0200
4+
Subject: disable host port validation if list of allowed hosts only contains
5+
'*'
6+
7+
---
8+
.../connector/FrameworkServerConnectorFactory.java | 13 +++++++++++--
9+
1 file changed, 11 insertions(+), 2 deletions(-)
10+
11+
diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/connector/FrameworkServerConnectorFactory.java b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/connector/FrameworkServerConnectorFactory.java
12+
index 24ce43a51f..526695b9da 100644
13+
--- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/connector/FrameworkServerConnectorFactory.java
14+
+++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/connector/FrameworkServerConnectorFactory.java
15+
@@ -54,6 +54,8 @@ public class FrameworkServerConnectorFactory extends StandardServerConnectorFact
16+
17+
private final String excludeCipherSuites;
18+
19+
+ private final boolean disableHostPortValidator;
20+
+
21+
private final Set<Integer> validPorts;
22+
23+
private SslContextFactory.Server sslContextFactory;
24+
@@ -72,6 +74,11 @@ public class FrameworkServerConnectorFactory extends StandardServerConnectorFact
25+
headerSize = DataUnit.parseDataSize(properties.getWebMaxHeaderSize(), DataUnit.B).intValue();
26+
validPorts = getValidPorts(properties);
27+
28+
+ // Check if the property for allowed hosts has only the wildcard entry and
29+
+ // if so store this in disableHostPortValidator for later use
30+
+ List<String> configuredHostNames = properties.getAllowedHostsAsList();
31+
+ disableHostPortValidator = configuredHostNames.size() == 1 && configuredHostNames.contains("*");
32+
+
33+
if (properties.isHTTPSConfigured()) {
34+
if (properties.isClientAuthRequiredForRestApi()) {
35+
setNeedClientAuth(true);
36+
@@ -102,8 +109,10 @@ public class FrameworkServerConnectorFactory extends StandardServerConnectorFact
37+
// Add HostHeaderCustomizer to set Host Header for HTTP/2 and HostHeaderHandler
38+
httpConfiguration.addCustomizer(new HostHeaderCustomizer());
39+
40+
- final HostPortValidatorCustomizer hostPortValidatorCustomizer = new HostPortValidatorCustomizer(validPorts);
41+
- httpConfiguration.addCustomizer(hostPortValidatorCustomizer);
42+
+ if (!disableHostPortValidator) {
43+
+ final HostPortValidatorCustomizer hostPortValidatorCustomizer = new HostPortValidatorCustomizer(validPorts);
44+
+ httpConfiguration.addCustomizer(hostPortValidatorCustomizer);
45+
+ }
46+
47+
return httpConfiguration;
48+
}
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
From 6a6b84866f01dd160701af869870a25b90c48a02 Mon Sep 17 00:00:00 2001
2+
From: Lars Francke <git@lars-francke.de>
3+
Date: Wed, 13 Aug 2025 14:16:55 +0200
4+
Subject: NIFI-14858: Make SNI checking configurable
5+
6+
Introduces two new properties:
7+
- nifi.web.https.sni.required (default: false)
8+
- nifi.web.https.sni.host.check (default: true)
9+
10+
These defaults mean that SNI is not required (this is the current behavior already) but if SNI is provided then the host has to match.
11+
---
12+
.../StandardServerConnectorFactory.java | 24 +++++++++++++++++++
13+
.../org/apache/nifi/util/NiFiProperties.java | 10 ++++++++
14+
.../FrameworkServerConnectorFactory.java | 4 ++++
15+
3 files changed, 38 insertions(+)
16+
17+
diff --git a/nifi-commons/nifi-jetty-configuration/src/main/java/org/apache/nifi/jetty/configuration/connector/StandardServerConnectorFactory.java b/nifi-commons/nifi-jetty-configuration/src/main/java/org/apache/nifi/jetty/configuration/connector/StandardServerConnectorFactory.java
18+
index 892755cded..856ef646b0 100644
19+
--- a/nifi-commons/nifi-jetty-configuration/src/main/java/org/apache/nifi/jetty/configuration/connector/StandardServerConnectorFactory.java
20+
+++ b/nifi-commons/nifi-jetty-configuration/src/main/java/org/apache/nifi/jetty/configuration/connector/StandardServerConnectorFactory.java
21+
@@ -70,6 +70,10 @@ public class StandardServerConnectorFactory implements ServerConnectorFactory {
22+
23+
private int requestHeaderSize = 8192;
24+
25+
+ private boolean sniRequired = false;
26+
+
27+
+ private boolean sniHostCheck = true;
28+
+
29+
/**
30+
* Standard Server Connector Factory Constructor with required properties
31+
*
32+
@@ -181,6 +185,24 @@ public class StandardServerConnectorFactory implements ServerConnectorFactory {
33+
this.requestHeaderSize = requestHeaderSize;
34+
}
35+
36+
+ /**
37+
+ * Set to true if a SNI certificate is required, else requests will be rejected with 400 response.
38+
+ *
39+
+ * @param sniRequired SNI Required status
40+
+ */
41+
+ public void setSniRequired(final boolean sniRequired) {
42+
+ this.sniRequired = sniRequired;
43+
+ }
44+
+
45+
+ /**
46+
+ * Set to true if the SNI Host name must match when there is an SNI certificate.
47+
+ *
48+
+ * @param sniHostCheck SNI Host Check status
49+
+ */
50+
+ public void setSniHostCheck(final boolean sniHostCheck) {
51+
+ this.sniHostCheck = sniHostCheck;
52+
+ }
53+
+
54+
protected Server getServer() {
55+
return server;
56+
}
57+
@@ -195,6 +217,8 @@ public class StandardServerConnectorFactory implements ServerConnectorFactory {
58+
httpConfiguration.setSendServerVersion(SEND_SERVER_VERSION);
59+
60+
final SecureRequestCustomizer secureRequestCustomizer = new SecureRequestCustomizer();
61+
+ secureRequestCustomizer.setSniRequired(sniRequired);
62+
+ secureRequestCustomizer.setSniHostCheck(sniHostCheck);
63+
httpConfiguration.addCustomizer(secureRequestCustomizer);
64+
}
65+
66+
diff --git a/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java b/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java
67+
index 94f79197d9..11ca1424ab 100644
68+
--- a/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java
69+
+++ b/nifi-commons/nifi-properties/src/main/java/org/apache/nifi/util/NiFiProperties.java
70+
@@ -219,6 +219,8 @@ public class NiFiProperties extends ApplicationProperties {
71+
public static final String WEB_HTTPS_CIPHERSUITES_INCLUDE = "nifi.web.https.ciphersuites.include";
72+
public static final String WEB_HTTPS_CIPHERSUITES_EXCLUDE = "nifi.web.https.ciphersuites.exclude";
73+
public static final String WEB_HTTPS_NETWORK_INTERFACE_PREFIX = "nifi.web.https.network.interface.";
74+
+ public static final String WEB_HTTPS_SNI_REQUIRED = "nifi.web.https.sni.required";
75+
+ public static final String WEB_HTTPS_SNI_HOST_CHECK = "nifi.web.https.sni.host.check";
76+
public static final String WEB_WORKING_DIR = "nifi.web.jetty.working.directory";
77+
public static final String WEB_THREADS = "nifi.web.jetty.threads";
78+
public static final String WEB_MAX_HEADER_SIZE = "nifi.web.max.header.size";
79+
@@ -720,6 +722,14 @@ public class NiFiProperties extends ApplicationProperties {
80+
return Arrays.stream(protocols.split("\\s+")).collect(Collectors.toSet());
81+
}
82+
83+
+ public boolean isWebHttpsSniRequired() {
84+
+ return Boolean.parseBoolean(getProperty(WEB_HTTPS_SNI_REQUIRED, "false"));
85+
+ }
86+
+
87+
+ public boolean isWebHttpsSniHostCheck() {
88+
+ return Boolean.parseBoolean(getProperty(WEB_HTTPS_SNI_HOST_CHECK, "true"));
89+
+ }
90+
+
91+
public String getWebMaxHeaderSize() {
92+
return getProperty(WEB_MAX_HEADER_SIZE, DEFAULT_WEB_MAX_HEADER_SIZE);
93+
}
94+
diff --git a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/connector/FrameworkServerConnectorFactory.java b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/connector/FrameworkServerConnectorFactory.java
95+
index 526695b9da..1ad87bacce 100644
96+
--- a/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/connector/FrameworkServerConnectorFactory.java
97+
+++ b/nifi-framework-bundle/nifi-framework/nifi-web/nifi-jetty/src/main/java/org/apache/nifi/web/server/connector/FrameworkServerConnectorFactory.java
98+
@@ -90,6 +90,10 @@ public class FrameworkServerConnectorFactory extends StandardServerConnectorFact
99+
100+
// Set Transport Layer Security Protocols based on platform configuration
101+
setIncludeSecurityProtocols(TlsPlatform.getPreferredProtocols().toArray(new String[0]));
102+
+
103+
+ // Set SNI configuration from properties
104+
+ setSniRequired(properties.isWebHttpsSniRequired());
105+
+ setSniHostCheck(properties.isWebHttpsSniHostCheck());
106+
}
107+
}
108+

0 commit comments

Comments
 (0)