Support, on Unix only (so far), for OpenSSH-style generic proxying
[u/mdw/putty] / unix / uxcfg.c
index 9b13348..1bf58b7 100644 (file)
@@ -125,4 +125,48 @@ void unix_setup_config_box(struct controlbox *b, int midsession, void *win)
     ctrl_editbox(s, "Horizontal offset for shadow bold:", 'z', 20,
                 HELPCTX(no_help), dlg_stdeditbox_handler,
                  I(offsetof(Config,shadowboldoffset)), I(-1));
+
+    /*
+     * Unix supports a local-command proxy. This also means we must
+     * adjust the text on the `Telnet command' control.
+     */
+    s = ctrl_getset(b, "Connection/Proxy", "basics", "Proxy basics");
+    {
+       int i;
+       for (i = 0; i < s->ncontrols; i++) {
+           c = s->ctrls[i];
+           if (c->generic.type == CTRL_RADIO &&
+               c->generic.context.i == offsetof(Config, proxy_type)) {
+               assert(c->generic.handler == dlg_stdradiobutton_handler);
+               c->radio.nbuttons++;
+               c->radio.ncolumns++;
+               c->radio.buttons =
+                   sresize(c->radio.buttons, c->radio.nbuttons, char *);
+               c->radio.buttons[c->radio.nbuttons-1] =
+                   dupstr("Local");
+               c->radio.buttondata =
+                   sresize(c->radio.buttondata, c->radio.nbuttons, intorptr);
+               c->radio.buttondata[c->radio.nbuttons-1] = I(PROXY_CMD);
+               break;
+           }
+       }
+    }
+    s = ctrl_getset(b, "Connection/Proxy", "misc",
+                   "Miscellaneous proxy settings");
+    {
+       int i;
+       for (i = 0; i < s->ncontrols; i++) {
+           c = s->ctrls[i];
+           if (c->generic.type == CTRL_EDITBOX &&
+               c->generic.context.i ==
+               offsetof(Config, proxy_telnet_command)) {
+               assert(c->generic.handler == dlg_stdeditbox_handler);
+               sfree(c->generic.label);
+               c->generic.label = dupstr("Telnet command, or local"
+                                         " proxy command");
+               break;
+           }
+       }
+    }
+
 }