From dc1b9febf1056c723003ccd9be1a4d7adef6425d Mon Sep 17 00:00:00 2001 From: Wayne Davison Date: Mon, 20 Dec 2021 14:25:19 -0800 Subject: [PATCH] Add options to assist in localhost rrsync testing. --- support/lsh | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/support/lsh b/support/lsh index be29310c..ebfe898c 100755 --- a/support/lsh +++ b/support/lsh @@ -15,6 +15,9 @@ GetOptions( 'b|c|D|e|F|i|L|m|O|o|p|R|S|w=s' => sub { }, # Ignore 'no-cd' => \( my $no_chdir ), 'sudo' => \( my $use_sudo ), + 'rrsync=s' => \( my $rrsync_dir ), + 'ro' => \( my $rrsync_ro = '' ), + 'wo' => \( my $rrsync_wo = '' ), ) or &usage; &usage unless @ARGV > 1; @@ -67,22 +70,42 @@ unless ($no_chdir) { chdir $home_dir or die "Unable to chdir to $home_dir: $!\n"; } -push @cmd, '/bin/sh', '-c', "@ARGV"; +if ($rrsync_dir) { + my $cmd = ''; + foreach (@ARGV) { + (my $arg = $_) =~ s/(['";|()\[\]{}\$!*?<> \t&~\\])/\\$1/g; + $cmd .= ' ' . $arg; + } + $cmd =~ s/^\s+//; + $ENV{SSH_ORIGINAL_COMMAND} = $cmd; + push @cmd, 'rrsync'; + push @cmd, '-ro' if $rrsync_ro; + push @cmd, '-wo' if $rrsync_wo; + push @cmd, $rrsync_dir; +} else { + push @cmd, '/bin/sh', '-c', "@ARGV"; +} exec @cmd; die "Failed to exec: $!\n"; sub usage { die <