summaryrefslogtreecommitdiffhomepage
path: root/svr-chansession.c
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2016-04-12 21:01:08 +0800
committerJeremy Kerr <jk@ozlabs.org>2016-04-12 21:01:08 +0800
commitac9a4c839f6cbde3ca8226d79eca36a497620594 (patch)
tree10ff821cf12b67d9bc2874253f1469b03f09d124 /svr-chansession.c
parent3d2ddd15f8686ab8114dd94aff33919b4095e7b0 (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.c12
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) {