سؤال

لدي ملف escript قليلا يتصل بعقدة ويفعل بعض مكالمات RPC والاشياء ...

إنه يعمل بشكل جيد للأسلوب القصير أو لفترة طويلة ولكن يعتمد على CUMSS HTTP القياسية ل Erlang الموزعة.

أرغب في استخدامه ولكن مع HTTPS / SSL للتوزيع.

لبدء نظام Erlang "عادي" مع SSL، يجب أن تمر في الأعلام المختلفة لإخبار Erlang بتشغيل هذه الطريقة، كما توثيق وتقترح:

$ ERL_FLAGS="-boot \"/home/me/ssl/start_ssl\" -proto_dist inet_ssl 
  -ssl_dist_opt client_certfile \"/home/me/ssl/erlclient.pem\" 
  -ssl_dist_opt server_certfile \"/home/me/ssl/erlserver.pem\" 
  -ssl_dist_opt verify 1 -ssl_dist_opt depth 1"
$ export ERL_FLAGS
$ erl -sname ssl_test

هذا يحل محل آلية التوزيع الافتراضية (inet_tcp_dist) مع SSL واحد (inet_ssl_dist).

escript. يعمل ملف Erlang كملف برسيل شل.

أسئلتي هي:

  • هل من الممكن الحصول على "بيئة" Erlang "التي تعمل فيها ESCRECT لاستخدام آلية التوزيع الآمنة بدلا من الافتراضي؟
  • وإذا كان الأمر كذلك، كيف أفعل ذلك؟
هل كانت مفيدة؟

المحلول

ليس عليك تعيين هذه الأعلام عبر البيئة، يمكنك أيضا نقلها مباشرة إلى erl, ، يرى الفصل. 1.4 هنا. erl الأعلام يمكن أن تمر إلى escript. عبر %%! خط الوسيطة.


z.escript.

#!/usr/bin/env escript
%%! -boot start_ssl -proto_dist inet_ssl -ssl_dist_opt client_certfile /home/me/ssl/erlclient.pem -ssl_dist_opt server_certfile /home/me/ssl/erlserver.pem -ssl_dist_opt verify 1 -ssl_dist_opt depth 1
main(_) ->
    io:format("~p~n", [init:get_arguments()]).

zed@zed:~$ ./z.escript 
[{root,["/opt/erlang-R13B03/lib/erlang"]},
 {progname,["erl"]},
 {home,["/home/zed"]},
 {boot,["start_clean"]},
 {noshell,[]},
 {boot,["start_ssl"]},
 {proto_dist,["inet_ssl"]},
 {ssl_dist_opt,["client_certfile","/home/me/ssl/erlclient.pem"]},
 {ssl_dist_opt,["server_certfile","/home/me/ssl/erlserver.pem"]},
 {ssl_dist_opt,["verify","1"]},
 {ssl_dist_opt,["depth","1"]}]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top