????

Your IP : 18.217.37.129


Current Path : /bin/
Upload File :
Current File : //bin/cpanel-dbmapping

#!/bin/sh
eval 'if [ -x /usr/local/cpanel/3rdparty/bin/perl ]; then exec /usr/local/cpanel/3rdparty/bin/perl -x -- $0 ${1+"$@"}; else exec /usr/bin/perl -x $0 ${1+"$@"}; fi;'
if 0;

#!/usr/bin/perl


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

my $pckg_name = 'Cpanel';
use strict;
use warnings;

eval "use " .$pckg_name . "::Config::Users          ();";
if ($@){
    $pckg_name = 'cPScript';
    eval "use " .$pckg_name . "::Config::Users       ();";
}

#eval "use " .$pckg_name . "::Config::Users         ();";
eval "use  " .$pckg_name . "::DB::Map              ();";
eval "use  " .$pckg_name . "::DB                   ();";

use Data::Dumper;

my @old = ();
my @new = ();
my @copy_new = ();

my $noSystemUsers = ($#ARGV >= 0 && $ARGV[0] eq "--nosys");
if ($noSystemUsers) {
    shift @ARGV;
}

my $numArgs = $#ARGV + 1;

if($numArgs>0){
    foreach my $mb (@ARGV) {
        if($mb>0){
            my $uname_1 = getpwuid($mb);
            @new = get_map_list_user_($uname_1);

            foreach my $item (@new){
                my $fnd = 0;
                foreach my $item2 (@old){
                    if (($$item[0] eq $$item2[0]) && ($$item[1] eq $$item2[1])){
                        $fnd = 1;
                        last;
                    } 
                }
                if($fnd==0){
                    push @old, $item;
                } 
            }
        }
    }

    foreach my $item (@old){
        print $$item[0], " ", $$item[1], " ", $$item[2], "\n";
    }

} else {

    @new = get_map_list_();
    @copy_new = map { [@$_] } @new;

    my @del_list = ();
    my @del_list2 = ();

    my $i=0;
    my $j=0;
    foreach my $item (@new){
        $j=0;
        my $del = 0;
        foreach my $item2 (@old){
            if (($$item[0] eq $$item2[0]) && ($$item[1] eq $$item2[1])){
                push @del_list, $j;
                $del = 1;
            } 
            $j++;
        }
        if($del==1){
            push @del_list2, $i;
        } 
        $i++;
    }

    foreach my $item (@del_list){
        delete $old[$item];
    }
    foreach my $item (@del_list2){
        delete $new[$item];
    }
    @old = grep {$_} @old;
    @new = grep {$_} @new;

    my $cnt_old = @old;
    my $cnt_new = @new;

    if($cnt_old>0 || $cnt_new>0){
        foreach my $item (@copy_new){
            print $$item[0], " ", $$item[1], " ", $$item[2], "\n";
        }
    }
}

sub get_map_list_ {
    my @arr = ();
    my @users =Cpanel::Config::Users::getcpusers();
    foreach my $user (@users) {
        my $user_map1 = Cpanel::DB::get_map ( {'cpuser' => $user} );
        my $name="";
        my $uid= -1;
        my $dummy;
        ($name, $dummy, $uid, $dummy, $dummy, $dummy, $dummy, $dummy, $dummy) = getpwnam($user);
        if ($uid>=0 && !$noSystemUsers){
                push @arr, [ $user, $user, "$uid" ];
        }

        if ($uid>=0 && exists($$user_map1{'stash'}{'MYSQL'}{'dbusers'})){
            for my $key (keys %{$$user_map1{'stash'}{'MYSQL'}{'dbusers'}}) { 
                push @arr, [ $key, $user, "$uid" ];
            }
        }
    }
    return @arr;
}

sub get_map_list_user_ {
    my @arr = ();
    my $user = shift;
    my $user_map1 = Cpanel::DB::get_map ( {'cpuser' => $user} );
    my $name = "";
    my $uid = -1;
    my $dummy;
    ($name, $dummy, $uid, $dummy, $dummy, $dummy, $dummy, $dummy, $dummy) = getpwnam($user);
    if ($uid>=0 && !$noSystemUsers){
        push @arr, [ $user, $user, "$uid" ];
    }

    if ($uid>=0 && exists($$user_map1{'stash'}{'MYSQL'}{'dbusers'})){
        for my $key (keys %{$$user_map1{'stash'}{'MYSQL'}{'dbusers'}}) { 
        push @arr, [ $key, $user, "$uid" ];
    }
    }
    return @arr;
}