Запуск файла Erlang Escript с распространением SSL - PullRequest
2 голосов
/ 09 января 2010

У меня есть небольшой файл сценария, который подключается к узлу и выполняет некоторые вызовы RPC и прочее ...

Он отлично работает для коротких или длинных имен, но использует стандартные 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, в которой запускается escript, для использования механизма безопасного распространения вместо механизма по умолчанию?
  • и если да, то как бы я это сделал?

1 Ответ

3 голосов
/ 09 января 2010

Вам не нужно устанавливать эти флаги через окружение, вы также можете передать их непосредственно erl, см. ch. 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"]}]
...