зеркало из https://github.com/microsoft/git.git
cvsserver: Handle 'cvs login'
Since this is a trivial variation of the general pserver authentication, there is really no reason not to support it. Signed-off-by: Frank Lichtenheld <frank@lichtenheld.de> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Родитель
b3c81cff02
Коммит
24a97d84ad
|
@ -95,9 +95,10 @@ $state->{method} = 'ext';
|
||||||
if (@ARGV && $ARGV[0] eq 'pserver') {
|
if (@ARGV && $ARGV[0] eq 'pserver') {
|
||||||
$state->{method} = 'pserver';
|
$state->{method} = 'pserver';
|
||||||
my $line = <STDIN>; chomp $line;
|
my $line = <STDIN>; chomp $line;
|
||||||
unless( $line eq 'BEGIN AUTH REQUEST') {
|
unless( $line =~ /^BEGIN (AUTH|VERIFICATION) REQUEST$/) {
|
||||||
die "E Do not understand $line - expecting BEGIN AUTH REQUEST\n";
|
die "E Do not understand $line - expecting BEGIN AUTH REQUEST\n";
|
||||||
}
|
}
|
||||||
|
my $request = $1;
|
||||||
$line = <STDIN>; chomp $line;
|
$line = <STDIN>; chomp $line;
|
||||||
req_Root('root', $line) # reuse Root
|
req_Root('root', $line) # reuse Root
|
||||||
or die "E Invalid root $line \n";
|
or die "E Invalid root $line \n";
|
||||||
|
@ -109,10 +110,11 @@ if (@ARGV && $ARGV[0] eq 'pserver') {
|
||||||
}
|
}
|
||||||
$line = <STDIN>; chomp $line; # validate the password?
|
$line = <STDIN>; chomp $line; # validate the password?
|
||||||
$line = <STDIN>; chomp $line;
|
$line = <STDIN>; chomp $line;
|
||||||
unless ($line eq 'END AUTH REQUEST') {
|
unless ($line eq "END $request REQUEST") {
|
||||||
die "E Do not understand $line -- expecting END AUTH REQUEST\n";
|
die "E Do not understand $line -- expecting END $request REQUEST\n";
|
||||||
}
|
}
|
||||||
print "I LOVE YOU\n";
|
print "I LOVE YOU\n";
|
||||||
|
exit if $request eq 'VERIFICATION'; # cvs login
|
||||||
# and now back to our regular programme...
|
# and now back to our regular programme...
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -67,6 +67,22 @@ git
|
||||||
END AUTH REQUEST
|
END AUTH REQUEST
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
cat >login-anonymous <<EOF
|
||||||
|
BEGIN VERIFICATION REQUEST
|
||||||
|
$SERVERDIR
|
||||||
|
anonymous
|
||||||
|
|
||||||
|
END VERIFICATION REQUEST
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat >login-git <<EOF
|
||||||
|
BEGIN VERIFICATION REQUEST
|
||||||
|
$SERVERDIR
|
||||||
|
git
|
||||||
|
|
||||||
|
END VERIFICATION REQUEST
|
||||||
|
EOF
|
||||||
|
|
||||||
test_expect_success 'pserver authentication' \
|
test_expect_success 'pserver authentication' \
|
||||||
'cat request-anonymous | git-cvsserver pserver >log 2>&1 &&
|
'cat request-anonymous | git-cvsserver pserver >log 2>&1 &&
|
||||||
tail -n1 log | grep -q "^I LOVE YOU$"'
|
tail -n1 log | grep -q "^I LOVE YOU$"'
|
||||||
|
@ -80,6 +96,19 @@ test_expect_success 'pserver authentication failure (non-anonymous user)' \
|
||||||
fi &&
|
fi &&
|
||||||
tail -n1 log | grep -q "^I HATE YOU$"'
|
tail -n1 log | grep -q "^I HATE YOU$"'
|
||||||
|
|
||||||
|
test_expect_success 'pserver authentication (login)' \
|
||||||
|
'cat login-anonymous | git-cvsserver pserver >log 2>&1 &&
|
||||||
|
tail -n1 log | grep -q "^I LOVE YOU$"'
|
||||||
|
|
||||||
|
test_expect_success 'pserver authentication failure (login/non-anonymous user)' \
|
||||||
|
'if cat login-git | git-cvsserver pserver >log 2>&1
|
||||||
|
then
|
||||||
|
false
|
||||||
|
else
|
||||||
|
true
|
||||||
|
fi &&
|
||||||
|
tail -n1 log | grep -q "^I HATE YOU$"'
|
||||||
|
|
||||||
|
|
||||||
#--------------
|
#--------------
|
||||||
# CONFIG TESTS
|
# CONFIG TESTS
|
||||||
|
|
Загрузка…
Ссылка в новой задаче