diff --git a/includes/html/forms/discover-service-template.inc.php b/includes/html/forms/discover-service-template.inc.php new file mode 100644 index 0000000000..edc24e50ca --- /dev/null +++ b/includes/html/forms/discover-service-template.inc.php @@ -0,0 +1,30 @@ + + * + * 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()) { + $status = array('status' =>1, 'message' => 'ERROR: You need to be admin to apply service templates'); +} else { + if (!is_numeric($vars['service_template_id'])) { + $status = array('status' =>1, 'message' => 'No Service Template has been selected'); + } elseif (!is_numeric($vars['device_group_id'])) { + $status = array('status' =>1, 'message' => 'No Device Group has been selected'); + } else { + if (discover_service_template($vars['device_group_id'],$vars['service_template_id'])) { + $status = array('status' =>0, 'message' => 'Device Group: '.$vars['device_group_id'].',Service Template: '.$vars['service_template_id'].', has been discovered.'); + } else { + $status = array('status' =>1, 'message' => 'Device Group: '.$vars['device_group_id'].',Service Template: '.$vars['service_template_id'].', has been discovered.'); + } + } +} +header('Content-Type: application/json'); +echo _json_encode($status); diff --git a/includes/html/pages/services-templates.inc.php b/includes/html/pages/services-templates.inc.php index 2df63212a8..0c9730f35b 100644 --- a/includes/html/pages/services-templates.inc.php +++ b/includes/html/pages/services-templates.inc.php @@ -131,6 +131,7 @@ require_once 'includes/html/modal/delete_service_template.inc.php'; if (Auth::user()->hasGlobalAdmin()) { echo " + "; diff --git a/includes/services.inc.php b/includes/services.inc.php index d1d1cd1212..43111dc503 100644 --- a/includes/services.inc.php +++ b/includes/services.inc.php @@ -105,6 +105,16 @@ function delete_service($service = null) return dbDelete('services', '`service_id` = ?', array($service)); } +function discover_service($device, $service) +{ + if (! dbFetchCell('SELECT COUNT(service_id) FROM `services` WHERE `service_type`= ? AND `device_id` = ?', array($service, $device['device_id']))) { + add_service($device, $service, "(Auto discovered) $service"); + log_event('Autodiscovered service: type ' . mres($service), $device, 'service', 2); + echo '+'; + } + echo "$service "; +} + function add_service_template($device_group, $type, $desc, $param = "", $ignore = 0, $disabled = 0) { @@ -170,13 +180,18 @@ function delete_service_template($service_template = null) return dbDelete('services_template', '`service_template_id` = ?', array($service_template)); } -function discover_service($device, $service) +function discover_service_template($device_group_id, $service_template_id) { - if (! dbFetchCell('SELECT COUNT(service_id) FROM `services` WHERE `service_type`= ? AND `device_id` = ?', array($service, $device['device_id']))) { - add_service($device, $service, "(Auto discovered) $service"); + if (! dbFetchCell('SELECT COUNT(service_template_id) FROM `services_template` WHERE `service_template_type`= ? AND `device_group_id` = ?', array($service_template_id, $device_group['device_group_id']))) { + $service=service_template_get($device_group_id, $service_template_id); + $device_ids = dbFetchColumn("SELECT `device_id` FROM `device_group_device` WHERE `device_group_id`=" . $_POST['device_group_id']); + foreach ($device_ids as $device) { + add_service($device, $service); + } log_event('Autodiscovered service: type ' . mres($service), $device, 'service', 2); echo '+'; } + echo "$service "; }