You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by bo...@apache.org on 2015/06/30 15:24:21 UTC

[1/4] storm git commit: Adding SSL for Logviewer.

Repository: storm
Updated Branches:
  refs/heads/master f7a8a7513 -> 27a3a6bb7


Adding SSL for Logviewer.


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

Branch: refs/heads/master
Commit: 0bc4565166e3d7ed3c219486dfbf51e0851cf105
Parents: c682eb7
Author: Kyle Nusbaum <Ky...@gmail.com>
Authored: Wed Jun 24 15:11:46 2015 -0500
Committer: Kyle Nusbaum <Ky...@gmail.com>
Committed: Thu Jun 25 14:03:57 2015 -0500

----------------------------------------------------------------------
 .../src/clj/backtype/storm/daemon/logviewer.clj | 23 ++++++-
 storm-core/src/clj/backtype/storm/ui/core.clj   | 65 +++++++++++---------
 .../src/clj/backtype/storm/ui/helpers.clj       | 12 ++--
 storm-core/src/jvm/backtype/storm/Config.java   | 59 ++++++++++++++++++
 4 files changed, 125 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/0bc45651/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/logviewer.clj b/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
index 8a38df6..aa9e7c1 100644
--- a/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
@@ -369,9 +369,30 @@ Note that if anything goes wrong, this will throw an Error and exit."
           filters-confs (concat filters-confs
                           [{:filter-class "org.eclipse.jetty.servlets.GzipFilter"
                             :filter-name "Gzipper"
-                            :filter-params {}}])]
+                            :filter-params {}}])
+          https-port (int (conf LOGVIEWER-HTTPS-PORT))
+          keystore-path (conf LOGVIEWER-HTTPS-KEYSTORE-PATH)
+          keystore-pass (conf LOGVIEWER-HTTPS-KEYSTORE-PASSWORD)
+          keystore-type (conf LOGVIEWER-HTTPS-KEYSTORE-TYPE)
+          key-password (conf LOGVIEWER-HTTPS-KEY-PASSWORD)
+          truststore-path (conf LOGVIEWER-HTTPS-TRUSTSTORE-PATH)
+          truststore-password (conf LOGVIEWER-HTTPS-TRUSTSTORE-PASSWORD)
+          truststore-type (conf LOGVIEWER-HTTPS-TRUSTSTORE-TYPE)
+          want-client-auth (conf LOGVIEWER-HTTPS-WANT-CLIENT-AUTH)
+          need-client-auth (conf LOGVIEWER-HTTPS-NEED-CLIENT-AUTH)]
       (storm-run-jetty {:port (int (conf LOGVIEWER-PORT))
                         :configurator (fn [server]
+                                        (config-ssl server
+                                                    https-port
+                                                    keystore-path
+                                                    keystore-pass
+                                                    keystore-type
+                                                    key-password
+                                                    truststore-path
+                                                    truststore-password
+                                                    truststore-type
+                                                    want-client-auth
+                                                    need-client-auth)
                                         (config-filter server middle filters-confs))}))
   (catch Exception ex
     (log-error ex))))

http://git-wip-us.apache.org/repos/asf/storm/blob/0bc45651/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 bd17959..aa2d01d 100644
--- a/storm-core/src/clj/backtype/storm/ui/core.clj
+++ b/storm-core/src/clj/backtype/storm/ui/core.clj
@@ -293,10 +293,17 @@
               (bolt-comp-summs id))]
     (sort-by #(-> ^ExecutorSummary % .get_executor_info .get_task_start) ret)))
 
-(defn worker-log-link [host port topology-id]
+(defn worker-log-link [host port topology-id secure?]
   (let [fname (logs-filename topology-id port)]
-    (url-format (str "http://%s:%s/log?file=%s")
-          host (*STORM-CONF* LOGVIEWER-PORT) fname)))
+    (if secure?
+      (url-format "https://%s:%s/log?file=%s"
+                  host
+                  (*STORM-CONF* LOGVIEWER-HTTPS-PORT)
+                  fname)
+      (url-format "http://%s:%s/log?file=%s"
+                  host
+                  (*STORM-CONF* LOGVIEWER-PORT)
+                  fname))))
 
 (defn compute-executor-capacity
   [^ExecutorSummary e]
@@ -618,7 +625,7 @@
        "acked" (get-in stats [:acked k])
        "failed" (get-in stats [:failed k])})))
 
