Viewing File: /usr/local/cpanel/base/backend/webdiskdesktop.cgi
#!/usr/local/cpanel/3rdparty/bin/perl
# cpanel - base/backend/webdiskdesktop.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 strict;
use warnings;
use Cpanel::Encoder::URI ();
use Cpanel::Encoder::Tiny ();
use Cpanel::Locale ();
use Cpanel::Logger ();
use Cpanel::Validate::Domain::Tiny ();
my $locale = Cpanel::Locale->get_handle();
my $logger;
my ( $domain, $ssl, $port, $app ) = split( /\|/, Cpanel::Encoder::URI::uri_decode_str( $ENV{'QUERY_STRING'} ) );
if ( !$domain || !Cpanel::Validate::Domain::Tiny::validdomainname($domain) ) {
$logger ||= Cpanel::Logger->new();
$logger->warn('Invalid domain name passed.');
my $invalidDomainTitle = Cpanel::Encoder::Tiny::safe_html_encode_str( $locale->maketext('Invalid Domain') );
my $invalidDomainBody = Cpanel::Encoder::Tiny::safe_html_encode_str( $locale->maketext('An invalid domain name was passed.') );
print "Content-type: text/html\r\n\r\n<html><head><title>$invalidDomainTitle</title></head><body>$invalidDomainBody</body></html>";
exit;
}
$ssl = int($ssl);
$port = $port ? int $port : $ssl ? '2078' : '2077';
my $txtsecure = $ssl ? $locale->maketext('Secure') . ' ' : '';
my $secure = Cpanel::Encoder::URI::uri_encode_str($txtsecure);
my $usecure = $txtsecure;
$usecure =~ s/ /_/g;
my $sslc = $ssl ? 's' : '';
my $icon = ( $app eq 'nautilus' ? 'folder' : 'konqueror' );
my $protocol = ( $app eq 'nautilus' ? 'dav' : 'webdav' ) . $sslc . '://';
# Since this is a filename, we want the domain at the beginning and the file extension at the end. Thus, we only localize the label in between:
my $fileName = "$domain " . ( $ssl ? $locale->maketext('Secure') : '' ) . 'WebDisk.desktop';
# So many browers, so much brokeness, see http://greenbytes.de/tech/tc2231/
$fileName = Cpanel::Encoder::URI::uri_encode_str($fileName);
print <<EOM;
Content-Type: application/download; name="$fileName";
Content-Disposition: attachment; filename="$fileName";
EOM
if ( open( my $wdisk_fh, '<', '/usr/local/cpanel/base/backend/webdisk.desktop' ) ) {
while ( readline($wdisk_fh) ) {
s/\%protocol\%/$protocol/g;
s/\%domain\%/$domain/g;
s/\%icon\%/$icon/g;
s/\%url\%//g;
s/\%port\%/$port/g;
s/\%txtsecure\%/$txtsecure/g;
s/\%secure\%/$secure/g;
s/\%usecure\%/$usecure/g;
s/\%sslc\%/$sslc/g;
print;
}
close($wdisk_fh);
}
else {
$logger ||= Cpanel::Logger->new();
$logger->warn('Unable to locate webdisk.desktop');
my $fileNotFoundTitle = Cpanel::Encoder::Tiny::safe_html_encode_str( $locale->maketext('Unable To Locate File') );
my $fileNotFoundBody = Cpanel::Encoder::Tiny::safe_html_encode_str( $locale->maketext('Unable to locate file.') );
print "Content-type: text/html\r\n\r\n<html><head><title>$fileNotFoundTitle</title></head><body>$fileNotFoundBody</body></html>";
exit;
}
Back to Directory
File Manager