Viewing File: /usr/local/cpanel/whostmgr/docroot/cgi/brandingimage.cgi

#!/usr/local/cpanel/3rdparty/bin/perl

# cpanel - whostmgr/docroot/cgi/brandingimage.cgi  Copyright 2022 cPanel, L.L.C.
#                                                           All rights reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

use Cpanel                     ();
use Cpanel::Form               ();
use Cpanel::AccessIds::SetUids ();

my %EXTLIST = ( 'jpg' => 'image/jpeg', 'gif' => 'image/gif', 'png' => 'image/png' );
my %FORM    = Cpanel::Form::parseform();

my $imagefile = $FORM{'img'};
my $theme     = $FORM{'theme'};
my $homedir   = ( getpwnam( $ENV{'REMOTE_USER'} ) )[7];

$theme     =~ s/\///g;
$theme     =~ s/[^\w\.\-]//g;
$theme     =~ s/\.\.//g;
$imagefile =~ s/\///g;
$imagefile =~ s/[^\w\.\-]//g;
$imagefile =~ s/\.\.//g;

my ( $euser, $owner_homedir ) = _setup_branding_vars();

Cpanel::AccessIds::SetUids::setuids($euser) || do {
    print "Content-type: text/html\r\n\r\nCould not resolve username\n";
    exit;
};

foreach my $ext ( keys %EXTLIST ) {
    serv_image_file( $ext, "$owner_homedir/cpanelbranding/${theme}/${imagefile}.$ext" ) if -e "$owner_homedir/cpanelbranding/${theme}/${imagefile}.$ext";
}
foreach my $ext ( keys %EXTLIST ) {
    serv_image_file( $ext, "/usr/local/cpanel/base/frontend/${theme}/branding/${imagefile}.$ext" ) if -e "/usr/local/cpanel/base/frontend/${theme}/branding/${imagefile}.$ext";
}

sub serv_image_file {
    my ( $ext, $imagefile ) = @_;
    my $mime_type = $EXTLIST{$ext};
    my $size      = ( stat(_) )[7];

    print "Content-Length: $size\r\nContent-type: $mime_type\r\n\r\n";
    if ( open( my $image_fh, '<', $imagefile ) ) {
        binmode $image_fh;
        my $total_bytes_read = 0;
        my $buffer;
        while ( my $bytesread = read( $image_fh, $buffer, 32768 ) ) {
            $total_bytes_read += $bytesread;
            print $buffer;
        }
        close $image_fh;
    }
    exit;
}

sub _setup_branding_vars {
    my $euser         = $Cpanel::user    = $ENV{'REMOTE_USER'} eq 'root' ? 'cpanel'               : $ENV{'REMOTE_USER'};
    my $owner_homedir = $Cpanel::homedir = $ENV{'REMOTE_USER'} eq 'root' ? $Cpanel::cpanelhomedir : $homedir;

    return ( $euser, $owner_homedir );
}
Back to Directory File Manager