[pve-devel] [pve-common PATCH] Refactoring read_password.
Wolfgang Link
w.link at proxmox.com
Thu Nov 3 09:06:30 CET 2016
We use this function in 3 different packets with the same code.
It will moved to the CLIHandler, because we need it only on the command line.
---
src/PVE/CLIHandler.pm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/src/PVE/CLIHandler.pm b/src/PVE/CLIHandler.pm
index e2a81a0..580040e 100644
--- a/src/PVE/CLIHandler.pm
+++ b/src/PVE/CLIHandler.pm
@@ -8,6 +8,7 @@ use PVE::SafeSyslog;
use PVE::Exception qw(raise raise_param_exc);
use PVE::RESTHandler;
use PVE::INotify;
+use Term::ReadLine;
use base qw(PVE::RESTHandler);
@@ -48,6 +49,30 @@ my $complete_command_names = sub {
return $res;
};
+sub read_password_impl{
+ my ($command, $set_pass, $undo_shadow) = @_;
+
+ my $term = new Term::ReadLine($command);
+ my $attribs = $term->Attribs;
+ my $redisplay = $attribs->{redisplay_function};
+ $attribs->{redisplay_function} = $attribs->{shadow_redisplay};
+
+ my $remove_hist = $term->Features->{autohistory} ? 1 : 0;
+
+ my $input = undef;
+ $input = $term->readline('Enter password: ');
+ $term->remove_history($term->where_history()) if $remove_hist;
+
+ my $conf = $term->readline('Retype password: ') if $set_pass;
+ $term->remove_history($term->where_history()) if $remove_hist;
+
+ $attribs->{redisplay_function} = $redisplay if $undo_shadow;
+ die "Passwords do not match.\n" if ($set_pass && ($input ne $conf));
+
+ return $input;
+
+}
+
__PACKAGE__->register_method ({
name => 'help',
path => 'help',
--
2.1.4
More information about the pve-devel
mailing list