MOON
Server: Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
System: Linux csr818.wilogic.com 2.6.18-419.el5xen #1 SMP Fri Feb 24 22:50:37 UTC 2017 x86_64
User: digitals (531)
PHP: 5.4.45
Disabled: NONE
Upload Files
File: //proc/self/root/scripts.20110531.215904.25158/suspendmysqlusers
#!/usr/bin/perl
# cpanel - suspendmysqlusers                      Copyright(c) 2010 cPanel, Inc.
#                                                           All rights Reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

BEGIN { unshift @INC, '/usr/local/cpanel'; }

use strict;
use Cpanel::DB::Map    ();
use Cpanel::MysqlUtils ();
use Cpanel::Logger     ();

my $user = shift @ARGV;

if ( !$user ) {
    print "USAGE: $0 <user>\n";
    exit 1;
}

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

my $map = Cpanel::DB::Map->new({ 'cpuser' => $user, 'db' => 'MYSQL' });
my $owner = $map->get_owner();

my @user_list = map { "'$_'" } map { $_->name() } $owner->dbusers();

if (!scalar @user_list) {
    $logger->warn("$user has no databases.");
    exit;
}

my $user_list = join ',', @user_list;

my $result = Cpanel::MysqlUtils::sqlcmd("SELECT User, Host, Password from mysql.user WHERE user IN ($user_list)");

my @lines = split /\n/, $result;
my %result;
foreach my $line (@lines) {
    my ( $user, $host, $pass ) = split /\s+/, $line, 3;

    if ( !$pass ) {
        $logger->info("MySQL user $user\@$host has a blank password!");
        $result{$user}{$host} = '*' x 41;
    }
    else {
        $result{$user}{$host} = $pass;
    }
}

foreach my $user ( keys %result ) {
    foreach my $host ( keys %{ $result{$user} } ) {
        if ( $result{$user}{$host} =~ m/^\*/ ) {
            $result{$user}{$host} =~ s/^\*//;
            $result{$user}{$host} = reverse $result{$user}{$host};
            $result{$user}{$host} = '-' . $result{$user}{$host};
        }
    }
}

foreach my $user ( keys %result ) {
    foreach my $host ( keys %{ $result{$user} } ) {
        my $pass   = $result{$user}{$host};
        my $dbuser = Cpanel::MysqlUtils::safesqlstring($user);
        my $dbhost = Cpanel::MysqlUtils::safesqlstring($host);
        $pass = Cpanel::MysqlUtils::safesqlstring($pass);
        Cpanel::MysqlUtils::sqlcmd("UPDATE mysql.user SET Password='$pass' WHERE user='$dbuser' AND host='$dbhost'");
    }
}

Cpanel::MysqlUtils::sqlcmd('FLUSH PRIVILEGES');