2010-01-08 2 views
2

J'ai un petit fichier Escript qui se connecte à un nœud et fait quelques appels rpc et des trucs ...Exécution d'un Erlang Escript fichier avec SSL distribution

Il fonctionne très bien pour un court ou noms longs, mais repose sur comms standard http pour distribué 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 

Cela remplace le mécanisme de distribution par défaut (inet_tcp_dist) avec le ssl (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 le ferais-je?

Répondre

3

Vous ne devez pas définir ces drapeaux par l'environnement, vous pouvez aussi les transmettre directement à erl, voir ch. 1.4 here. Les indicateurs erl peuvent être passés à escript via la ligne d'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()]). 

[email protected]:~$ ./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"]}] 
+0

Comme toujours Zoltan - vous êtes sur l'argent. Je ne sais pas comment j'ai raté cette ligne dans la documentation de l'escript <- putain d'imbécile! –