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/proc/self/root/scripts.20110531.215904.25158/ipusage
#!/usr/bin/perl
# cpanel - ipusage                                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::FtpUtils                ();
use Cpanel::Sys                     ();
use Cpanel::Sys::OS                 ();
use Cpanel::SafeRun                 ();
use Cpanel::PwCache                 ();
use Cpanel::Config                  ();
use Cpanel::Config::LoadUserDomains ();
use Cpanel::Config::userdata::Load  ();
use Cpanel::Config::userdata::Cache ();
use Cpanel::DIp::MainIP             ();

my $freebsd       = Cpanel::Sys::OS::getos() eq 'freebsd' ? 1 : 0;
my $wwwacct_ref   = Cpanel::Config::loadwwwacctconf();
my $ethdev        = $wwwacct_ref->{'ETHDEV'} || 'eth0';
my $hostname      = Cpanel::Sys::gethostname();
my $using_proftpd = Cpanel::FtpUtils::using_pureftpd() ? 0 : 1;
my $proftpconf    = '/etc/proftpd.conf';
my $httpconf      = '/usr/local/apache/conf/httpd.conf';
my $if            = '';
my $ss            = '';
my %ASN;
my %PSN;
my @MIPS;
my @IPS;
my $mainip;

if ($freebsd) {
    $proftpconf = '/usr/local/etc/proftpd.conf';
    $if         = `/sbin/ifconfig -a`;
}
else {
    $if = `/sbin/ifconfig $ethdev`;
}

my $vhost_ipblock;
my $in_vhost       = 0;
my $in_proxy_vhost = 0;
my $vhost_servername;

my $userdata = Cpanel::Config::userdata::Cache::load_cache();

for my $dns_name ( keys %$userdata ) {
    my ( $type, $ip, $ip_ssl ) = ( @{ $userdata->{$dns_name} } )[ 2, 5, 6 ];
    next unless ( $type eq 'main' || $type eq 'sub' );
    if ($ip) {
        $ip =~ s{:.*}{};    # trim port number
        $ASN{$ip}->{$dns_name} = 1;
    }
    if ($ip_ssl) {
        $ip_ssl =~ s{:.*}{};    # trim port number
        $ASN{$ip_ssl}->{$dns_name} = 1;
    }
}

my $nobody = Cpanel::Config::userdata::Load::load_userdata_main('nobody');
if ( $nobody && $nobody->{'main_domain'} ) {
    my $ip = Cpanel::DIp::MainIP::getmainserverip();
    $ASN{$ip}->{ $nobody->{'main_domain'} } = 1 if $ip;
}

while ( my ( $ip, $vh_set ) = each %ASN ) {
    $ASN{$ip} = [ sort keys %$vh_set ];
}

$in_vhost = 0;
if ($using_proftpd) {
    open( PROCONF, $proftpconf );
    while ( my $line = <PROCONF> ) {
        if ( $line =~ /^\s*<virtualhost\s*(\S.*?)\s*>\s*$/i ) {
            $vhost_ipblock = $1;
            $in_vhost      = 1;
        }
        elsif ( $line =~ /^\s*\<\/virtualhost/i ) {
            $in_vhost = 0;
        }
        elsif ( $in_vhost == 1 && $line =~ /^\s*servername\s*(\S+)/i ) {
            $vhost_servername = $1;
            foreach my $vhost_ip ( split( /\s+/, $vhost_ipblock ) ) {
                $vhost_ip =~ s/:\S+$//;
                $PSN{$vhost_ip} = "$PSN{$vhost_ip},$vhost_servername";
            }
        }
    }
    close(PROCONF);
}
elsif ( -d '/etc/pure-ftpd' ) {
    if ( opendir my $pureftpd_dh, '/etc/pure-ftpd' ) {
        my $true_userdomains = Cpanel::Config::LoadUserDomains::loadtrueuserdomains( {}, 1 );
        while ( my $file = readdir $pureftpd_dh ) {
            next if $file !~ m/^\d+\.\d+\.\d+\.\d+$/;
            if ( -l '/etc/pure-ftpd/' . $file && -e '/etc/pure-ftpd/' . $file ) {
                my $owner_uid = ( stat(_) )[4];
                my $user      = Cpanel::PwCache::getpwuid($owner_uid);
                if ( $true_userdomains->{$user} ) {
                    $PSN{$file} = 'ftp.' . $true_userdomains->{$user};
                }
            }
        }
        closedir $pureftpd_dh;
    }
}

