This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-2.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.x by this push:
new b76e7e3 Add parameter to suppress use of X-Forwarded-Host by Swagger
api-docs (CAMEL-13126) (#2782)
b76e7e3 is described below
commit b76e7e3195f045331782dcb50cb2041677598e0e
Author: Darius <[email protected]>
AuthorDate: Sun Feb 17 02:23:34 2019 -0500
Add parameter to suppress use of X-Forwarded-Host by Swagger api-docs
(CAMEL-13126) (#2782)
---
camel-core/src/main/docs/rest-dsl.adoc | 1 +
.../model/rest/RestConfigurationDefinition.java | 28 ++++++++++++++++++++++
.../org/apache/camel/spi/RestConfiguration.java | 23 ++++++++++++++++++
.../apache/camel/swagger/RestSwaggerSupport.java | 8 +++++--
4 files changed, 58 insertions(+), 2 deletions(-)
diff --git a/camel-core/src/main/docs/rest-dsl.adoc
b/camel-core/src/main/docs/rest-dsl.adoc
index 5d552aa..7775a5c 100644
--- a/camel-core/src/main/docs/rest-dsl.adoc
+++ b/camel-core/src/main/docs/rest-dsl.adoc
@@ -490,6 +490,7 @@ bindings.
`file:` or `http:` to refer to resources to load from file
or http url.
|scheme | http|The scheme to use for exposing the REST service. Usually http
or https is supported
|host |- |The hostname to use for exposing the REST service.
+|useXForwardHeaders |true |Whether to use X-Forwarded-Host (or Host) from
incoming HTTP Header to set the hostname
|apiHost |- |Specific hostname for the API documentation (eg swagger)
This can be used to override the generated host with this
configured hostname
diff --git
a/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
b/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
index abc7810..65b3d4c 100644
---
a/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
+++
b/camel-core/src/main/java/org/apache/camel/model/rest/RestConfigurationDefinition.java
@@ -58,6 +58,9 @@ public class RestConfigurationDefinition {
@XmlAttribute
private String apiHost;
+ @XmlAttribute @Metadata(defaultValue = "true")
+ private Boolean useXForwardHeaders;
+
@XmlAttribute
private String port;
@@ -772,6 +775,14 @@ public class RestConfigurationDefinition {
return corsHeaderProperty("Access-Control-Allow-Credentials",
String.valueOf(corsAllowCredentials));
}
+ /**
+ * To specify whether to use X-Forward headers for Host and related setting
+ */
+ public RestConfigurationDefinition useXForwardHeaders(boolean
useXForwardHeaders) {
+ setUseXForwardHeaders(useXForwardHeaders);
+ return this;
+ }
+
// Implementation
//-------------------------------------------------------------------------
@@ -907,7 +918,24 @@ public class RestConfigurationDefinition {
}
answer.setCorsHeaders(props);
}
+ if (useXForwardHeaders != null) {
+ answer.setUseXForwardHeaders(useXForwardHeaders);
+ }
return answer;
}
+
+ public Boolean getUseXForwardHeaders() {
+ return useXForwardHeaders;
+ }
+
+ /**
+ * Whether to use X-Forward headers for Host and related setting.
+ * <p/>
+ * The default value is true.
+ */
+ public void setUseXForwardHeaders(Boolean useXForwardHeaders) {
+ this.useXForwardHeaders = useXForwardHeaders;
+ }
+
}
diff --git
a/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
b/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
index a1f2df4..c28b684 100644
--- a/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
+++ b/camel-core/src/main/java/org/apache/camel/spi/RestConfiguration.java
@@ -44,6 +44,7 @@ public class RestConfiguration {
private String scheme;
private String host;
private String apiHost;
+ private boolean useXForwardHeaders = true;
private int port;
private String contextPath;
private String apiContextPath;
@@ -594,4 +595,26 @@ public class RestConfiguration {
public void setCorsHeaders(Map<String, String> corsHeaders) {
this.corsHeaders = corsHeaders;
}
+
+ /**
+ * Whether to use X-FOWARD headers to set host etc. for Swagger.
+ * <p/>
+ * This option is default <tt>true</tt>.
+ *
+ * @return whether to use X-FOWARD headers
+ */
+ public boolean isUseXForwardHeaders() {
+ return useXForwardHeaders;
+ }
+
+ /**
+ * WWhether to use X-FOWARD headers to set host etc. for Swagger.
+ * <p/>
+ * This option is default <tt>true</tt>.
+ *
+ * @param useXForwardHeaders whether to use X-FOWARD headers
+ */
+ public void setUseXForwardHeaders(boolean useXForwardHeaders) {
+ this.useXForwardHeaders = useXForwardHeaders;
+ }
}
diff --git
a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java
b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java
index b549634..8348ec1 100644
---
a/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java
+++
b/components/camel-swagger-java/src/main/java/org/apache/camel/swagger/RestSwaggerSupport.java
@@ -217,7 +217,9 @@ public class RestSwaggerSupport {
// read the rest-dsl into swagger model
Swagger swagger = reader.read(rests, route, swaggerConfig,
contextId, classResolver);
- setupXForwardedHeaders(swagger, headers);
+ if (configuration.isUseXForwardHeaders()) {
+ setupXForwardedHeaders(swagger, headers);
+ }
if (!configuration.isApiVendorExtension()) {
clearVendorExtensions(swagger);
@@ -237,7 +239,9 @@ public class RestSwaggerSupport {
// read the rest-dsl into swagger model
Swagger swagger = reader.read(rests, route, swaggerConfig,
contextId, classResolver);
- setupXForwardedHeaders(swagger, headers);
+ if (configuration.isUseXForwardHeaders()) {
+ setupXForwardedHeaders(swagger, headers);
+ }
if (!configuration.isApiVendorExtension()) {
clearVendorExtensions(swagger);