diff --git a/AUTHORS.md b/AUTHORS.md index 127de9825..38e7bb690 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -33,3 +33,4 @@ Contributors to LibreNMS: - James Campbell (neokjames) [1]: http://observium.org/ "Observium web site" + diff --git a/alerts.php b/alerts.php index 6af7370b3..fe27ea604 100755 --- a/alerts.php +++ b/alerts.php @@ -247,11 +247,12 @@ function ExtTransports($obj) { global $config; $tmp = false; //To keep scrutinizer from naging because it doesnt understand eval foreach( $config['alert']['transports'] as $transport=>$opts ) { - if( ($opts === true || !empty($opts)) && file_exists($config['install_dir']."/includes/alerts/transport.".$transport.".php") ) { + if( ($opts === true || !empty($opts)) && $opts != false && file_exists($config['install_dir']."/includes/alerts/transport.".$transport.".php") ) { echo $transport." => "; eval('$tmp = function($obj,$opts) { global $config; '.file_get_contents($config['install_dir']."/includes/alerts/transport.".$transport.".php").' };'); $tmp = $tmp($obj,$opts); echo ($tmp ? "OK" : "ERROR")."; "; + log_event("Issued ".$obj['severity']." alert for rule '".$obj['name']."' to transport '".$transport."'",$obj['device_id']); } } } diff --git a/contrib/findit b/contrib/findit index a6407b63d..6c89281ca 100755 --- a/contrib/findit +++ b/contrib/findit @@ -9,4 +9,4 @@ find . \ -path ./mibs -prune -o \ -path ./rrd -prune -o \ -name .git -prune -o \ - -type f -print|xargs grep "$@" + -type f -print0|xargs -0 grep "$@" diff --git a/doc/Extensions/Alerting.md b/doc/Extensions/Alerting.md index a542be682..f763f32b3 100644 --- a/doc/Extensions/Alerting.md +++ b/doc/Extensions/Alerting.md @@ -139,6 +139,8 @@ $config['alert']['admins'] = true; //Include Adminstrators into alert-contacts ## E-Mail +> You can configure these options within the WebUI now, please avoid setting these options within config.php + E-Mail transport is enabled with adding the following to your `config.php`: ```php $config['alert']['transports']['mail'] = true; @@ -165,6 +167,8 @@ $config['alert']['default_mail'] = ''; //Default ema ## API +> You can configure these options within the WebUI now, please avoid setting these options within config.php + API transports definitions are a bit more complex than the E-Mail configuration. The basis for configuration is `$config['alert']['transports']['api'][METHOD]` where `METHOD` can be `get`,`post` or `put`. This basis has to contain an array with URLs of each API to call. @@ -180,6 +184,8 @@ $config['alert']['transports']['api']['get'][] = "https://api.thirdparti.es/issu ## Nagios Compatible +> You can configure these options within the WebUI now, please avoid setting these options within config.php + The nagios transport will feed a FIFO at the defined location with the same format that nagios would. This allows you to use other Alerting-Systems to work with LibreNMS, for example [Flapjack](http://flapjack.io). ```php @@ -188,6 +194,8 @@ $config['alert']['transports']['nagios'] = "/path/to/my.fifo"; //Flapjack expect ## IRC +> You can configure these options within the WebUI now, please avoid setting these options within config.php + The IRC transports only works together with the LibreNMS IRC-Bot. Configuration of the LibreNMS IRC-Bot is described [here](https://github.com/librenms/librenms/blob/master/doc/Extensions/IRC-Bot.md). ```php @@ -196,6 +204,8 @@ $config['alert']['transports']['irc'] = true; ## Slack +> You can configure these options within the WebUI now, please avoid setting these options within config.php + The Slack transport will POST the alert message to your Slack Incoming WebHook, you are able to specify multiple webhooks along with the relevant options to go with it. All options are optional, the only required value is for url, without this then no call to Slack will be made. Below is an example of how to send alerts to two channels with different customised options: ```php @@ -207,6 +217,8 @@ $config['alert']['transports']['slack'][] = array('url' => "https://hooks.slack. ## HipChat +> You can configure these options within the WebUI now, please avoid setting these options within config.php + The HipChat transport requires the following: __room_id__ = HipChat Room ID @@ -252,6 +264,8 @@ $config['alert']['transports']['hipchat'][] = array("url" => "https://api.hipcha ## PagerDuty +> You can configure these options within the WebUI now, please avoid setting these options within config.php + Enabling PagerDuty transports is almost as easy as enabling email-transports. All you need is to create a Service with type Generic API on your PagerDuty dashboard. diff --git a/doc/General/Changelog.md b/doc/General/Changelog.md index 5b8c0ed16..fcfad7146 100644 --- a/doc/General/Changelog.md +++ b/doc/General/Changelog.md @@ -1,3 +1,22 @@ +### June 2015 + +#### Bug fixes + - Fixed services list SQL issue (PR1181) + - Fixed negative values for storage when volume is > 2TB (PR1185) + - Fixed visual display for input fields on /syslog/ (PR1193) + - Fixed fatal php issue in shoutcast.php (PR1203) + - Fixed percent bars in /bills/ (PR1208) + - Fixed item count in memory and storage pages (PR1210) + +#### Improvements + - Updated Syslog docs to include syslog-ng 3.5.1 updates (PR1171) + - Added Pushover Transport (PR1180, PR1191) + - Converted processors and memory table to bootgrid (PR1188, PR1192) + - Issued alerts and transport now logged to eventlog (PR1194) + - Added basic support for Enterasys devices (PR1211) + - Added dynamic config to configure alerting (PR1153) + - Added basic support for Multimatic USV (PR1215) + ### May 2015 #### Bug fixes @@ -31,6 +50,9 @@ - Fixed ARP search graph type reference (PR1131) - Fixed showing state=X in device list (PR1144) - Removed ability for demo user to delete users (PR1151) + - Fixed user / port perms for top X front page boxes (PR1156) + - Fixed truncating UTF-8 strings (PR1166) + - Fixed attaching templates due to JS issue (PR1167) #### Improvements - Added loading bar to top nav (PR893) @@ -69,7 +91,7 @@ - Added disk temperature for Synology DSM (PR986) - Added ICMP, TLS/SSL and Domain expiry service checks (PR987, PR1040, PR1041) - Added IPMI detection (PR988) - - Miktrotik MIB update (PR991) + - Mikrotik MIB update (PR991) - Set better timeperiod for caching graphs (PR992) - Added config option to disable port relationship in ports list (PR996) - Added support for custom customer description parse (PR998) @@ -105,6 +127,8 @@ - Added config options for region and resolution on globe map (PR1137) - Addded RRDCached example docs (PR1148) - Updated support for additional NetBotz models (PR1152) + - Updated /iftype/ page to include speed/circuit/notes (PR1155) + - Added detection for PowerConnect 55XX devices (PR1165) ### Apr 2015 diff --git a/doc/Support/Configuration.md b/doc/Support/Configuration.md index 99d0eac66..9d6095859 100644 --- a/doc/Support/Configuration.md +++ b/doc/Support/Configuration.md @@ -215,6 +215,8 @@ Arrays of subnets to exclude in auto discovery mode. #### Email configuration +> You can configure these options within the WebUI now, please avoid setting these options within config.php + ```php $config['email_backend'] = 'mail'; $config['email_from'] = NULL; diff --git a/html/form_new_config.php b/html/form_new_config.php new file mode 100644 index 000000000..6f45a3d6c --- /dev/null +++ b/html/form_new_config.php @@ -0,0 +1,99 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +enable_debug(); + +include_once("../includes/defaults.inc.php"); +include_once("../config.php"); +include_once("../includes/definitions.inc.php"); +include_once("includes/functions.inc.php"); +include_once("../includes/functions.php"); +include_once("includes/authenticate.inc.php"); + +if (!$_SESSION['authenticated']) { echo("unauthenticated"); exit; } + +$new_conf_type = $_POST['new_conf_type']; +$new_conf_name = $_POST['new_conf_name']; +$new_conf_desc = $_POST['new_conf_desc']; + +if(empty($new_conf_name)) +{ + echo("You haven't specified a config name"); + exit; +} +elseif(empty($new_conf_desc)) +{ + echo("You haven't specified a config description"); + exit; +} +elseif(empty($_POST['new_conf_single_value']) && empty($_POST['new_conf_multi_value'])) +{ + echo("You haven't specified a config value"); + exit; +} + +$db_inserted = '0'; + +if($new_conf_type == 'Single') +{ + $new_conf_type = 'single'; + $new_conf_value = $_POST['new_conf_single_value']; + $db_inserted = add_config_item($new_conf_name,$new_conf_value,$new_conf_type,$new_conf_desc); +} +elseif($new_conf_type == 'Single Array') +{ + $new_conf_type = 'single-array'; + $new_conf_value = $_POST['new_conf_single_value']; + $db_inserted = add_config_item($new_conf_name,$new_conf_value,$new_conf_type,$new_conf_desc); +} +elseif($new_conf_type == 'Standard Array' || $new_conf_type == 'Multi Array') +{ + if($new_conf_type == 'Standard Array') + { + $new_conf_type = 'array'; + } + elseif($new_conf_type == 'Multi Array') + { + $new_conf_type = 'multi-array'; + } + else + { + # $new_conf_type is invalid so clear values so we don't create any config + $new_conf_value = ''; + } + $new_conf_value = nl2br($_POST['new_conf_multi_value']); + $values = explode('
',$new_conf_value); + foreach ($values as $item) + { + $new_conf_value = trim($item); + $db_inserted = add_config_item($new_conf_name,$new_conf_value,$new_conf_type,$new_conf_desc); + } +} +else +{ + echo('Bad config type!'); + $db_inserted = 0; + exit; +} + +if($db_inserted == 1) +{ + echo('Your new config item has been added'); +} +else +{ + echo('An error occurred adding your config item to the database'); +} + +?> diff --git a/html/forms/config-item-disable.inc.php b/html/forms/config-item-disable.inc.php new file mode 100644 index 000000000..e44f6afdc --- /dev/null +++ b/html/forms/config-item-disable.inc.php @@ -0,0 +1,48 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +// FUA + +if(!is_numeric($_POST['config_id'])) +{ + echo('error with data'); + exit; +} +else +{ + if($_POST['state'] == 'true') + { + $state = 1; + } + elseif($_POST['state'] == 'false') + { + $state = 0; + } + else + { + $state = 0; + } + $update = dbUpdate(array('config_disabled' => $state), 'config', '`config_id` = ?', array($_POST['config_id'])); + if(!empty($update) || $update == '0') + { + echo('success'); + exit; + } + else + { + echo('error'); + exit; + } +} + diff --git a/html/forms/config-item-update.inc.php b/html/forms/config-item-update.inc.php new file mode 100644 index 000000000..9ba795786 --- /dev/null +++ b/html/forms/config-item-update.inc.php @@ -0,0 +1,37 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +// FUA + +if(!is_numeric($_POST['config_id']) || empty($_POST['data'])) +{ + echo('error with data'); + exit; +} +else +{ + $data = mres($_POST['data']); + $update = dbUpdate(array('config_value' => "$data"), 'config', '`config_id` = ?', array($_POST['config_id'])); + if(!empty($update) || $update == '0') + { + echo('success'); + exit; + } + else + { + echo('error'); + exit; + } +} + diff --git a/html/forms/config-item.inc.php b/html/forms/config-item.inc.php new file mode 100644 index 000000000..1a481b64a --- /dev/null +++ b/html/forms/config-item.inc.php @@ -0,0 +1,108 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(is_admin() === false) { + $response = array('status'=>'error','message'=>'Need to be admin'); + echo _json_encode($response); + exit; +} + +$action = mres($_POST['action']); +$config_group = mres($_POST['config_group']); +$config_sub_group = mres($_POST['config_sub_group']); +$config_name = mres($_POST['config_name']); +$config_value = mres($_POST['config_value']); +$config_extra = mres($_POST['config_extra']); +$config_room_id = mres($_POST['config_room_id']); +$config_from = mres($_POST['config_from']); +$status = 'error'; +$message = 'Error with config'; + +if ($action == 'remove' || $action == 'remove-slack' || $action == 'remove-hipchat') { + $config_id = mres($_POST['config_id']); + if (empty($config_id)) { + $message = 'No config id passed'; + } else { + if (dbDelete('config', '`config_id`=?', array($config_id))) { + if ($action == 'remove-slack') { + dbDelete('config', "`config_name` LIKE 'alert.transports.slack.$config_id.%'"); + } elseif ($action == 'remove-hipchat') { + dbDelete('config', "`config_name` LIKE 'alert.transports.hipchat.$config_id.%'"); + } + $status = 'ok'; + $message = 'Config item removed'; + } else { + $message = 'General error, could not remove config'; + } + } +} elseif ($action == 'add-slack') { + if (empty($config_value)) { + $message = 'No Slack url provided'; + } else { + $config_id = dbInsert(array('config_name' => 'alert.transports.slack.', 'config_value' => $config_value, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_value, 'config_descr'=>'Slack Transport'), 'config'); + if ($config_id > 0) { + dbUpdate(array('config_name' => 'alert.transports.slack.'.$config_id.'.url'), 'config', 'config_id=?', array($config_id)); + $status = 'ok'; + $message = 'Config item created'; + $extras = explode('\n',$config_extra); + foreach ($extras as $option) { + list($k,$v) = explode("=", $option,2); + if (!empty($k) || !empty($v)) { + dbInsert(array('config_name' => 'alert.transports.slack.'.$config_id.'.'.$k, 'config_value' => $v, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$v, 'config_descr'=>'Slack Transport'), 'config'); + } + } + } else { + $message = 'Could not create config item'; + } + } +} elseif ($action == 'add-hipchat') { + if (empty($config_value) || empty($config_room_id) || empty($config_from)) { + $message = 'No hipchat url, room id or from provided'; + } else { + $config_id = dbInsert(array('config_name' => 'alert.transports.hipchat.', 'config_value' => $config_value, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_value, 'config_descr'=>'Hipchat Transport'), 'config'); + if ($config_id > 0) { + dbUpdate(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.url'), 'config', 'config_id=?', array($config_id)); + dbInsert(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.room_id', 'config_value' => $config_room_id, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_room_id, 'config_descr'=>'Hipchat URL'), 'config'); + dbInsert(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.from', 'config_value' => $config_from, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_from, 'config_descr'=>'Hipchat From'), 'config'); + $status = 'ok'; + $message = 'Config item created'; + $extras = explode('\n',$config_extra); + foreach ($extras as $option) { + list($k,$v) = explode("=", $option,2); + if (!empty($k) || !empty($v)) { + dbInsert(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.'.$k, 'config_value' => $v, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$v, 'config_descr'=>'Hipchat '.$v), 'config'); + } + } + } else { + $message = 'Could not create config item'; + } + } +} else { + + if (empty($config_group) || empty($config_sub_group) || empty($config_name) || empty($config_value)) { + $message = 'Missing config name or value'; + } else { + $config_id = dbInsert(array('config_name' => $config_name, 'config_value' => $config_value, 'config_group' => $config_group, 'config_sub_group' => $config_sub_group, 'config_default'=>$config_value, 'config_descr'=>'API Transport'), 'config'); + if ($config_id > 0) { + dbUpdate(array('config_name'=>$config_name.$config_id),'config','config_id=?',array($config_id)); + $status = 'ok'; + $message = 'Config item created'; + } else { + $message = 'Could not create config item'; + } + } +} + +$response = array('status'=>$status,'message'=>$message, 'config_id'=>$config_id); +echo _json_encode($response); diff --git a/html/forms/update-config-item.inc.php b/html/forms/update-config-item.inc.php new file mode 100644 index 000000000..4c8cc5545 --- /dev/null +++ b/html/forms/update-config-item.inc.php @@ -0,0 +1,62 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +if(is_admin() === false) { + die('ERROR: You need to be admin'); +} + +$config_id = mres($_POST['config_id']); +$action = mres($_POST['action']); +$config_type = mres($_POST['config_type']); + +$status = 'error'; + +if (!is_numeric($config_id)) { + $message = 'ERROR: No alert selected'; +} elseif ($action == 'update-textarea') { + $extras = explode(PHP_EOL,$_POST['config_value']); + foreach ($extras as $option) { + list($k,$v) = explode("=", $option,2); + if (!empty($k) || !empty($v)) { + if ($config_type == 'slack') { + $db_id[] = dbInsert(array('config_name' => 'alert.transports.slack.'.$config_id.'.'.$k, 'config_value' => $v, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default'=>$v, 'config_descr'=>'Slack Transport'), 'config'); + } elseif ($config_type == 'hipchat') { + $db_id[] = dbInsert(array('config_name' => 'alert.transports.hipchat.'.$config_id.'.'.$k, 'config_value' => $v, 'config_group' => 'alerting', 'config_sub_group' => 'transports', 'config_default'=>$v, 'config_descr'=>'Hipchat Transport'), 'config'); + } + } + } + $db_inserts = implode(",",$db_id); + if (!empty($db_inserts)) { + if ($config_type == 'slack') { + dbDelete('config',"(`config_name` LIKE 'alert.transports.slack.$config_id.%' AND `config_name` != 'alert.transports.slack.$config_id.url' AND `config_id` NOT IN ($db_inserts))"); + } elseif ($config_type == 'hipchat') { + dbDelete('config',"(`config_name` LIKE 'alert.transports.hipchat.$config_id.%' AND (`config_name` != 'alert.transports.hipchat.$config_id.url' AND `config_name` != 'alert.transports.hipchat.$config_id.room_id' AND `config_name` != 'alert.transports.hipchat.$config_id.from') AND `config_id` NOT IN ($db_inserts))"); + } + } + $message = 'Config item has been updated:'; + $status = 'ok'; +} else { + $state = mres($_POST['config_value']); + $update = dbUpdate(array('config_value' => $state), 'config', '`config_id`=?', array($config_id)); + if(!empty($update) || $update == '0') + { + $message = 'Alert rule has been updated.'; + $status = 'ok'; + } else { + $message = 'ERROR: Alert rule has not been updated.'; + } +} + +$response = array('status'=>$status,'message'=>$message); +echo _json_encode($response); diff --git a/html/images/os/enterasys.png b/html/images/os/enterasys.png new file mode 100644 index 000000000..3732b8ef6 Binary files /dev/null and b/html/images/os/enterasys.png differ diff --git a/html/images/os/multimatic.png b/html/images/os/multimatic.png new file mode 100644 index 000000000..5080c4dcb Binary files /dev/null and b/html/images/os/multimatic.png differ diff --git a/html/images/pd_connect_button.png b/html/images/pd_connect_button.png new file mode 100644 index 000000000..a03220b83 Binary files /dev/null and b/html/images/pd_connect_button.png differ diff --git a/html/includes/functions.inc.php b/html/includes/functions.inc.php index 68324611c..d7fe5b323 100644 --- a/html/includes/functions.inc.php +++ b/html/includes/functions.inc.php @@ -774,7 +774,65 @@ function clean_bootgrid($string) { $output = str_replace(array("\r","\n"), "", $string); $output = addslashes($output); return $output; +} +//Insert new config items +function add_config_item($new_conf_name,$new_conf_value,$new_conf_type,$new_conf_desc) { + if (dbInsert(array('config_name' => $new_conf_name, 'config_value' => $new_conf_value, 'config_default' => $new_conf_value, 'config_type' => $new_conf_type, 'config_desc' => $new_conf_desc, 'config_group' => '500_Custom Settings', 'config_sub_group' => '01_Custom settings', 'config_hidden' => '0', 'config_disabled' => '0'), 'config')) { + $db_inserted = 1; + } else { + $db_inserted = 0; + } + return($db_inserted); +} + +function get_config_by_group($group) { + $group = array($group); + $items = array(); + foreach (dbFetchRows("SELECT * FROM `config` WHERE `config_group` = '?'", array($group)) as $config_item) { + $val = $config_item['config_value']; + if (filter_var($val,FILTER_VALIDATE_INT)) { + $val = (int) $val; + } elseif (filter_var($val,FILTER_VALIDATE_FLOAT)) { + $val = (float) $val; + } elseif (filter_var($val,FILTER_VALIDATE_BOOLEAN)) { + $val =(boolean) $val; + } + if ($val === TRUE) { + $config_item += array('config_checked'=>'checked'); + } + $items[$config_item['config_name']] = $config_item; + } + return $items; +} + +function get_config_like_name($name) { + $name = array($name); + $items = array(); + foreach (dbFetchRows("SELECT * FROM `config` WHERE `config_name` LIKE '%?%'", array($name)) as $config_item) { + $items[$config_item['config_name']] = $config_item; + } + return $items; +} + +function get_config_by_name($name) { + $config_item = dbFetchRow("SELECT * FROM `config` WHERE `config_name` = ?", array($name)); + return $config_item; +} + +function set_config_name($name,$config_value) { + return dbUpdate(array('config_value' => $config_value), 'config', '`config_name`=?', array($name)); +} + +function get_url() { + // http://stackoverflow.com/questions/2820723/how-to-get-base-url-with-php + // http://stackoverflow.com/users/184600/ma%C4%8Dek + return sprintf( + "%s://%s%s", + isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', + $_SERVER['SERVER_NAME'], + $_SERVER['REQUEST_URI'] + ); } function alert_details($details) { diff --git a/html/includes/graphs/accesspoints/channel.inc.php b/html/includes/graphs/accesspoints/channel.inc.php index e05d580d2..03b0dd24c 100644 --- a/html/includes/graphs/accesspoints/channel.inc.php +++ b/html/includes/graphs/accesspoints/channel.inc.php @@ -1,6 +1,7 @@ generate_device_link($mempool), + 'mempool_descr' => $mempool['mempool_descr'], + 'graph' => $mini_graph, + 'mempool_used' => $bar_link, + 'mempool_perc' => $perc . "%"); + if ($_POST['view'] == "graphs") { + $graph_array['height'] = "100"; + $graph_array['width'] = "216"; + $graph_array['to'] = $config['time']['now']; + $graph_array['id'] = $mempool['mempool_id']; + $graph_array['type'] = $graph_type; + $return_data = true; + include("includes/print-graphrow.inc.php"); + unset($return_data); + $response[] = array('hostname' => $graph_data[0], + 'mempool_descr' => $graph_data[1], + 'graph' => $graph_data[2], + 'mempool_used' => $graph_data[3], + 'mempool_perc' => ''); + } # endif graphs +} +$output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$count); +echo _json_encode($output); diff --git a/html/includes/table/processor.inc.php b/html/includes/table/processor.inc.php new file mode 100644 index 000000000..a7b3d9745 --- /dev/null +++ b/html/includes/table/processor.inc.php @@ -0,0 +1,67 @@ + generate_device_link($processor), + 'processor_descr' => $processor['processor_descr'], + 'graph' => $mini_graph, + 'processor_usage' => $bar_link); + if ($_POST['view'] == "graphs") { + $graph_array['height'] = "100"; + $graph_array['width'] = "216"; + $graph_array['to'] = $config['time']['now']; + $graph_array['id'] = $processor['processor_id']; + $graph_array['type'] = $graph_type; + $return_data = true; + include("includes/print-graphrow.inc.php"); + unset($return_data); + $response[] = array('hostname' => $graph_data[0], + 'processor_descr' => $graph_data[1], + 'graph' => $graph_data[2], + 'processor_usage' => $graph_data[3]); + } # endif graphs +} +$output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$total); +echo _json_encode($output); diff --git a/html/includes/table/storage.inc.php b/html/includes/table/storage.inc.php index 8d7fd548d..a912ba1d2 100644 --- a/html/includes/table/storage.inc.php +++ b/html/includes/table/storage.inc.php @@ -20,9 +20,9 @@ if (isset($searchPhrase) && !empty($searchPhrase)) { $count_sql = "SELECT COUNT(`storage_id`) $sql"; -$total = dbFetchCell($count_sql,$param); -if (empty($total)) { - $total = 0; +$count = dbFetchCell($count_sql,$param); +if (empty($count)) { + $count = 0; } if (!isset($sort) || empty($sort)) { @@ -87,5 +87,5 @@ foreach (dbFetchRows($sql,$param) as $drive) { } # endif graphs } -$output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$total); +$output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$count); echo _json_encode($output); diff --git a/html/pages/alert-log.inc.php b/html/pages/alert-log.inc.php index 44eeb404c..34551e60b 100644 --- a/html/pages/alert-log.inc.php +++ b/html/pages/alert-log.inc.php @@ -24,7 +24,7 @@ $pagetitle[] = "Alert Log"; Time logged   Device - alert + Alert Status diff --git a/html/pages/bills.inc.php b/html/pages/bills.inc.php index 6a900f9fe..878c41d2f 100644 --- a/html/pages/bills.inc.php +++ b/html/pages/bills.inc.php @@ -271,7 +271,7 @@ for ($x=1;$x<32;$x++) { $allowed $used $overuse - ".print_percentage_bar (250, 20, $perc, NULL, "ffffff", $background['left'], $percent . "%", "ffffff", $background['right'])." + ".print_percentage_bar (250, 20, $percent, NULL, "ffffff", $background['left'], $percent . "%", "ffffff", $background['right'])." "bill", 'bill_id' => $bill['bill_id'], 'view' => "edit"))."'>Edit Edit "); diff --git a/html/pages/device/health/mempool.inc.php b/html/pages/device/health/mempool.inc.php index 2b4e5fcc8..6630c3147 100644 --- a/html/pages/device/health/mempool.inc.php +++ b/html/pages/device/health/mempool.inc.php @@ -13,7 +13,7 @@ foreach (dbFetchRows("SELECT * FROM `mempools` WHERE device_id = ?", array($devi { if (!is_integer($i/2)) { $row_colour = $list_colour_a; } else { $row_colour = $list_colour_b; } - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $state = $memcache->get('mempool-'.$mempool['mempool_id'].'-state'); if($debug) { print_r($state); } diff --git a/html/pages/device/logs.inc.php b/html/pages/device/logs.inc.php index 8aa913e67..0b8481a68 100644 --- a/html/pages/device/logs.inc.php +++ b/html/pages/device/logs.inc.php @@ -6,17 +6,25 @@ print_optionbar_start(); echo("Logging » "); -if ($vars['section'] == "eventlog") -{ echo(''); } +if ($vars['section'] == "eventlog") { + echo(''); +} echo(generate_link("Event Log" , $vars, array('section'=>'eventlog'))); -if ($vars['section'] == "eventlog") { echo(""); } +if ($vars['section'] == "eventlog") { + echo(""); +} -echo(" | "); +if (isset($config['enable_syslog']) && $config['enable_syslog'] == 1) { + echo(" | "); -if ($vars['section'] == "syslog") -{ echo(''); } -echo(generate_link("Syslog" , $vars, array('section'=>'syslog'))); -if ($vars['section'] == "syslog") { echo(""); } + if ($vars['section'] == "syslog") { + echo(''); + } + echo(generate_link("Syslog" , $vars, array('section'=>'syslog'))); + if ($vars['section'] == "syslog") { + echo(""); + } +} switch ($vars['section']) { diff --git a/html/pages/device/logs/syslog.inc.php b/html/pages/device/logs/syslog.inc.php index c3abdad80..6ff642123 100644 --- a/html/pages/device/logs/syslog.inc.php +++ b/html/pages/device/logs/syslog.inc.php @@ -44,7 +44,7 @@ $sql = "SELECT *, DATE_FORMAT(timestamp, '%Y-%m-%d %T') AS date from syslog WHE $sql .= " ORDER BY timestamp DESC LIMIT 1000"; echo('
- Eventlog entries + Syslog entries
'); foreach (dbFetchRows($sql, $param) as $entry) { include("includes/print-syslog.inc.php"); } diff --git a/html/pages/device/overview/generic/sensor.inc.php b/html/pages/device/overview/generic/sensor.inc.php index bda3d04bd..6194c37c0 100644 --- a/html/pages/device/overview/generic/sensor.inc.php +++ b/html/pages/device/overview/generic/sensor.inc.php @@ -14,7 +14,7 @@ if (count($sensors))
'); foreach ($sensors as $sensor) { - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $sensor['sensor_current'] = $memcache->get('sensor-'.$sensor['sensor_id'].'-value'); } diff --git a/html/pages/device/overview/mempools.inc.php b/html/pages/device/overview/mempools.inc.php index f11b6beaa..3d35a8d55 100644 --- a/html/pages/device/overview/mempools.inc.php +++ b/html/pages/device/overview/mempools.inc.php @@ -22,7 +22,7 @@ if (count($mempools)) foreach ($mempools as $mempool) { - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $state = $memcache->get('mempool-'.$mempool['mempool_id'].'-state'); if($debug) { print_r($state); } diff --git a/html/pages/device/port.inc.php b/html/pages/device/port.inc.php index 944b10a55..ecb25cfd2 100644 --- a/html/pages/device/port.inc.php +++ b/html/pages/device/port.inc.php @@ -4,7 +4,7 @@ if (!isset($vars['view']) ) { $vars['view'] = "graphs"; } $port = dbFetchRow("SELECT * FROM `ports` WHERE `port_id` = ?", array($vars['port'])); -if ($config['memcached']['enable']) +if ($config['memcached']['enable'] === TRUE) { $state = $memcache->get('port-'.$port['port_id'].'-state'); if($debug) { print_r($state); } diff --git a/html/pages/device/ports.inc.php b/html/pages/device/ports.inc.php index df7c691d6..b254b376d 100644 --- a/html/pages/device/ports.inc.php +++ b/html/pages/device/ports.inc.php @@ -106,7 +106,7 @@ if ($vars['view'] == 'minigraphs') foreach ($ports as $port) { - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $state = $memcache->get('port-'.$port['port_id'].'-state'); if($debug) { print_r($state); } diff --git a/html/pages/health.inc.php b/html/pages/health.inc.php index 50e1c1b58..6d4427fb3 100644 --- a/html/pages/health.inc.php +++ b/html/pages/health.inc.php @@ -9,7 +9,7 @@ if ($used_sensors['voltage']) $datas[] = 'voltage'; if ($used_sensors['frequency']) $datas[] = 'frequency'; if ($used_sensors['current']) $datas[] = 'current'; if ($used_sensors['power']) $datas[] = 'power'; -if ($used_sensors['dBm']) $datas[] = 'dBm'; +if ($used_sensors['dbm']) $datas[] = 'dbm'; // FIXME generalize -> static-config ? $type_text['overview'] = "Overview"; @@ -17,7 +17,7 @@ $type_text['temperature'] = "Temperature"; $type_text['charge'] = "Battery Charge"; $type_text['humidity'] = "Humidity"; $type_text['mempool'] = "Memory"; -$type_text['storage'] = "Disk Usage"; +$type_text['storage'] = "Storage"; $type_text['diskio'] = "Disk I/O"; $type_text['processor'] = "Processor"; $type_text['voltage'] = "Voltage"; @@ -26,7 +26,7 @@ $type_text['frequency'] = "Frequency"; $type_text['current'] = "Current"; $type_text['power'] = "Power"; $type_text['toner'] = "Toner"; -$type_text['dBm'] = "dBm"; +$type_text['dbm'] = "dBm"; if (!$vars['metric']) { $vars['metric'] = "processor"; } if (!$vars['view']) { $vars['view'] = "detail"; } diff --git a/html/pages/health/mempool.inc.php b/html/pages/health/mempool.inc.php index b348724e5..a522f904c 100644 --- a/html/pages/health/mempool.inc.php +++ b/html/pages/health/mempool.inc.php @@ -1,86 +1,38 @@ - +
+ + + + + + + + + +
DeviceMemoryUsedUsage
+
-$graph_type = "mempool_usage"; - -echo("
"); -echo(""); - -echo(" - - - - - - "); - -foreach (dbFetchRows("SELECT * FROM `mempools` AS M, `devices` as D WHERE D.device_id = M.device_id ORDER BY D.hostname") as $mempool) -{ - if (device_permitted($mempool['device_id'])) - { - $text_descr = $mempool['mempool_descr']; - - if ($config['memcached']['enable']) - { - $state = $memcache->get('mempool-'.$mempool['mempool_id'].'-state'); - if($debug) { print_r($state); } - if(is_array($state)) { $port = array_merge($mempool, $state); } - unset($state); - } - - - $mempool_url = "device/device=".$mempool['device_id']."/tab=health/metric=mempool/"; - $mini_url = "graph.php?id=".$mempool['mempool_id']."&type=".$graph_type."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=80&height=20&bg=f4f4f4"; - - $mempool_popup = "onmouseover=\"return overlib('
".$device['hostname']." - ".$text_descr; - $mempool_popup .= "
"; - $mempool_popup .= "', RIGHT".$config['overlib_defaults'].");\" onmouseout=\"return nd();\""; - - $total = formatStorage($mempool['mempool_total']); - $used = formatStorage($mempool['mempool_used']); - $free = formatStorage($mempool['mempool_free']); - - $background = get_percentage_colours($mempool['mempool_perc']); - - echo(" - - - - - - "); - - if ($vars['view'] == "graphs") - { - echo(""); - } # endif graphs - } -} - -echo("
DeviceMemoryUsageUsed
".generate_device_link($mempool)."" . $text_descr . " - ".print_percentage_bar (400, 20, $mempool['mempool_perc'], "$used / $total", "ffffff", $background['left'], $free , "ffffff", $background['right'])." - ".$mempool['mempool_perc']."%
"); - - $daily_graph = "graph.php?id=" . $mempool['mempool_id'] . "&type=".$graph_type."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=211&height=100"; - $daily_url = "graph.php?id=" . $mempool['mempool_id'] . "&type=".$graph_type."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=400&height=150"; - - $weekly_graph = "graph.php?id=" . $mempool['mempool_id'] . "&type=".$graph_type."&from=".$config['time']['week']."&to=".$config['time']['now']."&width=211&height=100"; - $weekly_url = "graph.php?id=" . $mempool['mempool_id'] . "&type=".$graph_type."&from=".$config['time']['week']."&to=".$config['time']['now']."&width=400&height=150"; - - $monthly_graph = "graph.php?id=" . $mempool['mempool_id'] . "&type=".$graph_type."&from=".$config['time']['month']."&to=".$config['time']['now']."&width=211&height=100"; - $monthly_url = "graph.php?id=" . $mempool['mempool_id'] . "&type=".$graph_type."&from=".$config['time']['month']."&to=".$config['time']['now']."&width=400&height=150"; - - $yearly_graph = "graph.php?id=" . $mempool['mempool_id'] . "&type=".$graph_type."&from=".$config['time']['year']."&to=".$config['time']['now']."&width=211&height=100"; - $yearly_url = "graph.php?id=" . $mempool['mempool_id'] . "&type=".$graph_type."&from=".$config['time']['year']."&to=".$config['time']['now']."&width=400&height=150"; - - echo("', LEFT);\" onmouseout=\"return nd();\"> - "); - echo("', LEFT);\" onmouseout=\"return nd();\"> - "); - echo("', LEFT);\" onmouseout=\"return nd();\"> - "); - echo("', LEFT);\" onmouseout=\"return nd();\"> - "); - echo("
"); -echo("
"); - -?> + diff --git a/html/pages/health/processor.inc.php b/html/pages/health/processor.inc.php index cf2cf461b..f0a39b717 100644 --- a/html/pages/health/processor.inc.php +++ b/html/pages/health/processor.inc.php @@ -1,83 +1,37 @@ - + + + + + + + + + +
DeviceProcessorUsage
+ -$graph_type = "processor_usage"; - -echo("
"); -echo(" "); - -echo(" - - - - - "); - -foreach (dbFetchRows("SELECT * FROM `processors` AS P, `devices` AS D WHERE D.device_id = P.device_id ORDER BY D.hostname") as $proc) -{ - if (device_permitted($proc['device_id'])) - { - $device = $proc; - - // FIXME should that really be done here? :-) - $text_descr = $proc['processor_descr']; - $text_descr = str_replace("Routing Processor", "RP", $text_descr); - $text_descr = str_replace("Switching Processor", "SP", $text_descr); - $text_descr = str_replace("Sub-Module", "Module ", $text_descr); - $text_descr = str_replace("DFC Card", "DFC", $text_descr); - - $proc_url = "device/device=".$device['device_id']."/tab=health/metric=processor/"; - - $mini_url = "graph.php?id=".$proc['processor_id']."&type=".$graph_type."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=80&height=20&bg=f4f4f400"; - - $proc_popup = "onmouseover=\"return overlib('
".$device['hostname']." - ".$text_descr; - $proc_popup .= "
"; - $proc_popup .= "', RIGHT".$config['overlib_defaults'].");\" onmouseout=\"return nd();\""; - - $perc = round($proc['processor_usage']); - - $background = get_percentage_colours($perc); - - echo(" - - - - - '); - - if ($vars['view'] == "graphs") - { - echo(' - "); - - } #end graphs if - } -} - -echo("
DeviceProcessorUsage
".generate_device_link($proc)."" . $text_descr . " - ".print_percentage_bar (400, 20, $perc, $perc."%", "ffffff", $background['left'], (100 - $perc)."%" , "ffffff", $background['right'])); - echo('
'); - - $daily_graph = "graph.php?id=" . $proc['processor_id'] . "&type=".$graph_type."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=211&height=100"; - $daily_url = "graph.php?id=" . $proc['processor_id'] . "&type=".$graph_type."&from=".$config['time']['day']."&to=".$config['time']['now']."&width=400&height=150"; - - $weekly_graph = "graph.php?id=" . $proc['processor_id'] . "&type=".$graph_type."&from=".$config['time']['week']."&to=".$config['time']['now']."&width=211&height=100"; - $weekly_url = "graph.php?id=" . $proc['processor_id'] . "&type=".$graph_type."&from=".$config['time']['week']."&to=".$config['time']['now']."&width=400&height=150"; - - $monthly_graph = "graph.php?id=" . $proc['processor_id'] . "&type=".$graph_type."&from=".$config['time']['month']."&to=".$config['time']['now']."&width=211&height=100"; - $monthly_url = "graph.php?id=" . $proc['processor_id'] . "&type=".$graph_type."&from=".$config['time']['month']."&to=".$config['time']['now']."&width=400&height=150"; - - $yearly_graph = "graph.php?id=" . $proc['processor_id'] . "&type=".$graph_type."&from=".$config['time']['year']."&to=".$config['time']['now']."&width=211&height=100"; - $yearly_url = "graph.php?id=" . $proc['processor_id'] . "&type=".$graph_type."&from=".$config['time']['year']."&to=".$config['time']['now']."&width=400&height=150"; - - echo(" ', LEFT);\" onmouseout=\"return nd();\"> - "); - echo(" ', LEFT);\" onmouseout=\"return nd();\"> - "); - echo(" ', LEFT);\" onmouseout=\"return nd();\"> - "); - echo(" ', LEFT);\" onmouseout=\"return nd();\"> - "); - echo("
"); -echo("
"); - -?> + diff --git a/html/pages/health/sensors.inc.php b/html/pages/health/sensors.inc.php index 82f9862ce..02224d485 100644 --- a/html/pages/health/sensors.inc.php +++ b/html/pages/health/sensors.inc.php @@ -26,7 +26,7 @@ echo(' foreach (dbFetchRows($sql, $param) as $sensor) { - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $sensor['sensor_current'] = $memcache->get('sensor-'.$sensor['sensor_id'].'-value'); if($debug) { echo("Memcached[".'sensor-'.$sensor['sensor_id'].'-value'."=".$sensor['sensor_current']."]"); } diff --git a/html/pages/services.inc.php b/html/pages/services.inc.php index baabceef9..8070d5d61 100644 --- a/html/pages/services.inc.php +++ b/html/pages/services.inc.php @@ -56,11 +56,17 @@ if ($_SESSION['userlevel'] >= '5') $host_sql = "SELECT * FROM devices AS D, services AS S, devices_perms AS P WHERE D.device_id = S.device_id AND D.device_id = P.device_id AND P.user_id = ? GROUP BY D.hostname ORDER BY D.hostname"; $host_par = array($_SESSION['user_id']); } + $shift = 1; foreach (dbFetchRows($host_sql, $host_par) as $device) { $device_id = $device['device_id']; $device_hostname = $device['hostname']; - array_unshift($sql_param,$device_id); + if ($shift == 1) { + array_unshift($sql_param, $device_id); + $shift = 0; + } else { + $sql_param[0] = $device_id; + } foreach (dbFetchRows("SELECT * FROM `services` WHERE `device_id` = ? $where", $sql_param) as $service) { include("includes/print-service.inc.php"); diff --git a/html/pages/settings.inc.php b/html/pages/settings.inc.php index 8885e131c..cb2d3ca94 100644 --- a/html/pages/settings.inc.php +++ b/html/pages/settings.inc.php @@ -1,4 +1,5 @@ * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,11 +23,53 @@ * @subpackage Page */ +?> + +
+
+
+ +
+
+
+ + + +
+
+ + + +
+
+
+"; foreach( $a as $k=>$v ) { @@ -37,10 +80,21 @@ function a2t($a) { $r .= ''; return $r; } - if( $_SESSION['userlevel'] >= 10 ) { echo "
".a2t($config)."
"; } else { include("includes/error-no-perm.inc.php"); } + + if ($_SESSION['userlevel'] >= '10') { + + if ($debug) { + echo("
");
+            print_r($config);
+            echo("
"); + } + } else { + include("includes/error-no-perm.inc.php"); + } +} ?> diff --git a/html/pages/settings/alerting.inc.php b/html/pages/settings/alerting.inc.php new file mode 100644 index 000000000..ca2473635 --- /dev/null +++ b/html/pages/settings/alerting.inc.php @@ -0,0 +1,894 @@ + + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. Please see LICENSE.txt at the top level of + * the source code distribution for details. + */ + +$no_refresh = TRUE; + +?> + + + + + + + + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+ +
+
+ +
+
+
+
+
+
+
+

+ Email transport +

+
+
+
+
+ +
+
+ +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+ +
+
+ +
+
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+
+
+
+
+

+ API transport +

+
+
+
+
+
+ +
+
'; + $api_urls = get_config_like_name('alert.transports.api.%.'); + foreach ($api_urls as $api_url) { + $api_split = split("\.", $api_url['config_name']); + $api_method = $api_split[3]; + echo '
+ +
+ + +
+
+ +
+
'; + } + echo '
+ +
+ + +
+
+ +
+
+
+
+
+
+ +
+
+
+
+ Connect to PagerDuty +
+
'; + if (empty($config_groups['alert.transports.pagerduty']['config_value']) === FALSE) { + echo ""; + } else { + echo ""; + } + echo '
+
+
+
+
+
+ +
+
+
+ +
+
+ + +
+
+
+
+
+
+
+

+ IRC transport +

+
+
+
+
+ +
+
+ +
+
+
+
+
+
+
+

+ Slack transport +

+
+
+
+
+
+ +
+
'; + $slack_urls = get_config_like_name('alert.transports.slack.%.url'); + foreach ($slack_urls as $slack_url) { + unset($upd_slack_extra); + $new_slack_extra = array(); + $slack_extras = get_config_like_name('alert.transports.slack.'.$slack_url['config_id'].'.%'); + foreach ($slack_extras as $extra) { + $split_extra = explode('.',$extra['config_name']); + if ($split_extra[4] != 'url') { + $new_slack_extra[] = $split_extra[4] . '=' . $extra['config_value']; + } + } + $upd_slack_extra = implode(PHP_EOL,$new_slack_extra); + echo '
+
+ +
+ + +
+
+ +
+
+
+
+ + +
+
+
'; + } + echo '
+
+ +
+ + +
+
+ +
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+ +
+
'; + $hipchat_urls = get_config_like_name('alert.transports.hipchat.%.url'); + foreach ($hipchat_urls as $hipchat_url) { + unset($upd_hipchat_extra); + $new_hipchat_extra = array(); + $hipchat_extras = get_config_like_name('alert.transports.hipchat.'.$hipchat_url['config_id'].'.%'); + $hipchat_room_id = get_config_by_name('alert.transports.hipchat.'.$hipchat_url['config_id'].'.room_id'); + $hipchat_from = get_config_by_name('alert.transports.hipchat.'.$hipchat_url['config_id'].'.from'); + foreach ($hipchat_extras as $extra) { + $split_extra = explode('.',$extra['config_name']); + if ($split_extra[4] != 'url' && $split_extra[4] != 'room_id' && $split_extra[4] != 'from') { + $new_hipchat_extra[] = $split_extra[4] . '=' . $extra['config_value']; + } + } + $upd_hipchat_extra = implode(PHP_EOL,$new_hipchat_extra); + echo '
+
+ +
+ + +
+
+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ + +
+
+
'; + } + echo '
+
+ +
+ + +
+
+ +
+
+
+ +
+ + +
+
+
+ +
+ + +
+
+
+
+ +
+
+
+
+
+
+
+ +'; + +?> + + diff --git a/html/pages/syslog.inc.php b/html/pages/syslog.inc.php index f17cc315f..0786a8f9e 100644 --- a/html/pages/syslog.inc.php +++ b/html/pages/syslog.inc.php @@ -62,10 +62,10 @@ var grid = $("#syslog").bootgrid({ ""+ ""+ "
"+ - "\" placeholder=\"From\" data-date-format=\"YYYY-MM-DD HH:mm\">"+ + "\" placeholder=\"From\" data-date-format=\"YYYY-MM-DD HH:mm\">"+ "
"+ "
"+ - "\" placeholder=\"To\" data-date-format=\"YYYY-MM-DD HH:mm\">"+ + "\" placeholder=\"To\" data-date-format=\"YYYY-MM-DD HH:mm\">"+ "
"+ ""+ ""+ diff --git a/includes/alerts/transport.pushover.php b/includes/alerts/transport.pushover.php index 7d49e10b9..e315266d4 100644 --- a/includes/alerts/transport.pushover.php +++ b/includes/alerts/transport.pushover.php @@ -36,31 +36,57 @@ */ foreach( $opts as $api ) { - $data = array(); - $data['token'] = $api['appkey']; - $data['user'] = $api['userkey']; - if( $obj['severity'] == "critical" ) { - if( !empty($api['sound_critical']) ) { - $data['sound'] = $api['sound_critical']; - } - $severity = "Critical"; - $data['priority'] = 1; - } - elseif( $obj['severity'] == "warning" ) { - $severity = "Warning"; - $data['priority'] = 0; + $data = array(); + $data['token'] = $api['appkey']; + $data['user'] = $api['userkey']; + switch( $obj['severity'] ) { + case "critical": + $severity = "Critical"; + $data['priority'] = 1; + if( !empty( $api['sound_critical'] ) ) { + $data['sound'] = $api['sound_critical']; + } + break; + case "warning": + $severity = "Warning"; + $data['priority'] = 0; + if( !empty( $api['sound_warning'] ) ) { + $data['sound'] = $api['sound_warning']; + } + break; + } + switch( $obj['state'] ) { + case 0: + $title_text = "OK"; + if( !empty( $api['sound_ok'] ) ) { + $data['sound'] = $api['sound_ok']; + } + break; + case 1: + $title_text = $severity; + break; + case 2: + $title_text = "Acknowledged"; + break; + } + $data['title'] = $title_text." - ".$obj['hostname']." - ".$obj['name']; + $message_text = "Timestamp: ".$obj['timestamp']; + if( !empty( $obj['faults'] ) ) { + $message_text .= "\n\nFaults:\n"; + foreach($obj['faults'] as $k => $faults) { + $message_text .= "#".$k." ".$faults['string']."\n"; + } + } + $data['message'] = $message_text; + $curl = curl_init(); + curl_setopt($curl, CURLOPT_URL, 'https://api.pushover.net/1/messages.json'); + curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true); + curl_setopt($curl, CURLOPT_POSTFIELDS, $data); + $ret = curl_exec($curl); + $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); + if( $code != 200 ) { + var_dump("Pushover returned error"); //FIXME: proper debugging + return false; } - $curl = curl_init(); - $data['title'] = $severity." - ".$obj['hostname']; - $data['message'] = $obj['name']; - curl_setopt($curl, CURLOPT_URL, 'https://api.pushover.net/1/messages.json'); - curl_setopt($curl, CURLOPT_SAFE_UPLOAD, true); - curl_setopt($curl, CURLOPT_POSTFIELDS, $data); - $ret = curl_exec($curl); - $code = curl_getinfo($curl, CURLINFO_HTTP_CODE); - if( $code != 200 ) { - var_dump("Pushover returned error"); //FIXME: proper debugging - return false; - } } return true; diff --git a/includes/defaults.inc.php b/includes/defaults.inc.php index 83b9073d1..9a8105e09 100644 --- a/includes/defaults.inc.php +++ b/includes/defaults.inc.php @@ -191,65 +191,6 @@ $config['autodiscovery']['nets-exclude'][] = "169.254.0.0/16"; $config['autodiscovery']['nets-exclude'][] = "224.0.0.0/4"; $config['autodiscovery']['nets-exclude'][] = "240.0.0.0/4"; -// Mailer backend Settings - -$config['email_backend'] = 'mail'; // Mail backend. Allowed: "mail" (PHP's built-in), "sendmail", "smtp". -$config['email_from'] = NULL; // Mail from. Default: "ProjectName" -$config['email_user'] = $config['project_id']; -$config['email_sendmail_path'] = '/usr/sbin/sendmail'; // The location of the sendmail program. -$config['email_smtp_host'] = 'localhost'; // Outgoing SMTP server name. -$config['email_smtp_port'] = 25; // The port to connect. -$config['email_smtp_timeout'] = 10; // SMTP connection timeout in seconds. -$config['email_smtp_secure'] = NULL; // Enable encryption. Use 'tls' or 'ssl' -$config['email_smtp_auth'] = FALSE; // Whether or not to use SMTP authentication. -$config['email_smtp_username'] = NULL; // SMTP username. -$config['email_smtp_password'] = NULL; // Password for SMTP authentication. - -// Alerting Settings - -$config['alert'] = array( - 'macros' => array( //Macros: - 'rule' => array( // For Rules - //Time Macros - 'now' => 'NOW()', - 'past_5m' => 'DATE_SUB(NOW(),INTERVAL 5 MINUTE)', - 'past_10m' => 'DATE_SUB(NOW(),INTERVAL 10 MINUTE)', - 'past_15m' => 'DATE_SUB(NOW(),INTERVAL 15 MINUTE)', - 'past_30m' => 'DATE_SUB(NOW(),INTERVAL 30 MINUTE)', - 'past_60m' => 'DATE_SUB(NOW(),INTERVAL 60 MINUTE)', - - //Device Macros - 'device' => '%devices.disabled = "0" && %devices.ignore = "0"', - 'device_up' => '%devices.status = "1" && %macros.device', - 'device_down' => '%devices.status = "0" && %macros.device', - - //Port Macros - 'port' => '%ports.deleted = "0" && %ports.ignore = "0" && %ports.disabled = "0"', - 'port_up' => '%ports.ifOperStatus = "up" && %ports.ifAdminStatus = "up" && %macros.port', - 'port_down' => '%ports.ifOperStatus = "down" && %ports.ifAdminStatus != "down" && %macros.port', - 'port_usage_perc' => '((%ports.ifInOctets_rate*8)/%ports.ifSpeed)*100', - - //Misc Macros - ), - ), - 'transports' => array( //Transports: - 'dummy' => false, // Dummy alerting (debug) - 'mail' => false, // E-Mail alerting - 'irc' => false, // IRC Alerting - ), - 'syscontact' => true, //Issue to SysContact (or it's override) - 'globals' => false, //Issue to global-read users - 'admins' => false, //Issue to administrators - 'default_only' => false, //Only issue to default - 'default_mail' => '', //Default email - 'tolerance-window' => 10, //Allow +/-10s tolerance to delay values to counter cron-irregularities - 'fixed-contacts' => true, //If true any changes in user-permissions,user-mail,syscontact,default-mail will not be honoured until the next alert triggers. -); - -//Legacy options - -$config['alerts']['email']['default'] = NULL; // Default alert recipient -$config['alerts']['email']['default_only'] = FALSE; // Only use default recipient $config['alerts']['email']['enable'] = FALSE; // Enable email alerts $config['alerts']['bgp']['whitelist'] = NULL; // Populate as an array() with ASNs to alert on. $config['alerts']['port']['ifdown'] = FALSE; // Generate alerts for ports that go down @@ -670,4 +611,7 @@ $config['ipmi']['type'][] = "lan"; $config['ipmi']['type'][] = "imb"; $config['ipmi']['type'][] = "open"; +// Options needed for dyn config - do NOT edit +$dyn_config['email_backend'] = array('mail','sendmail','smtp'); +$dyn_config['email_smtp_secure'] = array('', 'tls', 'ssl'); ?> diff --git a/includes/definitions.inc.php b/includes/definitions.inc.php index 4c3972544..5097006de 100644 --- a/includes/definitions.inc.php +++ b/includes/definitions.inc.php @@ -1,5 +1,71 @@ MySQL Error"); + echo(mysql_error()); + die; +} +$database_db = mysql_select_db($config['db_name'], $database_link); + +function mergecnf($obj) { +/* Copyright (C) 2014 Daniel Preussker + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ + +/** + * Merge config function + * @author f0o + * @copyright 2015 f0o, LibreNMS + * @license GPL + * @package LibreNMS + * @subpackage Config + */ + + $pointer = array(); + $val = $obj['config_value']; + $obj = $obj['config_name']; + $obj = explode('.',$obj,2); + if( !isset($obj[1]) ) { + if( filter_var($val,FILTER_VALIDATE_INT) ) { + $val = (int) $val; + } elseif( filter_var($val,FILTER_VALIDATE_FLOAT) ) { + $val = (float) $val; + } elseif( filter_var($val,FILTER_VALIDATE_BOOLEAN,FILTER_NULL_ON_FAILURE) !== NULL ) { + $val = filter_var($val,FILTER_VALIDATE_BOOLEAN); + } + if( !empty($obj[0]) ) { + return array($obj[0] => $val); + } else { + return array($val); + } + } else { + $pointer[$obj[0]] = mergecnf(array('config_name'=>$obj[1],'config_value'=>$val)); + } + return $pointer; +} + +$clone = $config; +foreach( dbFetchRows('select config_name,config_value from config') as $obj ) { + $clone = array_replace_recursive($clone,mergecnf($obj)); +} +$config = array_replace_recursive($clone,$config); + ///////////////////////////////////////////////////////// # NO CHANGES TO THIS FILE, IT IS NOT USER-EDITABLE # ///////////////////////////////////////////////////////// @@ -670,13 +736,6 @@ $config['os'][$os]['text'] = "D-Link Access Point"; $config['os'][$os]['type'] = "wireless"; $config['os'][$os]['icon'] = "dlink"; -//$os = "ubiquitiap"; -//$config['os'][$os]['text'] = "Ubiquiti Networks Wireless"; -//$config['os'][$os]['type'] = "wireless"; -//$config['os'][$os]['icon'] = "ubiquiti"; -//$config['os'][$os]['over'][0]['graph'] = "device_bits"; -//$config['os'][$os]['over'][0]['text'] = "Device Traffic"; - $os = "axiscam"; $config['os'][$os]['text'] = "AXIS Network Camera"; $config['os'][$os]['icon'] = "axis"; @@ -1123,6 +1182,20 @@ $config['os'][$os]['over'][0]['graph'] = "device_bits"; $config['os'][$os]['over'][0]['text'] = "Device Traffic"; $config['os'][$os]['icon'] = "pbn"; +// Enterasys +$os = "enterasys"; +$config['os'][$os]['text'] = "Enterasys"; +$config['os'][$os]['type'] = "network"; +$config['os'][$os]['over'][0]['graph'] = "device_bits"; +$config['os'][$os]['over'][0]['text'] = "Device Traffic"; +$config['os'][$os]['icon'] = "enterasys"; + +// Multimatic UPS (Generex CS121 SNMP Adapter) +$os = "multimatic"; +$config['os'][$os]['text'] = "Multimatic UPS"; +$config['os'][$os]['type'] = "power"; +$config['os'][$os]['icon'] = "multimatic"; + foreach ($config['os'] as $this_os => $blah) { if (isset($config['os'][$this_os]['group'])) @@ -1749,17 +1822,7 @@ if (isset($_SERVER['HTTPS'])) $config['base_url'] = preg_replace('/^http:/','https:', $config['base_url']); } -// Connect to database -$database_link = mysql_pconnect($config['db_host'], $config['db_user'], $config['db_pass']); -if (!$database_link) -{ - echo("

MySQL Error

"); - echo(mysql_error()); - die; -} -$database_db = mysql_select_db($config['db_name'], $database_link); - -if ($config['memcached']['enable']) +if ($config['memcached']['enable'] === TRUE) { if (class_exists("Memcached")) { diff --git a/includes/discovery/os/enterasys.inc.php b/includes/discovery/os/enterasys.inc.php new file mode 100644 index 000000000..921783a3e --- /dev/null +++ b/includes/discovery/os/enterasys.inc.php @@ -0,0 +1,9 @@ + diff --git a/includes/discovery/os/multimatic.inc.php b/includes/discovery/os/multimatic.inc.php new file mode 100644 index 000000000..f97c488cf --- /dev/null +++ b/includes/discovery/os/multimatic.inc.php @@ -0,0 +1,9 @@ + " . $sensor['sensor_limit'] . " $unit)", $device, $class, $sensor['sensor_id']); } - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $memcache->set('sensor-'.$sensor['sensor_id'].'-value', $sensor_value); } else { diff --git a/includes/polling/mempools.inc.php b/includes/polling/mempools.inc.php index 2d065afe1..abc94a496 100644 --- a/includes/polling/mempools.inc.php +++ b/includes/polling/mempools.inc.php @@ -46,7 +46,7 @@ foreach (dbFetchRows("SELECT * FROM mempools WHERE device_id = ?", array($device $mempool['state']['mempool_lowestfree'] = $mempool['lowestfree']; } - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { if($debug) { print_r($mempool['state']); } $memcache->set('mempool-'.$mempool['mempool_id'].'-value', $mempool['state']); diff --git a/includes/polling/os/enterasys.inc.php b/includes/polling/os/enterasys.inc.php new file mode 100644 index 000000000..9753e40b9 --- /dev/null +++ b/includes/polling/os/enterasys.inc.php @@ -0,0 +1,8 @@ + diff --git a/includes/polling/os/multimatic.inc.php b/includes/polling/os/multimatic.inc.php new file mode 100644 index 000000000..d7d1366c6 --- /dev/null +++ b/includes/polling/os/multimatic.inc.php @@ -0,0 +1,5 @@ +get('port-'.$port['port_id'].'-state'); if($debug) { print_r($state); } @@ -184,7 +184,7 @@ foreach ($ports as $port) $port['update']['poll_period'] = $polled_period; } - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $port['state']['poll_time'] = $polled; $port['state']['poll_prev'] = $port['poll_time']; @@ -215,7 +215,7 @@ foreach ($ports as $port) $this_port['ifOutMulticastPkts'] = $this_port['ifHCOutMulticastPkts']; } - // Overwrite ifSpeed with ifHighSpeed if it's over 10G + // Overwrite ifSpeed with ifHighSpeed if it's over 1G if (is_numeric($this_port['ifHighSpeed']) && $this_port['ifSpeed'] > "1000000000") { echo("HighSpeed "); @@ -303,7 +303,7 @@ foreach ($ports as $port) $port['update'][$oid.'_prev'] = $port[$oid]; } - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $port['state'][$oid] = $this_port[$oid]; $port['state'][$oid.'_prev'] = $port[$oid]; @@ -323,7 +323,7 @@ foreach ($ports as $port) $port['update'][$oid.'_delta'] = $oid_diff; } - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $port['state'][$oid.'_rate'] = $oid_rate; $port['state'][$oid.'_delta'] = $oid_diff; @@ -356,7 +356,7 @@ foreach ($ports as $port) echo('pkts('.format_si($port['stats']['ifInUcastPkts_rate']).'pps/'.format_si($port['stats']['ifOutUcastPkts_rate']).'pps)'); // Store aggregate in/out state - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $port['state']['ifOctets_rate'] = $port['stats']['ifOutOctets_rate'] + $port['stats']['ifInOctets_rate']; $port['state']['ifUcastPkts_rate'] = $port['stats']['ifOutUcastPkts_rate'] + $port['stats']['ifInUcastPkts_rate']; @@ -434,7 +434,7 @@ foreach ($ports as $port) if ($device['os'] == "aos") { include("port-alcatel.inc.php"); } // Update Memcached - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { if($debug) { print_r($port['state']); } $memcache->set('port-'.$port['port_id'].'-state', $port['state']); diff --git a/includes/polling/storage.inc.php b/includes/polling/storage.inc.php index 2485f822d..4c68d1752 100644 --- a/includes/polling/storage.inc.php +++ b/includes/polling/storage.inc.php @@ -36,7 +36,7 @@ foreach (dbFetchRows("SELECT * FROM storage WHERE device_id = ?", array($device[ rrdtool_update($storage_rrd,"N:".$storage['used'].":".$storage['free']); - if ($config['memcached']['enable']) + if ($config['memcached']['enable'] === TRUE) { $memcache->set('storage-'.$storage['storage_id'].'-used', $storage['used']); $memcache->set('storage-'.$storage['storage_id'].'-free', $storage['free']); diff --git a/includes/polling/storage/hrstorage.inc.php b/includes/polling/storage/hrstorage.inc.php index 304e61b7d..5ff95aa7b 100644 --- a/includes/polling/storage/hrstorage.inc.php +++ b/includes/polling/storage/hrstorage.inc.php @@ -11,8 +11,10 @@ if (!is_array($storage_cache['hrstorage'])) $entry = $storage_cache['hrstorage'][$storage[storage_index]]; $storage['units'] = $entry['hrStorageAllocationUnits']; +$entry['hrStorageUsed'] = fix_integer_value($entry['hrStorageUsed']); +$entry['hrStorageSize'] = fix_integer_value($entry['hrStorageSize']); $storage['used'] = $entry['hrStorageUsed'] * $storage['units']; $storage['size'] = $entry['hrStorageSize'] * $storage['units']; $storage['free'] = $storage['size'] - $storage['used']; -?> \ No newline at end of file +?> diff --git a/scripts/shoutcast.php b/scripts/shoutcast.php index f00118e90..c123312df 100644 --- a/scripts/shoutcast.php +++ b/scripts/shoutcast.php @@ -40,7 +40,7 @@ $cmd = (isset($_SERVER['argv'][1]) ? $_SERVER['argv'][1] : ""); function get_data($host, $port) { - $fp = @fsockopen($host, $port, &$errno, &$errstr, 5); + $fp = @fsockopen($host, $port, $errno, $errstr, 5); if(!$fp) { $connect = 0; } if (!isset($connect)) { fputs($fp, "GET /7.html HTTP/1.0\r\n" diff --git a/sql-schema/051.sql b/sql-schema/051.sql new file mode 100644 index 000000000..10fb97fb3 --- /dev/null +++ b/sql-schema/051.sql @@ -0,0 +1,5 @@ +DROP TABLE IF EXISTS `config`; +CREATE TABLE `config` ( `config_id` int(11) NOT NULL AUTO_INCREMENT, `config_name` varchar(255) NOT NULL, `config_value` varchar(512) NOT NULL, `config_default` varchar(512) NOT NULL, `config_descr` varchar(100) NOT NULL, `config_group` varchar(50) NOT NULL, `config_group_order` int(11) NOT NULL, `config_sub_group` varchar(50) NOT NULL, `config_sub_group_order` int(11) NOT NULL, `config_hidden` enum('0','1') NOT NULL DEFAULT '0', `config_disabled` enum('0','1') NOT NULL DEFAULT '0', PRIMARY KEY (`config_id`)) ENGINE=InnoDB AUTO_INCREMENT=720 DEFAULT CHARSET=latin1; +LOCK TABLES `config` WRITE; +INSERT INTO `config` VALUES (441,'alert.macros.rule.now','NOW()','NOW()','Macro currenttime','alerting',0,'macros',0,'1','0'),(442,'alert.macros.rule.past_5m','DATE_SUB(NOW(),INTERVAL 5 MINUTE)','DATE_SUB(NOW(),INTERVAL 5 MINUTE)','Macro past 5 minutes','alerting',0,'macros',0,'1','0'),(443,'alert.macros.rule.past_10m','DATE_SUB(NOW(),INTERVAL 10 MINUTE)','DATE_SUB(NOW(),INTERVAL 10 MINUTE)','Macro past 10 minutes','alerting',0,'macros',0,'1','0'),(444,'alert.macros.rule.past_15m','DATE_SUB(NOW(),INTERVAL 15 MINUTE)','DATE_SUB(NOW(),INTERVAL 15 MINUTE)','Macro past 15 minutes','alerting',0,'macros',0,'1','0'),(445,'alert.macros.rule.past_30m','DATE_SUB(NOW(),INTERVAL 30 MINUTE)','DATE_SUB(NOW(),INTERVAL 30 MINUTE)','Macro past 30 minutes','alerting',0,'macros',0,'1','0'),(446,'alert.macros.rule.device','(%devices.disabled = 0 && %devices.ignore = 0)','(%devices.disabled = 0 && %devices.ignore = 0)','Devices that aren\'t disabled or ignored','alerting',0,'macros',0,'1','0'),(447,'alert.macros.rule.device_up','(%devices.status = 1 && %macros.device)','(%devices.status = 1 && %macros.device)','Devices that are up','alerting',0,'macros',0,'1','0'),(448,'alert.macros.rule.device_down','(%devices.status = 0 && %macros.device)','(%devices.status = 0 && %macros.device)','Devices that are down','alerting',0,'macros',0,'1','0'),(449,'alert.macros.rule.port','(%ports.deleted = 0 && %ports.ignore = 0 && %ports.disabled = 0)','(%ports.deleted = 0 && %ports.ignore = 0 && %ports.disabled = 0)','Ports that aren\'t disabled, ignored or delete','alerting',0,'macros',0,'1','0'),(450,'alert.macros.rule.port_up','(%ports.ifOperStatus = \"up\" && %ports.ifAdminStatus = \"up\" && %macros.port)','(%ports.ifOperStatus = \"up\" && %ports.ifAdminStatus = \"up\" && %macros.port)','Ports that are up','alerting',0,'macros',0,'1','0'),(451,'alert.admins','true','true','Alert administrators','alerting',0,'general',0,'0','0'),(452,'alert.default_only','true','true','Only alert default mail contact','alerting',0,'general',0,'0','0'),(453,'alert.default_mail','','','The default mail contact','alerting',0,'general',0,'0','0'),(454,'alert.transports.pagerduty','','','Pagerduty transport - put your API key here','alerting',0,'transports',0,'0','0'),(455,'alert.pagerduty.account','','','Pagerduty account name','alerting',0,'transports',0,'0','0'),(456,'alert.pagerduty.service','','','Pagerduty service name','alerting',0,'transports',0,'0','0'),(457,'alert.tolerance_window','5','5','Tolerance window in seconds','alerting',0,'general',0,'0','0'),(458,'email_backend','mail','mail','The backend to use for sending email, can be mail, sendmail or smtp','alerting',0,'general',0,'0','0'),(459,'alert.macros.rule.past_60m','DATE_SUB(NOW(),INTERVAL 60 MINUTE)','DATE_SUB(NOW(),INTERVAL 60 MINUTE)','Macro past 60 minutes','alerting',0,'macros',0,'1','0'),(460,'alert.macros.rule.port_usage_perc','((%ports.ifInOctets_rate*8)/%ports.ifSpeed)*100','((%ports.ifInOctets_rate*8)/%ports.ifSpeed)*100','Ports using more than X perc','alerting',0,'macros',0,'1','0'),(461,'alert.transports.dummy','false','false','Dummy transport','alerting',0,'transports',0,'0','0'),(462,'alert.transports.mail','true','true','Mail alerting transport','alerting',0,'transports',0,'0','0'),(463,'alert.transports.irc','FALSE','false','IRC alerting transport','alerting',0,'transports',0,'0','0'),(464,'alert.globals','true','TRUE','Alert read only administrators','alerting',0,'general',0,'0','0'),(465,'email_from','NULL','NULL','Email address used for sending emails (from)','alerting',0,'general',0,'0','0'),(466,'email_user','LibreNMS','LibreNMS','Name used as part of the from address','alerting',0,'general',0,'0','0'),(467,'email_sendmail_path','/usr/sbin/sendmail','/usr/sbin/sendmail','Location of sendmail if using this option','alerting',0,'general',0,'0','0'),(468,'email_smtp_host','localhost','localhost','SMTP Host for sending email if using this option','alerting',0,'general',0,'0','0'),(469,'email_smtp_port','25','25','SMTP port setting','alerting',0,'general',0,'0','0'),(470,'email_smtp_timeout','10','10','SMTP timeout setting','alerting',0,'general',0,'0','0'),(471,'email_smtp_secure','','','Enable / disable encryption (use tls or ssl)','alerting',0,'general',0,'0','0'),(472,'email_smtp_auth','false','FALSE','Enable / disable smtp authentication','alerting',0,'general',0,'0','0'),(473,'email_smtp_username','NULL','NULL','SMTP Auth username','alerting',0,'general',0,'0','0'),(474,'email_smtp_password','NULL','NULL','SMTP Auth password','alerting',0,'general',0,'0','0'),(475,'alert.macros.rule.port_down','(%ports.ifOperStatus = \"down\" && %ports.ifAdminStatus != \"down\" && %macros.port)','(%ports.ifOperStatus = \"down\" && %ports.ifAdminStatus != \"down\" && %macros.port)','Ports that are down','alerting',0,'macros',0,'1','0'),(486,'alert.syscontact','true','TRUE','Issue alerts to sysContact','alerting',0,'general',0,'0','0'),(487,'alert.fixed-contacts','true','TRUE','If TRUE any changes to sysContact or users emails will not be honoured whilst alert is active','alerting',0,'general',0,'0','0'),(488,'alert.transports.nagios','','','Nagios compatible via FIFO','alerting',0,'transports',0,'0','0'); +UNLOCK TABLES; diff --git a/syslog.php b/syslog.php index 5a7313795..a8c02ecd4 100755 --- a/syslog.php +++ b/syslog.php @@ -16,10 +16,10 @@ include("includes/defaults.inc.php"); include("config.php"); include("includes/definitions.inc.php"); -include("includes/syslog.php"); -include("includes/dbFacile.php"); -include("includes/common.php"); -include("includes/functions.php"); +include_once("includes/syslog.php"); +include_once("includes/dbFacile.php"); +include_once("includes/common.php"); +include_once("includes/functions.php"); $i = "1";