svnno****@sourc*****
svnno****@sourc*****
2009年 4月 23日 (木) 00:11:57 JST
Revision: 3342 http://svn.sourceforge.jp/view?root=ttssh2&view=rev&rev=3342 Author: maya Date: 2009-04-23 00:11:57 +0900 (Thu, 23 Apr 2009) Log Message: ----------- èªè¨¼å¦çãè¦ç´ã ã³ã¡ã³ãã追å Modified Paths: -------------- trunk/ttssh2/ttxssh/auth.c trunk/ttssh2/ttxssh/ssh.c -------------- next part -------------- Modified: trunk/ttssh2/ttxssh/auth.c =================================================================== --- trunk/ttssh2/ttxssh/auth.c 2009-04-22 13:36:25 UTC (rev 3341) +++ trunk/ttssh2/ttxssh/auth.c 2009-04-22 15:11:57 UTC (rev 3342) @@ -230,6 +230,7 @@ init_auth_machine_banner(pvar, dlg); init_password_control(dlg); + // FظsãÍxð«·¦ if (pvar->auth_state.failed_method != SSH_AUTH_NONE) { /* must be retrying a failed attempt */ UTIL_get_lang_msg("DLG_AUTH_BANNER2_FAILED", pvar, "Authentication failed. Please retry."); @@ -239,30 +240,52 @@ default_method = pvar->auth_state.failed_method; } - // zXgmF_CAO©ç²¯½Æ«=EBhEªANeBuÉÈÁ½Æ« - // É SetFocus ªÀs³êAR}hCÅn³ê½FØû®ªã«³êÄ - // µÜ¤ÌÅA©®OCLøÍ SetFocus µÈ¢ (2009.1.31 maya) - if (!pvar->ssh2_autologin) { - set_auth_options_status(dlg, auth_types_to_control_IDs[default_method]); + // pX[hðo¦Ä¨`FbN{bNXÉÍftHgÅLøÆ·é (2006.8.3 yutaka) + if (pvar->ts_SSH->remember_password) { + SendMessage(GetDlgItem(dlg, IDC_REMEMBER_PASSWORD), BM_SETCHECK, BST_CHECKED, 0); + } else { + SendMessage(GetDlgItem(dlg, IDC_REMEMBER_PASSWORD), BM_SETCHECK, BST_UNCHECKED, 0); + } - if (default_method == SSH_AUTH_TIS) { - /* we disabled the password control, so fix the focus */ - SetFocus(GetDlgItem(dlg, IDC_SSHUSETIS)); - } - else if (default_method == SSH_AUTH_PAGEANT) { - SetFocus(GetDlgItem(dlg, IDC_SSHUSEPAGEANT)); - } + // ForwardAgent ÌÝèð½f·é (2008.12.4 maya) + CheckDlgButton(dlg, IDC_FORWARD_AGENT, pvar->settings.ForwardAgent); + + // SSH o[WÉæÁÄ TIS Ìxð«·¦ + if (pvar->settings.ssh_protocol_version == 1) { + UTIL_get_lang_msg("DLG_AUTH_METHOD_CHALLENGE1", pvar, + "Use challenge/response to log in(&TIS)"); + SetDlgItemText(dlg, IDC_SSHUSETIS, pvar->ts->UIMsg); + } else { + UTIL_get_lang_msg("DLG_AUTH_METHOD_CHALLENGE2", pvar, + "Use &challenge/response to log in(keyboard-interactive)"); + SetDlgItemText(dlg, IDC_SSHUSETIS, pvar->ts->UIMsg); } if (pvar->auth_state.user != NULL) { SetDlgItemText(dlg, IDC_SSHUSERNAME, pvar->auth_state.user); EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAME), FALSE); EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAMELABEL), FALSE); - } else if (pvar->session_settings.DefaultUserName[0] != 0) { + } + if (strlen(pvar->ssh2_username) > 0) { + SetDlgItemText(dlg, IDC_SSHUSERNAME, pvar->ssh2_username); + if (pvar->ssh2_autologin == 1) { + EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAME), FALSE); + EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAMELABEL), FALSE); + } + } + else if (pvar->session_settings.DefaultUserName[0] != 0) { SetDlgItemText(dlg, IDC_SSHUSERNAME, pvar->session_settings.DefaultUserName); } + if (strlen(pvar->ssh2_password) > 0) { + SetDlgItemText(dlg, IDC_SSHPASSWORD, pvar->ssh2_password); + if (pvar->ssh2_autologin == 1) { + EnableWindow(GetDlgItem(dlg, IDC_SSHPASSWORD), FALSE); + EnableWindow(GetDlgItem(dlg, IDC_SSHPASSWORDCAPTION), FALSE); + } + } + SetDlgItemText(dlg, IDC_RSAFILENAME, pvar->session_settings.DefaultRSAPrivateKeyFile); SetDlgItemText(dlg, IDC_HOSTRSAFILENAME, @@ -270,99 +293,62 @@ SetDlgItemText(dlg, IDC_LOCALUSERNAME, pvar->session_settings.DefaultRhostsLocalUserName); - update_server_supported_types(pvar, dlg); + if (pvar->ssh2_authmethod == SSH_AUTH_PASSWORD) { + CheckRadioButton(dlg, IDC_SSHUSEPASSWORD, MAX_AUTH_CONTROL, IDC_SSHUSEPASSWORD); - // SSH2 autologin - // [UApX[hAFØ\bhð©®ÝèµÄAêèÔãÉOK{^ðº·éB - // - // (2004.12.1 yutaka) - // (2005.1.26 yutaka) öJ®FØT|[g - // ©®OCÅȢƫÍA©®ÝèÍ·éªÏXÂ\ (2006.9.18 maya) -#if 0 - if (pvar->ssh2_autologin == 1) { -#endif - if (strlen(pvar->ssh2_username) > 0) { - SetDlgItemText(dlg, IDC_SSHUSERNAME, pvar->ssh2_username); - } - if (pvar->ssh2_autologin == 1) { - EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAME), FALSE); - EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAMELABEL), FALSE); - } + } else if (pvar->ssh2_authmethod == SSH_AUTH_RSA) { + CheckRadioButton(dlg, IDC_SSHUSEPASSWORD, MAX_AUTH_CONTROL, IDC_SSHUSERSA); - SetDlgItemText(dlg, IDC_SSHPASSWORD, pvar->ssh2_password); + SetDlgItemText(dlg, IDC_RSAFILENAME, pvar->ssh2_keyfile); if (pvar->ssh2_autologin == 1) { - EnableWindow(GetDlgItem(dlg, IDC_SSHPASSWORD), FALSE); - EnableWindow(GetDlgItem(dlg, IDC_SSHPASSWORDCAPTION), FALSE); + EnableWindow(GetDlgItem(dlg, IDC_CHOOSERSAFILE), FALSE); + EnableWindow(GetDlgItem(dlg, IDC_RSAFILENAME), FALSE); } - // '/I' wèª éÆ«ÌÝŬ»·é (2005.9.5 yutaka) - if (pvar->ts->Minimize) { - //20050822ÇÁ start T.Takahashi - ShowWindow(dlg,SW_MINIMIZE); - //20050822ÇÁ end T.Takahashi - } + // /auth=challenge ðÇÁ (2007.10.5 maya) + } else if (pvar->ssh2_authmethod == SSH_AUTH_TIS) { + CheckRadioButton(dlg, IDC_SSHUSEPASSWORD, MAX_AUTH_CONTROL, IDC_SSHUSETIS); + EnableWindow(GetDlgItem(dlg, IDC_SSHPASSWORD), FALSE); + SetDlgItemText(dlg, IDC_SSHPASSWORD, ""); - if (pvar->ssh2_authmethod == SSH_AUTH_PASSWORD) { - CheckRadioButton(dlg, IDC_SSHUSEPASSWORD, MAX_AUTH_CONTROL, IDC_SSHUSEPASSWORD); + // /auth=pageant ðÇÁ + } else if (pvar->ssh2_authmethod == SSH_AUTH_PAGEANT) { + CheckRadioButton(dlg, IDC_SSHUSEPASSWORD, MAX_AUTH_CONTROL, IDC_SSHUSEPAGEANT); + EnableWindow(GetDlgItem(dlg, IDC_SSHPASSWORD), FALSE); + SetDlgItemText(dlg, IDC_SSHPASSWORD, ""); - } else if (pvar->ssh2_authmethod == SSH_AUTH_RSA) { - CheckRadioButton(dlg, IDC_SSHUSEPASSWORD, MAX_AUTH_CONTROL, IDC_SSHUSERSA); + } else { + // ftHgÌFØ\bhð_CAOɽf + set_auth_options_status(dlg, auth_types_to_control_IDs[default_method]); - SetDlgItemText(dlg, IDC_RSAFILENAME, pvar->ssh2_keyfile); - if (pvar->ssh2_autologin == 1) { - EnableWindow(GetDlgItem(dlg, IDC_CHOOSERSAFILE), FALSE); - EnableWindow(GetDlgItem(dlg, IDC_RSAFILENAME), FALSE); - } + update_server_supported_types(pvar, dlg); - // /auth=challenge ðÇÁ (2007.10.5 maya) - } else if (pvar->ssh2_authmethod == SSH_AUTH_TIS) { - CheckRadioButton(dlg, IDC_SSHUSEPASSWORD, MAX_AUTH_CONTROL, IDC_SSHUSETIS); - EnableWindow(GetDlgItem(dlg, IDC_SSHPASSWORD), FALSE); - SetDlgItemText(dlg, IDC_SSHPASSWORD, ""); - - // /auth=pageant ðÇÁ - } else if (pvar->ssh2_authmethod == SSH_AUTH_PAGEANT) { - CheckRadioButton(dlg, IDC_SSHUSEPASSWORD, MAX_AUTH_CONTROL, IDC_SSHUSEPAGEANT); - EnableWindow(GetDlgItem(dlg, IDC_SSHPASSWORD), FALSE); - SetDlgItemText(dlg, IDC_SSHPASSWORD, ""); - - } else { - // TODO - + // zXgmF_CAO©ç²¯½Æ«=EBhEªANeBuÉÈÁ½Æ« + // É SetFocus ªÀs³êAR}hCÅn³ê½FØû®ªã«³êÄ + // µÜ¤ÌÅA©®OCLøÍ SetFocus µÈ¢ (2009.1.31 maya) + if (default_method == SSH_AUTH_TIS) { + /* we disabled the password control, so fix the focus */ + SetFocus(GetDlgItem(dlg, IDC_SSHUSETIS)); } - - GetDlgItemText(dlg, IDC_SSHUSERNAME, uimsg, sizeof(uimsg)); - if (uimsg[0] == 0) { - SetFocus(GetDlgItem(dlg, IDC_SSHUSERNAME)); + else if (default_method == SSH_AUTH_PAGEANT) { + SetFocus(GetDlgItem(dlg, IDC_SSHUSEPAGEANT)); } - else if (pvar->ask4passwd == 1) { - SetFocus(GetDlgItem(dlg, IDC_SSHPASSWORD)); - } -#if 0 - } -#endif -#if 1 - if (pvar->settings.ssh_protocol_version == 1) { - UTIL_get_lang_msg("DLG_AUTH_METHOD_CHALLENGE1", pvar, - "Use challenge/response to log in(&TIS)"); - SetDlgItemText(dlg, IDC_SSHUSETIS, pvar->ts->UIMsg); - } else { - UTIL_get_lang_msg("DLG_AUTH_METHOD_CHALLENGE2", pvar, - "Use &challenge/response to log in(keyboard-interactive)"); - SetDlgItemText(dlg, IDC_SSHUSETIS, pvar->ts->UIMsg); } -#endif - // pX[hðo¦Ä¨`FbN{bNXÉÍftHgÅLøÆ·é (2006.8.3 yutaka) - if (pvar->ts_SSH->remember_password) { - SendMessage(GetDlgItem(dlg, IDC_REMEMBER_PASSWORD), BM_SETCHECK, BST_CHECKED, 0); - } else { - SendMessage(GetDlgItem(dlg, IDC_REMEMBER_PASSWORD), BM_SETCHECK, BST_UNCHECKED, 0); + if (GetWindowTextLength(GetDlgItem(dlg, IDC_SSHUSERNAME)) == 0) { + SetFocus(GetDlgItem(dlg, IDC_SSHUSERNAME)); } + else if (pvar->ask4passwd == 1) { + SetFocus(GetDlgItem(dlg, IDC_SSHPASSWORD)); + } - // settings ©ç»ÝÌÝèðÁÄé (2008.12.4 maya) - CheckDlgButton(dlg, IDC_FORWARD_AGENT, pvar->settings.ForwardAgent); + // '/I' wèª éÆ«ÌÝŬ»·é (2005.9.5 yutaka) + if (pvar->ts->Minimize) { + //20050822ÇÁ start T.Takahashi + ShowWindow(dlg,SW_MINIMIZE); + //20050822ÇÁ end T.Takahashi + } } static char FAR *alloc_control_text(HWND ctl) @@ -638,9 +624,9 @@ static BOOL CALLBACK auth_dlg_proc(HWND dlg, UINT msg, WPARAM wParam, LPARAM lParam) { - const int IDC_TIMER1 = 300; // ©®OC - const int IDC_TIMER2 = 301; // T|[g³êÄ¢é\bhð`FbN - const int IDC_TIMER3 = 302; // `WX|X + const int IDC_TIMER1 = 300; // ©®OCªLøÈÆ« + const int IDC_TIMER2 = 301; // T|[g³êÄ¢é\bhð©®`FbN(CheckAuthListFirst) + const int IDC_TIMER3 = 302; // challenge Å ask4passwd ÅCheckAuthListFirst ª FALSE ÌÆ« const int autologin_timeout = 10; // ~b PTInstVar pvar; LOGFONT logfont; @@ -696,10 +682,11 @@ GetWindowTextLength(GetDlgItem(dlg, IDC_SSHUSERNAME)) > 0) { SetTimer(dlg, IDC_TIMER2, autologin_timeout, 0); } - // /auth=challenge ªwè³êÄ¢Ä[U¼ªmèµÄ¢È¢ - // Æ¢¤±ÆÍÈ¢ÆvíêéÌÅAOK {^ðµÄ - // TIS auth _CAOðo· - else { + // /auth=challenge Æ /ask4passwd ªwè³êÄ¢Ä[U¼ªmèµÄ¢é + // êÍAOK {^ðµÄ TIS auth _CAOðo· + else if (pvar->ssh2_authmethod == SSH_AUTH_TIS && + pvar->ask4passwd && + GetWindowTextLength(GetDlgItem(dlg, IDC_SSHUSERNAME)) > 0) { SetTimer(dlg, IDC_TIMER3, autologin_timeout, 0); } } @@ -716,22 +703,33 @@ pvar->session_settings.CheckAuthListFirst && !pvar->tryed_ssh2_authlist) { if (!autologin_sent_none) { + autologin_sent_none = TRUE; + // _CAOÌ[U¼ðæ¾·é if (pvar->auth_state.user == NULL) { pvar->auth_state.user = alloc_control_text(GetDlgItem(dlg, IDC_SSHUSERNAME)); } - // AuthList ªAÁÄ«Ä¢È¢Æ IDOK ðµÄà - // iÜÈ¢ÌÅAFØ\bh none ðé (2008.10.12 maya) + // CheckAuthListFirst ª TRUE ÌÆ«Í AuthList ªAÁÄ«Ä¢È¢Æ + // IDOK ðµÄàiÜÈ¢ÌÅAFØ\bh none ðé (2008.10.12 maya) do_SSH2_userauth(pvar); - autologin_sent_none = TRUE; } //else { // none ðÁÄ©çAÁÄéÜÅÒ //} } else { + // SSH1 ÌÆ« + // Ü½Í CheckAuthListFirst ª FALSE ÌÆ« + // Ü½Í CheckAuthListFirst TRUE ÅAauthlist ªAÁÄ«½ Æ + + // _CAOÌ[U¼ðæ¾·é + if (pvar->auth_state.user == NULL) { + pvar->auth_state.user = + alloc_control_text(GetDlgItem(dlg, IDC_SSHUSERNAME)); + } + KillTimer(dlg, IDC_TIMER1); SendMessage(dlg, WM_COMMAND, IDOK, 0); } @@ -753,17 +751,16 @@ // [U¼ðÏX³¹È¢ EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAME), FALSE); - // none ðé + // FØ\bh none ðé do_SSH2_userauth(pvar); - // TIS pÉ OK ð·^C}[ðd|¯éÌÍ - // FØɸsµ½ ÆÉµÈ¢Æ + // TIS pÉ OK ð·ÌÍFØɸsµ½ ÆÉµÈ¢Æ // Unexpected SSH2 message ÉÈéB } } else if (SSHv1(pvar)) { KillTimer(dlg, IDC_TIMER2); - // TIS pÉ OK ð·^C}[ðd|¯é + // TIS pÉ OK ð· if (pvar->ssh2_authmethod == SSH_AUTH_TIS) { SendMessage(dlg, WM_COMMAND, IDOK, 0); } @@ -841,7 +838,7 @@ // [U¼ðÏX³¹È¢ EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAME), FALSE); - // none ðé + // FØ\bh none ðé do_SSH2_userauth(pvar); return TRUE; } Modified: trunk/ttssh2/ttxssh/ssh.c =================================================================== --- trunk/ttssh2/ttxssh/ssh.c 2009-04-22 13:36:25 UTC (rev 3341) +++ trunk/ttssh2/ttxssh/ssh.c 2009-04-22 15:11:57 UTC (rev 3342) @@ -7277,30 +7277,20 @@ pvar->ssh2_authlist = cstring; // svÉÈÁ½çt[·é±Æ _snprintf_s(buf, sizeof(buf), _TRUNCATE, "method list from server: %s", cstring); notify_verbose_message(pvar, buf, LOG_LEVEL_VERBOSE); -#if 0 - if (!pvar->session_settings.CheckAuthListFirst || - pvar->ssh2_autologin == 1) { - // ܸ none ÅsµÄÔÁÄ«½Æ±ëÈÌÅAÀÛÌOCÖ - do_SSH2_authrequest(pvar); - } - else { - // TIS pÉ OK ð·^C}[ðd|¯é - if (pvar->ssh2_authmethod == SSH_AUTH_TIS && - pvar->auth_state.auth_dialog != NULL) { - SendMessage(pvar->auth_state.auth_dialog, WM_COMMAND, IDOK, 0); - } - } -#else - // ÐÆܸ none ÅsµÄÔÁÄ«½Æ±ëÈÌÅAÀÛÌOCÖ + if (pvar->ssh2_authmethod == SSH_AUTH_TIS && - (pvar->ask4passwd || pvar->ssh2_autologin) && + pvar->ask4passwd && + pvar->session_settings.CheckAuthListFirst && pvar->auth_state.auth_dialog != NULL) { + // challenge Å ask4passwd ÌÆ«AFØ\bhêð©®æ¾µ½ã + // ©®IÉ TIS _CAOðo·½ßÉ OK ð· SendMessage(pvar->auth_state.auth_dialog, WM_COMMAND, IDOK, 0); } else { + // ÐÆܸ none ÅsµÄÔÁÄ«½Æ±ëÈÌÅAÀÛÌOCÖ do_SSH2_authrequest(pvar); } -#endif + return TRUE; }