[pve-devel] r5058 - pve-common/trunk

svn-commits at proxmox.com svn-commits at proxmox.com
Thu Aug 26 10:12:58 CEST 2010


Author: dietmar
Date: 2010-08-26 08:12:57 +0000 (Thu, 26 Aug 2010)
New Revision: 5058

Modified:
   pve-common/trunk/ChangeLog
   pve-common/trunk/RESTHandler.pm
Log:
	* RESTHandler.pm (usage_str): new '$hidepw' parameter to correctly
	handle hidden password parameter.



Modified: pve-common/trunk/ChangeLog
===================================================================
--- pve-common/trunk/ChangeLog	2010-08-26 06:53:58 UTC (rev 5057)
+++ pve-common/trunk/ChangeLog	2010-08-26 08:12:57 UTC (rev 5058)
@@ -1,5 +1,8 @@
 2010-08-26  Proxmox Support Team  <support at proxmox.com>
 
+	* RESTHandler.pm (usage_str): new '$hidepw' parameter to correctly
+	handle hidden password parameter.
+
 	* README.dev: update docu about find_handler() 
 
 	* RESTHandler.pm (find_handler): use '$path' instead of strange

Modified: pve-common/trunk/RESTHandler.pm
===================================================================
--- pve-common/trunk/RESTHandler.pm	2010-08-26 06:53:58 UTC (rev 5057)
+++ pve-common/trunk/RESTHandler.pm	2010-08-26 08:12:57 UTC (rev 5058)
@@ -209,14 +209,14 @@
 # $arg_param   ... list of parameters we want to get as ordered arguments on the command line
 # $fixed_param ... do not generate and info about those parameters
 # $format:
-#   'long'  ... default (list all options)
-#   'short' ... command line only (one line)
-#   'full'  ... also include description
-#
+#   'long'     ... default (list all options)
+#   'short'    ... command line only (one line)
+#   'full'     ... also include description
+# $hidepw      ... hide password option (use this if you provide a read passwork callback)
+
 sub usage_str {
-    my ($self, $name, $prefix, $arg_param, $fixed_param, $format) = @_;
+    my ($self, $name, $prefix, $arg_param, $fixed_param, $format, $hidepw) = @_;
 
-
     $format = 'long' if !$format;
 
     my $info = $self->map_method_by_name($name);
@@ -241,13 +241,17 @@
     };
 
     my $get_prop_descr = sub {
-	my ($phash, $display_name) = @_;
+	my ($phash, $display_name, $name) = @_;
  
 	my $res = '';
 
 	my $descr = $phash->{description} || "no description available";
 	my $type =  &$get_type_str($phash);
 
+	if ($hidepw && $name eq 'password') {
+	    $type = '';
+	}
+
 	$res .= sprintf "  %-10s %-10s   $descr\n", $display_name, "$type";
 	my $indend = "                          ";
 	if ($phash->{enum}) {
@@ -270,7 +274,7 @@
     foreach my $k (@$arg_param) {
 	next if defined($fixed_param->{$k}); # just to be sure
 
-	$argdescr .= &$get_prop_descr($prop->{$k}, "<$k>");
+	$argdescr .= &$get_prop_descr($prop->{$k}, "<$k>", $k);
     }
 
     my $opts = '';
@@ -280,8 +284,10 @@
 
 	my $type =  &$get_type_str($prop->{$k});
 
-	$opts .= &$get_prop_descr($prop->{$k}, "-$k");
+	next if $hidepw && ($k eq 'password') && !$prop->{$k}->{optional};
 
+	$opts .= &$get_prop_descr($prop->{$k}, "-$k", $k);
+
 	if (!$prop->{$k}->{optional}) {
 	    $args .= " " if $args;
 	    $args .= "-$k $type"
@@ -316,19 +322,16 @@
 	$param->{$p} = $fixed_param->{$p};
     }
 
-    # after copy, we set $fixed_param->{password} to exclude password from usage info.
-    $fixed_param->{password} = 1 if $pwcallback;
-
     foreach my $p (@$arg_param) {
 	my $v = shift @$args;
 
 	if (!defined($v)) {
-	    my $usage = $self->usage_str($name, $prefix, $arg_param, $fixed_param);
+	    my $usage = $self->usage_str($name, $prefix, $arg_param, $fixed_param, undef, $pwcallback);
 	    raise_param_exc({ $p => "got undefined value for required argument"}, $usage); 
 	}
 
 	if ($v =~ m/^-/) {
-	    my $usage = $self->usage_str($name, $prefix, $arg_param, $fixed_param);
+	    my $usage = $self->usage_str($name, $prefix, $arg_param, $fixed_param, undef, $pwcallback);
 	    raise_param_exc({ $p => "required argument may not start with hyphen"}, $usage); 
 	}
 
@@ -346,7 +349,7 @@
 
 	die $err if !$ec || $ec ne "PVE::Exception" || !$err->is_param_exc();
 	
-	$err->{usage} = $self->usage_str($name, $prefix, $arg_param, $fixed_param);
+	$err->{usage} = $self->usage_str($name, $prefix, $arg_param, $fixed_param, undef, $pwcallback);
 
 	die $err;
     }



More information about the pve-devel mailing list