if ($freebsd) {
    @MIPS = split( /\n/, Cpanel::SafeRun::saferun( '/sbin/ifconfig', '-a' ) );
}
else {
    @MIPS = split( /\n/, Cpanel::SafeRun::saferun( '/sbin/ifconfig', $ethdev ) );
}

foreach my $ipx (@MIPS) {
    if ( $ipx =~ /(\d*\.\d*\.\d*\.\d*){1}/ ) {
        $mainip = $1;
        last;
    }
}

if ($freebsd) {
    @IPS = grep( /inet/, split( /\n/, Cpanel::SafeRun::saferun( '/sbin/ifconfig', '-a' ) ) );
}
else {
    @IPS = grep( /inet addr/, split( /\n/, Cpanel::SafeRun::saferun( '/sbin/ifconfig', '-a' ) ) );
}

my $whm50 = defined $ENV{"WHM50"} && $ENV{"WHM50"} ne '';

if ($whm50) {
    print <<"HTML_END";

<script type="text/javascript" src="/js/sorttable.js"></script>

<table border=1 class=sortable id=ipusage>
<tr class=cellheader>

<th><b>Ip Address</b></th>
<th nonsortable=true><b>Http Usage</b></th>
<th nonsortable=true><b>Ftp Usage</b></th>
<th nonsortable=true><b>Mail Usage</b></th>

</tr>
HTML_END
}

foreach my $ip (@IPS) {
    next if ( $ip !~ /\d+\.\d+\.\d+\.\d+/ );
    $ip =~ /(\d*\.\d*\.\d*\.\d*){1}/;
    if ( $1 ne "127.0.0.1" ) {
        $ip = $1;
        $PSN{$ip} = '' if ( !defined $PSN{$ip} );
        $PSN{$ip} =~ s/^\,//g;
        print '<tr><td>' if $whm50;
        print "$ip ";
        print '</td><td>' if $whm50;
        my @adomains = exists $ASN{$ip} ? @{ $ASN{$ip} } : ();
        my $sdomains = join ',', @adomains;

        if ( exists $ASN{$ip} ) {
            if ( !$whm50 ) {
                print "[http: $sdomains] ";
            }
            else {
                print "$_ " for @adomains;
            }
            $ss .= "${ip}_http=$sdomains\n";
        }

        print '</td><td>' if $whm50;

        if ( $PSN{$ip} ne '' ) {
            if ( !$whm50 ) {
                print "[ftp: $PSN{$ip}] ";
            }
            else {
                print "$PSN{$ip} ";
            }
            $ss .= "${ip}_ftp=$PSN{$ip}\n";
        }

        print '</td><td>' if $whm50;

        my $mailstuff = '';
        foreach my $dom (@adomains) {
            $dom =~ s/^www\.//g;
            if ( -e "/etc/valiases/$dom" ) {
                my $dcount = 0;
                open( DOM, "/etc/valiases/$dom" );
                while (<DOM>) { $dcount++; }
                close(DOM);
                if ( $dcount > 0 ) {
                    $mailstuff = $mailstuff . "$dom($dcount accts) ";
                }
            }
        }

        if ( $mailstuff ne '' ) {
            $ss = $ss . "${ip}_mail=$mailstuff\n";
            if ( !$whm50 ) {
                print "[mail: $mailstuff] ";
            }
            else {
                print "$mailstuff ";
            }
        }
        print '</td></tr>' if $whm50;
        print "\n";
    }
}

print '</table>' if $whm50;