-(defn spout-comp [top-id summ-map errors window include-sys?]
+(defn spout-comp [top-id summ-map errors window include-sys? secure?]
   (for [[id summs] summ-map
         :let [stats-seq (get-filled-stats summs)
               stats (aggregate-spout-streams
@@ -638,11 +645,11 @@
      "failed" (get-in stats [:failed window])
      "errorHost" error-host
      "errorPort" error-port
-     "errorWorkerLogLink" (worker-log-link error-host error-port top-id)
+     "errorWorkerLogLink" (worker-log-link error-host error-port top-id secure?)
      "errorLapsedSecs" (get-error-time last-error)
      "lastError" (get-error-data last-error)}))
 
-(defn bolt-comp [top-id summ-map errors window include-sys?]
+(defn bolt-comp [top-id summ-map errors window include-sys? secure?]
   (for [[id summs] summ-map
         :let [stats-seq (get-filled-stats summs)
               stats (aggregate-bolt-streams
@@ -665,7 +672,7 @@
      "failed" (get-in stats [:failed window])
      "errorHost" error-host
      "errorPort" error-port
-     "errorWorkerLogLink" (worker-log-link error-host error-port top-id)
+     "errorWorkerLogLink" (worker-log-link error-host error-port top-id secure?)
      "errorLapsedSecs" (get-error-time last-error)
      "lastError" (get-error-data last-error)}))
 
@@ -698,7 +705,7 @@
         "acked" (get-in stats [:acked k])
         "failed" (get-in stats [:failed k])})))
 
-(defn topology-page [id window include-sys? user]
+(defn topology-page [id window include-sys? user secure?]
   (with-nimbus nimbus
     (let [window (if window window ":all-time")
           window-hint (window-hint window)
@@ -731,8 +738,8 @@
         "windowHint" window-hint
         "msgTimeout" msg-timeout
         "topologyStats" (topology-stats id window (total-aggregate-stats spout-summs bolt-summs include-sys?))
-        "spouts" (spout-comp id spout-comp-summs (.get_errors summ) window include-sys?)
-        "bolts" (bolt-comp id bolt-comp-summs (.get_errors summ) window include-sys?)
+        "spouts" (spout-comp id spout-comp-summs (.get_errors summ) window include-sys? secure?)
+        "bolts" (bolt-comp id bolt-comp-summs (.get_errors summ) window include-sys? secure?)
         "configuration" topology-conf
         "visualizationTable" (stream-boxes visualizer-data)}))))
 
@@ -748,7 +755,7 @@
        "failed" (nil-to-zero (:failed stats))})))
 
 (defn spout-executor-stats
-  [topology-id executors window include-sys?]
+  [topology-id executors window include-sys? secure?]
   (for [^ExecutorSummary e executors
         :let [stats (.get_stats e)
               stats (if stats
@@ -767,10 +774,10 @@
      "completeLatency" (float-str (:complete-latencies stats))
      "acked" (nil-to-zero (:acked stats))
      "failed" (nil-to-zero (:failed stats))
-     "workerLogLink" (worker-log-link (.get_host e) (.get_port e) topology-id)}))
+     "workerLogLink" (worker-log-link (.get_host e) (.get_port e) topology-id secure?)}))
 
 (defn component-errors
-  [errors-list topology-id]
+  [errors-list topology-id secure?]
   (let [errors (->> errors-list
                     (sort-by #(.get_error_time_secs ^ErrorInfo %))
                     reverse)]
@@ -779,12 +786,12 @@
        {"time" (* 1000 (long (.get_error_time_secs e)))
         "errorHost" (.get_host e)
         "errorPort"  (.get_port e)
-        "errorWorkerLogLink"  (worker-log-link (.get_host e) (.get_port e) topology-id)
+        "errorWorkerLogLink"  (worker-log-link (.get_host e) (.get_port e) topology-id secure?)
         "errorLapsedSecs" (get-error-time e)
         "error" (.get_error e)})}))
 
 (defn spout-stats
-  [window ^TopologyInfo topology-info component executors include-sys?]
+  [window ^TopologyInfo topology-info component executors include-sys? secure?]
   (let [window-hint (str " (" (window-hint window) ")")
         stats (get-filled-stats executors)
         stream-summary (-> stats (aggregate-spout-stats include-sys?))
@@ -793,7 +800,7 @@
                       (.get_id topology-info) component summary window)
      "outputStats" (spout-output-stats stream-summary window)
      "executorStats" (spout-executor-stats (.get_id topology-info)
-                                           executors window include-sys?)}))
+                                           executors window include-sys? secure?)}))
 
 (defn bolt-summary
   [topology-id id stats window]
@@ -844,7 +851,7 @@
        "failed" (nil-to-zero (:failed stats))})))
 
 (defn bolt-executor-stats
-  [topology-id executors window include-sys?]
+  [topology-id executors window include-sys? secure?]
   (for [^ExecutorSummary e executors
         :let [stats (.get_stats e)
               stats (if stats
@@ -866,10 +873,10 @@
      "processLatency" (float-str (:process-latencies stats))
      "acked" (nil-to-zero (:acked stats))
      "failed" (nil-to-zero (:failed stats))
-     "workerLogLink" (worker-log-link (.get_host e) (.get_port e) topology-id)}))
+     "workerLogLink" (worker-log-link (.get_host e) (.get_port e) topology-id secure?)}))
 
 (defn bolt-stats
-  [window ^TopologyInfo topology-info component executors include-sys?]
+  [window ^TopologyInfo topology-info component executors include-sys? secure?]
   (let [window-hint (str " (" (window-hint window) ")")
         stats (get-filled-stats executors)
         stream-summary (-> stats (aggregate-bolt-stats include-sys?))
@@ -878,10 +885,10 @@
      "inputStats" (bolt-input-stats stream-summary window)
      "outputStats" (bolt-output-stats stream-summary window)
      "executorStats" (bolt-executor-stats
-                       (.get_id topology-info) executors window include-sys?)}))
+                       (.get_id topology-info) executors window include-sys? secure?)}))
 
 (defn component-page
-  [topology-id component window include-sys? user]
+  [topology-id component window include-sys? user secure?]
   (with-nimbus nimbus
     (let [window (if window window ":all-time")
           summ (.getTopologyInfo ^Nimbus$Client nimbus topology-id)
@@ -889,9 +896,9 @@
           topology-conf (from-json (.getTopologyConf ^Nimbus$Client nimbus topology-id))
           type (component-type topology component)
           summs (component-task-summs summ topology component)
-          spec (cond (= type :spout) (spout-stats window summ component summs include-sys?)
-                     (= type :bolt) (bolt-stats window summ component summs include-sys?))
-          errors (component-errors (get (.get_errors summ) component) topology-id)]
+          spec (cond (= type :spout) (spout-stats window summ component summs include-sys? secure?)
+                     (= type :bolt) (bolt-stats window summ component summs include-sys? secure?))
+          errors (component-errors (get (.get_errors summ) component) topology-id secure?)]
       (merge
         {"user" user
          "id" component
@@ -951,17 +958,19 @@
   (GET "/api/v1/topology/summary" [:as {:keys [cookies servlet-request]} & m]
        (assert-authorized-user servlet-request "getClusterInfo")
        (json-response (all-topologies-summary) (:callback m)))
-  (GET  "/api/v1/topology/:id" [:as {:keys [cookies servlet-request]} id & m]
+  (GET  "/api/v1/topology/:id" [:as {:keys [cookies servlet-request schema]} id & m]
         (let [user (.getUserName http-creds-handler servlet-request)]
           (assert-authorized-user servlet-request "getTopology" (topology-config id))
-          (json-response (topology-page id (:window m) (check-include-sys? (:sys m)) user) (:callback m))))
+          (json-response (topology-page id (:window m) (check-include-sys? (:sys m)) user (= schema :https)) (:callback m))))
   (GET "/api/v1/topology/:id/visualization" [:as {:keys [cookies servlet-request]} id & m]
         (assert-authorized-user servlet-request "getTopology" (topology-config id))
         (json-response (mk-visualization-data id (:window m) (check-include-sys? (:sys m))) (:callback m)))
-  (GET "/api/v1/topology/:id/component/:component" [:as {:keys [cookies servlet-request]} id component & m]
+  (GET "/api/v1/topology/:id/component/:component" [:as {:keys [cookies servlet-request scheme]} id component & m]
        (let [user (.getUserName http-creds-handler servlet-request)]
          (assert-authorized-user servlet-request "getTopology" (topology-config id))
-         (json-response (component-page id component (:window m) (check-include-sys? (:sys m)) user) (:callback m))))
+         (json-response
+          (component-page id component (:window m) (check-include-sys? (:sys m)) user (= scheme :https))
+          (:callback m))))
   (POST "/api/v1/topology/:id/activate" [:as {:keys [cookies servlet-request]} id & m]
     (assert-authorized-user servlet-request "activate" (topology-config id))
     (with-nimbus nimbus

http://git-wip-us.apache.org/repos/asf/storm/blob/0bc45651/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 a9072c7..47e846f 100644
--- a/storm-core/src/clj/backtype/storm/ui/helpers.clj
+++ b/storm-core/src/clj/backtype/storm/ui/helpers.clj
@@ -147,11 +147,13 @@
                             (.setKeyStorePassword ks-password)
                             (.setKeyManagerPassword key-password))]
     (if (and (not-nil? ts-path) (not-nil? ts-password) (not-nil? ts-type))
-      ((.setTrustStore sslContextFactory ts-path)
-       (.setTrustStoreType sslContextFactory ts-type)
-       (.setTrustStorePassword sslContextFactory ts-password)))
-    (if need-client-auth (.setNeedClientAuth sslContextFactory true)
-        (if want-client-auth (.setWantClientAuth sslContextFactory true)))
+      (do
+        (.setTrustStore sslContextFactory ts-path)
+        (.setTrustStoreType sslContextFactory ts-type)
+        (.setTrustStorePassword sslContextFactory ts-password)))
+    (cond
+      need-client-auth (.setNeedClientAuth sslContextFactory true)
+      want-client-auth (.setWantClientAuth sslContextFactory true))
     (doto (SslSocketConnector. sslContextFactory)
       (.setPort port))))
 

