Clojure websockify: -main and command line args.
Can now be launched like so: lein run websockify --web ../../noVNC/ 6080 localhost:5901
This commit is contained in:
parent
2e2d815bca
commit
24388e0e94
|
|
@ -1,11 +1,13 @@
|
||||||
(defproject websockify "1.0.0-SNAPSHOT"
|
(defproject websockify "1.0.0-SNAPSHOT"
|
||||||
:description "Websockify"
|
:description "Clojure implementation of Websockify"
|
||||||
|
:url "https://github.com/kanaka/websockify"
|
||||||
:dependencies [[org.clojure/clojure "1.2.1"]
|
:dependencies [[org.clojure/clojure "1.2.1"]
|
||||||
|
[org.clojure/tools.cli "0.2.1"]
|
||||||
[ring/ring-jetty-adapter "1.0.0-beta2"]
|
[ring/ring-jetty-adapter "1.0.0-beta2"]
|
||||||
[org.eclipse.jetty/jetty-websocket "7.5.4.v20111024"]
|
[org.eclipse.jetty/jetty-websocket "7.5.4.v20111024"]
|
||||||
[org.eclipse.jetty/jetty-server "7.5.4.v20111024"]
|
[org.eclipse.jetty/jetty-server "7.5.4.v20111024"]
|
||||||
[org.eclipse.jetty/jetty-servlet "7.5.4.v20111024"]
|
[org.eclipse.jetty/jetty-servlet "7.5.4.v20111024"]
|
||||||
[org.jboss.netty/netty "3.2.5.Final"]
|
[org.jboss.netty/netty "3.2.5.Final"]]
|
||||||
]
|
;:dev-dependencies [[swank-clojure "1.3.0-SNAPSHOT"]]
|
||||||
; :dev-dependencies [[swank-clojure "1.3.0-SNAPSHOT"]]
|
:main websockify
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
(ns websockify
|
(ns websockify
|
||||||
(:use ring.adapter.jetty)
|
;(:use ring.adapter.jetty)
|
||||||
|
(:require [clojure.tools.cli :as cli]
|
||||||
|
[clojure.string :as string])
|
||||||
|
|
||||||
(:import
|
(:import
|
||||||
|
|
||||||
|
|
@ -20,8 +22,8 @@
|
||||||
[org.eclipse.jetty.servlet
|
[org.eclipse.jetty.servlet
|
||||||
ServletContextHandler ServletHolder DefaultServlet]
|
ServletContextHandler ServletHolder DefaultServlet]
|
||||||
[org.eclipse.jetty.websocket
|
[org.eclipse.jetty.websocket
|
||||||
WebSocket WebSocketClientFactory WebSocketClient
|
WebSocket WebSocket$OnTextMessage
|
||||||
WebSocketServlet]))
|
WebSocketClientFactory WebSocketClient WebSocketServlet]))
|
||||||
|
|
||||||
|
|
||||||
;; TCP / NIO
|
;; TCP / NIO
|
||||||
|
|
@ -69,7 +71,7 @@
|
||||||
|
|
||||||
;; http://wiki.eclipse.org/Jetty/Feature/WebSockets
|
;; http://wiki.eclipse.org/Jetty/Feature/WebSockets
|
||||||
(defn make-websocket-servlet [open close message]
|
(defn make-websocket-servlet [open close message]
|
||||||
(proxy [org.eclipse.jetty.websocket.WebSocketServlet] []
|
(proxy [WebSocketServlet] []
|
||||||
(doGet [request response]
|
(doGet [request response]
|
||||||
;;(println "doGet" request)
|
;;(println "doGet" request)
|
||||||
(.. (proxy-super getServletContext)
|
(.. (proxy-super getServletContext)
|
||||||
|
|
@ -77,7 +79,7 @@
|
||||||
(forward request response)))
|
(forward request response)))
|
||||||
(doWebSocketConnect [request response]
|
(doWebSocketConnect [request response]
|
||||||
(println "doWebSocketConnect")
|
(println "doWebSocketConnect")
|
||||||
(reify org.eclipse.jetty.websocket.WebSocket$OnTextMessage
|
(reify WebSocket$OnTextMessage
|
||||||
(onOpen [this connection] (open this connection))
|
(onOpen [this connection] (open this connection))
|
||||||
(onClose [this code message] (close this code message))
|
(onClose [this code message] (close this code message))
|
||||||
(onMessage [this data] (message this data))))))
|
(onMessage [this data] (message this data))))))
|
||||||
|
|
@ -208,3 +210,24 @@
|
||||||
(reset! targets {})
|
(reset! targets {})
|
||||||
nil)))
|
nil)))
|
||||||
|
|
||||||
|
(defn -main [& args]
|
||||||
|
(let [[options args banner]
|
||||||
|
(cli/cli
|
||||||
|
args
|
||||||
|
["-v" "--[no-]verbose" "Verbose output"]
|
||||||
|
["--web" "Run webserver with root at given location"]
|
||||||
|
["-h" "--help" "Show help" :default false :flag true]
|
||||||
|
)]
|
||||||
|
(when (or (:help options)
|
||||||
|
(not= 2 (count args)))
|
||||||
|
(println banner)
|
||||||
|
(System/exit 0))
|
||||||
|
(println options)
|
||||||
|
(println args)
|
||||||
|
(let [target (second args)
|
||||||
|
[target-host target-port] (string/split target #":")]
|
||||||
|
(start-websockify :listen-port (Integer/parseInt (first args))
|
||||||
|
:target-host target-host
|
||||||
|
:target-port (Integer/parseInt target-port)
|
||||||
|
:web (:web options))))
|
||||||
|
nil)
|
||||||
Loading…
Reference in New Issue