about summary refs log tree commit diff stats
path: root/xxxterm.c
diff options
context:
space:
mode:
authorMarco Peereboom <marco@conformal.com>2011-11-16 11:18:35 -0600
committerMarco Peereboom <marco@conformal.com>2011-11-16 11:18:35 -0600
commit0853ea91c4383cbf8adbb990410e051b53343f90 (patch)
tree6ea07292a82d6ef1e734fca608c637b3a48a255d /xxxterm.c
parent02709f21fe7340b3204d2a9526a1f7f8f64855a2 (diff)
downloadxombrero-0853ea91c4383cbf8adbb990410e051b53343f90.tar.gz
Add proxy command.
We can now toggle a proxy with F2 and we also look at HTTP_PROXY
environment variable.  This is handy for toggling Tor on and off.
Diffstat (limited to 'xxxterm.c')
-rw-r--r--xxxterm.c48
1 files changed, 46 insertions, 2 deletions
diff --git a/xxxterm.c b/xxxterm.c
index d904bbf..a26211c 100644
--- a/xxxterm.c
+++ b/xxxterm.c
@@ -2892,6 +2892,41 @@ restart(struct tab *t, struct karg *args)
 	return (0);
 }
 
+char		*http_proxy_save; /* not a setting, used to toggle */
+
+int
+proxy_cmd(struct tab *t, struct karg *args)
+{
+	DNPRINTF(XT_D_CMD, "%s: tab %d\n", __func__, t->tab_id);
+
+	if (t == NULL)
+		return (1);
+
+	/* setup */
+	if (http_proxy) {
+		if (http_proxy_save)
+			g_free(http_proxy_save);
+		http_proxy_save = g_strdup(http_proxy);
+	}
+
+	if (args->i & XT_PRXY_SHOW) {
+		if (http_proxy)
+			show_oops(t, "http_proxy = %s", http_proxy);
+		else
+			show_oops(t, "proxy is currently disabled");
+	} else if (args->i & XT_PRXY_TOGGLE) {
+		if (http_proxy_save == NULL && http_proxy == NULL) {
+			show_oops(t, "can't toggle proxy");
+			goto done;
+		}
+		if (http_proxy)
+			setup_proxy(NULL);
+		else
+			setup_proxy(http_proxy_save);
+	}
+done:
+	return (XT_CB_PASSTHROUGH);
+}
 struct cmd {
 	char		*cmd;
 	int		level;
@@ -3079,6 +3114,10 @@ struct cmd {
 	{ "inspector",		0,	inspector_cmd,		XT_INS_SHOW,		0 },
 	{ "show",		1,	inspector_cmd,		XT_INS_SHOW,		0 },
 	{ "hide",		1,	inspector_cmd,		XT_INS_HIDE,		0 },
+
+	/* proxy */
+	{ "proxy",		0,	proxy_cmd,		XT_PRXY_SHOW,		0 },
+	{ "toggle",		1,	proxy_cmd,		XT_PRXY_TOGGLE,		0 },
 };
 
 struct {
@@ -7324,8 +7363,13 @@ main(int argc, char *argv[])
 	env_proxy = getenv("http_proxy");
 	if (env_proxy)
 		setup_proxy(env_proxy);
-	else
-		setup_proxy(http_proxy);
+	else {
+		env_proxy = getenv("HTTP_PROXY");
+		if (env_proxy)
+			setup_proxy(env_proxy);
+		else
+			setup_proxy(http_proxy);
+	}
 
 	if (opte) {
 		send_cmd_to_socket(argv[0]);