Fix AdminBin: use get_caller_username() instead of REMOTE_USER

AdminBin modules run as root, so $ENV{'REMOTE_USER'} is not set.
The correct way to get the authenticated cPanel user is via the
parent class method get_caller_username().

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
shuki
2026-03-05 02:31:50 +02:00
parent 8822f93438
commit 9dc427a1e6

View File

@@ -138,7 +138,7 @@ sub LIST_ALLOWED_REMOTES {
sub LIST_SNAPSHOTS { sub LIST_SNAPSHOTS {
my ($self, $remote) = @_; my ($self, $remote) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -150,7 +150,7 @@ sub LIST_SNAPSHOTS {
sub LIST_DATABASES { sub LIST_DATABASES {
my ($self, $remote, $timestamp) = @_; my ($self, $remote, $timestamp) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -164,7 +164,7 @@ sub LIST_DATABASES {
sub LIST_MAILBOXES { sub LIST_MAILBOXES {
my ($self, $remote, $timestamp) = @_; my ($self, $remote, $timestamp) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -178,7 +178,7 @@ sub LIST_MAILBOXES {
sub LIST_FILES { sub LIST_FILES {
my ($self, $remote, $timestamp, $path) = @_; my ($self, $remote, $timestamp, $path) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -197,7 +197,7 @@ sub LIST_FILES {
sub LIST_DBUSERS { sub LIST_DBUSERS {
my ($self, $remote, $timestamp) = @_; my ($self, $remote, $timestamp) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -211,7 +211,7 @@ sub LIST_DBUSERS {
sub LIST_CRON { sub LIST_CRON {
my ($self, $remote, $timestamp) = @_; my ($self, $remote, $timestamp) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -225,7 +225,7 @@ sub LIST_CRON {
sub LIST_DNS { sub LIST_DNS {
my ($self, $remote, $timestamp) = @_; my ($self, $remote, $timestamp) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -239,7 +239,7 @@ sub LIST_DNS {
sub LIST_SSL { sub LIST_SSL {
my ($self, $remote, $timestamp) = @_; my ($self, $remote, $timestamp) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -253,7 +253,7 @@ sub LIST_SSL {
sub RESTORE_ACCOUNT { sub RESTORE_ACCOUNT {
my ($self, $remote, $timestamp, $exclude) = @_; my ($self, $remote, $timestamp, $exclude) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -273,7 +273,7 @@ sub RESTORE_ACCOUNT {
sub RESTORE_FILES { sub RESTORE_FILES {
my ($self, $remote, $timestamp, $path, $exclude) = @_; my ($self, $remote, $timestamp, $path, $exclude) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -296,7 +296,7 @@ sub RESTORE_FILES {
sub RESTORE_DATABASE { sub RESTORE_DATABASE {
my ($self, $remote, $timestamp, $dbname) = @_; my ($self, $remote, $timestamp, $dbname) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -316,7 +316,7 @@ sub RESTORE_DATABASE {
sub RESTORE_MAILBOX { sub RESTORE_MAILBOX {
my ($self, $remote, $timestamp, $email) = @_; my ($self, $remote, $timestamp, $email) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -336,7 +336,7 @@ sub RESTORE_MAILBOX {
sub RESTORE_CRON { sub RESTORE_CRON {
my ($self, $remote, $timestamp) = @_; my ($self, $remote, $timestamp) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -350,7 +350,7 @@ sub RESTORE_CRON {
sub RESTORE_DBUSERS { sub RESTORE_DBUSERS {
my ($self, $remote, $timestamp, $dbuser) = @_; my ($self, $remote, $timestamp, $dbuser) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -370,7 +370,7 @@ sub RESTORE_DBUSERS {
sub RESTORE_DOMAINS { sub RESTORE_DOMAINS {
my ($self, $remote, $timestamp, $domain) = @_; my ($self, $remote, $timestamp, $domain) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;
@@ -390,7 +390,7 @@ sub RESTORE_DOMAINS {
sub RESTORE_SSL { sub RESTORE_SSL {
my ($self, $remote, $timestamp, $domain) = @_; my ($self, $remote, $timestamp, $domain) = @_;
my $user = $ENV{'REMOTE_USER'} // ''; my $user = $self->get_caller_username() // '';
return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE; return "ERROR: Invalid user" unless $user =~ $ACCOUNT_RE;
return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE; return "ERROR: Invalid remote" unless defined $remote && $remote =~ $REMOTE_RE;