You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by pt...@apache.org on 2016/07/22 21:03:33 UTC

[1/3] storm git commit: Implement HTTP X-Frame-Options for Storm UI

Repository: storm
Updated Branches:
  refs/heads/0.10.x-branch 8134e786f -> a51a28968


Implement HTTP X-Frame-Options for Storm UI


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/4e2e4a99
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/4e2e4a99
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/4e2e4a99

Branch: refs/heads/0.10.x-branch
Commit: 4e2e4a990183ceee73009de60e5eafabeb11baa2
Parents: 8134e78
Author: Tibor Kiss <ti...@gmail.com>
Authored: Tue Jul 19 13:40:36 2016 +0200
Committer: Tibor Kiss <ti...@gmail.com>
Committed: Wed Jul 20 14:18:42 2016 +0200

----------------------------------------------------------------------
 conf/defaults.yaml                              |  1 +
 storm-core/src/clj/backtype/storm/ui/core.clj   |  8 ++++--
 .../src/clj/backtype/storm/ui/helpers.clj       | 30 ++++++++++++++++++--
 storm-core/src/jvm/backtype/storm/Config.java   |  6 ++++
 4 files changed, 40 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/4e2e4a99/conf/defaults.yaml
----------------------------------------------------------------------
diff --git a/conf/defaults.yaml b/conf/defaults.yaml
index 8ff0c12..0368325 100644
--- a/conf/defaults.yaml
+++ b/conf/defaults.yaml
@@ -77,6 +77,7 @@ ui.filter.params: null
 ui.users: null
 ui.header.buffer.bytes: 4096
 ui.http.creds.plugin: backtype.storm.security.auth.DefaultHttpCredentialsPlugin
+ui.http.x-frame-options: DENY
 
 logviewer.port: 8000
 logviewer.childopts: "-Xmx128m"

http://git-wip-us.apache.org/repos/asf/storm/blob/4e2e4a99/storm-core/src/clj/backtype/storm/ui/core.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/ui/core.clj b/storm-core/src/clj/backtype/storm/ui/core.clj
index 41a2146..8226f28 100644
--- a/storm-core/src/clj/backtype/storm/ui/core.clj
+++ b/storm-core/src/clj/backtype/storm/ui/core.clj
@@ -1086,7 +1086,11 @@
           https-ts-password (conf UI-HTTPS-TRUSTSTORE-PASSWORD)
           https-ts-type (conf UI-HTTPS-TRUSTSTORE-TYPE)
           https-want-client-auth (conf UI-HTTPS-WANT-CLIENT-AUTH)
-          https-need-client-auth (conf UI-HTTPS-NEED-CLIENT-AUTH)]
+          https-need-client-auth (conf UI-HTTPS-NEED-CLIENT-AUTH)
+          http-x-frame-options (conf UI-HTTP-X-FRAME-OPTIONS)]
+
+      (validate-x-frame-options! http-x-frame-options)
+
       (storm-run-jetty {:port (conf UI-PORT)
                         :host (conf UI-HOST)
                         :https-port https-port
@@ -1104,7 +1108,7 @@
                                                     https-want-client-auth)
                                         (doseq [connector (.getConnectors server)]
                                           (.setRequestHeaderSize connector header-buffer-size))
-                                        (config-filter server app filters-confs))}))
+                                        (config-filter server app filters-confs http-x-frame-options))}))
    (catch Exception ex
      (log-error ex))))
 

http://git-wip-us.apache.org/repos/asf/storm/blob/4e2e4a99/storm-core/src/clj/backtype/storm/ui/helpers.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/ui/helpers.clj b/storm-core/src/clj/backtype/storm/ui/helpers.clj
index ab80f98..76e41a4 100644
--- a/storm-core/src/clj/backtype/storm/ui/helpers.clj
+++ b/storm-core/src/clj/backtype/storm/ui/helpers.clj
@@ -174,13 +174,37 @@
     (.setInitParameter CrossOriginFilter/ACCESS_CONTROL_ALLOW_ORIGIN_HEADER "*")
     ))
 
