mirror of
https://github.com/clearml/dropbear
synced 2025-04-08 06:34:23 +00:00
Implemented ExitOnForwardFailure option for local and remote forwarding.
This commit is contained in:
parent
1b69d6d658
commit
4dc1388ac7
@ -148,6 +148,9 @@ void cli_getopts(int argc, char ** argv) {
|
||||
#ifdef ENABLE_CLI_PUBKEY_AUTH
|
||||
cli_opts.privkeys = list_new();
|
||||
#endif
|
||||
#ifdef ENABLE_CLI_ANYTCPFWD
|
||||
cli_opts.exit_on_fwd_failure = 0;
|
||||
#endif
|
||||
#ifdef ENABLE_CLI_LOCALTCPFWD
|
||||
cli_opts.localfwds = list_new();
|
||||
opts.listen_fwd_all = 0;
|
||||
@ -854,9 +857,20 @@ static void add_extendedopt(const char* origstr) {
|
||||
const char *optstr = origstr;
|
||||
|
||||
if (strcmp(origstr, "help") == 0) {
|
||||
dropbear_log(LOG_INFO, "No options available\n");
|
||||
dropbear_log(LOG_INFO, "Available options:\n"
|
||||
#ifdef ENABLE_CLI_ANYTCPFWD
|
||||
"\tExitOnForwardFailure\n"
|
||||
#endif
|
||||
);
|
||||
exit(EXIT_SUCCESS);
|
||||
}
|
||||
|
||||
#ifdef ENABLE_CLI_ANYTCPFWD
|
||||
if (match_extendedopt(&optstr, "ExitOnForwardFailure") == DROPBEAR_SUCCESS) {
|
||||
cli_opts.exit_on_fwd_failure = parse_flag_value(optstr);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
dropbear_exit("Bad configuration option '%s'", origstr);
|
||||
}
|
||||
|
23
cli-tcpfwd.c
23
cli-tcpfwd.c
@ -60,6 +60,22 @@ static const struct ChanType cli_chan_tcplocal = {
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_CLI_ANYTCPFWD
|
||||
static void fwd_failed(const char* format, ...) ATTRIB_PRINTF(1,2);
|
||||
void fwd_failed(const char* format, ...)
|
||||
{
|
||||
va_list param;
|
||||
va_start(param, format);
|
||||
|
||||
if (cli_opts.exit_on_fwd_failure)
|
||||
_dropbear_exit(EXIT_FAILURE, format, param);
|
||||
else
|
||||
_dropbear_log(LOG_WARNING, format, param);
|
||||
|
||||
va_end(param);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENABLE_CLI_LOCALTCPFWD
|
||||
void setup_localtcp() {
|
||||
m_list_elem *iter;
|
||||
@ -75,7 +91,7 @@ void setup_localtcp() {
|
||||
fwd->connectaddr,
|
||||
fwd->connectport);
|
||||
if (ret == DROPBEAR_FAILURE) {
|
||||
dropbear_log(LOG_WARNING, "Failed local port forward %s:%d:%s:%d",
|
||||
fwd_failed("Failed local port forward %s:%d:%s:%d",
|
||||
fwd->listenaddr,
|
||||
fwd->listenport,
|
||||
fwd->connectaddr,
|
||||
@ -181,7 +197,10 @@ void cli_recv_msg_request_failure() {
|
||||
struct TCPFwdEntry *fwd = (struct TCPFwdEntry*)iter->item;
|
||||
if (!fwd->have_reply) {
|
||||
fwd->have_reply = 1;
|
||||
dropbear_log(LOG_WARNING, "Remote TCP forward request failed (port %d -> %s:%d)", fwd->listenport, fwd->connectaddr, fwd->connectport);
|
||||
fwd_failed("Remote TCP forward request failed (port %d -> %s:%d)",
|
||||
fwd->listenport,
|
||||
fwd->connectaddr,
|
||||
fwd->connectport);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
14
dbclient.1
14
dbclient.1
@ -127,6 +127,20 @@ Specify a comma separated list of ciphers to enable. Use \fI-c help\fR to list p
|
||||
.B \-m \fIMAClist
|
||||
Specify a comma separated list of authentication MACs to enable. Use \fI-m help\fR to list possibilities.
|
||||
.TP
|
||||
.B \-o \fIoption
|
||||
Can be used to give options in the format used by OpenSSH config file. This is
|
||||
useful for specifying options for which there is no separate command-line flag.
|
||||
For full details of the options listed below, and their possible values, see
|
||||
ssh_config(5).
|
||||
|
||||
For now only following options have been implemented:
|
||||
.RS
|
||||
.RS
|
||||
.TP
|
||||
ExitOnForwardFailure
|
||||
.RE
|
||||
.RE
|
||||
.TP
|
||||
.B \-s
|
||||
The specified command will be requested as a subsystem, used for sftp. Dropbear doesn't implement sftp itself but the OpenSSH sftp client can be used eg \fIsftp -S dbclient user@host\fR
|
||||
.TP
|
||||
|
Loading…
Reference in New Issue
Block a user