mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-07-16 17:40:11 +00:00
64 lines
1.6 KiB
Perl
Executable File
64 lines
1.6 KiB
Perl
Executable File
package PVE::CLI::pvesubscription;
|
|
|
|
use strict;
|
|
use warnings;
|
|
|
|
use MIME::Base64;
|
|
use JSON qw(decode_json);
|
|
|
|
use PVE::Tools;
|
|
use PVE::SafeSyslog;
|
|
use PVE::INotify;
|
|
use PVE::RPCEnvironment;
|
|
use PVE::CLIHandler;
|
|
use PVE::API2::Subscription;
|
|
|
|
use base qw(PVE::CLIHandler);
|
|
|
|
my $nodename = PVE::INotify::nodename();
|
|
|
|
sub setup_environment {
|
|
PVE::RPCEnvironment->setup_default_cli_env();
|
|
}
|
|
|
|
__PACKAGE__->register_method({
|
|
name => 'set_offline_key',
|
|
path => 'set_offline_key',
|
|
method => 'POST',
|
|
description => "(Internal use only!) Set a signed subscription info blob as offline key",
|
|
parameters => {
|
|
additionalProperties => 0,
|
|
properties => {
|
|
data => {
|
|
type => "string",
|
|
},
|
|
},
|
|
},
|
|
returns => { type => 'null' },
|
|
code => sub {
|
|
my ($param) = @_;
|
|
|
|
my $info = decode_json(decode_base64($param->{data}));
|
|
|
|
$info = Proxmox::RS::Subscription::check_signature($info);
|
|
$info = Proxmox::RS::Subscription::check_server_id($info);
|
|
$info = Proxmox::RS::Subscription::check_age($info, 0);
|
|
|
|
PVE::API2::Subscription::check_key($info->{key}, PVE::API2::Subscription::get_sockets());
|
|
|
|
PVE::API2::Subscription::write_etc_subscription($info);
|
|
}});
|
|
|
|
our $cmddef = {
|
|
update => [ 'PVE::API2::Subscription', 'update', undef, { node => $nodename } ],
|
|
get => [ 'PVE::API2::Subscription', 'get', undef, { node => $nodename }, sub {
|
|
my $info = shift;
|
|
print "$_: $info->{$_}\n" for sort keys %$info;
|
|
}],
|
|
set => [ 'PVE::API2::Subscription', 'set', ['key'], { node => $nodename } ],
|
|
"set-offline-key" => [ __PACKAGE__, 'set_offline_key', ['data'] ],
|
|
delete => [ 'PVE::API2::Subscription', 'delete', undef, { node => $nodename } ],
|
|
};
|
|
|
|
1;
|