سؤال

(تم تخفيض هذا السؤال ، وهو ما أجده غريبًا. كيف أساءت؟)

هل أنا محق في التفكير في أن تشغيل خادم Swank عادةً ما يفتح المنفذ 4005 على العالم ، وليس ملزمًا بالاتصالات المحلية فقط؟

لذلك لا يسمح أي شخص يخترق في أحد المقاهي فقط بتنفيذ التعليمات البرمجية التعسفية على جهاز الكمبيوتر الخاص بهم ، بل يمنحهم واجهة لطيفة للقيام بذلك.

يبدو أنه عندما أقوم بتشغيل خادم Swank مع "MVN Clojure: Swank" ، أو "Lein Swank" ، أو (Swank.swank/START-Server "/TMP/YO")

ثم أحصل على شيء مثل (شكرا مايك!):

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

وبالفعل يمكنني الاتصال من emacs تعمل على جهاز آخر على نفس الشبكة.

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

إذا بدأت الخادم باليد ، فإنه ينتج الإخراج التالي

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

بينما:

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

ينتج عنه:

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

وهو ما يبدو أنه أشبه كنت أتوقعه.

هل هناك أي سبب وجيه للقيام بذلك؟

أي أفكار حول كيفية إقناع الطرق التقليدية للبدء ، يمكن إقناعها بقبول الروابط من العمليات المحلية فقط؟

هل كانت مفيدة؟

المحلول

سؤال صحيح تماما.

بعد فتح خادم الوحل ، ستلاحظ:

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

يستمع الاتصال على العنوان المحلي في المنفذ 4005. هذه الواجهة لا تتعرض للشبكة ، لذلك لا يمكن للأجهزة الأخرى على الشبكة الاتصال بخادم الوحل الخاص بك.

تعديل:

كانت هذه هي النتيجة الخاصة بي لبدء Swank باستخدام Lininingen ، والتي توفر "المضيف المحلي" كحجة swank.swank/start-server. قد ترغب في التحقق من مضاعفة أن البرنامج المساعد Lininingen يفتح منافذ غير محلية.

أنت محق في أن Swank يفتح الاتصال على كل عنوان إذا لم يتم توفير مضيف بشكل صريح. الرمز ذي الصلة هو swank.util.net.sockets/make-server-socket, ، وهذا السلوك موثق. أوافق ، يبدو أنه التخلف الخاطئ.

نصائح أخرى

إنه يقبل اتصالًا واحدًا فقط ، لذا حتى لو تعرض للعالم ، فإنه يتوقف عن الاستماع بمجرد الاتصال.

إذا كنت تستخدم Clojure-Maven-Plugin ، فقد تم إصدار الإصدار 1.3.4 مؤخرًا والذي يبدأ الآن خادم Swank ضد LocalHost لمنع هذه المشكلة.

يمكن تكوين هذا السلوك في ملف pom.xml الخاص بك مع:

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

أو من سطر الأوامر مع:

mvn clojure:swank -Dclojure.swank.host=someotherhostname
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top