http://git-wip-us.apache.org/repos/asf/storm/blob/0bc45651/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 f2f9ad3..063d446 100644
--- a/storm-core/src/jvm/backtype/storm/Config.java
+++ b/storm-core/src/jvm/backtype/storm/Config.java
@@ -528,6 +528,65 @@ public class Config extends HashMap<String, Object> {
     public static final Object LOGVIEWER_CLEANUP_AGE_MINS_SCHEMA = ConfigValidation.PositiveIntegerValidator;
 
     /**
+     * Storm Logviewer HTTPS port
+     */
+    public static final String LOGVIEWER_HTTPS_PORT = "logviewer.https.port";
+    public static final Object LOGVIEWER_HTTPS_PORT_SCHEMA = Number.class;
+
+    /**
+     * Path to the keystore containing the certs used by Storm Logviewer for HTTPS communications
+     */
+    public static final String LOGVIEWER_HTTPS_KEYSTORE_PATH = "logviewer.https.keystore.path";
+    public static final Object LOGVIEWER_HTTPS_KEYSTORE_PATH_SCHEMA = String.class;
+
+    /**
+     * Password for the keystore for HTTPS for Storm Logviewer
+     */
+    public static final String LOGVIEWER_HTTPS_KEYSTORE_PASSWORD = "logviewer.https.keystore.password";
+    public static final Object LOGVIEWER_HTTPS_KEYSTORE_PASSWORD_SCHEMA = String.class;
+
+    /**
+     * Type of the keystore for HTTPS for Storm Logviewer.
+     * see http://docs.oracle.com/javase/8/docs/api/java/security/KeyStore.html for more details.
+     */
+    public static final String LOGVIEWER_HTTPS_KEYSTORE_TYPE = "logviewer.https.keystore.type";
+    public static final Object LOGVIEWER_HTTPS_KEYSTORE_TYPE_SCHEMA = String.class;
+
+    /**
+     * Password to the private key in the keystore for settting up HTTPS (SSL).
+     */
+    public static final String LOGVIEWER_HTTPS_KEY_PASSWORD = "logviewer.https.key.password";
+    public static final Object LOGVIEWER_HTTPS_KEY_PASSWORD_SCHEMA = String.class;
+
+    /**
+     * Path to the truststore containing the certs used by Storm Logviewer for HTTPS communications
+     */
+    public static final String LOGVIEWER_HTTPS_TRUSTSTORE_PATH = "logviewer.https.truststore.path";
+    public static final Object LOGVIEWER_HTTPS_TRUSTSTORE_PATH_SCHEMA = String.class;
+
+    /**
+     * Password for the truststore for HTTPS for Storm Logviewer
+     */
+    public static final String LOGVIEWER_HTTPS_TRUSTSTORE_PASSWORD = "logviewer.https.truststore.password";
+    public static final Object LOGVIEWER_HTTPS_TRUSTSTORE_PASSWORD_SCHEMA = String.class;
+
+    /**
+     * Type of the truststore for HTTPS for Storm Logviewer.
+     * see http://docs.oracle.com/javase/8/docs/api/java/security/Truststore.html for more details.
+     */
+    public static final String LOGVIEWER_HTTPS_TRUSTSTORE_TYPE = "logviewer.https.truststore.type";
+    public static final Object LOGVIEWER_HTTPS_TRUSTSTORE_TYPE_SCHEMA = String.class;
+
+    /**
+     * Password to the truststore used by Storm Logviewer settting up HTTPS (SSL).
+     */
+    public static final String LOGVIEWER_HTTPS_WANT_CLIENT_AUTH = "logviewer.https.want.client.auth";
+    public static final Object LOGVIEWER_HTTPS_WANT_CLIENT_AUTH_SCHEMA = Boolean.class;
+
+    public static final String LOGVIEWER_HTTPS_NEED_CLIENT_AUTH = "logviewer.https.need.client.auth";
+    public static final Object LOGVIEWER_HTTPS_NEED_CLIENT_AUTH_SCHEMA = Boolean.class;
+
+    /**
      * A list of users allowed to view logs via the Log Viewer
      */
     public static final String LOGS_USERS = "logs.users";


[4/4] storm git commit: Added STORM-912 to Changelog

Posted by bo...@apache.org.
Added STORM-912 to Changelog


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

Branch: refs/heads/master
Commit: 27a3a6bb71f78bd20029747981d20c21dd639f55
Parents: 1522670
Author: Robert (Bobby) Evans <ev...@yahoo-inc.com>
Authored: Tue Jun 30 08:23:47 2015 -0500
Committer: Robert (Bobby) Evans <ev...@yahoo-inc.com>
Committed: Tue Jun 30 08:23:47 2015 -0500

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


http://git-wip-us.apache.org/repos/asf/storm/blob/27a3a6bb/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fcd9259..defa79c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,7 +8,7 @@
  * STORM-477: Add warning for invalid JAVA_HOME
  * STORM-826: Update KafkaBolt to use the new kafka producer API
  * STORM-843: [storm-redis] Add Javadoc to storm-redis
-
+ * STORM-912: Support SSL on Logviewer
 
 ## 0.10.0-beta
  * STORM-867: fix bug with mk-ssl-connector


[3/4] storm git commit: Merge branch 'STORM-912' of https://github.com/knusbaum/incubator-storm into STORM-912

Posted by bo...@apache.org.
Merge branch 'STORM-912' of https://github.com/knusbaum/incubator-storm into STORM-912

STORM-912: Support SSL on Logviewer


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

Branch: refs/heads/master
Commit: 1522670cdde7ab7656301db76bbc9bd11200b86d
Parents: f7a8a75 1da9636
Author: Robert (Bobby) Evans <ev...@yahoo-inc.com>
Authored: Tue Jun 30 08:16:33 2015 -0500
Committer: Robert (Bobby) Evans <ev...@yahoo-inc.com>
Committed: Tue Jun 30 08:16:33 2015 -0500

----------------------------------------------------------------------
 .../src/clj/backtype/storm/daemon/logviewer.clj | 23 ++++++-
 storm-core/src/clj/backtype/storm/ui/core.clj   | 65 +++++++++++---------
 .../src/clj/backtype/storm/ui/helpers.clj       | 12 ++--
 storm-core/src/jvm/backtype/storm/Config.java   | 59 ++++++++++++++++++
 4 files changed, 125 insertions(+), 34 deletions(-)
----------------------------------------------------------------------



[2/4] storm git commit: Adding boolean condition so logviewer HTTPS is not necessary.

Posted by bo...@apache.org.
Adding boolean condition so logviewer HTTPS is not necessary.


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

Branch: refs/heads/master
Commit: 1da96361b133029444a632bf2624226eb26f566d
Parents: 0bc4565
Author: Kyle Nusbaum <Ky...@gmail.com>
Authored: Mon Jun 29 11:31:22 2015 -0500
Committer: Kyle Nusbaum <Ky...@gmail.com>
Committed: Mon Jun 29 11:31:22 2015 -0500

----------------------------------------------------------------------
 storm-core/src/clj/backtype/storm/daemon/logviewer.clj | 2 +-
 storm-core/src/clj/backtype/storm/ui/core.clj          | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/1da96361/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/logviewer.clj b/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
index aa9e7c1..e77527b 100644
--- a/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
@@ -370,7 +370,7 @@ Note that if anything goes wrong, this will throw an Error and exit."
                           [{:filter-class "org.eclipse.jetty.servlets.GzipFilter"
                             :filter-name "Gzipper"
                             :filter-params {}}])
-          https-port (int (conf LOGVIEWER-HTTPS-PORT))
+          https-port (int (or (conf LOGVIEWER-HTTPS-PORT) 0))
           keystore-path (conf LOGVIEWER-HTTPS-KEYSTORE-PATH)
           keystore-pass (conf LOGVIEWER-HTTPS-KEYSTORE-PASSWORD)
           keystore-type (conf LOGVIEWER-HTTPS-KEYSTORE-TYPE)

http://git-wip-us.apache.org/repos/asf/storm/blob/1da96361/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 aa2d01d..b0e266c 100644
--- a/storm-core/src/clj/backtype/storm/ui/core.clj
+++ b/storm-core/src/clj/backtype/storm/ui/core.clj
@@ -295,7 +295,7 @@
 
 (defn worker-log-link [host port topology-id secure?]
   (let [fname (logs-filename topology-id port)]
-    (if secure?
+    (if (and secure? (*STORM-CONF* LOGVIEWER-HTTPS-PORT))
       (url-format "https://%s:%s/log?file=%s"
                   host
                   (*STORM-CONF* LOGVIEWER-HTTPS-PORT)