Finer granularity of config box handling. SSH packet logging should

now not show up when it's meaningless (in PuTTYtel, in pterm, and
in the middle of any non-SSH session), and the Connection panel is
inhibited completely in pterm.

[originally from svn r3146]
This commit is contained in:
Simon Tatham 2003-04-26 14:35:34 +00:00
Родитель 3a3e4d1818
Коммит 79426308bf
3 изменённых файлов: 62 добавлений и 36 удалений

Просмотреть файл

@ -849,14 +849,27 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
ctrl_settitle(b, "Session/Logging", "Options controlling session logging");
s = ctrl_getset(b, "Session/Logging", "main", NULL);
ctrl_radiobuttons(s, "Session logging:", NO_SHORTCUT, 1,
HELPCTX(logging_main),
dlg_stdradiobutton_handler, I(offsetof(Config, logtype)),
"Logging turned off completely", 't', I(LGTYP_NONE),
"Log printable output only", 'p', I(LGTYP_ASCII),
"Log all session output", 'l', I(LGTYP_DEBUG),
"Log SSH packet data", 's', I(LGTYP_PACKETS),
NULL);
/*
* The logging buttons change depending on whether SSH packet
* logging can sensibly be available.
*/
{
char *sshlogname;
if ((midsession && protocol == PROT_SSH) ||
(!midsession && backends[3].name != NULL))
sshlogname = "Log SSH packet data";
else
sshlogname = NULL; /* this will disable the button */
ctrl_radiobuttons(s, "Session logging:", NO_SHORTCUT, 1,
HELPCTX(logging_main),
dlg_stdradiobutton_handler,
I(offsetof(Config, logtype)),
"Logging turned off completely", 't', I(LGTYP_NONE),
"Log printable output only", 'p', I(LGTYP_ASCII),
"Log all session output", 'l', I(LGTYP_DEBUG),
sshlogname, 's', I(LGTYP_PACKETS),
NULL);
}
ctrl_filesel(s, "Log file name:", 'f',
NULL, TRUE, "Select session log file name",
HELPCTX(logging_filename),
@ -1237,36 +1250,42 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
ctrl_columns(s, 1, 100);
/*
* The Connection panel.
* The Connection panel. This doesn't show up if we're in a
* non-network utility such as pterm. We tell this by being
* passed a protocol < 0.
*/
ctrl_settitle(b, "Connection", "Options controlling the connection");
if (protocol >= 0) {
ctrl_settitle(b, "Connection", "Options controlling the connection");
if (!midsession) {
s = ctrl_getset(b, "Connection", "data", "Data to send to the server");
ctrl_editbox(s, "Terminal-type string", 't', 50,
HELPCTX(connection_termtype),
dlg_stdeditbox_handler, I(offsetof(Config,termtype)),
I(sizeof(((Config *)0)->termtype)));
ctrl_editbox(s, "Auto-login username", 'u', 50,
HELPCTX(connection_username),
dlg_stdeditbox_handler, I(offsetof(Config,username)),
I(sizeof(((Config *)0)->username)));
}
if (!midsession) {
s = ctrl_getset(b, "Connection", "data",
"Data to send to the server");
ctrl_editbox(s, "Terminal-type string", 't', 50,
HELPCTX(connection_termtype),
dlg_stdeditbox_handler, I(offsetof(Config,termtype)),
I(sizeof(((Config *)0)->termtype)));
ctrl_editbox(s, "Auto-login username", 'u', 50,
HELPCTX(connection_username),
dlg_stdeditbox_handler, I(offsetof(Config,username)),
I(sizeof(((Config *)0)->username)));
}
s = ctrl_getset(b, "Connection", "keepalive",
"Sending of null packets to keep session active");
ctrl_editbox(s, "Seconds between keepalives (0 to turn off)", 'k', 20,
HELPCTX(connection_keepalive),
dlg_stdeditbox_handler, I(offsetof(Config,ping_interval)),
I(-1));
s = ctrl_getset(b, "Connection", "keepalive",
"Sending of null packets to keep session active");
ctrl_editbox(s, "Seconds between keepalives (0 to turn off)", 'k', 20,
HELPCTX(connection_keepalive),
dlg_stdeditbox_handler, I(offsetof(Config,ping_interval)),
I(-1));
if (!midsession) {
s = ctrl_getset(b, "Connection", "tcp",
"Low-level TCP connection options");
ctrl_checkbox(s, "Disable Nagle's algorithm (TCP_NODELAY option)",
'n', HELPCTX(connection_nodelay),
dlg_stdcheckbox_handler,
I(offsetof(Config,tcp_nodelay)));
}
if (!midsession) {
s = ctrl_getset(b, "Connection", "tcp",
"Low-level TCP connection options");
ctrl_checkbox(s, "Disable Nagle's algorithm (TCP_NODELAY option)", 'n',
HELPCTX(connection_nodelay),
dlg_stdcheckbox_handler,
I(offsetof(Config,tcp_nodelay)));
}
if (!midsession) {

Просмотреть файл

@ -1969,7 +1969,7 @@ int do_config_box(const char *title, Config *cfg, int midsession)
window = gtk_dialog_new();
ctrlbox = ctrl_new_box();
setup_config_box(ctrlbox, &sl, midsession, 0);
setup_config_box(ctrlbox, &sl, midsession, cfg->protocol);
unix_setup_config_box(ctrlbox, midsession, window);
gtk_window_set_title(GTK_WINDOW(window), title);

Просмотреть файл

@ -18,7 +18,13 @@ Backend *select_backend(Config *cfg)
int cfgbox(Config *cfg)
{
return 1; /* no-op in pterm */
/*
* This is a no-op in pterm, except that we'll ensure the
* protocol is set to -1 to inhibit the useless Connection
* panel in the config box.
*/
cfg->protocol = -1;
return 1;
}
void cleanup_exit(int code)
@ -42,6 +48,7 @@ int main(int argc, char **argv)
extern void pty_pre_init(void); /* declared in pty.c */
cmdline_tooltype = TOOLTYPE_NONNETWORK;
default_protocol = -1;
pty_pre_init();