From b1a6a5a3991cec5cd08873b01376e45d0b247f18 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Thu, 14 Nov 2013 09:05:33 -0500
Subject: [PATCH] Cleaning up code to match coding guidelines
---
server/lib/classes/cron.d/200-logfiles.inc.php | 368 ++++++++++++++++++++++++++--------------------------
1 files changed, 185 insertions(+), 183 deletions(-)
diff --git a/server/lib/classes/cron.d/200-logfiles.inc.php b/server/lib/classes/cron.d/200-logfiles.inc.php
index 862f0f4..addbf21 100644
--- a/server/lib/classes/cron.d/200-logfiles.inc.php
+++ b/server/lib/classes/cron.d/200-logfiles.inc.php
@@ -29,194 +29,196 @@
*/
class cronjob_logfiles extends cronjob {
-
- // job schedule
- protected $_schedule = '0 0 * * *';
-
- /* this function is optional if it contains no custom code */
- public function onPrepare() {
- global $app;
-
- parent::onPrepare();
- }
-
- /* this function is optional if it contains no custom code */
- public function onBeforeRun() {
- global $app;
-
- return parent::onBeforeRun();
- }
-
- public function onRunJob() {
- global $app, $conf;
-
- #######################################################################################################
- // Make the web logfiles directories world readable to enable ftp access
- #######################################################################################################
- if(is_dir('/var/log/ispconfig/httpd')) exec('chmod +r /var/log/ispconfig/httpd/*');
+ // job schedule
+ protected $_schedule = '0 0 * * *';
- #######################################################################################################
- // Manage and compress web logfiles and create traffic statistics
- #######################################################################################################
+ /* this function is optional if it contains no custom code */
+ public function onPrepare() {
+ global $app;
- $sql = "SELECT domain_id, domain, type, document_root, web_folder, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain') AND server_id = ".$conf['server_id'];
- $records = $app->db->queryAllRecords($sql);
- foreach($records as $rec) {
+ parent::onPrepare();
+ }
- //* create traffic statistics based on yesterdays access log file
- $yesterday = date('Ymd',time() - 86400);
+ /* this function is optional if it contains no custom code */
+ public function onBeforeRun() {
+ global $app;
- $log_folder = 'log';
- if($rec['type'] == 'vhostsubdomain') {
- $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($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);
- }
+ return parent::onBeforeRun();
+ }
- $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log';
- $total_bytes = 0;
+ public function onRunJob() {
+ global $app, $conf;
- $handle = @fopen($logfile, "r");
- if ($handle) {
- while (($line = fgets($handle, 4096)) !== false) {
- if (preg_match('/^\S+ \S+ \S+ \[.*?\] "\S+.*?" \d+ (\d+) ".*?" ".*?"/', $line, $m)) {
- $total_bytes += intval($m[1]);
- }
- }
+ //######################################################################################################
+ // Make the web logfiles directories world readable to enable ftp access
+ //######################################################################################################
- //* Insert / update traffic in master database
- $traffic_date = date('Y-m-d',time() - 86400);
- $tmp = $app->dbmaster->queryOneRecord("select hostname from web_traffic where hostname='".$rec['domain']."' and traffic_date='".$traffic_date."'");
- if(is_array($tmp) && count($tmp) > 0) {
- $sql = "update web_traffic set traffic_bytes=traffic_bytes+"
- . $total_bytes
- . " where hostname='" . $rec['domain']
- . "' and traffic_date='" . $traffic_date . "'";
- } else {
- $sql = "insert into web_traffic (hostname, traffic_date, traffic_bytes) values ('".$rec['domain']."', '".$traffic_date."', '".$total_bytes."')";
- }
- $app->dbmaster->query($sql);
+ if(is_dir('/var/log/ispconfig/httpd')) exec('chmod +r /var/log/ispconfig/httpd/*');
- fclose($handle);
- }
+ //######################################################################################################
+ // Manage and compress web logfiles and create traffic statistics
+ //######################################################################################################
- $yesterday2 = date('Ymd',time() - 86400*2);
- $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday2.'-access.log');
+ $sql = "SELECT domain_id, domain, type, document_root, web_folder, parent_domain_id FROM web_domain WHERE (type = 'vhost' or type = 'vhostsubdomain') AND server_id = ".$conf['server_id'];
+ $records = $app->db->queryAllRecords($sql);
+ foreach($records as $rec) {
- //* Compress logfile
- if(@is_file($logfile)) {
- // Compress yesterdays logfile
- exec("gzip -c $logfile > $logfile.gz");
- unlink($logfile);
- }
+ //* create traffic statistics based on yesterdays access log file
+ $yesterday = date('Ymd', time() - 86400);
- // rotate and compress the error.log when it exceeds a size of 10 MB
- $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/error.log');
- if(is_file($logfile) && filesize($logfile) > 10000000) {
- exec("gzip -c $logfile > $logfile.1.gz");
- exec("cat /dev/null > $logfile");
- }
+ $log_folder = 'log';
+ if($rec['type'] == 'vhostsubdomain') {
+ $tmp = $app->db->queryOneRecord('SELECT `domain` FROM web_domain WHERE domain_id = '.intval($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);
+ }
- // delete logfiles after 30 days
- $month_ago = date('Ymd',time() - 86400 * 30);
- $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$month_ago.'-access.log.gz');
- if(@is_file($logfile)) {
- unlink($logfile);
- }
+ $logfile = $rec['document_root'].'/' . $log_folder . '/'.$yesterday.'-access.log';
+ $total_bytes = 0;
- //* Delete older Log files, in case that we missed them before due to serverdowntimes.
- $datepart = date('Ym',time() - 86400 * 31 * 2);
+ $handle = @fopen($logfile, "r");
+ if ($handle) {
+ while (($line = fgets($handle, 4096)) !== false) {
+ if (preg_match('/^\S+ \S+ \S+ \[.*?\] "\S+.*?" \d+ (\d+) ".*?" ".*?"/', $line, $m)) {
+ $total_bytes += intval($m[1]);
+ }
+ }
- $logfile = escapeshellcmd($rec['document_root']).'/' . $log_folder . '/'.$datepart.'*-access.log.gz';
- exec('rm -f '.$logfile);
+ //* Insert / update traffic in master database
+ $traffic_date = date('Y-m-d', time() - 86400);
+ $tmp = $app->dbmaster->queryOneRecord("select hostname from web_traffic where hostname='".$rec['domain']."' and traffic_date='".$traffic_date."'");
+ if(is_array($tmp) && count($tmp) > 0) {
+ $sql = "update web_traffic set traffic_bytes=traffic_bytes+"
+ . $total_bytes
+ . " where hostname='" . $rec['domain']
+ . "' and traffic_date='" . $traffic_date . "'";
+ } else {
+ $sql = "insert into web_traffic (hostname, traffic_date, traffic_bytes) values ('".$rec['domain']."', '".$traffic_date."', '".$total_bytes."')";
+ }
+ $app->dbmaster->query($sql);
- $logfile = escapeshellcmd($rec['document_root']).'/' . $log_folder . '/'.$datepart.'*-access.log';
- exec('rm -f '.$logfile);
- }
+ fclose($handle);
+ }
- //* Delete old logfiles in /var/log/ispconfig/httpd/ that were created by vlogger for the hostname of the server
- exec('hostname -f', $tmp_hostname);
- if($tmp_hostname[0] != '' && is_dir('/var/log/ispconfig/httpd/'.$tmp_hostname[0])) {
- exec('cd /var/log/ispconfig/httpd/'.$tmp_hostname[0]."; find . -mtime +30 -name '*.log' | xargs rm > /dev/null 2> /dev/null");
- }
- unset($tmp_hostname);
+ $yesterday2 = date('Ymd', time() - 86400*2);
+ $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$yesterday2.'-access.log');
- #######################################################################################################
- // Rotate the ispconfig.log file
- #######################################################################################################
+ //* Compress logfile
+ if(@is_file($logfile)) {
+ // Compress yesterdays logfile
+ exec("gzip -c $logfile > $logfile.gz");
+ unlink($logfile);
+ }
- // rotate the ispconfig.log when it exceeds a size of 10 MB
- $logfile = $conf['ispconfig_log_dir'].'/ispconfig.log';
- if(is_file($logfile) && filesize($logfile) > 10000000) {
- exec("gzip -c $logfile > $logfile.1.gz");
- exec("cat /dev/null > $logfile");
- }
+ // rotate and compress the error.log when it exceeds a size of 10 MB
+ $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/error.log');
+ if(is_file($logfile) && filesize($logfile) > 10000000) {
+ exec("gzip -c $logfile > $logfile.1.gz");
+ exec("cat /dev/null > $logfile");
+ }
- // rotate the cron.log when it exceeds a size of 10 MB
- $logfile = $conf['ispconfig_log_dir'].'/cron.log';
- if(is_file($logfile) && filesize($logfile) > 10000000) {
- exec("gzip -c $logfile > $logfile.1.gz");
- exec("cat /dev/null > $logfile");
- }
+ // delete logfiles after 30 days
+ $month_ago = date('Ymd', time() - 86400 * 30);
+ $logfile = escapeshellcmd($rec['document_root'].'/' . $log_folder . '/'.$month_ago.'-access.log.gz');
+ if(@is_file($logfile)) {
+ unlink($logfile);
+ }
- // rotate the auth.log when it exceeds a size of 10 MB
- $logfile = $conf['ispconfig_log_dir'].'/auth.log';
- if(is_file($logfile) && filesize($logfile) > 10000000) {
- exec("gzip -c $logfile > $logfile.1.gz");
- exec("cat /dev/null > $logfile");
- }
+ //* Delete older Log files, in case that we missed them before due to serverdowntimes.
+ $datepart = date('Ym', time() - 86400 * 31 * 2);
- #######################################################################################################
- // Cleanup website tmp directories
- #######################################################################################################
+ $logfile = escapeshellcmd($rec['document_root']).'/' . $log_folder . '/'.$datepart.'*-access.log.gz';
+ exec('rm -f '.$logfile);
- $sql = "SELECT domain_id, domain, document_root, system_user FROM web_domain WHERE server_id = ".$conf['server_id'];
- $records = $app->db->queryAllRecords($sql);
- $app->uses('system');
- if(is_array($records)) {
- foreach($records as $rec){
- $tmp_path = realpath(escapeshellcmd($rec['document_root'].'/tmp'));
- if($tmp_path != '' && strlen($tmp_path) > 10 && is_dir($tmp_path) && $app->system->is_user($rec['system_user'])){
- exec('cd '.$tmp_path."; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null");
- }
- }
- }
+ $logfile = escapeshellcmd($rec['document_root']).'/' . $log_folder . '/'.$datepart.'*-access.log';
+ exec('rm -f '.$logfile);
+ }
- #######################################################################################################
- // Cleanup logs in master database (only the "master-server")
- #######################################################################################################
+ //* Delete old logfiles in /var/log/ispconfig/httpd/ that were created by vlogger for the hostname of the server
+ exec('hostname -f', $tmp_hostname);
+ if($tmp_hostname[0] != '' && is_dir('/var/log/ispconfig/httpd/'.$tmp_hostname[0])) {
+ exec('cd /var/log/ispconfig/httpd/'.$tmp_hostname[0]."; find . -mtime +30 -name '*.log' | xargs rm > /dev/null 2> /dev/null");
+ }
+ unset($tmp_hostname);
- if ($app->dbmaster == $app->db) {
- /** 7 days */
- $tstamp = time() - (60*60*24*7);
+ //######################################################################################################
+ // Rotate the ispconfig.log file
+ //######################################################################################################
- /*
+ // rotate the ispconfig.log when it exceeds a size of 10 MB
+ $logfile = $conf['ispconfig_log_dir'].'/ispconfig.log';
+ if(is_file($logfile) && filesize($logfile) > 10000000) {
+ exec("gzip -c $logfile > $logfile.1.gz");
+ exec("cat /dev/null > $logfile");
+ }
+
+ // rotate the cron.log when it exceeds a size of 10 MB
+ $logfile = $conf['ispconfig_log_dir'].'/cron.log';
+ if(is_file($logfile) && filesize($logfile) > 10000000) {
+ exec("gzip -c $logfile > $logfile.1.gz");
+ exec("cat /dev/null > $logfile");
+ }
+
+ // rotate the auth.log when it exceeds a size of 10 MB
+ $logfile = $conf['ispconfig_log_dir'].'/auth.log';
+ if(is_file($logfile) && filesize($logfile) > 10000000) {
+ exec("gzip -c $logfile > $logfile.1.gz");
+ exec("cat /dev/null > $logfile");
+ }
+
+ //######################################################################################################
+ // Cleanup website tmp directories
+ //######################################################################################################
+
+ $sql = "SELECT domain_id, domain, document_root, system_user FROM web_domain WHERE server_id = ".$conf['server_id'];
+ $records = $app->db->queryAllRecords($sql);
+ $app->uses('system');
+ if(is_array($records)) {
+ foreach($records as $rec){
+ $tmp_path = realpath(escapeshellcmd($rec['document_root'].'/tmp'));
+ if($tmp_path != '' && strlen($tmp_path) > 10 && is_dir($tmp_path) && $app->system->is_user($rec['system_user'])){
+ exec('cd '.$tmp_path."; find . -mtime +1 -name 'sess_*' | grep -v -w .no_delete | xargs rm > /dev/null 2> /dev/null");
+ }
+ }
+ }
+
+ //######################################################################################################
+ // Cleanup logs in master database (only the "master-server")
+ //######################################################################################################
+
+ if ($app->dbmaster == $app->db) {
+ /** 7 days */
+
+
+ $tstamp = time() - (60*60*24*7);
+
+ /*
* Keep 7 days in sys_log
* (we can delete the old items, because if they are OK, they don't interrest anymore
* if they are NOT ok, the server will try to process them in 1 minute and so the
* error appears again after 1 minute. So it is no problem to delete the old one!
*/
- $sql = "DELETE FROM sys_log WHERE tstamp < " . $tstamp . " AND server_id != 0";
- $app->dbmaster->query($sql);
+ $sql = "DELETE FROM sys_log WHERE tstamp < " . $tstamp . " AND server_id != 0";
+ $app->dbmaster->query($sql);
- /*
+ /*
* Delete all remote-actions "done" and older than 7 days
* ATTENTION: We have the same problem as described in cleaning the datalog. We must not
* delete the last entry
*/
- $sql = "SELECT max(action_id) FROM sys_remoteaction";
- $res = $app->dbmaster->queryOneRecord($sql);
- $maxId = $res['max(action_id)'];
- $sql = "DELETE FROM sys_remoteaction " .
- "WHERE tstamp < " . $tstamp . " " .
- " AND action_state = 'ok' " .
- " AND action_id <" . intval($maxId);
- $app->dbmaster->query($sql);
+ $sql = "SELECT max(action_id) FROM sys_remoteaction";
+ $res = $app->dbmaster->queryOneRecord($sql);
+ $maxId = $res['max(action_id)'];
+ $sql = "DELETE FROM sys_remoteaction " .
+ "WHERE tstamp < " . $tstamp . " " .
+ " AND action_state = 'ok' " .
+ " AND action_id <" . intval($maxId);
+ $app->dbmaster->query($sql);
- /*
+ /*
* The sys_datalog is more difficult.
* 1) We have to keet ALL entries with
* server_id=0, because they depend on ALL servers (even if they are not
@@ -231,40 +233,40 @@
* ATTENTION 2) and 3) is in some case NOT the same! so we have to check both!
*/
- /* First we need all servers and the last sys_datalog-id they processed */
- $sql = "SELECT server_id, updated FROM server ORDER BY server_id";
- $records = $app->dbmaster->queryAllRecords($sql);
+ /* First we need all servers and the last sys_datalog-id they processed */
+ $sql = "SELECT server_id, updated FROM server ORDER BY server_id";
+ $records = $app->dbmaster->queryAllRecords($sql);
- /* Then we need the highest value ever */
- $sql = "SELECT max(datalog_id) FROM sys_datalog";
- $res = $app->dbmaster->queryOneRecord($sql);
- $maxId = $res['max(datalog_id)'];
+ /* Then we need the highest value ever */
+ $sql = "SELECT max(datalog_id) FROM sys_datalog";
+ $res = $app->dbmaster->queryOneRecord($sql);
+ $maxId = $res['max(datalog_id)'];
- /* Then delete server by server */
- foreach($records as $server) {
- $tmp_server_id = intval($server['server_id']);
- if($tmp_server_id > 0) {
- $sql = "DELETE FROM sys_datalog " .
- "WHERE tstamp < " . $tstamp .
- " AND server_id = " . intval($server['server_id']) .
- " AND datalog_id < " . intval($server['updated']) .
- " AND datalog_id < " . intval($maxId);
- }
- // echo $sql . "\n";
- $app->dbmaster->query($sql);
- }
- }
-
-
- parent::onRunJob();
- }
-
- /* this function is optional if it contains no custom code */
- public function onAfterRun() {
- global $app;
-
- parent::onAfterRun();
- }
+ /* Then delete server by server */
+ foreach($records as $server) {
+ $tmp_server_id = intval($server['server_id']);
+ if($tmp_server_id > 0) {
+ $sql = "DELETE FROM sys_datalog " .
+ "WHERE tstamp < " . $tstamp .
+ " AND server_id = " . intval($server['server_id']) .
+ " AND datalog_id < " . intval($server['updated']) .
+ " AND datalog_id < " . intval($maxId);
+ }
+ // echo $sql . "\n";
+ $app->dbmaster->query($sql);
+ }
+ }
+
+
+ parent::onRunJob();
+ }
+
+ /* this function is optional if it contains no custom code */
+ public function onAfterRun() {
+ global $app;
+
+ parent::onAfterRun();
+ }
}
--
Gitblit v1.9.1