diff options
author | Ingela Anderton Andin <[email protected]> | 2011-08-17 10:02:00 +0200 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2012-02-13 10:48:15 +0100 |
commit | 0580ac8b2aaec67f7df11f1439e77c3c4778a92f (patch) | |
tree | a42531a8e85933483ff54a9147ed6b6696749f52 /lib/ssh | |
parent | 86231a380b27fc262e48aa8c3f0372d4d2056682 (diff) | |
download | otp-0580ac8b2aaec67f7df11f1439e77c3c4778a92f.tar.gz otp-0580ac8b2aaec67f7df11f1439e77c3c4778a92f.tar.bz2 otp-0580ac8b2aaec67f7df11f1439e77c3c4778a92f.zip |
Client now honors the allow_user_interaction option
Diffstat (limited to 'lib/ssh')
-rw-r--r-- | lib/ssh/src/ssh_auth.erl | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/lib/ssh/src/ssh_auth.erl b/lib/ssh/src/ssh_auth.erl index a2e74a12bb..62d684f4dc 100644 --- a/lib/ssh/src/ssh_auth.erl +++ b/lib/ssh/src/ssh_auth.erl @@ -71,29 +71,43 @@ password_msg([#ssh{opts = Opts, io_cb = IoCb, ssh_bits:install_messages(userauth_passwd_messages()), Password = case proplists:get_value(password, Opts) of undefined -> - IoCb:read_password("ssh password: "); + user_interaction(Opts, IoCb); PW -> PW end, - ssh_transport:ssh_packet( - #ssh_msg_userauth_request{user = User, - service = Service, - method = "password", - data = - <<?BOOLEAN(?FALSE), - ?STRING(list_to_binary(Password))>>}, - Ssh). + case Password of + not_ok -> + not_ok; + _ -> + ssh_transport:ssh_packet( + #ssh_msg_userauth_request{user = User, + service = Service, + method = "password", + data = + <<?BOOLEAN(?FALSE), + ?STRING(list_to_binary(Password))>>}, + Ssh) + end. + +user_interaction(Opts, IoCb) -> + case proplists:get_value(allow_user_interaction, Opts, true) of + true -> + IoCb:read_password("ssh password: "); + false -> + not_ok + end. + %% See RFC 4256 for info on keyboard-interactive keyboard_interactive_msg([#ssh{user = User, - service = Service} = Ssh]) -> + service = Service} = Ssh]) -> ssh_bits:install_messages(userauth_keyboard_interactive_messages()), ssh_transport:ssh_packet( #ssh_msg_userauth_request{user = User, service = Service, method = "keyboard-interactive", data = << ?STRING(<<"">>), - ?STRING(<<>>) >> }, + ?STRING(<<>>) >> }, Ssh). service_request_msg(Ssh) -> |