diff --git a/includes/html/forms/create-service.inc.php b/includes/html/forms/create-service.inc.php index ad97f0113b..1712966f91 100644 --- a/includes/html/forms/create-service.inc.php +++ b/includes/html/forms/create-service.inc.php @@ -24,10 +24,11 @@ $param = $vars['param']; $ignore = isset($vars['ignore']) ? 1 : 0; $disabled = isset($vars['disabled']) ? 1 : 0; $device_id = $vars['device_id']; +$service_template_id = $vars['service_template_id']; if (is_numeric($service_id) && $service_id > 0) { // Need to edit. - $update = array('service_desc' => $desc, 'service_ip' => $ip, 'service_param' => $param, 'service_ignore' => $ignore, 'service_disabled' => $disabled); + $update = array('service_desc' => $desc, 'service_ip' => $ip, 'service_param' => $param, 'service_ignore' => $ignore, 'service_disabled' => $disabled, 'service_template_id' => $service_template_id); if (is_numeric(edit_service($update, $service_id))) { $status = array('status' =>0, 'message' => 'Modified Service: '.$service_id.': '.$type.''); } else { @@ -35,7 +36,7 @@ if (is_numeric($service_id) && $service_id > 0) { } } else { // Need to add. - $service_id = add_service($device_id, $type, $desc, $ip, $param, $ignore, $disabled); + $service_id = add_service($device_id, $type, $desc, $ip, $param, $ignore, $disabled, $service_template_id); if ($service_id == false) { $status = array('status' =>1, 'message' => 'ERROR: Failed to add Service: '.$type.''); } else { diff --git a/includes/html/forms/parse-service-template.inc.php b/includes/html/forms/parse-service-template.inc.php new file mode 100644 index 0000000000..41d2e89570 --- /dev/null +++ b/includes/html/forms/parse-service-template.inc.php @@ -0,0 +1,35 @@ + + * + * 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 (!Auth::user()->hasGlobalAdmin()) { + die('ERROR: You need to be admin'); +} + +$service__template_id = $vars['service_template_id']; + +if (is_numeric($service_template_id) && $service_template_id > 0) { + $service_template = service_template_get(null, $service_template_id); + + $output = array( + 'stype' => $service[0]['service_type'], + 'ip' => $service[0]['service_ip'], + 'desc' => $service[0]['service_desc'], + 'param' => $service[0]['service_param'], + 'ignore' => $service[0]['service_ignore'], + 'disabled' => $service[0]['service_disabled'] + ); + + header('Content-Type: application/json'); + echo _json_encode($output); +} diff --git a/includes/html/forms/parse-service.inc.php b/includes/html/forms/parse-service.inc.php index 32ce6608ca..42b01b3998 100644 --- a/includes/html/forms/parse-service.inc.php +++ b/includes/html/forms/parse-service.inc.php @@ -27,7 +27,8 @@ if (is_numeric($service_id) && $service_id > 0) { 'desc' => $service[0]['service_desc'], 'param' => $service[0]['service_param'], 'ignore' => $service[0]['service_ignore'], - 'disabled' => $service[0]['service_disabled'] + 'disabled' => $service[0]['service_disabled'], + 'service_template_id' => $service[0]['service_template_id'] ); header('Content-Type: application/json'); diff --git a/includes/services.inc.php b/includes/services.inc.php index 382d00acbc..be6fa8aca1 100644 --- a/includes/services.inc.php +++ b/includes/services.inc.php @@ -36,7 +36,7 @@ function get_service_status($device = null) return $service_count; } -function add_service($device, $type, $desc, $ip = '', $param = "", $ignore = 0, $disabled = 0) +function add_service($device, $type, $desc, $ip = '', $param = "", $ignore = 0, $disabled = 0, $service_template_id = "") { if (!is_array($device)) { @@ -47,13 +47,13 @@ function add_service($device, $type, $desc, $ip = '', $param = "", $ignore = 0, $ip = Device::pollerTarget($device['hostname']); } - $insert = array('device_id' => $device['device_id'], 'service_ip' => $ip, 'service_type' => $type, 'service_changed' => array('UNIX_TIMESTAMP(NOW())'), 'service_desc' => $desc, 'service_param' => $param, 'service_ignore' => $ignore, 'service_status' => 3, 'service_message' => 'Service not yet checked', 'service_ds' => '{}', 'service_disabled' => $disabled); + $insert = array('device_id' => $device['device_id'], 'service_ip' => $ip, 'service_type' => $type, 'service_changed' => array('UNIX_TIMESTAMP(NOW())'), 'service_desc' => $desc, 'service_param' => $param, 'service_ignore' => $ignore, 'service_status' => 3, 'service_message' => 'Service not yet checked', 'service_ds' => '{}', 'service_disabled' => $disabled, 'service_template_id' => $service_template_id); return dbInsert($insert, 'services'); } function service_get($device = null, $service = null) { - $sql_query = "SELECT `service_id`,`device_id`,`service_ip`,`service_type`,`service_desc`,`service_param`,`service_ignore`,`service_status`,`service_changed`,`service_message`,`service_disabled`,`service_ds` FROM `services` WHERE"; + $sql_query = "SELECT `service_id`,`device_id`,`service_ip`,`service_type`,`service_desc`,`service_param`,`service_ignore`,`service_status`,`service_changed`,`service_message`,`service_disabled`,`service_ds`,`service_template_id` FROM `services` WHERE"; $sql_param = array(); $add = 0; @@ -182,7 +182,7 @@ function delete_service_template($service_template = null) function discover_service_template($device_group, $service_template) { - if (! dbFetchCell('SELECT COUNT(service_id) FROM `services` WHERE `service_type`= ? AND `device_id` = ?', array($service_template['service_template_id'], $device_group['device_group_id']))) { + if (! dbFetchCell('SELECT COUNT(service_id) FROM `services` WHERE `service_template_id`= ? AND `device_group_id` = ?', array($service_template['service_template_id'], $device_group['device_group_id']))) { $service=service_template_get($device_group, $service_template); $device_ids = dbFetchColumn("SELECT `device_id` FROM `device_group_device` WHERE `device_group_id`=" . $_POST['device_group_id']); foreach ($device_ids as $device) { diff --git a/misc/db_schema.yaml b/misc/db_schema.yaml index f7626916f5..581649749b 100644 --- a/misc/db_schema.yaml +++ b/misc/db_schema.yaml @@ -1720,6 +1720,7 @@ services: - { Field: service_message, Type: text, 'Null': false, Extra: '' } - { Field: service_disabled, Type: tinyint, 'Null': false, Extra: '', Default: '0' } - { Field: service_ds, Type: text, 'Null': false, Extra: '' } + - { Field: service_template_id, Type: 'int unsigned', 'Null': false, Extra: ''} Indexes: PRIMARY: { Name: PRIMARY, Columns: [service_id], Unique: true, Type: BTREE } services_device_id_index: { Name: services_device_id_index, Columns: [device_id], Unique: false, Type: BTREE }