[pve-devel] applied: [PATCH v2 access-control 1/1] replace read_password with param_mapping

Thomas Lamprecht t.lamprecht at proxmox.com
Wed Jun 27 16:15:32 CEST 2018


On 6/15/18 3:28 PM, Dominik Csapak wrote:
> 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 at proxmox.com>
> ---
>  PVE/CLI/pveum.pm  | 28 ++++++++++++++++++----------
>  debian/control    |  1 -
>  test/auth-test.pl | 12 ++----------
>  3 files changed, 20 insertions(+), 21 deletions(-)
> 
> diff --git a/PVE/CLI/pveum.pm b/PVE/CLI/pveum.pm
> index b8412eb..5fd15fe 100755
> --- a/PVE/CLI/pveum.pm
> +++ b/PVE/CLI/pveum.pm
> @@ -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 = {
> diff --git a/debian/control b/debian/control
> index 511cfb4..fdb8a5a 100644
> --- a/debian/control
> +++ b/debian/control
> @@ -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),
> diff --git a/test/auth-test.pl b/test/auth-test.pl
> index 50a7f89..60429a9 100644
> --- a/test/auth-test.pl
> +++ b/test/auth-test.pl
> @@ -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";
> 

applied, with pve-common version dependency update




More information about the pve-devel mailing list