88 lines
3.2 KiB
PHP
88 lines
3.2 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Observium
|
|
*
|
|
* This file is part of Observium.
|
|
*
|
|
* @package observium
|
|
* @subpackage poller
|
|
* @copyright (C) Adam Armstrong
|
|
*
|
|
*/
|
|
|
|
|
|
//Windows Services
|
|
print_cli_data("Collecting", "Windows Services ", 3);
|
|
|
|
$table_rows = [];
|
|
$table_headers = ['%WService Name%n', '%WService Display Name%n', '%WService State%n', '%WService Start Mode%n'];
|
|
|
|
$winservices_db = dbFetchRows('SELECT * FROM `winservices` WHERE `device_id` = ?', [$device['device_id']]);
|
|
foreach ($winservices_db as $service) {
|
|
$winservices_db[$service['name']] = $service;
|
|
$service_exist[$service['name']] = $service['winsvc_id'];
|
|
}
|
|
|
|
print_debug_vars($wmi['winservices']);
|
|
|
|
foreach ($wmi['winservices'] as $service) {
|
|
if ((!empty($service['Name'])) && ($service['Name'] != "Name")) {
|
|
if (OBS_DEBUG) {
|
|
print_r($service);
|
|
}
|
|
|
|
$name = $service['Name'];
|
|
|
|
if (is_array($winservices_db[$name])) {
|
|
|
|
$winsvc_id = $winservices_db[$name]['winsvc_id'];
|
|
|
|
//echo("Service Name exists: $name\n");
|
|
dbUpdate([
|
|
'displayname' => $service['DisplayName'],
|
|
'state' => $service['State'],
|
|
'startmode' => $service['StartMode'],
|
|
], 'winservices', '`device_id` = ? AND `name` = ?',
|
|
[$device['device_id'], $name]
|
|
);
|
|
|
|
unset($service_exist[$name]);
|
|
} else {
|
|
//echo("New Service Name: $name\n");
|
|
$winsvc_id = dbInsert(['device_id' => $device['device_id'],
|
|
'name' => $service['Name'],
|
|
'displayname' => $service['DisplayName'],
|
|
'state' => $service['State'],
|
|
'startmode' => $service['StartMode'],
|
|
], 'winservices'
|
|
);
|
|
}
|
|
|
|
check_entity('winservice', ['winsvc_id' => $winsvc_id, 'device_id' => $device['device_id']], ['state' => $service['State'], 'startmode' => $service['StartMode']]);
|
|
|
|
$table_row = [];
|
|
$table_row[] = $service['Name'];
|
|
$table_row[] = $service['DisplayName'];
|
|
$table_row[] = $service['State'];
|
|
$table_row[] = $service['StartMode'];
|
|
$table_rows[] = $table_row;
|
|
unset($table_row);
|
|
}
|
|
}
|
|
|
|
if (OBS_DEBUG) {
|
|
print_cli_table($table_rows, $table_headers);
|
|
}
|
|
|
|
print_debug_vars($service_exist);
|
|
|
|
foreach ($service_exist as $name => $winsvc_id) {
|
|
//echo("will delete service:$name with id:$winsvc_id");
|
|
dbDelete('winservices', '`winsvc_id` = ?', [$winsvc_id]);
|
|
}
|
|
|
|
unset($table_rows, $table_headers, $winservices_db, $service, $service_exist, $winservice, $winsvc_id, $name, $wmi);
|
|
|
|
// EOF
|