adds SSL handling

This commit is contained in:
Dave Della Costa 2013-09-05 14:10:59 +09:00
parent 4e03d0d8cb
commit 6c8f9e49d2

View file

@ -3,6 +3,7 @@
(:import (org.eclipse.jetty.server.handler AbstractHandler) (:import (org.eclipse.jetty.server.handler AbstractHandler)
(org.eclipse.jetty.server Server Request Response) (org.eclipse.jetty.server Server Request Response)
(org.eclipse.jetty.server.nio SelectChannelConnector) (org.eclipse.jetty.server.nio SelectChannelConnector)
(org.eclipse.jetty.server.ssl SslSocketConnector)
(org.eclipse.jetty.continuation Continuation ContinuationSupport ContinuationListener) (org.eclipse.jetty.continuation Continuation ContinuationSupport ContinuationListener)
(org.eclipse.jetty.io EofException) (org.eclipse.jetty.io EofException)
(javax.servlet.http HttpServletRequest)) (javax.servlet.http HttpServletRequest))
@ -16,11 +17,11 @@
(deftype JettyAsyncResponse [continuation] (deftype JettyAsyncResponse [continuation]
async-adapter/IAsyncAdapter async-adapter/IAsyncAdapter
(head [this status headers] (head [this status headers]
(doto (.getServletResponse continuation) (doto (.getServletResponse continuation)
(servlet/set-status status) (servlet/set-status status)
(servlet/set-headers (assoc headers (servlet/set-headers (assoc headers
"Transfer-Encoding" "chunked")) "Transfer-Encoding" "chunked"))
(.flushBuffer))) (.flushBuffer)))
(write-chunk [this data] (write-chunk [this data]
(doto (.getWriter (.getServletResponse continuation)) (doto (.getWriter (.getServletResponse continuation))
(.write data) (.write data)
@ -30,8 +31,19 @@
(close [this] (close [this]
(.complete continuation))) (.complete continuation)))
(defn- add-ssl-connector!
"Add an SslSocketConnector to a Jetty Server instance."
[^Server server options]
(let [ssl-connector (SslSocketConnector.)]
(doto ssl-connector
(.setPort (options :ssl-port 443))
(.setKeystore (options :keystore))
(.setKeyPassword (options :key-password)))
(when (options :truststore)
(.setTruststore ssl-connector (options :truststore)))
(when (options :trust-password)
(.setTrustPassword ssl-connector (options :trust-password)))
(.addConnector server ssl-connector)))
(defn- proxy-handler (defn- proxy-handler
"Returns an Jetty Handler implementation for the given Ring handler." "Returns an Jetty Handler implementation for the given Ring handler."
@ -70,6 +82,8 @@
server (doto (Server.) server (doto (Server.)
(.addConnector connector) (.addConnector connector)
(.setSendDateHeader true))] (.setSendDateHeader true))]
(when (or (options :ssl?) (options :ssl-port))
(add-ssl-connector! server options))
server)) server))
(defn ^Server run-jetty-async (defn ^Server run-jetty-async