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;