2009-07-22 22 views
6

He comenzado un servidor Compojure (el embarcadero) con:¿Cómo puedo hacer Compojure escuchar a una sola dirección IP

(defonce *server* (run-server {:host "localhost" :port 8080} "/*" (servlet routes))) 

pero todavía netstat muestra que está escuchando en 0.0.0.0:8080, es decir, todas las direcciones IP.

¿Cuál es el parámetro correcto para pasar al servidor de ejecución para que lo escuche en una sola IP?

Respuesta

7

Creo que vas a tener que parchar Compojure. No está haciendo nada con su parámetro :host. Hacer este cambio a server/jetty.clj parece funcionar, pero no lo he probado a fondo.

(defn- create-server 
    "Construct a Jetty Server instance." 
    [options servlets] 
    (let [port  (options :port 80) 
     host  (options :host "0.0.0.0") 
     connector (doto (org.mortbay.jetty.bio.SocketConnector.) 
        (.setPort port) 
        (.setHost host)) 
     server (doto (Server.) 
        (.addConnector connector)) 
     servlets (partition 2 servlets)] 
    (when (or (options :ssl) (options :ssl-port)) 
     (add-ssl-connector! server options)) 
    (doseq [[url-or-path servlet] servlets] 
     (add-servlet! server url-or-path servlet)) 
    server))
user> (run-server {:port 12346}) 
2009-07-22 13:48:53.999::INFO: jetty-6.1.15 
2009-07-22 13:48:54.002::INFO: Started [email protected]:12346 
nil 
user> (run-server {:host "127.0.0.1" :port 12345}) 
2009-07-22 13:48:08.061::INFO: jetty-6.1.15 
2009-07-22 13:48:08.129::INFO: Started [email protected]:12345 
+3

Esto ya se ha rodado en compojure, por lo que simplemente funciona - yay de código abierto! – l0st3d

Cuestiones relacionadas