mirror of
https://git.proxmox.com/git/pve-access-control
synced 2025-06-12 17:00:31 +00:00
convert pveum into a PVE::CLI class
This commit is contained in:
parent
364ffc137a
commit
09281ad744
7
Makefile
7
Makefile
@ -30,8 +30,8 @@ dinstall: deb
|
|||||||
cat $<|pod2man -n $* -s 1 -r ${VERSION} -c "Proxmox Documentation"|gzip -c9 >$@.tmp
|
cat $<|pod2man -n $* -s 1 -r ${VERSION} -c "Proxmox Documentation"|gzip -c9 >$@.tmp
|
||||||
mv $@.tmp $@
|
mv $@.tmp $@
|
||||||
|
|
||||||
pveum.1.pod: pveum
|
pveum.1.pod: PVE/CLI/pveum.pm
|
||||||
perl -I. ./pveum printmanpod >$@.tmp
|
perl -I. -T -e "use PVE::CLI::pveum; PVE::CLI::pveum->generate_pod_manpage();" >$@.tmp
|
||||||
mv $@.tmp $@
|
mv $@.tmp $@
|
||||||
|
|
||||||
.PHONY: install
|
.PHONY: install
|
||||||
@ -41,7 +41,8 @@ install: pveum.1.pod pveum.1.gz oathkeygen
|
|||||||
install -m 0755 pveum ${DESTDIR}${SBINDIR}
|
install -m 0755 pveum ${DESTDIR}${SBINDIR}
|
||||||
install -m 0755 oathkeygen ${DESTDIR}${BINDIR}
|
install -m 0755 oathkeygen ${DESTDIR}${BINDIR}
|
||||||
make -C PVE install
|
make -C PVE install
|
||||||
perl -I. ./pveum verifyapi
|
perl -I. ./pveum verifyapi
|
||||||
|
perl -I. -T -e "use PVE::CLI::pveum; PVE::CLI::pveum->verify_api();"
|
||||||
install -d ${DESTDIR}/usr/share/man/man1
|
install -d ${DESTDIR}/usr/share/man/man1
|
||||||
install -d ${DESTDIR}${PODDIR}
|
install -d ${DESTDIR}${PODDIR}
|
||||||
install -m 0644 pveum.1.gz ${DESTDIR}/usr/share/man/man1/
|
install -m 0644 pveum.1.gz ${DESTDIR}/usr/share/man/man1/
|
||||||
|
9
PVE/CLI/Makefile
Normal file
9
PVE/CLI/Makefile
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
SOURCES=pveum.pm
|
||||||
|
|
||||||
|
.PHONY: install
|
||||||
|
install: ${SOURCES}
|
||||||
|
install -d -m 0755 ${DESTDIR}${PERLDIR}/PVE/CLI
|
||||||
|
for i in ${SOURCES}; do install -D -m 0644 $$i ${DESTDIR}${PERLDIR}/PVE/CLI/$$i; done
|
||||||
|
|
||||||
|
|
||||||
|
clean:
|
65
PVE/CLI/pveum.pm
Executable file
65
PVE/CLI/pveum.pm
Executable file
@ -0,0 +1,65 @@
|
|||||||
|
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 Term::ReadLine;
|
||||||
|
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 base qw(PVE::CLIHandler);
|
||||||
|
|
||||||
|
our $cmddef = {
|
||||||
|
ticket => [ 'PVE::API2::AccessControl', 'create_ticket', ['username'], undef,
|
||||||
|
sub {
|
||||||
|
my ($res) = @_;
|
||||||
|
print "$res->{ticket}\n";
|
||||||
|
}],
|
||||||
|
|
||||||
|
passwd => [ 'PVE::API2::AccessControl', 'change_passsword', ['userid'] ],
|
||||||
|
|
||||||
|
useradd => [ 'PVE::API2::User', 'create_user', ['userid'] ],
|
||||||
|
usermod => [ 'PVE::API2::User', 'update_user', ['userid'] ],
|
||||||
|
userdel => [ 'PVE::API2::User', 'delete_user', ['userid'] ],
|
||||||
|
|
||||||
|
groupadd => [ 'PVE::API2::Group', 'create_group', ['groupid'] ],
|
||||||
|
groupmod => [ 'PVE::API2::Group', 'update_group', ['groupid'] ],
|
||||||
|
groupdel => [ 'PVE::API2::Group', 'delete_group', ['groupid'] ],
|
||||||
|
|
||||||
|
roleadd => [ 'PVE::API2::Role', 'create_role', ['roleid'] ],
|
||||||
|
rolemod => [ 'PVE::API2::Role', 'update_role', ['roleid'] ],
|
||||||
|
roledel => [ 'PVE::API2::Role', 'delete_role', ['roleid'] ],
|
||||||
|
|
||||||
|
aclmod => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 0 }],
|
||||||
|
acldel => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 1 }],
|
||||||
|
};
|
||||||
|
|
||||||
|
1;
|
||||||
|
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
pveum - PVE User Manager
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
=include synopsis
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
No description available.
|
||||||
|
|
||||||
|
=include pve_copyright
|
@ -5,4 +5,5 @@ install:
|
|||||||
make -C Auth install
|
make -C Auth install
|
||||||
install -D -m 0644 AccessControl.pm ${DESTDIR}${PERLDIR}/PVE/AccessControl.pm
|
install -D -m 0644 AccessControl.pm ${DESTDIR}${PERLDIR}/PVE/AccessControl.pm
|
||||||
install -D -m 0644 RPCEnvironment.pm ${DESTDIR}${PERLDIR}/PVE/RPCEnvironment.pm
|
install -D -m 0644 RPCEnvironment.pm ${DESTDIR}${PERLDIR}/PVE/RPCEnvironment.pm
|
||||||
make -C API2 install
|
make -C API2 install
|
||||||
|
make -C CLI install
|
||||||
|
89
pveum
89
pveum
@ -2,32 +2,8 @@
|
|||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
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 Term::ReadLine;
|
|
||||||
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 base qw(PVE::CLIHandler);
|
use PVE::CLI::pveum;
|
||||||
|
|
||||||
use Data::Dumper; # fixme: remove
|
|
||||||
|
|
||||||
$ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin';
|
|
||||||
|
|
||||||
initlog('pveum');
|
|
||||||
|
|
||||||
#fixme: logging?
|
|
||||||
|
|
||||||
my $read_password = sub {
|
my $read_password = sub {
|
||||||
|
|
||||||
@ -42,64 +18,9 @@ my $read_password = sub {
|
|||||||
return $input;
|
return $input;
|
||||||
};
|
};
|
||||||
|
|
||||||
my $cmddef = {
|
my $prepare = sub {
|
||||||
ticket => [ 'PVE::API2::AccessControl', 'create_ticket', ['username'], undef,
|
# autmatically generate the private key if it does not already exists
|
||||||
sub {
|
PVE::Cluster::gen_auth_key();
|
||||||
my ($res) = @_;
|
|
||||||
print "$res->{ticket}\n";
|
|
||||||
}],
|
|
||||||
|
|
||||||
passwd => [ 'PVE::API2::AccessControl', 'change_passsword', ['userid'] ],
|
|
||||||
|
|
||||||
useradd => [ 'PVE::API2::User', 'create_user', ['userid'] ],
|
|
||||||
usermod => [ 'PVE::API2::User', 'update_user', ['userid'] ],
|
|
||||||
userdel => [ 'PVE::API2::User', 'delete_user', ['userid'] ],
|
|
||||||
|
|
||||||
groupadd => [ 'PVE::API2::Group', 'create_group', ['groupid'] ],
|
|
||||||
groupmod => [ 'PVE::API2::Group', 'update_group', ['groupid'] ],
|
|
||||||
groupdel => [ 'PVE::API2::Group', 'delete_group', ['groupid'] ],
|
|
||||||
|
|
||||||
roleadd => [ 'PVE::API2::Role', 'create_role', ['roleid'] ],
|
|
||||||
rolemod => [ 'PVE::API2::Role', 'update_role', ['roleid'] ],
|
|
||||||
roledel => [ 'PVE::API2::Role', 'delete_role', ['roleid'] ],
|
|
||||||
|
|
||||||
aclmod => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 0 }],
|
|
||||||
acldel => [ 'PVE::API2::ACL', 'update_acl', ['path'], { delete => 1 }],
|
|
||||||
};
|
};
|
||||||
|
|
||||||
my $cmd = shift;
|
PVE::CLI::pveum->run_cli($read_password, undef, $prepare);
|
||||||
|
|
||||||
if (defined($cmd) && $cmd ne 'verifyapi' && $cmd ne 'printmanpod') {
|
|
||||||
die "please run as root\n" if $> != 0;
|
|
||||||
|
|
||||||
PVE::INotify::inotify_init();
|
|
||||||
|
|
||||||
my $rpcenv = PVE::RPCEnvironment->init('cli');
|
|
||||||
|
|
||||||
$rpcenv->init_request();
|
|
||||||
$rpcenv->set_language($ENV{LANG});
|
|
||||||
$rpcenv->set_user('root@pam');
|
|
||||||
|
|
||||||
# autmatically generate the private key if it does not already exists
|
|
||||||
PVE::Cluster::gen_auth_key();
|
|
||||||
}
|
|
||||||
|
|
||||||
PVE::CLIHandler::handle_cmd($cmddef, "pveum", $cmd, \@ARGV, $read_password, $0);
|
|
||||||
|
|
||||||
exit 0;
|
|
||||||
|
|
||||||
__END__
|
|
||||||
|
|
||||||
=head1 NAME
|
|
||||||
|
|
||||||
pveum - PVE User Manager
|
|
||||||
|
|
||||||
=head1 SYNOPSIS
|
|
||||||
|
|
||||||
=include synopsis
|
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
|
||||||
|
|
||||||
No description available.
|
|
||||||
|
|
||||||
=include pve_copyright
|
|
||||||
|
Loading…
Reference in New Issue
Block a user