| 569 |
LPARAM lParam) |
LPARAM lParam) |
| 570 |
{ |
{ |
| 571 |
const int IDC_TIMER1 = 300; |
const int IDC_TIMER1 = 300; |
| 572 |
|
const int IDC_TIMER2 = 301; |
| 573 |
const int autologin_timeout = 10; // ミリ秒 |
const int autologin_timeout = 10; // ミリ秒 |
| 574 |
PTInstVar pvar; |
PTInstVar pvar; |
| 575 |
LOGFONT logfont; |
LOGFONT logfont; |
| 614 |
if (pvar->ssh2_autologin == 1) { |
if (pvar->ssh2_autologin == 1) { |
| 615 |
SetTimer(dlg, IDC_TIMER1, autologin_timeout, 0); |
SetTimer(dlg, IDC_TIMER1, autologin_timeout, 0); |
| 616 |
} |
} |
| 617 |
|
else { |
| 618 |
|
// サポートされているメソッドをチェックする。(2007.9.24 maya) |
| 619 |
|
// 設定が有効で、まだ取りに行っておらず、ユーザ名が確定している |
| 620 |
|
if (pvar->session_settings.CheckAuthListFirst && |
| 621 |
|
!pvar->tryed_ssh2_authlist) { |
| 622 |
|
// ダイアログのユーザ名を反映 |
| 623 |
|
if (pvar->auth_state.user == NULL) { |
| 624 |
|
pvar->auth_state.user = |
| 625 |
|
alloc_control_text(GetDlgItem(dlg, IDC_SSHUSERNAME)); |
| 626 |
|
} |
| 627 |
|
if (strlen(pvar->auth_state.user) > 0) { |
| 628 |
|
SetTimer(dlg, IDC_TIMER2, autologin_timeout, 0); |
| 629 |
|
} |
| 630 |
|
else { |
| 631 |
|
// ユーザ名の KILLFOCUS 時にチェックするため |
| 632 |
|
pvar->auth_state.user = NULL; |
| 633 |
|
} |
| 634 |
|
} |
| 635 |
|
} |
| 636 |
return FALSE; /* because we set the focus */ |
return FALSE; /* because we set the focus */ |
| 637 |
|
|
| 638 |
case WM_TIMER: |
case WM_TIMER: |
| 639 |
pvar = (PTInstVar) GetWindowLong(dlg, DWL_USER); |
pvar = (PTInstVar) GetWindowLong(dlg, DWL_USER); |
| 640 |
// 認証準備ができてから、認証データを送信する。早すぎると、落ちる。(2004.12.16 yutaka) |
// 認証準備ができてから、認証データを送信する。早すぎると、落ちる。(2004.12.16 yutaka) |
| 641 |
if (!(pvar->ssh_state.status_flags & STATUS_DONT_SEND_USER_NAME)) { |
if (wParam == IDC_TIMER1) { |
| 642 |
KillTimer(dlg, IDC_TIMER1); |
// 自動ログインのため |
| 643 |
SendMessage(dlg, WM_COMMAND, IDOK, 0); |
if (!(pvar->ssh_state.status_flags & STATUS_DONT_SEND_USER_NAME)) { |
| 644 |
|
KillTimer(dlg, IDC_TIMER1); |
| 645 |
|
SendMessage(dlg, WM_COMMAND, IDOK, 0); |
| 646 |
|
} |
| 647 |
} |
} |
| 648 |
return TRUE; |
else if (wParam == IDC_TIMER2) { |
| 649 |
|
// authlist を得るため |
| 650 |
|
if (!(pvar->ssh_state.status_flags & STATUS_DONT_SEND_USER_NAME)) { |
| 651 |
|
// WM_INITDIALOG 時点ではプロトコルバージョンが分からない |
| 652 |
|
if (SSHv2(pvar)) { |
| 653 |
|
KillTimer(dlg, IDC_TIMER2); |
| 654 |
|
|
| 655 |
|
// ユーザ名を変更させない |
| 656 |
|
EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAME), FALSE); |
| 657 |
|
|
| 658 |
|
// none を送る |
| 659 |
|
do_SSH2_userauth(pvar); |
| 660 |
|
} |
| 661 |
|
else { |
| 662 |
|
// SSH2 でない場合は none を送らない |
| 663 |
|
KillTimer(dlg, IDC_TIMER2); |
| 664 |
|
} |
| 665 |
|
} |
| 666 |
|
} |
| 667 |
|
return FALSE; |
| 668 |
|
|
| 669 |
case WM_COMMAND: |
case WM_COMMAND: |
| 670 |
pvar = (PTInstVar) GetWindowLong(dlg, DWL_USER); |
pvar = (PTInstVar) GetWindowLong(dlg, DWL_USER); |
| 689 |
|
|
| 690 |
return TRUE; |
return TRUE; |
| 691 |
|
|
| 692 |
|
case IDC_SSHUSERNAME: |
| 693 |
|
// ユーザ名がフォーカスを失ったとき (2007.9.29 maya) |
| 694 |
|
if (!(pvar->ssh_state.status_flags & STATUS_DONT_SEND_USER_NAME) && |
| 695 |
|
HIWORD(wParam) == EN_KILLFOCUS) { |
| 696 |
|
// 設定が有効でまだ取りに行っていないなら |
| 697 |
|
if (SSHv2(pvar) && |
| 698 |
|
pvar->session_settings.CheckAuthListFirst && |
| 699 |
|
!pvar->tryed_ssh2_authlist) { |
| 700 |
|
// ダイアログのユーザ名を反映 |
| 701 |
|
if (pvar->auth_state.user == NULL) { |
| 702 |
|
pvar->auth_state.user = |
| 703 |
|
alloc_control_text(GetDlgItem(dlg, IDC_SSHUSERNAME)); |
| 704 |
|
} |
| 705 |
|
|
| 706 |
|
// ユーザ名を変更させない |
| 707 |
|
EnableWindow(GetDlgItem(dlg, IDC_SSHUSERNAME), FALSE); |
| 708 |
|
|
| 709 |
|
// none を送る |
| 710 |
|
do_SSH2_userauth(pvar); |
| 711 |
|
return TRUE; |
| 712 |
|
} |
| 713 |
|
} |
| 714 |
|
|
| 715 |
|
return FALSE; |
| 716 |
|
|
| 717 |
case IDC_SSHUSEPASSWORD: |
case IDC_SSHUSEPASSWORD: |
| 718 |
case IDC_SSHUSERSA: |
case IDC_SSHUSERSA: |
| 719 |
case IDC_SSHUSERHOSTS: |
case IDC_SSHUSERHOSTS: |