diff --git a/scripts/jobs/cron_traffic.inc.functions.php b/scripts/jobs/cron_traffic.inc.functions.php index 1934b437..307d270c 100644 --- a/scripts/jobs/cron_traffic.inc.functions.php +++ b/scripts/jobs/cron_traffic.inc.functions.php @@ -17,24 +17,22 @@ * */ -function awstatsDoSingleDomain($domain, $outputdir) -{ +function awstatsDoSingleDomain($domain, $outputdir) { + global $cronlog, $settings, $theme; $returnval = 0; $domainconfig = makeCorrectFile($settings['system']['awstats_conf'].'/awstats.' . $domain . '.conf'); - if(file_exists($domainconfig)) - { + + if (file_exists($domainconfig)) { + $outputdir = makeCorrectDir($outputdir . '/' . $domain); - if(!is_dir($outputdir)) - { + if (!is_dir($outputdir)) { safe_exec('mkdir -p ' . escapeshellarg($outputdir)); } - /** - * check for correct path of awstats_buildstaticpages.pl - */ + //check for correct path of awstats_buildstaticpages.pl $awbsp = makeCorrectFile($settings['system']['awstats_path'].'/awstats_buildstaticpages.pl'); $awprog = makeCorrectFile($settings['system']['awstats_awstatspath'].'/awstats.pl'); @@ -47,46 +45,43 @@ function awstatsDoSingleDomain($domain, $outputdir) $cronlog->logAction(CRON_ACTION, LOG_INFO, "Running awstats_buildstaticpages.pl for domain '".$domain."' (Output: '".$outputdir."')"); safe_exec($awbsp.' -awstatsprog='.escapeshellarg($awprog).' -update -month=' . date('n') . ' -year=' . date('Y') . ' -config=' . $domain . ' -dir='.escapeshellarg($outputdir)); - /** - * index file is saved like 'awstats.[domain].html', - * so link a index.html to it - */ + // index file is saved like 'awstats.[domain].html', + // so link a index.html to it $original_index = makeCorrectFile($outputdir.'/awstats.'.$domain.'.html'); $new_index = makeCorrectFile($outputdir.'/index.html'); - if(!file_exists($new_index)) { + if (!file_exists($new_index)) { safe_exec('ln -s '.escapeshellarg($original_index).' '.escapeshellarg($new_index)); } - /** - * statistics file looks like: 'awstats[month][year].[domain].txt' - */ + //statistics file looks like: 'awstats[month][year].[domain].txt' $file = makeCorrectFile($outputdir.'/awstats'.date('mY', time()).'.'.$domain.'.txt'); $cronlog->logAction(CRON_ACTION, LOG_INFO, "Gathering traffic information from '".$file."'"); if (file_exists($file)) { + $content = @file_get_contents($file); if ($content !== false) { $content_array = explode("\n", $content); $count_bdw = false; - foreach($content_array as $line) - { - if(trim($line) == '' // skip empty lines - || substr(trim($line), 0, 1) == '#' // skip comments + foreach ($content_array as $line) { + // skip empty lines and comments + if (trim($line) == '' + || substr(trim($line), 0, 1) == '#' ) { continue; } - + $parts = explode(' ', $line); - - if(isset($parts[0]) + + if (isset($parts[0]) && strtoupper($parts[0]) == 'BEGIN_DOMAIN' ) { $count_bdw = true; } if ($count_bdw) { - if(isset($parts[0]) + if (isset($parts[0]) && strtoupper($parts[0]) == 'END_DOMAIN' ) { $count_bdw = false; @@ -102,19 +97,19 @@ function awstatsDoSingleDomain($domain, $outputdir) return $returnval; } -function callAwstatsGetTraffic($customerid, $outputdir, $usersdomainlist) -{ - global $settings, $db, $cronlog, $theme; +function callAwstatsGetTraffic($customerid, $outputdir, $usersdomainlist) { + + global $cronlog; + $returnval = 0; - foreach($usersdomainlist as $domainid => $singledomain) - { + foreach ($usersdomainlist as $domainid => $singledomain) { // as we check for the config-model awstats will only parse // 'real' domains and no subdomains which are aliases in the // model-config-file. $returnval += awstatsDoSingleDomain($singledomain, $outputdir); } - + /** * as of #124, awstats traffic is saved in bytes instead * of kilobytes (like webalizer does) @@ -127,14 +122,21 @@ function callAwstatsGetTraffic($customerid, $outputdir, $usersdomainlist) * a sane value for our panel_traffic and to remain the whole stats * (awstats overwrites the customers .html stats-files) */ - - if($customerid !== false) - { - $result = $db->query_first("SELECT SUM(`http`) as `trafficmonth` FROM `" . TABLE_PANEL_TRAFFIC . "` - WHERE `customerid` = '".(int)$customerid."' - AND `year`='".date('Y', time())."' - AND `month`='".date('m', time())."'"); - if(is_array($result) + if ($customerid !== false) { + + $result_stmt = Database::prepare(" + SELECT SUM(`http`) as `trafficmonth` FROM `" . TABLE_PANEL_TRAFFIC . "` + WHERE `customerid` = :customerid + AND `year` = :year AND `month` = :month + "); + $result_data = array( + 'customerid' => $customerid, + 'year' => date('Y', time()), + 'month' => date('m', time()) + ); + $result = Database::pexecute_first($result_stmt, $result_data); + + if (is_array($result) && isset($result['trafficmonth']) ) { $returnval = ($returnval - floatval($result['trafficmonth'])); @@ -153,60 +155,51 @@ function callAwstatsGetTraffic($customerid, $outputdir, $usersdomainlist) * @return int Used traffic * @author Florian Lippert */ +function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlist) { + + global $settings, $cronlog; -function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlist) -{ - global $settings, $cronlog, $theme; $returnval = 0; - if(file_exists($settings['system']['logfiles_directory'] . $logfile . '-access.log')) - { + $logfile = makeCorrectFile($settings['system']['logfiles_directory'] . $logfile . '-access.log'); + if (file_exists($logfile)) { $domainargs = ''; - foreach($usersdomainlist as $domainid => $domain) - { + foreach ($usersdomainlist as $domainid => $domain) { // hide referer $domainargs.= ' -r ' . escapeshellarg($domain); } $outputdir = makeCorrectDir($outputdir); - - if(!file_exists($outputdir)) - { + if (!file_exists($outputdir)) { safe_exec('mkdir -p ' . escapeshellarg($outputdir)); } - if(file_exists($outputdir . 'webalizer.hist.1')) - { - unlink($outputdir . 'webalizer.hist.1'); + if (file_exists($outputdir . 'webalizer.hist.1')) { + @unlink($outputdir . 'webalizer.hist.1'); } - if(file_exists($outputdir . 'webalizer.hist') - && !file_exists($outputdir . 'webalizer.hist.1')) - { + if (file_exists($outputdir . 'webalizer.hist') + && !file_exists($outputdir . 'webalizer.hist.1') + ) { safe_exec('cp ' . escapeshellarg($outputdir . 'webalizer.hist') . ' ' . escapeshellarg($outputdir . 'webalizer.hist.1')); } $verbosity = ''; - - if($settings['system']['webalizer_quiet'] == '1') - { + if ($settings['system']['webalizer_quiet'] == '1') { $verbosity = '-q'; - } - elseif($settings['system']['webalizer_quiet'] == '2') - { + } elseif($settings['system']['webalizer_quiet'] == '2') { $verbosity = '-Q'; } $we = '/usr/bin/webalizer'; // FreeBSD uses other paths, #140 - if(!file_exists($we)) - { + if (!file_exists($we)) { $we = '/usr/local/bin/webalizer'; } $cronlog->logAction(CRON_ACTION, LOG_INFO, "Running webalizer for domain '".$caption."'"); - safe_exec($we . ' ' . $verbosity . ' -p -o ' . escapeshellarg($outputdir) . ' -n ' . escapeshellarg($caption) . $domainargs . ' ' . escapeshellarg($settings['system']['logfiles_directory'] . $logfile . '-access.log')); + safe_exec($we . ' ' . $verbosity . ' -p -o ' . escapeshellarg($outputdir) . ' -n ' . escapeshellarg($caption) . $domainargs . ' ' . escapeshellarg($logfile)); /** * Format of webalizer.hist-files: @@ -214,27 +207,25 @@ function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlis * Year: $webalizer_hist_row['1'] * KB: $webalizer_hist_row['5'] */ - $httptraffic = array(); $webalizer_hist = @file_get_contents($outputdir . 'webalizer.hist'); $cronlog->logAction(CRON_ACTION, LOG_INFO, "Gathering traffic information from '".$webalizer_hist."'"); + $webalizer_hist_rows = explode("\n", $webalizer_hist); - foreach($webalizer_hist_rows as $webalizer_hist_row) - { - if($webalizer_hist_row != '') - { + foreach ($webalizer_hist_rows as $webalizer_hist_row) { + if ($webalizer_hist_row != '') { + $webalizer_hist_row = explode(' ', $webalizer_hist_row); - if(isset($webalizer_hist_row['0']) - && isset($webalizer_hist_row['1']) - && isset($webalizer_hist_row['5'])) - { + if (isset($webalizer_hist_row['0']) + && isset($webalizer_hist_row['1']) + && isset($webalizer_hist_row['5']) + ) { $month = intval($webalizer_hist_row['0']); $year = intval($webalizer_hist_row['1']); $traffic = floatval($webalizer_hist_row['5']); - if(!isset($httptraffic[$year])) - { + if (!isset($httptraffic[$year])) { $httptraffic[$year] = array(); } @@ -247,23 +238,22 @@ function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlis $httptrafficlast = array(); $webalizer_lasthist = @file_get_contents($outputdir . 'webalizer.hist.1'); $cronlog->logAction(CRON_ACTION, LOG_INFO, "Gathering traffic information from '".$webalizer_lasthist."'"); + $webalizer_lasthist_rows = explode("\n", $webalizer_lasthist); - foreach($webalizer_lasthist_rows as $webalizer_lasthist_row) - { - if($webalizer_lasthist_row != '') - { + foreach ($webalizer_lasthist_rows as $webalizer_lasthist_row) { + if ($webalizer_lasthist_row != '') { + $webalizer_lasthist_row = explode(' ', $webalizer_lasthist_row); - if(isset($webalizer_lasthist_row['0']) - && isset($webalizer_lasthist_row['1']) - && isset($webalizer_lasthist_row['5'])) - { + if (isset($webalizer_lasthist_row['0']) + && isset($webalizer_lasthist_row['1']) + && isset($webalizer_lasthist_row['5']) + ) { $month = intval($webalizer_lasthist_row['0']); $year = intval($webalizer_lasthist_row['1']); $traffic = floatval($webalizer_lasthist_row['5']); - if(!isset($httptrafficlast[$year])) - { + if (!isset($httptrafficlast[$year])) { $httptrafficlast[$year] = array(); } @@ -273,16 +263,11 @@ function callWebalizerGetTraffic($logfile, $outputdir, $caption, $usersdomainlis } reset($httptrafficlast); - foreach($httptraffic as $year => $months) - { - foreach($months as $month => $traffic) - { - if(!isset($httptrafficlast[$year][$month])) - { + foreach ($httptraffic as $year => $months) { + foreach ($months as $month => $traffic) { + if (!isset($httptrafficlast[$year][$month])) { $returnval+= $traffic; - } - elseif($httptrafficlast[$year][$month] < $httptraffic[$year][$month]) - { + } elseif($httptrafficlast[$year][$month] < $httptraffic[$year][$month]) { $returnval+= ($httptraffic[$year][$month] - $httptrafficlast[$year][$month]); } }