2013-11-03 22:16:01 -08:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Daily Task Checks
|
|
|
|
* (c) 2013 LibreNMS Contributors
|
|
|
|
*/
|
|
|
|
|
2015-07-13 20:10:26 +02:00
|
|
|
require 'includes/defaults.inc.php';
|
|
|
|
require 'config.php';
|
|
|
|
require_once 'includes/definitions.inc.php';
|
|
|
|
require 'includes/functions.php';
|
2013-11-03 22:16:01 -08:00
|
|
|
|
2016-01-11 14:58:40 -07:00
|
|
|
$options = getopt('f:d');
|
|
|
|
|
|
|
|
if (isset($options['d'])) {
|
|
|
|
echo "DEBUG\n";
|
|
|
|
$debug = true;
|
|
|
|
}
|
2013-11-03 22:16:01 -08:00
|
|
|
|
2014-10-25 08:40:42 +10:00
|
|
|
if ($options['f'] === 'update') {
|
2015-11-19 10:20:56 +00:00
|
|
|
$innodb_buffer = innodb_buffer_check();
|
|
|
|
if ($innodb_buffer['used'] > $innodb_buffer['size']) {
|
2015-08-03 17:13:54 +00:00
|
|
|
if (!empty($config['alert']['default_mail'])) {
|
2015-07-29 22:03:25 +00:00
|
|
|
$subject = $config['project_name'] . ' auto-update action required';
|
|
|
|
$message = '
|
2015-08-03 17:13:54 +00:00
|
|
|
Hi,
|
2015-07-29 22:03:25 +00:00
|
|
|
|
2015-08-03 17:13:54 +00:00
|
|
|
We have just tried to update your installation but it looks like the InnoDB buffer size is too low.
|
2015-07-29 22:03:25 +00:00
|
|
|
|
2015-08-03 17:13:54 +00:00
|
|
|
Because of this we have stopped the auto-update running to ensure your system is ok.
|
2015-07-29 22:03:25 +00:00
|
|
|
|
2015-11-19 10:20:56 +00:00
|
|
|
You currently have a configured innodb_buffer_pool_size of ' . $innodb_buffer['size'] / 1024 / 1024 . ' MiB but is currently using ' . $innodb_buffer['used'] / 1024 / 1024 . ' MiB
|
2015-07-29 22:03:25 +00:00
|
|
|
|
2015-08-03 17:13:54 +00:00
|
|
|
Take a look at https://dev.mysql.com/doc/refman/5.6/en/innodb-buffer-pool.html for further details.
|
2015-07-29 22:03:25 +00:00
|
|
|
|
2015-08-03 17:13:54 +00:00
|
|
|
The ' . $config['project_name'] . ' team.';
|
|
|
|
send_mail($config['alert']['default_mail'],$subject,$message,$html=false);
|
2015-12-13 16:16:39 +00:00
|
|
|
}
|
2015-11-19 10:20:56 +00:00
|
|
|
echo warn_innodb_buffer($innodb_buffer);
|
2015-08-03 17:13:54 +00:00
|
|
|
exit(2);
|
2015-07-29 22:03:25 +00:00
|
|
|
}
|
|
|
|
else {
|
2015-11-22 17:06:21 +00:00
|
|
|
if ($config['update']) {
|
|
|
|
if ($config['update_channel'] == 'master') {
|
|
|
|
exit(1);
|
|
|
|
}
|
|
|
|
elseif ($config['update_channel'] == 'release') {
|
|
|
|
exit(3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
exit(0);
|
|
|
|
}
|
2015-07-29 22:03:25 +00:00
|
|
|
}
|
2014-10-25 08:40:42 +10:00
|
|
|
}
|
2013-11-03 22:16:01 -08:00
|
|
|
|
2014-10-25 08:40:42 +10:00
|
|
|
if ($options['f'] === 'syslog') {
|
2015-07-13 20:10:26 +02:00
|
|
|
if (is_numeric($config['syslog_purge'])) {
|
|
|
|
$rows = dbFetchRow('SELECT MIN(seq) FROM syslog');
|
|
|
|
while (true) {
|
|
|
|
$limit = dbFetchRow('SELECT seq FROM syslog WHERE seq >= ? ORDER BY seq LIMIT 1000,1', array($rows));
|
|
|
|
if (empty($limit)) {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (dbDelete('syslog', 'seq >= ? AND seq < ? AND timestamp < DATE_SUB(NOW(), INTERVAL ? DAY)', array($rows, $limit, $config['syslog_purge'])) > 0) {
|
|
|
|
$rows = $limit;
|
|
|
|
echo 'Syslog cleared for entries over '.$config['syslog_purge']." days 1000 limit\n";
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dbDelete('syslog', 'seq >= ? AND timestamp < DATE_SUB(NOW(), INTERVAL ? DAY)', array($rows, $config['syslog_purge']));
|
2014-03-18 14:13:27 +00:00
|
|
|
}
|
|
|
|
}
|
2015-07-13 20:10:26 +02:00
|
|
|
|
2014-10-25 08:40:42 +10:00
|
|
|
if ($options['f'] === 'eventlog') {
|
2015-07-13 20:10:26 +02:00
|
|
|
if (is_numeric($config['eventlog_purge'])) {
|
|
|
|
if (dbDelete('eventlog', 'datetime < DATE_SUB(NOW(), INTERVAL ? DAY)', array($config['eventlog_purge']))) {
|
|
|
|
echo 'Eventlog cleared for entries over '.$config['eventlog_purge']." days\n";
|
|
|
|
}
|
2014-03-18 14:13:27 +00:00
|
|
|
}
|
|
|
|
}
|
2015-07-13 20:10:26 +02:00
|
|
|
|
2014-10-25 08:40:42 +10:00
|
|
|
if ($options['f'] === 'authlog') {
|
|
|
|
if (is_numeric($config['authlog_purge'])) {
|
2015-07-13 20:10:26 +02:00
|
|
|
if (dbDelete('authlog', 'datetime < DATE_SUB(NOW(), INTERVAL ? DAY)', array($config['authlog_purge']))) {
|
|
|
|
echo 'Authlog cleared for entries over '.$config['authlog_purge']." days\n";
|
2014-10-02 01:37:43 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2015-07-13 20:10:26 +02:00
|
|
|
|
2014-11-03 18:25:45 +01:00
|
|
|
if ($options['f'] === 'perf_times') {
|
|
|
|
if (is_numeric($config['perf_times_purge'])) {
|
2015-07-13 20:10:26 +02:00
|
|
|
if (dbDelete('perf_times', 'start < UNIX_TIMESTAMP(DATE_SUB(NOW(),INTERVAL ? DAY))', array($config['perf_times_purge']))) {
|
|
|
|
echo 'Performance poller times cleared for entries over '.$config['perf_times_purge']." days\n";
|
2014-11-03 18:25:45 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2015-07-13 20:10:26 +02:00
|
|
|
|
2015-04-06 20:47:28 +01:00
|
|
|
if ($options['f'] === 'callback') {
|
2015-07-13 20:10:26 +02:00
|
|
|
include_once 'callback.php';
|
2015-04-06 20:47:28 +01:00
|
|
|
}
|
2015-07-13 20:10:26 +02:00
|
|
|
|
2015-06-22 21:55:31 +01:00
|
|
|
if ($options['f'] === 'device_perf') {
|
|
|
|
if (is_numeric($config['device_perf_purge'])) {
|
2016-01-11 14:58:40 -07:00
|
|
|
if (dbDelete('device_perf', 'timestamp < DATE_SUB(NOW(),INTERVAL ? DAY)', array($config['device_perf_purge']))) {
|
2015-07-13 20:10:26 +02:00
|
|
|
echo 'Device performance times cleared for entries over '.$config['device_perf_purge']." days\n";
|
2015-06-22 21:55:31 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2015-09-27 15:35:33 +00:00
|
|
|
|
|
|
|
if ($options['f'] === 'notifications') {
|
|
|
|
include_once 'notifications.php';
|
|
|
|
}
|
2015-12-13 16:16:39 +00:00
|
|
|
|
|
|
|
if ($options['f'] === 'purgeusers') {
|
|
|
|
$purge = 0;
|
|
|
|
if (is_numeric($config['radius']['users_purge']) && $config['auth_mechanism'] === 'radius') {
|
|
|
|
$purge = $config['radius']['users_purge'];
|
|
|
|
}
|
|
|
|
if ($purge > 0) {
|
|
|
|
foreach (dbFetchRows("SELECT DISTINCT(`user`) FROM `authlog` WHERE `datetime` >= DATE_SUB(NOW(), INTERVAL ? DAY)", array($purge)) as $user) {
|
|
|
|
$users[] = $user['user'];
|
|
|
|
}
|
|
|
|
$del_users = '"'.implode('","',$users).'"';
|
|
|
|
if (dbDelete('users', "username NOT IN ($del_users)",array($del_users))) {
|
|
|
|
echo "Removed users that haven't logged in for $purge days";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|