-(defn config-filter [server handler filters-confs]
-  (if filters-confs
+(defn validate-x-frame-options!
+  [x-frame-options]
+  (if (.startsWith x-frame-options "ALLOW-FROM http") nil
+    (case x-frame-options
+      "DENY" nil
+      "SAMEORIGIN" nil
+      (throw
+        (IllegalArgumentException. "Invalid X-Frame-Option specified!")))))
+
+(defn x-frame-options-filter-handler
+  [x-frame-options]
+  (let [filter (proxy [javax.servlet.Filter] []
+                 (doFilter [request response chain]
+                   (.setHeader response "X-Frame-Options" x-frame-options)
+                   (.doFilter chain request response))
+                 (init [config])
+                 (destroy [])
+                 )]
+    (org.eclipse.jetty.servlet.FilterHolder. filter)))
+
+
+(defn config-filter
+  ([server handler filters-conf] (config-filter server handler filters-conf nil))
+  ([server handler filters-confs http-x-frame-options] (if filters-confs
     (let [servlet-holder (ServletHolder.
                            (ring.util.servlet/servlet handler))
           context (doto (org.eclipse.jetty.servlet.ServletContextHandler. server "/")
                     (.addServlet servlet-holder "/"))]
       (.addFilter context (cors-filter-handler) "/*" (EnumSet/allOf DispatcherType))
+      (if-not (blank? http-x-frame-options)
+        (.addFilter context (x-frame-options-filter-handler http-x-frame-options) "/*" FilterMapping/ALL))
       (doseq [{:keys [filter-name filter-class filter-params]} filters-confs]
         (if filter-class
           (let [filter-holder (doto (org.eclipse.jetty.servlet.FilterHolder.)
@@ -188,7 +212,7 @@
                                 (.setName (or filter-name filter-class))
                                 (.setInitParameters (or filter-params {})))]
             (.addFilter context filter-holder "/*" FilterMapping/ALL))))
-      (.setHandler server context))))
+      (.setHandler server context)))))
 
 (defn ring-response-from-exception [ex]
   {:headers {}

http://git-wip-us.apache.org/repos/asf/storm/blob/4e2e4a99/storm-core/src/jvm/backtype/storm/Config.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/Config.java b/storm-core/src/jvm/backtype/storm/Config.java
index 2acf2a0..f55d1e3 100644
--- a/storm-core/src/jvm/backtype/storm/Config.java
+++ b/storm-core/src/jvm/backtype/storm/Config.java
@@ -691,6 +691,12 @@ public class Config extends HashMap<String, Object> {
     public static final String UI_HTTPS_NEED_CLIENT_AUTH = "ui.https.need.client.auth";
     public static final Object UI_HTTPS_NEED_CLIENT_AUTH_SCHEMA = Boolean.class;
 
+    /**
+     * Value of X-FRAME-OPTIONS HTTP Header option used by Storm UI.
+     */
+    public static final String UI_HTTP_X_FRAME_OPTIONS = "ui.http.x-frame-options";
+    public static final Object UI_HTTP_X_FRAME_OPTIONS_SCHEMA = String.class;
+
 
     /**
      * List of DRPC servers so that the DRPCSpout knows who to talk to.


[2/3] storm git commit: Merge branch 'feature/x-frame-options-support-in-ui' of github.com:tibkiss/storm into 0.10.x-branch

Posted by pt...@apache.org.
Merge branch 'feature/x-frame-options-support-in-ui' of github.com:tibkiss/storm into 0.10.x-branch


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/28822469
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/28822469
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/28822469

Branch: refs/heads/0.10.x-branch
Commit: 288224698f45aea6efdb38059dcb23c840c8fc17
Parents: 8134e78 4e2e4a9
Author: P. Taylor Goetz <pt...@gmail.com>
Authored: Fri Jul 22 15:28:16 2016 -0400
Committer: P. Taylor Goetz <pt...@gmail.com>
Committed: Fri Jul 22 15:28:16 2016 -0400

----------------------------------------------------------------------
 conf/defaults.yaml                              |  1 +
 storm-core/src/clj/backtype/storm/ui/core.clj   |  8 ++++--
 .../src/clj/backtype/storm/ui/helpers.clj       | 30 ++++++++++++++++++--
 storm-core/src/jvm/backtype/storm/Config.java   |  6 ++++
 4 files changed, 40 insertions(+), 5 deletions(-)
----------------------------------------------------------------------



[3/3] storm git commit: add STORM-1989 to changelog

Posted by pt...@apache.org.
add STORM-1989 to changelog


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/a51a2896
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/a51a2896
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/a51a2896

Branch: refs/heads/0.10.x-branch
Commit: a51a28968091d0055488cb5ac54c427d241c51d3
Parents: 2882246
Author: P. Taylor Goetz <pt...@gmail.com>
Authored: Fri Jul 22 15:29:42 2016 -0400
Committer: P. Taylor Goetz <pt...@gmail.com>
Committed: Fri Jul 22 15:29:42 2016 -0400

----------------------------------------------------------------------
 CHANGELOG.md | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/a51a2896/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 431a93e..0e79f96 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,5 @@
 ## 0.10.2
+ * STORM-1989: X-Frame-Options support for Storm UI
  * STORM-1834: Documentation How to Generate Certificates For Local Testing SSL Setup
  * STORM-1754: Correct java version in 0.10.x storm-starter
  * STORM-1750: Ensure worker dies when report-error-and-die is called.