X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/cecb13f6928246c1fc9f49c5613938b97b86da3d..055817455466c8eb60392f30bb7c689763962e17:/settings.c diff --git a/settings.c b/settings.c index 749760a8..4a93400e 100644 --- a/settings.c +++ b/settings.c @@ -12,6 +12,7 @@ */ struct keyval { char *s; int v; }; +/* The cipher order given here is the default order. */ static const struct keyval ciphernames[] = { { "aes", CIPHER_AES }, { "blowfish", CIPHER_BLOWFISH }, @@ -20,6 +21,13 @@ static const struct keyval ciphernames[] = { { "des", CIPHER_DES } }; +static const struct keyval kexnames[] = { + { "dh-gex-sha1", KEX_DHGEX }, + { "dh-group14-sha1", KEX_DHGROUP14 }, + { "dh-group1-sha1", KEX_DHGROUP1 }, + { "WARN", KEX_WARN } +}; + static void gpps(void *handle, const char *name, const char *def, char *val, int len) { @@ -167,6 +175,7 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg) write_setting_filename(sesskey, "LogFileName", cfg->logfilename); write_setting_i(sesskey, "LogType", cfg->logtype); write_setting_i(sesskey, "LogFileClash", cfg->logxfovr); + write_setting_i(sesskey, "LogFlush", cfg->logflush); write_setting_i(sesskey, "SSHLogOmitPasswords", cfg->logomitpass); write_setting_i(sesskey, "SSHLogOmitData", cfg->logomitdata); p = "raw"; @@ -188,6 +197,9 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg) write_setting_s(sesskey, "TerminalType", cfg->termtype); write_setting_s(sesskey, "TerminalSpeed", cfg->termspeed); + /* Address family selection */ + write_setting_i(sesskey, "AddressFamily", cfg->addressfamily); + /* proxy settings */ write_setting_s(sesskey, "ProxyExcludeList", cfg->proxy_exclude_list); write_setting_i(sesskey, "ProxyDNS", (cfg->proxy_dns+2)%3); @@ -226,6 +238,9 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg) write_setting_i(sesskey, "ChangeUsername", cfg->change_username); wprefs(sesskey, "Cipher", ciphernames, CIPHER_MAX, cfg->ssh_cipherlist); + wprefs(sesskey, "KEX", kexnames, KEX_MAX, cfg->ssh_kexlist); + write_setting_i(sesskey, "RekeyTime", cfg->ssh_rekey_time); + write_setting_s(sesskey, "RekeyBytes", cfg->ssh_rekey_data); write_setting_i(sesskey, "AuthTIS", cfg->try_tis_auth); write_setting_i(sesskey, "AuthKI", cfg->try_ki_auth); write_setting_i(sesskey, "SshNoShell", cfg->ssh_no_shell); @@ -357,7 +372,6 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg) write_setting_i(sesskey, "BugHMAC2", 2-cfg->sshbug_hmac2); write_setting_i(sesskey, "BugDeriveKey2", 2-cfg->sshbug_derivekey2); write_setting_i(sesskey, "BugRSAPad2", 2-cfg->sshbug_rsapad2); - write_setting_i(sesskey, "BugDHGEx2", 2-cfg->sshbug_dhgex2); write_setting_i(sesskey, "BugPKSessID2", 2-cfg->sshbug_pksessid2); write_setting_i(sesskey, "StampUtmp", cfg->stamp_utmp); write_setting_i(sesskey, "LoginShell", cfg->login_shell); @@ -395,6 +409,7 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg) gppfile(sesskey, "LogFileName", &cfg->logfilename); gppi(sesskey, "LogType", 0, &cfg->logtype); gppi(sesskey, "LogFileClash", LGXF_ASK, &cfg->logxfovr); + gppi(sesskey, "LogFlush", 1, &cfg->logflush); gppi(sesskey, "SSHLogOmitPasswords", 1, &cfg->logomitpass); gppi(sesskey, "SSHLogOmitData", 0, &cfg->logomitdata); @@ -408,6 +423,9 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg) break; } + /* Address family selection */ + gppi(sesskey, "AddressFamily", ADDRTYPE_UNSPEC, &cfg->addressfamily); + /* The CloseOnExit numbers are arranged in a different order from * the standard FORCE_ON / FORCE_OFF / AUTO. */ gppi(sesskey, "CloseOnExit", 1, &i); cfg->close_on_exit = (i+1)%3; @@ -490,6 +508,23 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg) gppi(sesskey, "ChangeUsername", 0, &cfg->change_username); gprefs(sesskey, "Cipher", "\0", ciphernames, CIPHER_MAX, cfg->ssh_cipherlist); + { + /* Backward-compatibility: we used to have an option to + * disable gex under the "bugs" panel after one report of + * a server which offered it then choked, but we never got + * a server version string or any other reports. */ + char *default_kexes; + gppi(sesskey, "BugDHGEx2", 0, &i); i = 2-i; + if (i == FORCE_ON) + default_kexes = "dh-group14-sha1,dh-group1-sha1,WARN,dh-gex-sha1"; + else + default_kexes = "dh-gex-sha1,dh-group14-sha1,dh-group1-sha1,WARN"; + gprefs(sesskey, "KEX", default_kexes, + kexnames, KEX_MAX, cfg->ssh_kexlist); + } + gppi(sesskey, "RekeyTime", 60, &cfg->ssh_rekey_time); + gpps(sesskey, "RekeyBytes", "1G", cfg->ssh_rekey_data, + sizeof(cfg->ssh_rekey_data)); gppi(sesskey, "SshProt", 2, &cfg->sshprot); gppi(sesskey, "SSH2DES", 0, &cfg->ssh2_des_cbc); gppi(sesskey, "AuthTIS", 0, &cfg->try_tis_auth); @@ -665,7 +700,6 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg) } gppi(sesskey, "BugDeriveKey2", 0, &i); cfg->sshbug_derivekey2 = 2-i; gppi(sesskey, "BugRSAPad2", 0, &i); cfg->sshbug_rsapad2 = 2-i; - gppi(sesskey, "BugDHGEx2", 0, &i); cfg->sshbug_dhgex2 = 2-i; gppi(sesskey, "BugPKSessID2", 0, &i); cfg->sshbug_pksessid2 = 2-i; gppi(sesskey, "StampUtmp", 1, &cfg->stamp_utmp); gppi(sesskey, "LoginShell", 1, &cfg->login_shell);