45 lines
1.3 KiB
Perl
Executable File
45 lines
1.3 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use lib $ENV{GL_LIBDIR};
|
|
use Gitolite::Rc;
|
|
use Gitolite::Common;
|
|
|
|
=for usage
|
|
Usage: ssh git@host htpasswd
|
|
|
|
Sets your htpasswd, assuming your admin has enabled it.
|
|
|
|
(Admins: You need to add HTPASSWD_FILE to the rc file, pointing to an
|
|
existing, writable, but possibly an initially empty, file, as well as adding
|
|
an entry for 'htpasswd' to the COMMANDS hash).
|
|
=cut
|
|
|
|
# usage and sanity checks
|
|
usage() if @ARGV and $ARGV[0] eq '-h';
|
|
$ENV{GL_USER} or _die "GL_USER not set";
|
|
my $htpasswd_file = $rc{HTPASSWD_FILE} || '';
|
|
die "htpasswd not enabled\n" unless $htpasswd_file;
|
|
die "$htpasswd_file doesn't exist or is not writable\n" unless -w $htpasswd_file;
|
|
|
|
# prompt
|
|
$|++;
|
|
print <<EOFhtp;
|
|
Please type in your new htpasswd at the prompt. You only have to type it once.
|
|
|
|
NOTE THAT THE PASSWORD WILL BE ECHOED, so please make sure no one is
|
|
shoulder-surfing, and make sure you clear your screen as well as scrollback
|
|
history after you're done (or close your terminal instance).
|
|
|
|
EOFhtp
|
|
print "new htpasswd: ";
|
|
|
|
# get the password and run htpasswd
|
|
my $password = <>;
|
|
$password =~ s/[\n\r]*$//;
|
|
die "empty passwords are not allowed\n" unless $password;
|
|
my $res = system("htpasswd", "-mb", $htpasswd_file, $ENV{GL_USER}, $password);
|
|
die "htpasswd command seems to have failed with return code: $res.\n" if $res;
|