mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-10 15:48:06 -05:00
Yesterday's proxy enhancements also slightly nadgered the config
box, in that it started to expand under the weight of proxy options. Now fixed, by folding the SOCKS version selector into the general proxy type selector so there's one single 5- or 6-way radio button set split over two lines. settings.c has of course grown a backwards compatibility wart to deal with legacy config data. [originally from svn r3168]
This commit is contained in:
parent
ef53af1e8d
commit
8460ecd27d
15
config.c
15
config.c
@ -1295,14 +1295,15 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
|
||||
ctrl_settitle(b, "Connection/Proxy",
|
||||
"Options controlling proxy usage");
|
||||
|
||||
s = ctrl_getset(b, "Connection/Proxy", "basics", "Proxy basics");
|
||||
ctrl_radiobuttons(s, "Proxy type:", 't', 4,
|
||||
s = ctrl_getset(b, "Connection/Proxy", "basics", NULL);
|
||||
ctrl_radiobuttons(s, "Proxy type:", 't', 3,
|
||||
HELPCTX(proxy_type),
|
||||
dlg_stdradiobutton_handler,
|
||||
I(offsetof(Config, proxy_type)),
|
||||
"None", I(PROXY_NONE),
|
||||
"SOCKS 4", I(PROXY_SOCKS4),
|
||||
"SOCKS 5", I(PROXY_SOCKS5),
|
||||
"HTTP", I(PROXY_HTTP),
|
||||
"SOCKS", I(PROXY_SOCKS),
|
||||
"Telnet", I(PROXY_TELNET),
|
||||
NULL);
|
||||
ctrl_columns(s, 2, 80, 20);
|
||||
@ -1346,19 +1347,11 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist,
|
||||
I(offsetof(Config,proxy_password)),
|
||||
I(sizeof(((Config *)0)->proxy_password)));
|
||||
c->editbox.password = 1;
|
||||
|
||||
s = ctrl_getset(b, "Connection/Proxy", "misc",
|
||||
"Miscellaneous proxy settings");
|
||||
ctrl_editbox(s, "Telnet command", 'm', 100,
|
||||
HELPCTX(proxy_command),
|
||||
dlg_stdeditbox_handler,
|
||||
I(offsetof(Config,proxy_telnet_command)),
|
||||
I(sizeof(((Config *)0)->proxy_telnet_command)));
|
||||
ctrl_radiobuttons(s, "SOCKS Version", 'v', 2,
|
||||
HELPCTX(proxy_socksver),
|
||||
dlg_stdradiobutton_handler,
|
||||
I(offsetof(Config, proxy_socks_version)),
|
||||
"Version 5", I(5), "Version 4", I(4), NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -1,4 +1,4 @@
|
||||
\versionid $Id: config.but,v 1.63 2003/04/26 13:22:25 simon Exp $
|
||||
\versionid $Id: config.but,v 1.64 2003/05/07 12:07:23 simon Exp $
|
||||
|
||||
\C{config} Configuring PuTTY
|
||||
|
||||
@ -1457,8 +1457,8 @@ connection.
|
||||
web server supporting the HTTP \cw{CONNECT} command, as documented
|
||||
in \W{http://www.ietf.org/rfc/rfc2817.txt}{RFC 2817}.
|
||||
|
||||
\b Selecting \q{SOCKS} allows you to proxy your connections through
|
||||
a SOCKS server.
|
||||
\b Selecting \q{SOCKS 4} or \q{SOCKS 5} allows you to proxy your
|
||||
connections through a SOCKS server.
|
||||
|
||||
\b Many firewalls implement a less formal type of proxy in which a
|
||||
user can make a Telnet connection directly to the firewall machine
|
||||
@ -1587,15 +1587,6 @@ port. Note that if you do not include the \c{%user} or \c{%pass}
|
||||
tokens in the Telnet command, then the \q{Username} and \q{Password}
|
||||
configuration fields will be ignored.
|
||||
|
||||
\S{config-proxy-socksver} Selecting the version of the SOCKS protocol
|
||||
|
||||
\cfg{winhelp-topic}{proxy.socksver}
|
||||
|
||||
SOCKS servers exist in two versions: version 5
|
||||
(\W{http://www.ietf.org/rfc/rfc1928.txt}{RFC 1928}) and the earlier
|
||||
version 4. The \q{SOCKS Version} radio buttons allow you to select
|
||||
which one to use, if you have selected the SOCKS proxy type.
|
||||
|
||||
\H{config-telnet} The Telnet panel
|
||||
|
||||
The Telnet panel allows you to configure options that only apply to
|
||||
|
13
proxy.c
13
proxy.c
@ -16,7 +16,9 @@
|
||||
|
||||
#define do_proxy_dns(cfg) \
|
||||
(cfg->proxy_dns == FORCE_ON || \
|
||||
(cfg->proxy_dns == AUTO && cfg->proxy_type != PROXY_SOCKS))
|
||||
(cfg->proxy_dns == AUTO && \
|
||||
cfg->proxy_type != PROXY_SOCKS4 && \
|
||||
cfg->proxy_type != PROXY_SOCKS5))
|
||||
|
||||
/*
|
||||
* Call this when proxy negotiation is complete, so that this
|
||||
@ -410,11 +412,10 @@ Socket new_connection(SockAddr addr, char *hostname,
|
||||
|
||||
if (cfg->proxy_type == PROXY_HTTP) {
|
||||
ret->negotiate = proxy_http_negotiate;
|
||||
} else if (cfg->proxy_type == PROXY_SOCKS) {
|
||||
if (cfg->proxy_socks_version == 4)
|
||||
ret->negotiate = proxy_socks4_negotiate;
|
||||
else
|
||||
ret->negotiate = proxy_socks5_negotiate;
|
||||
} else if (cfg->proxy_type == PROXY_SOCKS4) {
|
||||
ret->negotiate = proxy_socks4_negotiate;
|
||||
} else if (cfg->proxy_type == PROXY_SOCKS5) {
|
||||
ret->negotiate = proxy_socks5_negotiate;
|
||||
} else if (cfg->proxy_type == PROXY_TELNET) {
|
||||
ret->negotiate = proxy_telnet_negotiate;
|
||||
} else {
|
||||
|
4
putty.h
4
putty.h
@ -224,7 +224,8 @@ enum {
|
||||
/*
|
||||
* Proxy types.
|
||||
*/
|
||||
PROXY_NONE, PROXY_HTTP, PROXY_SOCKS, PROXY_TELNET, PROXY_CMD
|
||||
PROXY_NONE, PROXY_SOCKS4, PROXY_SOCKS5,
|
||||
PROXY_HTTP, PROXY_TELNET, PROXY_CMD
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -338,7 +339,6 @@ struct config_tag {
|
||||
char proxy_username[32];
|
||||
char proxy_password[32];
|
||||
char proxy_telnet_command[512];
|
||||
int proxy_socks_version;
|
||||
/* SSH options */
|
||||
char remote_cmd[512];
|
||||
char remote_cmd2[512]; /* fallback if the first fails
|
||||
|
25
settings.c
25
settings.c
@ -188,13 +188,12 @@ void save_open_settings(void *sesskey, int do_host, Config *cfg)
|
||||
write_setting_s(sesskey, "ProxyExcludeList", cfg->proxy_exclude_list);
|
||||
write_setting_i(sesskey, "ProxyDNS", (cfg->proxy_dns+2)%3);
|
||||
write_setting_i(sesskey, "ProxyLocalhost", cfg->even_proxy_localhost);
|
||||
write_setting_i(sesskey, "ProxyType", cfg->proxy_type);
|
||||
write_setting_i(sesskey, "ProxyMethod", cfg->proxy_type);
|
||||
write_setting_s(sesskey, "ProxyHost", cfg->proxy_host);
|
||||
write_setting_i(sesskey, "ProxyPort", cfg->proxy_port);
|
||||
write_setting_s(sesskey, "ProxyUsername", cfg->proxy_username);
|
||||
write_setting_s(sesskey, "ProxyPassword", cfg->proxy_password);
|
||||
write_setting_s(sesskey, "ProxyTelnetCommand", cfg->proxy_telnet_command);
|
||||
write_setting_i(sesskey, "ProxySOCKSVersion", cfg->proxy_socks_version);
|
||||
|
||||
{
|
||||
char buf[2 * sizeof(cfg->environmt)], *p, *q;
|
||||
@ -414,7 +413,26 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg)
|
||||
sizeof(cfg->proxy_exclude_list));
|
||||
gppi(sesskey, "ProxyDNS", 1, &i); cfg->proxy_dns = (i+1)%3;
|
||||
gppi(sesskey, "ProxyLocalhost", 0, &cfg->even_proxy_localhost);
|
||||
gppi(sesskey, "ProxyType", PROXY_NONE, &cfg->proxy_type);
|
||||
gppi(sesskey, "ProxyMethod", -1, &cfg->proxy_type);
|
||||
if (cfg->proxy_type == -1) {
|
||||
int i;
|
||||
gppi(sesskey, "ProxyType", -1, &i);
|
||||
if (i == 0)
|
||||
cfg->proxy_type = PROXY_NONE;
|
||||
else if (i == 1)
|
||||
cfg->proxy_type = PROXY_HTTP;
|
||||
else if (i == 3)
|
||||
cfg->proxy_type = PROXY_TELNET;
|
||||
else if (i == 4)
|
||||
cfg->proxy_type = PROXY_CMD;
|
||||
else {
|
||||
gppi(sesskey, "ProxySOCKSVersion", 5, &i);
|
||||
if (i == 5)
|
||||
cfg->proxy_type = PROXY_SOCKS5;
|
||||
else
|
||||
cfg->proxy_type = PROXY_SOCKS4;
|
||||
}
|
||||
}
|
||||
gpps(sesskey, "ProxyHost", "proxy", cfg->proxy_host,
|
||||
sizeof(cfg->proxy_host));
|
||||
gppi(sesskey, "ProxyPort", 80, &cfg->proxy_port);
|
||||
@ -424,7 +442,6 @@ void load_open_settings(void *sesskey, int do_host, Config *cfg)
|
||||
sizeof(cfg->proxy_password));
|
||||
gpps(sesskey, "ProxyTelnetCommand", "connect %host %port\\n",
|
||||
cfg->proxy_telnet_command, sizeof(cfg->proxy_telnet_command));
|
||||
gppi(sesskey, "ProxySOCKSVersion", 5, &cfg->proxy_socks_version);
|
||||
|
||||
{
|
||||
char buf[2 * sizeof(cfg->environmt)], *p, *q;
|
||||
|
@ -130,7 +130,7 @@ void unix_setup_config_box(struct controlbox *b, int midsession, void *win)
|
||||
* 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");
|
||||
s = ctrl_getset(b, "Connection/Proxy", "basics", NULL);
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < s->ncontrols; i++) {
|
||||
@ -139,7 +139,6 @@ void unix_setup_config_box(struct controlbox *b, int midsession, void *win)
|
||||
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] =
|
||||
@ -150,11 +149,7 @@ void unix_setup_config_box(struct controlbox *b, int midsession, void *win)
|
||||
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 &&
|
||||
|
Loading…
x
Reference in New Issue
Block a user