Ejemplo n.º 1
0
/**
 * Runs procedures attached to a hook.
 *
 * @param hook_name	Name of hook to run.
 * @param args		Array of optional arguments set by
 *			phpldapadmin.  It is normally in a form known
 *			by call_user_func_array() :
 * <pre>[ 'server_id' => 0,
 *   'dn' => 'uid=epoussa,ou=tech,o=corp,o=fr' ]</pre>
 *
 * @return true if all procedures returned true, false otherwise.
 */
function run_hook($hook_name, $args)
{
    global $hooks;
    $debug = 0;
    syslog_debug("Running hook {$hook_name}.");
    if (!array_key_exists($hook_name, $hooks)) {
        syslog_notice("Hook '{$hook_name}' not defined !\n");
        return true;
    }
    unset($rollbacks);
    $rollbacks = array();
    reset($hooks[$hook_name]);
    /** Execution of procedures attached is done using a numeric order
     * since all procedures have been attached to the hook with a
     * numerical weight. */
    while (list($key, $hook) = each($hooks[$hook_name])) {
        array_push($rollbacks, $hook['rollback_function']);
        syslog_debug("Calling " . $hook['hook_function'] . "\n");
        $result = call_user_func_array($hook['hook_function'], $args);
        syslog_notice("Called " . $hook['hook_function'] . "\n");
        /** If a procedure fails, its optional rollback is executed with
         * the same arguments.  After that, all rollbacks from
         * previously executed procedures are executed in the reverse
         * order.  */
        if ($result != true) {
            syslog_debug("Function " . $hook['hook_function'] . " returned {$result}\n");
            while ($rollbacks) {
                $rollback = array_pop($rollbacks);
                if ($rollback != false) {
                    syslog_debug("Executing rollback {$rollback}\n");
                    call_user_func_array($rollback, $args);
                }
            }
            return false;
        }
    }
    return true;
}
Ejemplo n.º 2
0
                    $headtext .= "<html><head><style type='text/css'>";
                    $headtext .= file_get_contents($config['base_path'] . '/plugins/syslog/syslog.css');
                    $headtext .= '</style></head>';
                    $headtext .= "<body class='body'><h1 class='h1'>" . $syslog_report['name'] . "</h1><table>\n" . "<tr><th class='th'>Date</th><th class='th'>Time</th><th class='th'>Message</th></tr>\n" . $reptext;
                    $headtext .= "</table>\n";
                    $smsalert = $headtext;
                    // Send mail
                    syslog_sendemail($syslog_report['email'], '', 'Event Report - ' . $syslog_report['name'], $headtext, $smsalert);
                }
            }
        } else {
            print '       Next Send: ' . date('Y-m-d H:i:s', $next_run_time) . "\n";
        }
    }
}
syslog_debug('Finished processing Reports...');
syslog_process_log($start_time, $syslog_deleted, $syslog_incoming, $syslog_removed, $syslog_xferred, $syslog_alerts, $syslog_alarms, $syslog_reports);
function syslog_process_log($start_time, $deleted, $incoming, $removed, $xferred, $alerts, $alarms, $reports)
{
    global $database_default;
    /* record the end time */
    list($micro, $seconds) = explode(' ', microtime());
    $end_time = $seconds + $micro;
    cacti_log('SYSLOG STATS:Time:' . round($end_time - $start_time, 2) . ' Deletes:' . $deleted . ' Incoming:' . $incoming . ' Removes:' . $removed . ' XFers:' . $xferred . ' Alerts:' . $alerts . ' Alarms:' . $alarms . ' Reports:' . $reports, true, 'SYSTEM');
    db_execute('REPLACE INTO `' . $database_default . "`.`settings` SET name='syslog_stats', value='time:" . round($end_time - $start_time, 2) . ' deletes:' . $deleted . ' incoming:' . $incoming . ' removes:' . $removed . ' xfers:' . $xferred . ' alerts:' . $alerts . ' alarms:' . $alarms . ' reports:' . $reports . "'");
}
function display_help()
{
    echo "Syslog Poller Process 2.0, Copyright 2007-2016, The Cacti Group, Inc.\n\n";
    echo "The main Syslog poller process script for Cacti Syslogging.\n\n";
    echo "usage: syslog_process.php [--debug|-d]\n\n";
Ejemplo n.º 3
0
if (empty($syslog_cnn)) {
    if (strtolower($database_hostname) == strtolower($syslogdb_hostname) && $database_default == $syslogdb_default) {
        /* move on, using Cacti */
        $syslog_cnn = $cnn_id;
    } else {
        if (!isset($syslogdb_port)) {
            $syslogdb_port = "3306";
        }
        $syslog_cnn = db_connect_real($syslogdb_hostname, $syslogdb_username, $syslogdb_password, $syslogdb_default, $syslogdb_type, $syslogdb_port);
    }
}
/* If Syslog Collection is Disabled, Exit Here */
if (read_config_option("syslog_enabled") == '') {
    print "NOTE: Syslog record transferral and alerting/reporting is disabled.  Exiting\n";
    exit - 1;
}
/* remove records that don't need to to be transferred */
syslog_debug("Syslog Batch Transfer / Remove Process started ...... ");
$syslog_items = syslog_manage_items("syslog", "syslog_removed");
$syslog_removed = $syslog_items["removed"];
$syslog_xferred = $syslog_items["xferred"];
syslog_debug("Removed     " . $syslog_removed . ",  Message(s) from the 'syslog' table");
syslog_debug("Xferred     " . $syslog_xferred . ",  Message(s) to the 'syslog_removed' table");
syslog_debug("Finished processing...");
function display_help()
{
    echo "Syslog Batch Process 1.0, Copyright 2004-2011 - The Cacti Group\n\n";
    echo "The Syslog batch process script for Cacti Syslogging.\n\n";
    echo "This script removes old messages from main view prior.\n\n";
    echo "usage: syslog_batch_transfer.php [--debug|-d]\n\n";
}
Ejemplo n.º 4
0
                    $headtext .= "<html><head><style type='text/css'>";
                    $headtext .= file_get_contents($config['base_path'] . "/plugins/syslog/syslog.css");
                    $headtext .= "</style></head>";
                    $headtext .= "<body class='body'><h1 class='h1'>" . $syslog_report['name'] . "</h1><table>\n" . "<tr><th class='th'>Date</th><th class='th'>Time</th><th class='th'>Message</th></tr>\n" . $reptext;
                    $headtext .= "</table>\n";
                    $smsalert = $headtext;
                    // Send mail
                    syslog_sendemail($syslog_report['email'], '', 'Event Report - ' . $syslog_report['name'], $headtext, $smsalert);
                }
            }
        } else {
            print '       Next Send: ' . date("Y-m-d H:i:s", $next_run_time) . "\n";
        }
    }
}
syslog_debug("Finished processing Reports...");
syslog_process_log($start_time, $syslog_deleted, $syslog_incoming, $syslog_removed, $syslog_xferred, $syslog_alerts, $syslog_alarms, $syslog_reports);
function syslog_process_log($start_time, $deleted, $incoming, $removed, $xferred, $alerts, $alarms, $reports)
{
    global $database_default;
    /* record the end time */
    list($micro, $seconds) = explode(" ", microtime());
    $end_time = $seconds + $micro;
    cacti_log("SYSLOG STATS:Time:" . round($end_time - $start_time, 2) . " Deletes:" . $deleted . " Incoming:" . $incoming . " Removes:" . $removed . " XFers:" . $xferred . " Alerts:" . $alerts . " Alarms:" . $alarms . " Reports:" . $reports, true, "SYSTEM");
    db_execute("REPLACE INTO `" . $database_default . "`.`settings` SET name='syslog_stats', value='time:" . round($end_time - $start_time, 2) . " deletes:" . $deleted . " incoming:" . $incoming . " removes:" . $removed . " xfers:" . $xferred . " alerts:" . $alerts . " alarms:" . $alarms . " reports:" . $reports . "'");
}
function display_help()
{
    echo "Syslog Poller Process 1.0, Copyright 2004-2011 - The Cacti Group\n\n";
    echo "The main Syslog poller process script for Cacti Syslogging.\n\n";
    echo "usage: syslog_process.php [--debug|-d]\n\n";
Ejemplo n.º 5
0
function syslog_manage_items($from_table, $to_table)
{
    global $config, $syslog_cnn, $syslog_incoming_config;
    include dirname(__FILE__) . "/config.php";
    /* Select filters to work on */
    $rows = syslog_db_fetch_assoc("SELECT * FROM `" . $syslogdb_default . "`.`syslog_remove` WHERE enabled='on'");
    //$rows = syslog_db_fetch_assoc("SELECT * FROM `" . $syslogdb_default . "`.`syslog_remove` WHERE enabled='on' AND message like 'last message repeated %'");
    syslog_debug("Found   " . sizeof($rows) . ",  Removal Rule(s)" . " to process");
    $removed = 0;
    $xferred = 0;
    $total = 0;
    if (sizeof($rows)) {
        foreach ($rows as $remove) {
            syslog_debug("Processing Rule  - " . $remove['message']);
            $sql_sel = "";
            $sql_dlt = "";
            if ($remove['type'] == 'facility') {
                if ($remove['method'] != 'del') {
                    $sql_sel = "SELECT seq\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table}\n\t\t\t\t\t\t\t\tWHERE facility_id in\n\t\t\t\t\t\t\t\t\t(SELECT distinct facility_id from `" . $syslogdb_default . "`syslog_facilities\n\t\t\t\t\t\t\t\t\t\tWHERE facility ='" . $remove['message'] . "')";
                } else {
                    $sql_dlt = "DELETE\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table} \n\t\t\t\t\t\t\t\tWHERE facility_id in\n\t\t\t\t\t\t\t\t\t(SELECT distinct facility_id from `" . $syslogdb_default . "`syslog_facilities\n\t\t\t\t\t\t\t\t\t\tWHERE facility ='" . $remove['message'] . "')";
                }
            } else {
                if ($remove['type'] == 'host') {
                    if ($remove['method'] != 'del') {
                        $sql_sel = "SELECT seq\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table}\n\t\t\t\t\t\t\t\tWHERE host_id in\n\t\t\t\t\t\t\t\t\t(SELECT distinct host_id from `" . $syslogdb_default . "`syslog_hosts\n\t\t\t\t\t\t\t\t\t\tWHERE host ='" . $remove['message'] . "')";
                    } else {
                        $sql_dlt = "DELETE\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table} \n\t\t\t\t\t\t\t\tWHERE host_id in\n\t\t\t\t\t\t\t\t\t(SELECT distinct host_id from `" . $syslogdb_default . "`syslog_hosts\n\t\t\t\t\t\t\t\t\t\tWHERE host ='" . $remove['message'] . "')";
                    }
                } else {
                    if ($remove['type'] == 'messageb') {
                        if ($remove['method'] != 'del') {
                            $sql_sel = "SELECT seq\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table}\n\t\t\t\t\t\t\t\tWHERE message LIKE '" . $remove['message'] . "%' ";
                        } else {
                            $sql_dlt = "DELETE\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table} \n\t\t\t\t\t\t\t\tWHERE message LIKE '" . $remove['message'] . "%' ";
                        }
                    } else {
                        if ($remove['type'] == 'messagec') {
                            if ($remove['method'] != 'del') {
                                $sql_sel = "SELECT seq\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table}\n\t\t\t\t\t\t\t\tWHERE message LIKE '%" . $remove['message'] . "%' ";
                            } else {
                                $sql_dlt = "DELETE\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table} \n\t\t\t\t\t\t\t\tWHERE message LIKE '%" . $remove['message'] . "%' ";
                            }
                        } else {
                            if ($remove['type'] == 'messagee') {
                                if ($remove['method'] != 'del') {
                                    $sql_sel = "SELECT seq\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table}\n\t\t\t\t\t\t\t\tWHERE message LIKE '%" . $remove['message'] . "' ";
                                } else {
                                    $sql_dlt = "DELETE\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table} \n\t\t\t\t\t\t\t\tWHERE message LIKE '%" . $remove['message'] . "' ";
                                }
                            } else {
                                if ($remove['type'] == 'sql') {
                                    if ($remove['method'] != 'del') {
                                        $sql_sel = "SELECT seq\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table}\n\t\t\t\t\t\t\t\tWHERE message (" . $remove['message'] . ") ";
                                    } else {
                                        $sql_dlt = "DELETE\n\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`. {$from_table} \n\t\t\t\t\t\t\t\tWHERE message (" . $remove['message'] . ") ";
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if ($sql_sel != '' || $sql_dlt != '') {
                $debugm = '';
                /* process the removal rule first */
                if ($sql_sel != '') {
                    $move_count = 0;
                    /* first insert, then delete */
                    $move_records = syslog_db_fetch_assoc($sql_sel);
                    syslog_debug("Found   " . sizeof($move_records) . " Message(s)");
                    if (sizeof($move_records)) {
                        $all_seq = '';
                        $messages_moved = 0;
                        foreach ($move_records as $move_record) {
                            $all_seq = $all_seq . ", " . $move_record['seq'];
                        }
                        $all_seq = eregi_replace('^,', '', $all_seq);
                        syslog_db_execute("INSERT INTO `" . $syslogdb_default . "`.`" . $to_table . "` \n\t\t\t\t\t\t\t\t\t\t\t\t(facility_id, priority_id, host_id, logtime, message)\n\t\t\t\t\t\t\t\t\t\t\t\t(SELECT facility_id, priority_id, host_id, logtime, message \n\t\t\t\t\t\t\t\t\t\t\t\t\tFROM `" . $syslogdb_default . "`." . $from_table . "\n\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE seq in (" . $all_seq . "))");
                        $messages_moved = $syslog_cnn->Affected_Rows();
                        if ($messages_moved > 0) {
                            syslog_db_execute("DELETE FROM `" . $syslogdb_default . "`.`" . $from_table . "` \n\t\t\t\t\t\t\t\t\t\t\t\t\tWHERE seq in (" . $all_seq . ")");
                        }
                        $xferred += $messages_moved;
                        $move_count = $messages_moved;
                    }
                    $debugm = "Moved   " . $move_count . " Message(s)";
                }
                if ($sql_dlt != '') {
                    /* now delete the remainder that match */
                    syslog_db_execute($sql_dlt);
                    $removed += $syslog_cnn->Affected_Rows();
                    $debugm = "Deleted " . $removed . " Message(s)";
                }
                syslog_debug($debugm);
            }
        }
    }
    return array("removed" => $removed, "xferred" => $xferred);
}
Ejemplo n.º 6
0
if (empty($syslog_cnn)) {
    if (strtolower($database_hostname) == strtolower($syslogdb_hostname) && $database_default == $syslogdb_default) {
        /* move on, using Cacti */
        $syslog_cnn = $cnn_id;
    } else {
        if (!isset($syslogdb_port)) {
            $syslogdb_port = '3306';
        }
        $syslog_cnn = db_connect_real($syslogdb_hostname, $syslogdb_username, $syslogdb_password, $syslogdb_default, $syslogdb_type, $syslogdb_port);
    }
}
/* If Syslog Collection is Disabled, Exit Here */
if (read_config_option('syslog_enabled') == '') {
    print "NOTE: Syslog record transferral and alerting/reporting is disabled.  Exiting\n";
    exit - 1;
}
/* remove records that don't need to to be transferred */
syslog_debug('Syslog Batch Transfer / Remove Process started ...... ');
$syslog_items = syslog_manage_items('syslog', 'syslog_removed');
$syslog_removed = $syslog_items['removed'];
$syslog_xferred = $syslog_items['xferred'];
syslog_debug("Removed     " . $syslog_removed . ",  Message(s) from the 'syslog' table");
syslog_debug("Xferred     " . $syslog_xferred . ",  Message(s) to the 'syslog_removed' table");
syslog_debug('Finished processing...');
function display_help()
{
    echo "Syslog Batch Process 2.0, Copyright 2004-2016 - The Cacti Group\n\n";
    echo "The Syslog batch process script for Cacti Syslogging.\n\n";
    echo "This script removes old messages from main view prior.\n\n";
    echo "usage: syslog_batch_transfer.php [--debug|-d]\n\n";
}