]> git.proxmox.com Git - pve-access-control.git/commitdiff
replace read_password with param_mapping
authorDominik Csapak <d.csapak@proxmox.com>
Fri, 15 Jun 2018 13:28:47 +0000 (15:28 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Wed, 27 Jun 2018 11:27:22 +0000 (13:27 +0200)
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>
PVE/CLI/pveum.pm
debian/control
test/auth-test.pl

index b8412eb0c173f52d89bb2d8dabd52b583b2ad241..5fd15fe41f1bc7cbc6b8ad984acb1435bf3d0c48 100755 (executable)
@@ -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 = {
index 511cfb46d7e1187a6c31068bede8c9f9a2e2613e..fdb8a5a64d6490b46f6d08b0a56427692d148395 100644 (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),
index 50a7f899caec9824adef943e54bc4a6e22784b45..60429a98c36daf348a046c8a84f637fbbd366c97 100644 (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";