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)