Frage

(Diese Frage Downvoted worden, was ich seltsam finde. Wie habe ich beleidigt?)

Habe ich Recht zu denken, dass Laufen eines Swank Server öffnet in der Regel Port 4005 auf die Welt, nicht gebunden an localhost-only-Verbindungen?

So jemand in einem Café Hacking ist nicht nur erlaubt Passanten beliebigen Code auf dem Computer auszuführen, sondern ihnen eine schöne Oberfläche, es zu tun mit gibt.

Es scheint, dass, wenn ich laufe einen Swank Server entweder mit 'mvn clojure: Swank' oder 'lein Swank', oder (swank.swank / start-server "/ tmp / yo")

dann bekomme ich so etwas wie (Danke Mike!):

$lsof -i -P
java      11693 john   13r  IPv6 6701891      0t0  TCP *:34983 (LISTEN)

und in der Tat kann ich von einem Emacs verbinden auf einem anderen Rechner im selben Netzwerk ausgeführt wird.

(swank.swank/start-server "/tmp/yo")

Wenn ich den Bediener von Hand starten, erzeugt es die folgende Ausgabe

Connection opened on local port  34983
#<ServerSocket ServerSocket[addr=0.0.0.0/0.0.0.0,port=0,localport=34983]>

Während:

(swank.swank/start-server "/tmp/yo" :host "localhost")

erzeugt:

Connection opened on local port  40368
#<ServerSocket ServerSocket[addr=localhost/127.0.0.1,port=0,localport=40368]>

Welche scheint eher wie ich es erwartet hatte.

Gibt es einen guten Grund, dies zu tun?

Alle Ideen, wie es die konventionellere Möglichkeiten, es zu starten überzeugt werden können, nur akzeptieren Verbindungen von lokalen Prozessen?

War es hilfreich?

Lösung

Völlig berechtigte Frage.

Nach einem Schleim-Server öffnen, werden Sie feststellen:

eames:~:% lsof -i -P | grep 4005
java      41477  mjd   33u  IPv6 0x0b8956d0      0t0  TCP [::127.0.0.1]:4005 (LISTEN)

Die Verbindung wird auf der lokalen Adresse an Port lauscht 4005. Diese Schnittstelle ist nicht mit dem Netzwerk ausgesetzt ist, so dass andere Geräte im Netzwerk können nicht auf Ihren Schleim-Server verbinden.

edit:

Dies war mein Ergebnis Swank des Beginnens mit Leiningen, die „localhost“ als Argument an swank.swank/start-server bietet. Sie können zu überprüfen möchten, dass die Leiningen-Plugin nicht-lokale Ports geöffnet wird.

Sie haben Recht, dass Swank die Verbindung an jeder Adresse öffnet, wenn ein Host nicht ausdrücklich vorgesehen ist. Der entsprechende Code ist swank.util.net.sockets/make-server-socket, und dieses Verhalten dokumentiert. Ich bin damit einverstanden, es ist wie der falsche Standard scheint.

Andere Tipps

es nimmt nur eine Verbindung so, auch wenn es in der Welt ausgesetzt ist es nicht mehr hören, wenn Sie eine Verbindung herstellen.

Wenn Sie die Clojure-maven-Plugin verwenden, Version 1.3.4 wurde vor kurzem veröffentlicht, die nun den Protz-Server gegen localhost startet um dieses Problem zu vermeiden.

Dieses Verhalten kann mit in Ihrer pom.xml-Datei konfiguriert werden:

<configuration>
  <swankHost>someotherhostname</swankHost>
</configuration>

oder von der Kommandozeile mit:

mvn clojure:swank -Dclojure.swank.host=someotherhostname
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top