combining multihop and -J command for proxy connect
Hans Harder
hans at atbas.org
Sat Aug 4 18:58:27 AWST 2018
Underneath the patch against the current git version
Hans
diff -w dropbear-git/cli-runopts.c dropbear-patch/cli-runopts.c
--- dropbear-git/cli-runopts.c
+++ dropbear-patch/cli-runopts.c
@@ -629,9 +629,7 @@
/* Set up the proxycmd */
unsigned int cmd_len = 0;
char *passthrough_args = multihop_passthrough_args();
- if (cli_opts.proxycmd) {
- dropbear_exit("-J can't be used with multihop mode");
- }
+ char *pproxycmd = NULL;
if (cli_opts.remoteport == NULL) {
cli_opts.remoteport = "22";
}
@@ -639,14 +637,27 @@
+ strlen(cli_opts.remotehost) +
strlen(cli_opts.remoteport)
+ strlen(passthrough_args)
+ 30;
+ /* if proxycmd is filled, pass it also with every exec */
+ if (cli_opts.proxycmd) {
+ int proxylen = strlen(cli_opts.proxycmd) + 10;
+ /* save original proxycmd to insert in new cmd */
+ pproxycmd = m_malloc(proxylen);
+ snprintf(pproxycmd,proxylen,"-J \"%s\"
",cli_opts.proxycmd);
+ cli_opts.proxycmd = NULL;
+ /* increase cmd_len with proxycmd length */
+ cmd_len += proxylen;
+ }
cli_opts.proxycmd = m_malloc(cmd_len);
- snprintf(cli_opts.proxycmd, cmd_len, "%s -B %s:%s %s %s",
- argv0, cli_opts.remotehost, cli_opts.remoteport,
- passthrough_args, remainder);
+ snprintf(cli_opts.proxycmd, cmd_len, "%s %s-B %s:%s %s %s",
+ argv0, (pproxycmd)?pproxycmd:"",
+ cli_opts.remotehost,
cli_opts.remoteport, passthrough_args, remainder);
#ifndef DISABLE_ZLIB
/* The stream will be incompressible since it's encrypted. */
opts.compress_mode = DROPBEAR_COMPRESS_OFF;
#endif
+ if (pproxycmd) {
+ m_free(pproxycmd);
+ }
m_free(passthrough_args);
}
m_free(hostbuf);
More information about the Dropbear
mailing list