replace read_password with param_mapping

use the get_standar_mapping 'pve-password'
then we can get rid of the Term::ReadLine dependency

we use this change to only ask for the password once on
'pveum ticket'

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak 2018-06-15 15:28:47 +02:00 committed by Thomas Lamprecht
parent 765305e210
commit b34d76e726
3 changed files with 20 additions and 21 deletions

View File

@ -8,7 +8,6 @@ use PVE::Cluster;
use PVE::SafeSyslog;
use PVE::AccessControl;
use File::Path qw(make_path remove_tree);
use Term::ReadLine;
use PVE::INotify;
use PVE::RPCEnvironment;
use PVE::API2::User;
@ -18,6 +17,7 @@ use PVE::API2::ACL;
use PVE::API2::AccessControl;
use PVE::JSONSchema qw(get_standard_option);
use PVE::CLIHandler;
use PVE::PTY;
use base qw(PVE::CLIHandler);
@ -25,16 +25,24 @@ sub setup_environment {
PVE::RPCEnvironment->setup_default_cli_env();
}
sub read_password {
# return $ENV{PVE_PW_TICKET} if defined($ENV{PVE_PW_TICKET});
sub param_mapping {
my ($name) = @_;
my $term = new Term::ReadLine ('pveum');
my $attribs = $term->Attribs;
$attribs->{redisplay_function} = $attribs->{shadow_redisplay};
my $input = $term->readline('Enter new password: ');
my $conf = $term->readline('Retype new password: ');
die "Passwords do not match.\n" if ($input ne $conf);
return $input;
my $mapping = {
'change_password' => [
PVE::CLIHandler::get_standard_mapping('pve-password'),
],
'create_ticket' => [
PVE::CLIHandler::get_standard_mapping('pve-password', {
func => sub {
# do not accept values given on cmdline
return PVE::PTY::read_password('Enter password: ');
},
}),
]
};
return $mapping->{$name};
}
our $cmddef = {

1
debian/control vendored
View File

@ -22,7 +22,6 @@ Depends: libauthen-pam-perl,
libnet-ldap-perl,
libnet-ssleay-perl,
libpve-common-perl (>= 5.0-27),
libterm-readline-gnu-perl,
liburi-perl,
libwww-perl,
perl (>= 5.6.0-16),

View File

@ -1,21 +1,13 @@
#!/usr/bin/perl -w
use strict;
use Term::ReadLine;
use PVE::PTY;
use PVE::AccessControl;
my $username = shift;
die "Username missing" if !$username;
sub read_password {
my $term = new Term::ReadLine ('pveum');
my $attribs = $term->Attribs;
$attribs->{redisplay_function} = $attribs->{shadow_redisplay};
my $input = $term->readline('password: ');
return $input;
}
my $password = read_password();
my $password = PVE::PTY::read_password('password: ');
PVE::AccessControl::authenticate_user($username,$password);
print "Authentication Successful!!\n";