mirror of
https://git.proxmox.com/git/pve-access-control
synced 2025-06-03 22:24:28 +00:00

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>
93 lines
2.4 KiB
Perl
Executable File
93 lines
2.4 KiB
Perl
Executable File
package PVE::CLI::pveum;
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Getopt::Long;
|
|
use PVE::Tools qw(run_command);
|
|
use PVE::Cluster;
|
|
use PVE::SafeSyslog;
|
|
use PVE::AccessControl;
|
|
use File::Path qw(make_path remove_tree);
|
|
use PVE::INotify;
|
|
use PVE::RPCEnvironment;
|
|
use PVE::API2::User;
|
|
use PVE::API2::Group;
|
|
use PVE::API2::Role;
|
|
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);
|
|
|
|
sub setup_environment {
|
|
PVE::RPCEnvironment->setup_default_cli_env();
|
|
}
|
|
|
|
sub param_mapping {
|
|
my ($name) = @_;
|
|
|
|
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 = {
|
|
user => {
|
|
add => [ 'PVE::API2::User', 'create_user', ['userid'] ],
|
|
modify => [ 'PVE::API2::User', 'update_user', ['userid'] ],
|
|
delete => [ 'PVE::API2::User', 'delete_user', ['userid'] ],
|
|
},
|
|
group => {
|
|
add => [ 'PVE::API2::Group', 'create_group', ['groupid'] ],
|
|
modify => [ 'PVE::API2::Group', 'update_group', ['groupid'] ],
|
|
delete => [ 'PVE::API2::Group', 'delete_group', ['groupid'] ],
|
|
},
|
|
role => {
|
|
add => [ 'PVE::API2::Role', 'create_role', ['roleid'] ],
|
|
modify => [ 'PVE::API2::Role', 'update_role', ['roleid'] ],
|
|
delete => [ 'PVE::API2::Role', 'delete_role', ['roleid'] ],
|
|
},
|
|
acl => {
|
|
modify => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 0 }],
|
|
delete => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 1 }],
|
|
},
|
|
ticket => [ 'PVE::API2::AccessControl', 'create_ticket', ['username'], undef,
|
|
sub {
|
|
my ($res) = @_;
|
|
print "$res->{ticket}\n";
|
|
}],
|
|
|
|
passwd => [ 'PVE::API2::AccessControl', 'change_password', ['userid'] ],
|
|
|
|
useradd => { alias => 'user add' },
|
|
usermod => { alias => 'user modify' },
|
|
userdel => { alias => 'user delete' },
|
|
|
|
groupadd => { alias => 'group add' },
|
|
groupmod => { alias => 'group modify' },
|
|
groupdel => { alias => 'group delete' },
|
|
|
|
roleadd => { alias => 'role add' },
|
|
rolemod => { alias => 'role modify' },
|
|
roledel => { alias => 'role delete' },
|
|
|
|
aclmod => { alias => 'acl modify' },
|
|
acldel => { alias => 'acl delete' },
|
|
};
|
|
|
|
1;
|