문제

노드에 연결하고 rpc 호출 및 물건을 수행하는 작은 ESCRIP 파일이 있습니다 ...

짧거나 긴 이름에 적합하지만 분산 Erlang의 표준 HTTP 통신에 의존합니다.

사용하고 싶지만 분포를 위해 HTTPS/SSL과 함께 사용하고 싶습니다.

SSL이있는 '정상적인'Erlang 시스템을 시작하려면 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 파일을 쉘 스크립팅 파일로 실행합니다.

내 질문은 다음과 같습니다.

  • ESCRIP가 기본 분배 메커니즘 대신 보안 분포 메커니즘을 사용하기 위해 실행되는 Erlang 'Environment'를 얻을 수 있습니까?
  • 그렇다면 어떻게해야합니까?
도움이 되었습니까?

해결책

환경을 통해이 깃발을 설정할 필요가 없으며 직접 전달할 수도 있습니다. erl, 보다 ch. 1.4 여기. erl 깃발을 전달할 수 있습니다 escript TH를 통해 %%! 인수 라인.


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