You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2014/02/05 22:24:24 UTC
svn commit: r1564936 - in /hbase/branches/0.94/src:
main/java/org/apache/hadoop/hbase/rest/
main/java/org/apache/hadoop/hbase/util/
test/java/org/apache/hadoop/hbase/rest/
Author: stack
Date: Wed Feb 5 21:24:23 2014
New Revision: 1564936
URL: http://svn.apache.org/r1564936
Log:
HBASE-10473 Add utility for adorning http Context
Added:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/HttpServerUtil.java
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/Main.java
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/InfoServer.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/Main.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/Main.java?rev=1564936&r1=1564935&r2=1564936&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/Main.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/rest/Main.java Wed Feb 5 21:24:23 2014
@@ -31,6 +31,7 @@ import org.apache.commons.logging.LogFac
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.UserProvider;
+import org.apache.hadoop.hbase.util.HttpServerUtil;
import org.apache.hadoop.hbase.rest.filter.GzipFilter;
import org.apache.hadoop.hbase.security.User;
import org.apache.hadoop.hbase.util.InfoServer;
@@ -198,6 +199,7 @@ public class Main implements Constants {
context.addServlet(shPojoMap, "/status/cluster");
context.addServlet(sh, "/*");
context.addFilter(GzipFilter.class, "/*", 0);
+ HttpServerUtil.constrainHttpMethods(context);
// Put up info server.
int port = conf.getInt("hbase.rest.info.port", 8085);
@@ -213,4 +215,4 @@ public class Main implements Constants {
server.start();
server.join();
}
-}
\ No newline at end of file
+}
Added: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/HttpServerUtil.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/HttpServerUtil.java?rev=1564936&view=auto
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/HttpServerUtil.java (added)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/HttpServerUtil.java Wed Feb 5 21:24:23 2014
@@ -0,0 +1,52 @@
+/**
+ * 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.hadoop.hbase.util;
+
+import org.mortbay.jetty.security.Constraint;
+import org.mortbay.jetty.security.ConstraintMapping;
+import org.mortbay.jetty.security.SecurityHandler;
+import org.mortbay.jetty.servlet.Context;
+
+/**
+ * HttpServer utility.
+ */
+public class HttpServerUtil {
+ /**
+ * Add constraints to a Jetty Context to disallow undesirable Http methods.
+ * @param context The context to modify
+ */
+ public static void constrainHttpMethods(Context context) {
+ Constraint c = new Constraint();
+ c.setAuthenticate(true);
+
+ ConstraintMapping cmt = new ConstraintMapping();
+ cmt.setConstraint(c);
+ cmt.setMethod("TRACE");
+ cmt.setPathSpec("/*");
+
+ ConstraintMapping cmo = new ConstraintMapping();
+ cmo.setConstraint(c);
+ cmo.setMethod("OPTIONS");
+ cmo.setPathSpec("/*");
+
+ SecurityHandler sh = new SecurityHandler();
+ sh.setConstraintMappings(new ConstraintMapping[]{ cmt, cmo });
+
+ context.addHandler(sh);
+ }
+}
\ No newline at end of file
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/InfoServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/InfoServer.java?rev=1564936&r1=1564935&r2=1564936&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/InfoServer.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/InfoServer.java Wed Feb 5 21:24:23 2014
@@ -90,6 +90,7 @@ public class InfoServer extends HttpServ
logsContextPath);
logContext.setResourceBase(logDir);
logContext.addServlet(DefaultServlet.class, "/");
+ HttpServerUtil.constrainHttpMethods(logContext);
defaultContexts.put(logContext, true);
}
}
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.java?rev=1564936&r1=1564935&r2=1564936&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.java Wed Feb 5 21:24:23 2014
@@ -27,6 +27,7 @@ import org.apache.hadoop.util.StringUtil
import org.mortbay.jetty.Server;
import org.mortbay.jetty.servlet.Context;
import org.mortbay.jetty.servlet.ServletHolder;
+import org.apache.hadoop.hbase.util.HttpServerUtil;
import com.sun.jersey.spi.container.servlet.ServletContainer;
@@ -68,6 +69,7 @@ public class HBaseRESTTestingUtility {
Context context = new Context(server, "/", Context.SESSIONS);
context.addServlet(sh, "/*");
context.addFilter(GzipFilter.class, "/*", 0);
+ HttpServerUtil.constrainHttpMethods(context);
// start the server
server.start();
// get the port