X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/bf61b5660299e88399304cd8eb9bacddc73a765b..5ecd7ad009cc5148c67b9d665f79a64083fae254:/windlg.c diff --git a/windlg.c b/windlg.c index cb19e76d..4a771719 100644 --- a/windlg.c +++ b/windlg.c @@ -27,6 +27,8 @@ static int requested_help; static struct prefslist cipherlist; +extern Config cfg; /* defined in window.c */ + struct sesslist sesslist; /* exported to window.c */ #define PRINTER_DISABLED_STRING "None (printing disabled)" @@ -620,6 +622,9 @@ enum { IDCX_ABOUT = IDC_X11_FORWARD, IDC_X11_DISPSTATIC, IDC_X11_DISPLAY, + IDC_X11AUTHSTATIC, + IDC_X11MIT, + IDC_X11XDM, IDC_LPORT_ALL, IDC_RPORT_ALL, IDC_PFWDSTATIC, @@ -1025,6 +1030,10 @@ char *help_context_cmd(int id) case IDC_X11_DISPSTATIC: case IDC_X11_DISPLAY: return "JI(`',`ssh.tunnels.x11')"; + case IDC_X11AUTHSTATIC: + case IDC_X11MIT: + case IDC_X11XDM: + return "JI(`',`ssh.tunnels.x11auth')"; case IDC_PFWDSTATIC: case IDC_PFWDSTATIC2: case IDC_PFWDREMOVE: @@ -1127,11 +1136,11 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess) CheckDlgButton(hwnd, IDC_TELNETKEY, cfg.telnet_keyboard); CheckDlgButton(hwnd, IDC_TELNETRET, cfg.telnet_newline); CheckRadioButton(hwnd, IDC_ECHOBACKEND, IDC_ECHONO, - cfg.localecho == LD_BACKEND ? IDC_ECHOBACKEND : - cfg.localecho == LD_YES ? IDC_ECHOYES : IDC_ECHONO); + cfg.localecho == AUTO ? IDC_ECHOBACKEND : + cfg.localecho == FORCE_ON ? IDC_ECHOYES : IDC_ECHONO); CheckRadioButton(hwnd, IDC_EDITBACKEND, IDC_EDITNO, - cfg.localedit == LD_BACKEND ? IDC_EDITBACKEND : - cfg.localedit == LD_YES ? IDC_EDITYES : IDC_EDITNO); + cfg.localedit == AUTO ? IDC_EDITBACKEND : + cfg.localedit == FORCE_ON ? IDC_EDITYES : IDC_EDITNO); SetDlgItemText(hwnd, IDC_ANSWEREDIT, cfg.answerback); CheckDlgButton(hwnd, IDC_ALWAYSONTOP, cfg.alwaysontop); CheckDlgButton(hwnd, IDC_FULLSCREENONALTENTER, cfg.fullscreenonaltenter); @@ -1167,7 +1176,7 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess) CheckDlgButton(hwnd, IDC_BLINKTEXT, cfg.blinktext); SetDlgItemText(hwnd, IDC_WINEDIT, cfg.wintitle); - CheckDlgButton(hwnd, IDC_WINNAME, cfg.win_name_always); + CheckDlgButton(hwnd, IDC_WINNAME, !cfg.win_name_always); CheckDlgButton(hwnd, IDC_HIDEMOUSE, cfg.hide_mouseptr); CheckDlgButton(hwnd, IDC_SUNKENEDGE, cfg.sunken_edge); SetDlgItemInt(hwnd, IDC_WINBEDIT, cfg.window_border, FALSE); @@ -1183,9 +1192,9 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess) cfg.resize_action == RESIZE_EITHER ? IDC_RESIZEEITHER : IDC_RESIZENONE); CheckRadioButton(hwnd, IDC_COEALWAYS, IDC_COENORMAL, - cfg.close_on_exit == COE_NORMAL ? IDC_COENORMAL : + cfg.close_on_exit == AUTO ? IDC_COENORMAL : cfg.close_on_exit == - COE_NEVER ? IDC_COENEVER : IDC_COEALWAYS); + FORCE_OFF ? IDC_COENEVER : IDC_COEALWAYS); CheckDlgButton(hwnd, IDC_CLOSEWARN, cfg.warn_on_close); SetDlgItemText(hwnd, IDC_TTEDIT, cfg.termtype); @@ -1347,6 +1356,8 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess) CheckDlgButton(hwnd, IDC_X11_FORWARD, cfg.x11_forward); SetDlgItemText(hwnd, IDC_X11_DISPLAY, cfg.x11_display); + CheckRadioButton(hwnd, IDC_X11MIT, IDC_X11XDM, + cfg.x11_auth == X11_MIT ? IDC_X11MIT : IDC_X11XDM); CheckDlgButton(hwnd, IDC_LPORT_ALL, cfg.lport_acceptall); CheckDlgButton(hwnd, IDC_RPORT_ALL, cfg.rport_acceptall); @@ -1362,8 +1373,8 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess) SetDlgItemText(hwnd, IDC_PROXYEXCLUDEEDIT, cfg.proxy_exclude_list); CheckDlgButton(hwnd, IDC_PROXYLOCALHOST, cfg.even_proxy_localhost); CheckRadioButton(hwnd, IDC_PROXYDNSNO, IDC_PROXYDNSYES, - cfg.proxy_dns == PROXYDNS_NO ? IDC_PROXYDNSNO : - cfg.proxy_dns == PROXYDNS_YES ? IDC_PROXYDNSYES : + cfg.proxy_dns == FORCE_OFF ? IDC_PROXYDNSNO : + cfg.proxy_dns == FORCE_ON ? IDC_PROXYDNSYES : IDC_PROXYDNSAUTO); SetDlgItemText(hwnd, IDC_PROXYTELNETCMDEDIT, cfg.proxy_telnet_command); SetDlgItemText(hwnd, IDC_PROXYUSEREDIT, cfg.proxy_username); @@ -1377,50 +1388,50 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess) SendDlgItemMessage(hwnd, IDC_BUGD_IGNORE1, CB_ADDSTRING, 0, (LPARAM)"Off"); SendDlgItemMessage(hwnd, IDC_BUGD_IGNORE1, CB_ADDSTRING, 0, (LPARAM)"On"); SendDlgItemMessage(hwnd, IDC_BUGD_IGNORE1, CB_SETCURSEL, - cfg.sshbug_ignore1 == BUG_ON ? 2 : - cfg.sshbug_ignore1 == BUG_OFF ? 1 : 0, 0); + cfg.sshbug_ignore1 == FORCE_ON ? 2 : + cfg.sshbug_ignore1 == FORCE_OFF ? 1 : 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_RESETCONTENT, 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_ADDSTRING, 0, (LPARAM)"Auto"); SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_ADDSTRING, 0, (LPARAM)"Off"); SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_ADDSTRING, 0, (LPARAM)"On"); SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_SETCURSEL, - cfg.sshbug_plainpw1 == BUG_ON ? 2 : - cfg.sshbug_plainpw1 == BUG_OFF ? 1 : 0, 0); + cfg.sshbug_plainpw1 == FORCE_ON ? 2 : + cfg.sshbug_plainpw1 == FORCE_OFF ? 1 : 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_RESETCONTENT, 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_ADDSTRING, 0, (LPARAM)"Auto"); SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_ADDSTRING, 0, (LPARAM)"Off"); SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_ADDSTRING, 0, (LPARAM)"On"); SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_SETCURSEL, - cfg.sshbug_rsa1 == BUG_ON ? 2 : - cfg.sshbug_rsa1 == BUG_OFF ? 1 : 0, 0); + cfg.sshbug_rsa1 == FORCE_ON ? 2 : + cfg.sshbug_rsa1 == FORCE_OFF ? 1 : 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_RESETCONTENT, 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_ADDSTRING, 0, (LPARAM)"Auto"); SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_ADDSTRING, 0, (LPARAM)"Off"); SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_ADDSTRING, 0, (LPARAM)"On"); SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_SETCURSEL, - cfg.sshbug_hmac2 == BUG_ON ? 2 : - cfg.sshbug_hmac2 == BUG_OFF ? 1 : 0, 0); + cfg.sshbug_hmac2 == FORCE_ON ? 2 : + cfg.sshbug_hmac2 == FORCE_OFF ? 1 : 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_RESETCONTENT, 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_ADDSTRING, 0, (LPARAM)"Auto"); SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_ADDSTRING, 0, (LPARAM)"Off"); SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_ADDSTRING, 0, (LPARAM)"On"); SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_SETCURSEL, - cfg.sshbug_derivekey2 == BUG_ON ? 2 : - cfg.sshbug_derivekey2 == BUG_OFF ? 1 : 0, 0); + cfg.sshbug_derivekey2 == FORCE_ON ? 2 : + cfg.sshbug_derivekey2 == FORCE_OFF ? 1 : 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_RESETCONTENT, 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_ADDSTRING, 0, (LPARAM)"Auto"); SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_ADDSTRING, 0, (LPARAM)"Off"); SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_ADDSTRING, 0, (LPARAM)"On"); SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_SETCURSEL, - cfg.sshbug_rsapad2 == BUG_ON ? 2 : - cfg.sshbug_rsapad2 == BUG_OFF ? 1 : 0, 0); + cfg.sshbug_rsapad2 == FORCE_ON ? 2 : + cfg.sshbug_rsapad2 == FORCE_OFF ? 1 : 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_RESETCONTENT, 0, 0); SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_ADDSTRING, 0, (LPARAM)"Auto"); SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_ADDSTRING, 0, (LPARAM)"Off"); SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_ADDSTRING, 0, (LPARAM)"On"); SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_SETCURSEL, - cfg.sshbug_dhgex2 == BUG_ON ? 2 : - cfg.sshbug_dhgex2 == BUG_OFF ? 1 : 0, 0); + cfg.sshbug_dhgex2 == FORCE_ON ? 2 : + cfg.sshbug_dhgex2 == FORCE_OFF ? 1 : 0, 0); } struct treeview_faff { @@ -1709,7 +1720,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) IDC_BOX_APPEARANCE3); multiedit(&cp, "Window &title:", IDC_WINTITLE, IDC_WINEDIT, 100, NULL); - checkbox(&cp, "Avoid ever using &icon title", IDC_WINNAME); + checkbox(&cp, "Separate window and &icon titles", IDC_WINNAME); endbox(&cp); beginbox(&cp, "Adjust the use of the mouse pointer", IDC_BOX_APPEARANCE4); @@ -1954,7 +1965,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) } if (panel == sshpanelstart) { - /* The SSH panel. Accelerators used: [acgoh] r pe12ni sd */ + /* The SSH panel. Accelerators used: [acgoh] r pel12n sud i */ struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); if (dlgtype == 0) { @@ -1975,10 +1986,11 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) "2 o&nly", IDC_SSHPROT2ONLY, NULL); endbox(&cp); beginbox(&cp, "Encryption options", IDC_BOX_SSH3); + /* Adds accelerators: ud */ prefslist(&cipherlist, &cp, "Encryption cipher &selection policy:", IDC_CIPHERSTATIC2, IDC_CIPHERLIST, IDC_CIPHERUP, IDC_CIPHERDN); - checkbox(&cp, "Enable non-standard use of single-&DES in SSH 2", + checkbox(&cp, "Enable non-standard use of s&ingle-DES in SSH 2", IDC_SSH2DES); endbox(&cp); } @@ -2011,7 +2023,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) } if (panel == sshbugspanelstart) { - /* The SSH bugs panel. Accelerators used: [acgoh] isrmep */ + /* The SSH bugs panel. Accelerators used: [acgoh] isrmepd */ struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); if (dlgtype == 0) { @@ -2038,7 +2050,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) } if (panel == tunnelspanelstart) { - /* The Tunnels panel. Accelerators used: [acgoh] deilmrstxp */ + /* The Tunnels panel. Accelerators used: [acgoh] exu tprsdilm */ struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); if (dlgtype == 0) { @@ -2046,8 +2058,12 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) IDC_TITLE_TUNNELS); beginbox(&cp, "X11 forwarding", IDC_BOX_TUNNELS1); checkbox(&cp, "&Enable X11 forwarding", IDC_X11_FORWARD); - multiedit(&cp, "&X display location", IDC_X11_DISPSTATIC, - IDC_X11_DISPLAY, 50, NULL); + staticedit(&cp, "&X display location", IDC_X11_DISPSTATIC, + IDC_X11_DISPLAY, 50); + radioline(&cp, "Remote X11 a&uthentication protocol", + IDC_X11AUTHSTATIC, 2, + "MIT-Magic-Cookie-1", IDC_X11MIT, + "XDM-Authorization-1", IDC_X11XDM, NULL); endbox(&cp); beginbox(&cp, "Port forwarding", IDC_BOX_TUNNELS2); checkbox(&cp, "Local ports accept connections from o&ther hosts", @@ -2662,11 +2678,11 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg, if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { if (LOWORD(wParam) == IDC_ECHOBACKEND) - cfg.localecho = LD_BACKEND; + cfg.localecho = AUTO; if (LOWORD(wParam) == IDC_ECHOYES) - cfg.localecho = LD_YES; + cfg.localecho = FORCE_ON; if (LOWORD(wParam) == IDC_ECHONO) - cfg.localecho = LD_NO; + cfg.localecho = FORCE_OFF; } break; case IDC_EDITBACKEND: @@ -2675,11 +2691,11 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg, if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { if (LOWORD(wParam) == IDC_EDITBACKEND) - cfg.localedit = LD_BACKEND; + cfg.localedit = AUTO; if (LOWORD(wParam) == IDC_EDITYES) - cfg.localedit = LD_YES; + cfg.localedit = FORCE_ON; if (LOWORD(wParam) == IDC_EDITNO) - cfg.localedit = LD_NO; + cfg.localedit = FORCE_OFF; } break; case IDC_ANSWEREDIT: @@ -2894,7 +2910,7 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg, if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) cfg.win_name_always = - IsDlgButtonChecked(hwnd, IDC_WINNAME); + !IsDlgButtonChecked(hwnd, IDC_WINNAME); break; case IDC_HIDEMOUSE: if (HIWORD(wParam) == BN_CLICKED || @@ -2976,10 +2992,10 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg, HIWORD(wParam) == BN_DOUBLECLICKED) { cfg.close_on_exit = IsDlgButtonChecked(hwnd, - IDC_COEALWAYS) ? COE_ALWAYS : + IDC_COEALWAYS) ? FORCE_ON : IsDlgButtonChecked(hwnd, - IDC_COENEVER) ? COE_NEVER : - COE_NORMAL; + IDC_COENEVER) ? FORCE_OFF : + AUTO; } break; case IDC_CLOSEWARN: @@ -3058,9 +3074,9 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg, if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { cfg.proxy_dns = - IsDlgButtonChecked(hwnd, IDC_PROXYDNSNO) ? PROXYDNS_NO : - IsDlgButtonChecked(hwnd, IDC_PROXYDNSYES) ? PROXYDNS_YES : - PROXYDNS_AUTO; + IsDlgButtonChecked(hwnd, IDC_PROXYDNSNO) ? FORCE_OFF : + IsDlgButtonChecked(hwnd, IDC_PROXYDNSYES) ? FORCE_ON : + AUTO; } break; case IDC_PROXYTYPENONE: @@ -3318,7 +3334,7 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg, of.lStructSize = sizeof(of); #endif of.hwndOwner = hwnd; - of.lpstrFilter = "PuTTY Private Key Files\0*.PPK\0" + of.lpstrFilter = "PuTTY Private Key Files (*.ppk)\0*.PPK\0" "AllFiles\0*\0\0\0"; of.lpstrCustomFilter = NULL; of.nFilterIndex = 1; @@ -3535,6 +3551,16 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg, GetDlgItemText(hwnd, IDC_X11_DISPLAY, cfg.x11_display, sizeof(cfg.x11_display) - 1); break; + case IDC_X11MIT: + case IDC_X11XDM: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) { + if (IsDlgButtonChecked(hwnd, IDC_X11MIT)) + cfg.x11_auth = X11_MIT; + else if (IsDlgButtonChecked(hwnd, IDC_X11XDM)) + cfg.x11_auth = X11_XDM; + } + break; case IDC_PFWDADD: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) { @@ -3623,56 +3649,56 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg, if (HIWORD(wParam) == CBN_SELCHANGE) { int index = SendDlgItemMessage(hwnd, IDC_BUGD_IGNORE1, CB_GETCURSEL, 0, 0); - cfg.sshbug_ignore1 = (index == 0 ? BUG_AUTO : - index == 1 ? BUG_OFF : BUG_ON); + cfg.sshbug_ignore1 = (index == 0 ? AUTO : + index == 1 ? FORCE_OFF : FORCE_ON); } break; case IDC_BUGD_PLAINPW1: if (HIWORD(wParam) == CBN_SELCHANGE) { int index = SendDlgItemMessage(hwnd, IDC_BUGD_PLAINPW1, CB_GETCURSEL, 0, 0); - cfg.sshbug_plainpw1 = (index == 0 ? BUG_AUTO : - index == 1 ? BUG_OFF : BUG_ON); + cfg.sshbug_plainpw1 = (index == 0 ? AUTO : + index == 1 ? FORCE_OFF : FORCE_ON); } break; case IDC_BUGD_RSA1: if (HIWORD(wParam) == CBN_SELCHANGE) { int index = SendDlgItemMessage(hwnd, IDC_BUGD_RSA1, CB_GETCURSEL, 0, 0); - cfg.sshbug_rsa1 = (index == 0 ? BUG_AUTO : - index == 1 ? BUG_OFF : BUG_ON); + cfg.sshbug_rsa1 = (index == 0 ? AUTO : + index == 1 ? FORCE_OFF : FORCE_ON); } break; case IDC_BUGD_HMAC2: if (HIWORD(wParam) == CBN_SELCHANGE) { int index = SendDlgItemMessage(hwnd, IDC_BUGD_HMAC2, CB_GETCURSEL, 0, 0); - cfg.sshbug_hmac2 = (index == 0 ? BUG_AUTO : - index == 1 ? BUG_OFF : BUG_ON); + cfg.sshbug_hmac2 = (index == 0 ? AUTO : + index == 1 ? FORCE_OFF : FORCE_ON); } break; case IDC_BUGD_DERIVEKEY2: if (HIWORD(wParam) == CBN_SELCHANGE) { int index = SendDlgItemMessage(hwnd, IDC_BUGD_DERIVEKEY2, CB_GETCURSEL, 0, 0); - cfg.sshbug_derivekey2 = (index == 0 ? BUG_AUTO : - index == 1 ? BUG_OFF : BUG_ON); + cfg.sshbug_derivekey2 = (index == 0 ? AUTO : + index == 1 ? FORCE_OFF:FORCE_ON); } break; case IDC_BUGD_RSAPAD2: if (HIWORD(wParam) == CBN_SELCHANGE) { int index = SendDlgItemMessage(hwnd, IDC_BUGD_RSAPAD2, CB_GETCURSEL, 0, 0); - cfg.sshbug_rsapad2 = (index == 0 ? BUG_AUTO : - index == 1 ? BUG_OFF : BUG_ON); + cfg.sshbug_rsapad2 = (index == 0 ? AUTO : + index == 1 ? FORCE_OFF : FORCE_ON); } break; case IDC_BUGD_DHGEX2: if (HIWORD(wParam) == CBN_SELCHANGE) { int index = SendDlgItemMessage(hwnd, IDC_BUGD_DHGEX2, CB_GETCURSEL, 0, 0); - cfg.sshbug_dhgex2 = (index == 0 ? BUG_AUTO : - index == 1 ? BUG_OFF : BUG_ON); + cfg.sshbug_dhgex2 = (index == 0 ? AUTO : + index == 1 ? FORCE_OFF : FORCE_ON); } break; }