PuTTY can now detect when one of the Pageant keys it tries matches
[sgt/putty] / windlg.c
index c3f13b7..51a9756 100644 (file)
--- a/windlg.c
+++ b/windlg.c
@@ -437,6 +437,7 @@ enum { IDCX_ABOUT =
     IDC_TPASSIVE,
     IDC_TACTIVE,
     IDC_TELNETKEY,
+    IDC_TELNETRET,
     telnetpanelend,
 
     rloginpanelstart,
@@ -545,6 +546,7 @@ enum { IDCX_ABOUT =
     IDC_X11_DISPSTATIC,
     IDC_X11_DISPLAY,
     IDC_LPORT_ALL,
+    IDC_RPORT_ALL,
     IDC_PFWDSTATIC,
     IDC_PFWDSTATIC2,
     IDC_PFWDREMOVE,
@@ -802,6 +804,8 @@ char *help_context_cmd(int id)
         return "JI(`',`telnet.passive')";
       case IDC_TELNETKEY:
         return "JI(`',`telnet.specialkeys')";
+      case IDC_TELNETRET:
+        return "JI(`',`telnet.newline')";
 
       case IDC_R_TSSTATIC:
       case IDC_R_TSEDIT:
@@ -896,7 +900,6 @@ char *help_context_cmd(int id)
       case IDC_X11_DISPSTATIC:
       case IDC_X11_DISPLAY:
         return "JI(`',`ssh.tunnels.x11')";
-      case IDC_LPORT_ALL:
       case IDC_PFWDSTATIC:
       case IDC_PFWDSTATIC2:
       case IDC_PFWDREMOVE:
@@ -909,6 +912,9 @@ char *help_context_cmd(int id)
       case IDC_PFWDLOCAL:
       case IDC_PFWDREMOTE:
         return "JI(`',`ssh.tunnels.portfwd')";
+      case IDC_LPORT_ALL:
+      case IDC_RPORT_ALL:
+        return "JI(`',`ssh.tunnels.portfwd.localhost')";
 
       default:
         return NULL;
@@ -966,6 +972,7 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess)
     CheckDlgButton(hwnd, IDC_COMPOSEKEY, cfg.compose_key);
     CheckDlgButton(hwnd, IDC_CTRLALTKEYS, cfg.ctrlaltkeys);
     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);
@@ -1171,6 +1178,7 @@ static void init_dlg_ctrls(HWND hwnd, int keepsess)
     SetDlgItemText(hwnd, IDC_X11_DISPLAY, cfg.x11_display);
 
     CheckDlgButton(hwnd, IDC_LPORT_ALL, cfg.lport_acceptall);
+    CheckDlgButton(hwnd, IDC_RPORT_ALL, cfg.rport_acceptall);
     CheckRadioButton(hwnd, IDC_PFWDLOCAL, IDC_PFWDREMOTE, IDC_PFWDLOCAL);
 }
 
@@ -1576,6 +1584,8 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
            beginbox(&cp, "Adjust telnet session.", IDC_BOX_CONNECTION1);
            checkbox(&cp, "Keyboard sends telnet Backspace and Interrupt",
                     IDC_TELNETKEY);
+           checkbox(&cp, "Return key sends telnet New Line instead of ^M",
+                    IDC_TELNETRET);
            endbox(&cp);
        }
        beginbox(&cp, "Sending of null packets to keep session active",
@@ -1616,6 +1626,8 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
                      IDC_TACTIVE, NULL);
            checkbox(&cp, "&Keyboard sends telnet Backspace and Interrupt",
                     IDC_TELNETKEY);
+           checkbox(&cp, "Return key sends telnet New Line instead of ^M",
+                    IDC_TELNETRET);
            endbox(&cp);
        }
     }
@@ -1694,7 +1706,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
     }
 
     if (panel == tunnelspanelstart) {
-       /* The Tunnels panel. Accelerators used: [acgo] deilmrstx */
+       /* The Tunnels panel. Accelerators used: [acgo] deilmrsthx */
        struct ctlpos cp;
        ctlposinit(&cp, hwnd, 80, 3, 13);
        if (dlgtype == 0) {
@@ -1706,7 +1718,10 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
                      IDC_X11_DISPLAY, 50, NULL);
            endbox(&cp);
            beginbox(&cp, "Port forwarding", IDC_BOX_TUNNELS2);
-           checkbox(&cp, "Local ports accept connections from o&ther hosts", IDC_LPORT_ALL);
+           checkbox(&cp, "Local ports accept connections from o&ther hosts",
+                    IDC_LPORT_ALL);
+           checkbox(&cp, "Remote ports do t&he same (SSH v2 only)",
+                    IDC_RPORT_ALL);
            staticbtn(&cp, "Forwarded ports:", IDC_PFWDSTATIC,
                      "&Remove", IDC_PFWDREMOVE);
            fwdsetter(&cp, IDC_PFWDLIST,
@@ -1715,7 +1730,8 @@ static void create_controls(HWND hwnd, int dlgtype, int panel)
                      "Dest&ination", IDC_DPORTSTATIC, IDC_DPORTEDIT,
                      "A&dd", IDC_PFWDADD);
            bareradioline(&cp, 2,
-                         "&Local", IDC_PFWDLOCAL, "Re&mote", IDC_PFWDREMOTE, NULL);
+                         "&Local", IDC_PFWDLOCAL,
+                         "Re&mote", IDC_PFWDREMOTE, NULL);
            endbox(&cp);
 
        }
@@ -2325,6 +2341,12 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg,
                        cfg.telnet_keyboard =
                        IsDlgButtonChecked(hwnd, IDC_TELNETKEY);
                break;
+             case IDC_TELNETRET:
+               if (HIWORD(wParam) == BN_CLICKED ||
+                   HIWORD(wParam) == BN_DOUBLECLICKED)
+                       cfg.telnet_newline =
+                       IsDlgButtonChecked(hwnd, IDC_TELNETRET);
+               break;
              case IDC_WRAPMODE:
                if (HIWORD(wParam) == BN_CLICKED ||
                    HIWORD(wParam) == BN_DOUBLECLICKED)
@@ -3007,14 +3029,20 @@ static int GenericMainDlgProc(HWND hwnd, UINT msg,
              case IDC_X11_FORWARD:
                if (HIWORD(wParam) == BN_CLICKED ||
                    HIWORD(wParam) == BN_DOUBLECLICKED)
-                       cfg.x11_forward =
-                       IsDlgButtonChecked(hwnd, IDC_X11_FORWARD);
+                   cfg.x11_forward =
+                   IsDlgButtonChecked(hwnd, IDC_X11_FORWARD);
                break;
              case IDC_LPORT_ALL:
                if (HIWORD(wParam) == BN_CLICKED ||
                    HIWORD(wParam) == BN_DOUBLECLICKED)
-                       cfg.lport_acceptall =
-                       IsDlgButtonChecked(hwnd, IDC_LPORT_ALL);
+                   cfg.lport_acceptall =
+                   IsDlgButtonChecked(hwnd, IDC_LPORT_ALL);
+               break;
+             case IDC_RPORT_ALL:
+               if (HIWORD(wParam) == BN_CLICKED ||
+                   HIWORD(wParam) == BN_DOUBLECLICKED)
+                   cfg.rport_acceptall =
+                   IsDlgButtonChecked(hwnd, IDC_RPORT_ALL);
                break;
              case IDC_X11_DISPLAY:
                if (HIWORD(wParam) == EN_CHANGE)