You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2012/01/20 19:05:40 UTC
svn commit: r1234043 - in /camel/trunk/components:
camel-http/src/main/java/org/apache/camel/component/http/
camel-http4/src/main/java/org/apache/camel/component/http4/
camel-jetty/src/main/java/org/apache/camel/component/jetty/
camel-jetty/src/test/ja...
Author: janstey
Date: Fri Jan 20 18:05:39 2012
New Revision: 1234043
URL: http://svn.apache.org/viewvc?rev=1234043&view=rev
Log:
CAMEL-4926 - disable HTTP TRACE by default
Added:
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyEndpointSetHttpTraceTest.java
Modified:
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConsumer.java
camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/CamelServlet.java
camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpConsumer.java
camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java?rev=1234043&r1=1234042&r2=1234043&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/CamelServlet.java Fri Jan 20 18:05:39 2012
@@ -63,8 +63,8 @@ public class CamelServlet extends HttpSe
log.debug("No consumer to service request {}", request);
response.sendError(HttpServletResponse.SC_NOT_FOUND);
return;
- }
-
+ }
+
// are we suspended?
if (consumer.isSuspended()) {
log.debug("Consumer suspended, cannot service request {}", request);
@@ -72,6 +72,10 @@ public class CamelServlet extends HttpSe
return;
}
+ if ("TRACE".equals(request.getMethod()) && !consumer.isTraceEnabled()) {
+ response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+ }
+
// create exchange and set data on it
Exchange exchange = new DefaultExchange(consumer.getEndpoint(), ExchangePattern.InOut);
if (consumer.getEndpoint().isBridgeEndpoint()) {
Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConsumer.java?rev=1234043&r1=1234042&r2=1234043&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConsumer.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpConsumer.java Fri Jan 20 18:05:39 2012
@@ -26,9 +26,13 @@ import org.apache.camel.impl.DefaultCons
public class HttpConsumer extends DefaultConsumer implements SuspendableService {
private final HttpEndpoint endpoint;
private volatile boolean suspended;
+ private boolean traceEnabled;
public HttpConsumer(HttpEndpoint endpoint, Processor processor) {
super(endpoint, processor);
+ if (endpoint.isTraceEnabled()) {
+ setTraceEnabled(true);
+ }
this.endpoint = endpoint;
}
@@ -71,4 +75,11 @@ public class HttpConsumer extends Defaul
return suspended;
}
+ public boolean isTraceEnabled() {
+ return this.traceEnabled;
+ }
+
+ public void setTraceEnabled(boolean traceEnabled) {
+ this.traceEnabled = traceEnabled;
+ }
}
Modified: camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java?rev=1234043&r1=1234042&r2=1234043&view=diff
==============================================================================
--- camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java (original)
+++ camel/trunk/components/camel-http/src/main/java/org/apache/camel/component/http/HttpEndpoint.java Fri Jan 20 18:05:39 2012
@@ -59,6 +59,7 @@ public class HttpEndpoint extends Defaul
private int proxyPort;
private String authMethodPriority;
private boolean transferException;
+ private boolean traceEnabled;
public HttpEndpoint() {
}
@@ -319,4 +320,12 @@ public class HttpEndpoint extends Defaul
public void setTransferException(boolean transferException) {
this.transferException = transferException;
}
+
+ public boolean isTraceEnabled() {
+ return this.traceEnabled;
+ }
+
+ public void setTraceEnabled(boolean traceEnabled) {
+ this.traceEnabled = traceEnabled;
+ }
}
Modified: camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/CamelServlet.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/CamelServlet.java?rev=1234043&r1=1234042&r2=1234043&view=diff
==============================================================================
--- camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/CamelServlet.java (original)
+++ camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/CamelServlet.java Fri Jan 20 18:05:39 2012
@@ -49,6 +49,10 @@ public class CamelServlet extends HttpSe
return;
}
+ if ("TRACE".equals(request.getMethod()) && !consumer.isTraceEnabled()) {
+ response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+ }
+
// Have the camel process the HTTP exchange.
DefaultExchange exchange = new DefaultExchange(consumer.getEndpoint(), ExchangePattern.InOut);
if (consumer.getEndpoint().isBridgeEndpoint()) {
Modified: camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpConsumer.java?rev=1234043&r1=1234042&r2=1234043&view=diff
==============================================================================
--- camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpConsumer.java (original)
+++ camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpConsumer.java Fri Jan 20 18:05:39 2012
@@ -25,9 +25,13 @@ import org.apache.camel.impl.DefaultCons
public class HttpConsumer extends DefaultConsumer {
private final HttpEndpoint endpoint;
+ private boolean traceEnabled;
public HttpConsumer(HttpEndpoint endpoint, Processor processor) {
super(endpoint, processor);
+ if (endpoint.isTraceEnabled()) {
+ setTraceEnabled(true);
+ }
this.endpoint = endpoint;
}
@@ -55,4 +59,12 @@ public class HttpConsumer extends Defaul
endpoint.disconnect(this);
super.doStop();
}
+
+ public boolean isTraceEnabled() {
+ return this.traceEnabled;
+ }
+
+ public void setTraceEnabled(boolean traceEnabled) {
+ this.traceEnabled = traceEnabled;
+ }
}
Modified: camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java?rev=1234043&r1=1234042&r2=1234043&view=diff
==============================================================================
--- camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java (original)
+++ camel/trunk/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpEndpoint.java Fri Jan 20 18:05:39 2012
@@ -58,7 +58,8 @@ public class HttpEndpoint extends Defaul
private boolean chunked = true;
private boolean disableStreamCache;
private boolean transferException;
-
+ private boolean traceEnabled;
+
public HttpEndpoint() {
}
@@ -310,4 +311,12 @@ public class HttpEndpoint extends Defaul
public void setTransferException(boolean transferException) {
this.transferException = transferException;
}
+
+ public boolean isTraceEnabled() {
+ return this.traceEnabled;
+ }
+
+ public void setTraceEnabled(boolean traceEnabled) {
+ this.traceEnabled = traceEnabled;
+ }
}
Modified: camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java?rev=1234043&r1=1234042&r2=1234043&view=diff
==============================================================================
--- camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java (original)
+++ camel/trunk/components/camel-jetty/src/main/java/org/apache/camel/component/jetty/CamelContinuationServlet.java Fri Jan 20 18:05:39 2012
@@ -63,6 +63,10 @@ public class CamelContinuationServlet ex
return;
}
+ if ("TRACE".equals(request.getMethod()) && !consumer.isTraceEnabled()) {
+ response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED);
+ }
+
final Exchange result = (Exchange) request.getAttribute(EXCHANGE_ATTRIBUTE_NAME);
if (result == null) {
// no asynchronous result so leverage continuation
Added: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyEndpointSetHttpTraceTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyEndpointSetHttpTraceTest.java?rev=1234043&view=auto
==============================================================================
--- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyEndpointSetHttpTraceTest.java (added)
+++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/JettyEndpointSetHttpTraceTest.java Fri Jan 20 18:05:39 2012
@@ -0,0 +1,69 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.component.jetty;
+
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.methods.TraceMethod;
+import org.junit.Test;
+
+/**
+ * @version
+ */
+public class JettyEndpointSetHttpTraceTest extends BaseJettyTest {
+
+ private int portTraceOn = 8080;
+ private int portTraceOff = 8081;
+
+ public JettyEndpointSetHttpTraceTest() {
+ portTraceOn = getNextPort();
+ portTraceOff = getNextPort();
+ }
+
+ @Test
+ public void testTraceDisabled() throws Exception {
+ HttpClient httpclient = new HttpClient();
+ TraceMethod trace = new TraceMethod("http://localhost:" + portTraceOff + "/myservice");
+ httpclient.executeMethod(trace);
+
+ // TRACE shouldn't be allowed by default
+ assertTrue(trace.getStatusCode() == 405);
+ trace.releaseConnection();
+ }
+
+ @Test
+ public void testTraceEnabled() throws Exception {
+ HttpClient httpclient = new HttpClient();
+ TraceMethod trace = new TraceMethod("http://localhost:" + portTraceOn + "/myservice");
+ httpclient.executeMethod(trace);
+
+ // TRACE is now allowed
+ assertTrue(trace.getStatusCode() == 200);
+ trace.releaseConnection();
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("jetty:http://localhost:" + portTraceOff + "/myservice").to("log:foo");
+ from("jetty:http://localhost:" + portTraceOn + "/myservice?traceEnabled=true").to("log:bar");
+ }
+ };
+ }
+}