X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/b804e1e5b96705b2f1d5bb31892a9353f9b7224c..c85623f918b8a6c639afc15604414f9b113bb20d:/windlg.c diff --git a/windlg.c b/windlg.c index 40880ec9..4924a741 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)" @@ -455,6 +457,10 @@ enum { IDCX_ABOUT = IDC_PROXYEXCLUDESTATIC, IDC_PROXYEXCLUDEEDIT, IDC_PROXYLOCALHOST, + IDC_PROXYDNSSTATIC, + IDC_PROXYDNSNO, + IDC_PROXYDNSAUTO, + IDC_PROXYDNSYES, IDC_PROXYUSERSTATIC, IDC_PROXYUSEREDIT, IDC_PROXYPASSSTATIC, @@ -616,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, @@ -885,6 +894,11 @@ char *help_context_cmd(int id) case IDC_PROXYEXCLUDEEDIT: case IDC_PROXYLOCALHOST: return "JI(`',`proxy.exclude')"; + case IDC_PROXYDNSSTATIC: + case IDC_PROXYDNSNO: + case IDC_PROXYDNSAUTO: + case IDC_PROXYDNSYES: + return "JI(`',`proxy.dns')"; case IDC_PROXYUSERSTATIC: case IDC_PROXYUSEREDIT: case IDC_PROXYPASSSTATIC: @@ -1016,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: @@ -1338,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); @@ -1352,6 +1372,10 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess) SetDlgItemInt(hwnd, IDC_PROXYPORTEDIT, cfg.proxy_port, FALSE); 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 : + IDC_PROXYDNSAUTO); SetDlgItemText(hwnd, IDC_PROXYTELNETCMDEDIT, cfg.proxy_telnet_command); SetDlgItemText(hwnd, IDC_PROXYUSEREDIT, cfg.proxy_username); SetDlgItemText(hwnd, IDC_PROXYPASSEDIT, cfg.proxy_password); @@ -1853,7 +1877,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) } if (panel == proxypanelstart) { - /* The Proxy panel. Accelerators used: [acgoh] ntslypeuwmv */ + /* The Proxy panel. Accelerators used: [acgoh] ntslypeuwmvxd */ struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); if (dlgtype == 0) { @@ -1873,6 +1897,11 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) IDC_PROXYEXCLUDEEDIT, 100, NULL); checkbox(&cp, "Consider pro&xying local host connections", IDC_PROXYLOCALHOST); + radioline(&cp, "Do &DNS name lookup at proxy end:", + IDC_PROXYDNSSTATIC, 3, + "No", IDC_PROXYDNSNO, + "Auto", IDC_PROXYDNSAUTO, + "Yes", IDC_PROXYDNSYES, NULL); staticedit(&cp, "&Username", IDC_PROXYUSERSTATIC, IDC_PROXYUSEREDIT, 60); staticpassedit(&cp, "Pass&word", IDC_PROXYPASSSTATIC, @@ -2028,8 +2057,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", @@ -3034,6 +3067,17 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg, cfg.even_proxy_localhost = IsDlgButtonChecked(hwnd, IDC_PROXYLOCALHOST); break; + case IDC_PROXYDNSNO: + case IDC_PROXYDNSAUTO: + case IDC_PROXYDNSYES: + 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; + } + break; case IDC_PROXYTYPENONE: case IDC_PROXYTYPEHTTP: case IDC_PROXYTYPESOCKS: @@ -3506,6 +3550,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) { @@ -3922,9 +3976,7 @@ int askappend(void *frontend, char *filename) "or Cancel to disable logging."; char message[sizeof(msgtemplate) + FILENAME_MAX]; int mbret; - if (cfg.logxfovr != LGXF_ASK) { - return ((cfg.logxfovr == LGXF_OVR) ? 2 : 1); - } + sprintf(message, msgtemplate, FILENAME_MAX, filename); mbret = MessageBox(NULL, message, mbtitle,