diff options
author | Jeremy Kerr <jk@ozlabs.org> | 2016-04-12 21:01:08 +0800 |
---|---|---|
committer | Jeremy Kerr <jk@ozlabs.org> | 2016-04-12 21:01:08 +0800 |
commit | ac9a4c839f6cbde3ca8226d79eca36a497620594 (patch) | |
tree | 10ff821cf12b67d9bc2874253f1469b03f09d124 /svr-chansession.c | |
parent | 3d2ddd15f8686ab8114dd94aff33919b4095e7b0 (diff) |
Add -c <command> option to force a specific command
This change adds a -c option to dropbear, to force the session to use a
specific command, in a similar fashion to OpenSSH's ForceCommand
configuration option.
This is useful to provide a simple fixed service over ssh, without
requiring an authorized key file for the per-key forced_command option.
This setting takes precedence over the channel session's provided
command, and the per-key forced_command setting.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'svr-chansession.c')
-rw-r--r-- | svr-chansession.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/svr-chansession.c b/svr-chansession.c index bfaf7f6..8c6f3a2 100644 --- a/svr-chansession.c +++ b/svr-chansession.c @@ -671,8 +671,16 @@ static int sessioncommand(struct Channel *channel, struct ChanSess *chansess, } } - /* take public key option 'command' into account */ - svr_pubkey_set_forced_command(chansess); + + /* take global command into account */ + if (svr_opts.forced_command) { + chansess->original_command = chansess->cmd ? : m_strdup(""); + chansess->cmd = m_strdup(svr_opts.forced_command); + } else { + /* take public key option 'command' into account */ + svr_pubkey_set_forced_command(chansess); + } + #ifdef LOG_COMMANDS if (chansess->cmd) { |