diff options
author | Marco Peereboom <marco@conformal.com> | 2011-11-16 11:18:35 -0600 |
---|---|---|
committer | Marco Peereboom <marco@conformal.com> | 2011-11-16 11:18:35 -0600 |
commit | 0853ea91c4383cbf8adbb990410e051b53343f90 (patch) | |
tree | 6ea07292a82d6ef1e734fca608c637b3a48a255d /xxxterm.c | |
parent | 02709f21fe7340b3204d2a9526a1f7f8f64855a2 (diff) | |
download | xombrero-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.c | 48 |
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]); |