Ejecución de un archivo de Erlang Escript con distribución SSL
-
19-09-2019 - |
Pregunta
Tengo un pequeño archivo Escript que se conecta a un nodo y hace algunas llamadas RPC y esas cosas ...
Funciona bien para corto o longnames pero se basa en comunicaciones HTTP estándar para Erlang distribuida.
Me gustaría usar, pero con https / SSL para su distribución.
Para iniciar un sistema 'normal' Erlang con SSL usted tiene que pasar en las diversas banderas para contar Erlang para funcionar de esa manera, como el documentación sugiere:
$ 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
Esto reemplaza el mecanismo de distribución por defecto (inet_tcp_dist
) con el uno ssl (inet_ssl_dist
).
Escript ejecuta un archivo de erlang como un archivo de shell scripting.
Mis preguntas son:
- ¿es posible obtener el Erlang 'medio ambiente' en el que se ejecuta Escript utilizar el mecanismo de distribución segura en lugar de la predeterminada?
- y si es así, ¿cómo lo haría?
Solución
Usted no tiene que fijar estas banderas través del medio ambiente, también puede pasar directamente a erl
, consulte ch. 1.4 aquí. banderas erl
se pueden pasar a a través de la línea de argumento %%!
.
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"]}]