shell bypass 403

UnknownSec Shell

: /scripts/ [ drwxr-xr-x ]

name : locale_export
#!/usr/local/cpanel/3rdparty/bin/perl

#                                      Copyright 2024 WebPros International, LLC
#                                                           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 Getopt::Param                  ();
use Cpanel::Locale                 ();
use Cpanel::Locale::Utils::Display ();
use Cpanel::Locale::Utils::XML     ();
use Cpanel::SafeDir::MK            ();

my $prm = Getopt::Param->new(
    {
        'no_args_help' => 1,
        'help_coderef' => sub {
            print <<"END_USAGE";
$0 --locale={locale_tag} [--locale=… --locale=… …] [--quiet] [--export-{locale_tag}={path}]  [--dumper-format] [--exclude-bracketed-strings] [--no-fallback]

Export locales from the Locale database in XML format.

Options:
  --help                       Show this help screen.
  --quiet                      Show less status output than normal. This also suppresses warnings related to locale string syntax.
  --locale={locale_tag}        Specify a locale to export. You may pass the flag multiple times in order to export multiple locales.
      This creates files in a default location that `/usr/local/cpanel/scripts/locale_import --locale={locale_tag}` knows to use.
  --export-{locale_tag}={file} Save the export of the locale {locale_tag} to {file} instead of the standard place.
      This creates files that can be imported with `/usr/local/cpanel/scripts/locale_import --import={file}`
  --dumper-format              Export into the old format instead of XLIFF (will force an .xml extension on any --export-XX paths)
  --recover                    Try to recover on encountering an ill-formed phrase.
  --exclude-bracketed-strings  Exclude strings that contain bracket notation, which may cause problems on some translation platforms.
  --no-fallback                Do not use original strings as fallback. If no translation is available, leave target blank.

The XML files that this script creates can be imported via /usr/local/cpanel/scripts/locale_import

If there were problems exporting the script will exit with an error status. To examine the details of what happened do not use --quiet.
END_USAGE
            exit;
        },
    }
);

my $verbose = $prm->get_param('quiet') ? 0 : 1;
my $options = {
    'recover'     => ( $prm->get_param('recover')                   ? 1 : 0 ),
    'no-brackets' => ( $prm->get_param('exclude-bracketed-strings') ? 1 : 0 ),
    'no-fallback' => ( $prm->get_param('no-fallback')               ? 1 : 0 ),
    'no-warn'     => ( $verbose                                     ? 0 : 1 ),
};
my $count  = 0;
my $failed = 0;
my $locale = Cpanel::Locale->get_handle();

my %locale_lookup;

@locale_lookup{ Cpanel::Locale::Utils::Display::get_locale_list($locale) } = ();
my $euid_home;
foreach my $loc ( $prm->get_param('locale') ) {
    $count++;

    if ( !exists $locale_lookup{$loc} ) {
        print "Invalid locale\n" if $verbose;
        $failed++;
        next;
    }

    my $path = $prm->get_param('dumper-format') ? "/var/cpanel/locale/export/$loc.xml" : "/var/cpanel/locale/export/$loc.xlf";
    if ( $prm->get_param("export-$loc") ) {
        $path = $prm->get_param("export-$loc");
        $path =~ s/\.[^.]+$//;    # strip any existing extension …
        if ( $prm->get_param('dumper-format') ) {
            $path .= '.xml';      # … replace it w/ .xml
        }
        else {
            $path .= '.xlf';      # … replace it w/ .xlf
        }
    }

    # expand ~/ that was treated as a string and not expanded by the shell before being put in @ARGV
    if ( substr( $path, 0, 2 ) eq '~/' ) {
        $euid_home ||= ( getpwuid($>) )[7];    # only look it up if needed, and only look it up one time
        substr( $path, 0, 2, "$euid_home/" );
    }

    my ( $head, @dir ) = reverse( split( /\//, $path ) );
    my $dir = join( '/', reverse(@dir) );
    if ( $dir && !-d $dir ) {
        if ( !Cpanel::SafeDir::MK::safemkdir($dir) ) {
            print "Could not create path '$dir': $!\n" if $verbose;
            $failed++;
            next;
        }
    }

    if ( -e $path ) {
        print "Replacing existing export file '$path'\n" if $verbose;
        unlink($path);
        if ( -e $path ) {
            print "Could not unlink '$path': $!\n" if $verbose;
            $failed++;
            next;
        }
    }

    my $error = '';

    if ( Cpanel::Locale::Utils::XML::locale_to_xml( $path, $loc, \$error, $options ) ) {
        print "$error'$loc' has been exported to '$path'.\n" if $verbose;
    }
    else {
        print "Failed to create XML file for locale '$loc': $error\n" if $verbose;
        $failed++;
        next;
    }
}

if ( !$count || $failed ) {
    if ($verbose) {
        if ($failed) {
            print "$failed out of $count failed to export.\n";
        }
        elsif ( !$count ) {
            print "No locales to export.\n";
        }
    }
    exit 1;
}

© 2025 UnknownSec
Installment and Secure Host | Anyleson - Learning Platform
INR (₹)
India Rupee
$
United States Dollar
Installment and Secure Host

Installment and Secure Host

in Business Strategy
5.00
(1 Ratings)
Created by Jessica Wray

Report course

Please describe about the report short and clearly.

Share

Share course with your friends

Buy with points