Question

J'ai un petit fichier Escript qui se connecte à un nœud et fait quelques appels et des trucs ... rpc

Il fonctionne très bien pour un court ou mais repose sur noms longs comms standard http pour Erlang.

Je voudrais l'utiliser mais avec https / SSL pour la distribution.

Pour démarrer un système Erlang « normal » avec SSL, vous devez passer dans les différents drapeaux pour dire Erlang à courir de cette façon, comme documentation suggère:

$ 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

Il remplace le mécanisme de distribution par défaut (inet_tcp_dist) avec une ssl (de inet_ssl_dist).

Escript exécute un fichier Erlang en tant que fichier de script shell.

Mes questions sont les suivantes:

  • est-il possible d'obtenir le « environnement » dans lequel Erlang Escript va utiliser le mécanisme de distribution sécurisée au lieu de celui par défaut?
  • et si oui, comment pourrais-je le faire?
Était-ce utile?

La solution

Vous ne devez pas définir ces drapeaux par l'environnement, vous pouvez aussi les transmettre directement à erl, voir ch. 1.4 . drapeaux erl peuvent être passés à Escript via la ligne argument %%!.


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"]}]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top