X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/10068a0b6f3b17af077f501d3ad9cbb2fe332118..6c9dce7cf12d5696c91e72483a489a62783d6ec6:/config.c diff --git a/config.c b/config.c index 7085ffc1..99882a17 100644 --- a/config.c +++ b/config.c @@ -358,9 +358,11 @@ static void sessionsaver_handler(union control *ctrl, void *dlg, /* If at this point we have a valid session, go! */ if (*cfg2.host) { *cfg = cfg2; /* structure copy */ + cfg->remote_cmd_ptr = cfg->remote_cmd; /* nasty */ dlg_end(dlg, 1); } else dlg_beep(dlg); + return; } /* @@ -884,6 +886,18 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, "Always append to the end of it", I(LGXF_APN), "Ask the user every time", I(LGXF_ASK), NULL); + if ((midsession && protocol == PROT_SSH) || + (!midsession && backends[3].name != NULL)) { + s = ctrl_getset(b, "Session/Logging", "ssh", + "Options specific to SSH packet logging"); + ctrl_checkbox(s, "Omit known password fields", 'k', + HELPCTX(logging_ssh_omit_password), + dlg_stdcheckbox_handler, I(offsetof(Config,logomitpass))); + ctrl_checkbox(s, "Omit session data", 'd', + HELPCTX(logging_ssh_omit_data), + dlg_stdcheckbox_handler, I(offsetof(Config,logomitdata))); + } + /* * The Terminal panel. */ @@ -1036,6 +1050,12 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, ctrl_checkbox(s, "Disable remote-controlled character set configuration", 'r', HELPCTX(features_charset), dlg_stdcheckbox_handler, I(offsetof(Config,no_remote_charset))); + ctrl_checkbox(s, "Disable Arabic text shaping", + 'l', HELPCTX(features_arabicshaping), dlg_stdcheckbox_handler, + I(offsetof(Config, arabicshaping))); + ctrl_checkbox(s, "Disable bidirectional text display", + 'd', HELPCTX(features_bidi), dlg_stdcheckbox_handler, + I(offsetof(Config, bidi))); /* * The Window panel. @@ -1149,7 +1169,7 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, 'r', 100, HELPCTX(translation_codepage), codepage_handler, P(NULL), P(NULL)); - str = dupprintf("Adjust how %s displays line drawing characters", appname); + str = dupprintf("Adjust how %s handles line drawing characters", appname); s = ctrl_getset(b, "Window/Translation", "linedraw", str); sfree(str); ctrl_radiobuttons(s, "Handling of line drawing characters:", NO_SHORTCUT,1, @@ -1159,17 +1179,14 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, "Use Unicode line drawing code points",'u',I(VT_UNICODE), "Poor man's line drawing (+, - and |)",'p',I(VT_POORMAN), NULL); + ctrl_checkbox(s, "Copy and paste line drawing characters as lqqqk",'d', + HELPCTX(selection_linedraw), + dlg_stdcheckbox_handler, I(offsetof(Config,rawcnp))); /* * The Window/Selection panel. */ ctrl_settitle(b, "Window/Selection", "Options controlling copy and paste"); - - s = ctrl_getset(b, "Window/Selection", "trans", - "Translation of pasted characters"); - ctrl_checkbox(s, "Paste VT100 line drawing chars as lqqqk",'d', - HELPCTX(selection_linedraw), - dlg_stdcheckbox_handler, I(offsetof(Config,rawcnp))); s = ctrl_getset(b, "Window/Selection", "mouse", "Control use of mouse"); @@ -1217,6 +1234,9 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, s = ctrl_getset(b, "Window/Colours", "general", "General options for colour usage"); + ctrl_checkbox(s, "Allow terminal to specify ANSI colours", 'i', + HELPCTX(colours_ansi), + dlg_stdcheckbox_handler, I(offsetof(Config,ansi_colour))); ctrl_checkbox(s, "Bolded text is a different colour", 'b', HELPCTX(colours_bold), dlg_stdcheckbox_handler, I(offsetof(Config,bold_colour))); @@ -1264,10 +1284,44 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, HELPCTX(connection_termtype), dlg_stdeditbox_handler, I(offsetof(Config,termtype)), I(sizeof(((Config *)0)->termtype))); + ctrl_editbox(s, "Terminal speeds", 's', 50, + HELPCTX(connection_termspeed), + dlg_stdeditbox_handler, I(offsetof(Config,termspeed)), + I(sizeof(((Config *)0)->termspeed))); ctrl_editbox(s, "Auto-login username", 'u', 50, HELPCTX(connection_username), dlg_stdeditbox_handler, I(offsetof(Config,username)), I(sizeof(((Config *)0)->username))); + + ctrl_text(s, "Environment variables:", HELPCTX(telnet_environ)); + ctrl_columns(s, 2, 80, 20); + ed = (struct environ_data *) + ctrl_alloc(b, sizeof(struct environ_data)); + ed->varbox = ctrl_editbox(s, "Variable", 'v', 60, + HELPCTX(telnet_environ), + environ_handler, P(ed), P(NULL)); + ed->varbox->generic.column = 0; + ed->valbox = ctrl_editbox(s, "Value", 'l', 60, + HELPCTX(telnet_environ), + environ_handler, P(ed), P(NULL)); + ed->valbox->generic.column = 0; + ed->addbutton = ctrl_pushbutton(s, "Add", 'd', + HELPCTX(telnet_environ), + environ_handler, P(ed)); + ed->addbutton->generic.column = 1; + ed->rembutton = ctrl_pushbutton(s, "Remove", 'r', + HELPCTX(telnet_environ), + environ_handler, P(ed)); + ed->rembutton->generic.column = 1; + ctrl_columns(s, 1, 100); + ed->listbox = ctrl_listbox(s, NULL, NO_SHORTCUT, + HELPCTX(telnet_environ), + environ_handler, P(ed)); + ed->listbox->listbox.height = 3; + ed->listbox->listbox.ncols = 2; + ed->listbox->listbox.percentages = snewn(2, int); + ed->listbox->listbox.percentages[0] = 30; + ed->listbox->listbox.percentages[1] = 70; } s = ctrl_getset(b, "Connection", "keepalive", @@ -1284,6 +1338,10 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, 'n', HELPCTX(connection_nodelay), dlg_stdcheckbox_handler, I(offsetof(Config,tcp_nodelay))); + ctrl_checkbox(s, "Enable TCP keepalives (SO_KEEPALIVE option)", + 'p', HELPCTX(connection_tcpkeepalive), + dlg_stdcheckbox_handler, + I(offsetof(Config,tcp_keepalives))); } } @@ -1365,44 +1423,6 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, ctrl_settitle(b, "Connection/Telnet", "Options controlling Telnet connections"); - if (!midsession) { - s = ctrl_getset(b, "Connection/Telnet", "data", - "Data to send to the server"); - ctrl_editbox(s, "Terminal-speed string", 's', 50, - HELPCTX(telnet_termspeed), - dlg_stdeditbox_handler, I(offsetof(Config,termspeed)), - I(sizeof(((Config *)0)->termspeed))); - ctrl_text(s, "Environment variables:", HELPCTX(telnet_environ)); - ctrl_columns(s, 2, 80, 20); - ed = (struct environ_data *) - ctrl_alloc(b, sizeof(struct environ_data)); - ed->varbox = ctrl_editbox(s, "Variable", 'v', 60, - HELPCTX(telnet_environ), - environ_handler, P(ed), P(NULL)); - ed->varbox->generic.column = 0; - ed->valbox = ctrl_editbox(s, "Value", 'l', 60, - HELPCTX(telnet_environ), - environ_handler, P(ed), P(NULL)); - ed->valbox->generic.column = 0; - ed->addbutton = ctrl_pushbutton(s, "Add", 'd', - HELPCTX(telnet_environ), - environ_handler, P(ed)); - ed->addbutton->generic.column = 1; - ed->rembutton = ctrl_pushbutton(s, "Remove", 'r', - HELPCTX(telnet_environ), - environ_handler, P(ed)); - ed->rembutton->generic.column = 1; - ctrl_columns(s, 1, 100); - ed->listbox = ctrl_listbox(s, NULL, NO_SHORTCUT, - HELPCTX(telnet_environ), - environ_handler, P(ed)); - ed->listbox->listbox.height = 3; - ed->listbox->listbox.ncols = 2; - ed->listbox->listbox.percentages = snewn(2, int); - ed->listbox->listbox.percentages[0] = 30; - ed->listbox->listbox.percentages[1] = 70; - } - s = ctrl_getset(b, "Connection/Telnet", "protocol", "Telnet protocol adjustments"); @@ -1420,12 +1440,12 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, I(offsetof(Config, passive_telnet)), "Passive", I(1), "Active", I(0), NULL); } - ctrl_checkbox(s, "Keyboard sends telnet Backspace and Interrupt", 'k', + ctrl_checkbox(s, "Keyboard sends Telnet special commands", 'k', HELPCTX(telnet_specialkeys), dlg_stdcheckbox_handler, I(offsetof(Config,telnet_keyboard))); - ctrl_checkbox(s, "Return key sends telnet New Line instead of ^M", - NO_SHORTCUT, HELPCTX(telnet_newline), + ctrl_checkbox(s, "Return key sends Telnet New Line instead of ^M", + 'm', HELPCTX(telnet_newline), dlg_stdcheckbox_handler, I(offsetof(Config,telnet_newline))); } @@ -1440,10 +1460,6 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, s = ctrl_getset(b, "Connection/Rlogin", "data", "Data to send to the server"); - ctrl_editbox(s, "Terminal-speed string", 's', 50, - HELPCTX(rlogin_termspeed), - dlg_stdeditbox_handler, I(offsetof(Config,termspeed)), - I(sizeof(((Config *)0)->termspeed))); ctrl_editbox(s, "Local username:", 'l', 50, HELPCTX(rlogin_localuser), dlg_stdeditbox_handler, I(offsetof(Config,localusername)), @@ -1475,6 +1491,10 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, HELPCTX(ssh_nopty), dlg_stdcheckbox_handler, I(offsetof(Config,nopty))); + ctrl_checkbox(s, "Don't start a shell or command at all", 'n', + HELPCTX(ssh_noshell), + dlg_stdcheckbox_handler, + I(offsetof(Config,ssh_no_shell))); ctrl_checkbox(s, "Enable compression", 'e', HELPCTX(ssh_compress), dlg_stdcheckbox_handler, @@ -1486,7 +1506,7 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, "1 only", 'l', I(0), "1", '1', I(1), "2", '2', I(2), - "2 only", 'n', I(3), NULL); + "2 only", 'y', I(3), NULL); s = ctrl_getset(b, "Connection/SSH", "encryption", "Encryption options"); c = ctrl_draglist(s, "Encryption cipher selection policy:", 's', @@ -1494,7 +1514,7 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, cipherlist_handler, P(NULL)); c->listbox.height = 6; - ctrl_checkbox(s, "Enable non-standard use of single-DES in SSH 2", 'i', + ctrl_checkbox(s, "Enable legacy use of single-DES in SSH 2", 'i', HELPCTX(ssh_ciphers), dlg_stdcheckbox_handler, I(offsetof(Config,ssh2_des_cbc)));