db->queryAllRecords($sql, $conf['server_id']); foreach($records as $rec) { //$yesterday = date('Ymd',time() - 86400); $yesterday = date('Ymd', strtotime("-1 day", time())); $log_folder = 'log'; if($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') { $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = ?', $rec['parent_domain_id']); $subdomain_host = preg_replace('/^(.*)\.' . preg_quote($tmp['domain'], '/') . '$/', '$1', $rec['domain']); if($subdomain_host == '') $subdomain_host = 'web'.$rec['domain_id']; $log_folder .= '/' . $subdomain_host; unset($tmp); } $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log'); if(!@is_file($logfile)) { $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log.gz'); if(!@is_file($logfile)) { continue; } } $domain = escapeshellcmd($rec['domain']); $statsdir = escapeshellcmd($rec['document_root'].'/'.(($rec['type'] == 'vhostsubdomain' || $rec['type'] == 'vhostalias') ? $rec['web_folder'] : 'web').'/stats'); $webalizer = '/usr/bin/webalizer'; $webalizer_conf_main = '/etc/webalizer/webalizer.conf'; $webalizer_conf = escapeshellcmd($rec['document_root'].'/log/webalizer.conf'); if(is_file($statsdir.'/index.php')) unlink($statsdir.'/index.php'); if(!@is_file($webalizer_conf)) { copy($webalizer_conf_main, $webalizer_conf); } if(@is_file($webalizer_conf)) { setConfigVar($webalizer_conf, 'Incremental', 'yes'); setConfigVar($webalizer_conf, 'IncrementalName', $statsdir.'/webalizer.current'); setConfigVar($webalizer_conf, 'HistoryName', $statsdir.'/webalizer.hist'); } if(!@is_dir($statsdir)) mkdir($statsdir); $username = escapeshellcmd($rec['system_user']); $groupname = escapeshellcmd($rec['system_group']); chown($statsdir, $username); chgrp($statsdir, $groupname); exec("$webalizer -c $webalizer_conf -n $domain -s $domain -r $domain -q -T -p -o $statsdir $logfile"); exec('chown -R '.$username.':'.$groupname.' '.$statsdir); } parent::onRunJob(); } /* this function is optional if it contains no custom code */ public function onAfterRun() { global $app; parent::onAfterRun(); } } ?>