# check access permissions
PMG::AccessControl::check_api2_permissions($info->{permissions}, $auth->{userid});
- if ($info->{proxyto}) {
- my $pn = $info->{proxyto};
+ if (my $pn = $info->{proxyto}) {
my $node;
if ($pn eq 'master') {
return;
}
+ if (my $pn = $info->{proxyto}) {
+ if ($pn eq 'master') {
+ $rpcenv->check_node_is_master();
+ }
+ }
+
$resp = {
data => $handler->handle($info, $uri_param),
info => $info, # useful to format output
use strict;
use warnings;
+use PVE::INotify;
use PVE::RESTEnvironment;
+use PMG::Cluster;
use PMG::ClusterConfig;
use base qw(PVE::RESTEnvironment);
+my $nodename = PVE::INotify::nodename();
+
# initialize environment - must be called once at program startup
sub init {
my ($class, $type, %params) = @_;
$self->{cinfo} = PVE::INotify::read_file("cluster.conf");
}
+sub check_node_is_master {
+ my ($self, $noerr);
+
+ my $master = PMG::Cluster::get_master_node($self->{cinfo});
+
+ return 1 if $master eq 'localhost' || $master eq $nodename;
+
+ return undef if $noerr;
+
+ die "this node ('$nodename') is not the master node\n";
+}
+
1;