You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
258 lines
6.9 KiB
258 lines
6.9 KiB
<?php
|
|
/*
|
|
** Zabbix
|
|
** Copyright (C) 2001-2023 Zabbix SIA
|
|
**
|
|
** 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 2 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, write to the Free Software
|
|
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
**/
|
|
|
|
|
|
class Proxies {
|
|
|
|
/**
|
|
* Names of enabled hosts, monitored by proxies.
|
|
*
|
|
* @var array
|
|
*/
|
|
private static $enabled_hosts = [
|
|
'enabled_host1',
|
|
'enabled_host2',
|
|
'enabled_host3',
|
|
'enabled_host4',
|
|
'enabled_host5',
|
|
'enabled_host6',
|
|
'enabled_host7',
|
|
'enabled_host8'
|
|
];
|
|
|
|
/**
|
|
* Names of disabled hosts, monitored by proxies.
|
|
*
|
|
* @var array
|
|
*/
|
|
private static $disabled_hosts = [
|
|
'disabled_host1',
|
|
'disabled_host2',
|
|
'disabled_host3',
|
|
'disabled_host4',
|
|
'disabled_host5',
|
|
'disabled_host6',
|
|
'disabled_host7',
|
|
'disabled_host8'
|
|
];
|
|
|
|
/**
|
|
* Names of active proxies for proxy tests.
|
|
*
|
|
* @var array
|
|
*/
|
|
private static $active_proxies = [
|
|
'active_proxy1',
|
|
'active_proxy2',
|
|
'active_proxy3',
|
|
'active_proxy4',
|
|
'active_proxy5',
|
|
'active_proxy6',
|
|
'active_proxy7',
|
|
'active_current',
|
|
'active_unknown',
|
|
'Active proxy 1',
|
|
'Active proxy 2',
|
|
'Active proxy 3',
|
|
'Active proxy to delete',
|
|
'Proxy_1 for filter',
|
|
'Proxy_2 for filter'
|
|
];
|
|
|
|
/**
|
|
* Names of passive proxies for proxy tests.
|
|
*
|
|
* @var array
|
|
*/
|
|
private static $passive_proxies = [
|
|
'passive_proxy1',
|
|
'passive_proxy2',
|
|
'passive_proxy3',
|
|
'passive_proxy4',
|
|
'passive_proxy5',
|
|
'passive_proxy6',
|
|
'passive_proxy7',
|
|
'passive_outdated',
|
|
'passive_unsupported',
|
|
'Passive proxy 1',
|
|
'Passive proxy 2',
|
|
'Passive proxy 3',
|
|
'Passive proxy to delete'
|
|
];
|
|
|
|
/**
|
|
* Preparing proxies and hosts.
|
|
*/
|
|
public static function load() {
|
|
// Create host group.
|
|
$hostgroups = CDataHelper::call('hostgroup.create', [['name' => 'HG_for_proxies']]);
|
|
$hostgroupid = $hostgroups['groupids'][0];
|
|
|
|
// Create enabled hosts.
|
|
$enabled_hosts_data = [];
|
|
foreach (self::$enabled_hosts as $host) {
|
|
$enabled_hosts_data[] = [
|
|
'host' => $host,
|
|
'groups' => [['groupid' => $hostgroupid]],
|
|
'status' => 0
|
|
];
|
|
}
|
|
|
|
$enabled_hosts = CDataHelper::call('host.create', $enabled_hosts_data);
|
|
$enabled_hostids = CDataHelper::getIds('host');
|
|
|
|
// Create hosts for filtering scenario.
|
|
CDataHelper::call('host.create', [
|
|
['host' => 'Host_1 with proxy', 'groups' => [['groupid' => 4]]],
|
|
['host' => 'Host_2 with proxy', 'groups' => [['groupid' => 4]]]
|
|
]);
|
|
$filter_hostids = CDataHelper::getIds('host');
|
|
|
|
// Disabled hosts data.
|
|
$disabled_hosts_data = [];
|
|
foreach (self::$disabled_hosts as $host) {
|
|
$disabled_hosts_data[] = [
|
|
'host' => $host,
|
|
'groups' => [['groupid' => $hostgroupid]],
|
|
'status' => HOST_STATUS_NOT_MONITORED
|
|
];
|
|
}
|
|
$disabled_hosts = CDataHelper::call('host.create', $disabled_hosts_data);
|
|
$disabled_hostids = CDataHelper::getIds('host');
|
|
|
|
// Create active proxies.
|
|
$active_proxy_data = [];
|
|
|
|
foreach (self::$active_proxies as $proxy) {
|
|
$active_proxy_data[] = [
|
|
'name' => $proxy,
|
|
'operating_mode' => PROXY_OPERATING_MODE_ACTIVE
|
|
];
|
|
}
|
|
|
|
$active_proxies = CDataHelper::call('proxy.create', $active_proxy_data);
|
|
$active_proxyids = CDataHelper::getIds('name');
|
|
|
|
// Create passive proxies.
|
|
$passive_proxy_data = [];
|
|
|
|
foreach (self::$passive_proxies as $proxy) {
|
|
$passive_proxy_data[] = [
|
|
'name' => $proxy,
|
|
'operating_mode' => PROXY_OPERATING_MODE_PASSIVE,
|
|
'address' => '127.0.0.1',
|
|
'port' => '10051'
|
|
];
|
|
}
|
|
|
|
$passive_proxies = CDataHelper::call('proxy.create', $passive_proxy_data);
|
|
$passive_proxyids = CDataHelper::getIds('name');
|
|
|
|
// Add hosts to proxies.
|
|
CDataHelper::call('proxy.update', [
|
|
[
|
|
'proxyid' => $active_proxyids['active_proxy1'],
|
|
'hosts' => [
|
|
['hostid' => $enabled_hostids['enabled_host1']]
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $passive_proxyids['passive_proxy1'],
|
|
'hosts' => [
|
|
['hostid' => $disabled_hostids['disabled_host1']]
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $active_proxyids['active_proxy2'],
|
|
'hosts' => [
|
|
['hostid' => $enabled_hostids['enabled_host2']],
|
|
['hostid' => $enabled_hostids['enabled_host3']]
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $passive_proxyids['passive_proxy2'],
|
|
'hosts' => [
|
|
['hostid' => $enabled_hostids['enabled_host4']],
|
|
['hostid' => $enabled_hostids['enabled_host5']]
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $active_proxyids['active_proxy3'],
|
|
'hosts' => [
|
|
['hostid' => $disabled_hostids['disabled_host2']],
|
|
['hostid' => $disabled_hostids['disabled_host3']]
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $passive_proxyids['passive_proxy3'],
|
|
'hosts' => [
|
|
['hostid' => $disabled_hostids['disabled_host4']],
|
|
['hostid' => $disabled_hostids['disabled_host5']]
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $active_proxyids['active_proxy4'],
|
|
'hosts' => [
|
|
['hostid' => $enabled_hostids['enabled_host6']],
|
|
['hostid' => $disabled_hostids['disabled_host6']]
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $passive_proxyids['passive_proxy4'],
|
|
'hosts' => [
|
|
['hostid' => $enabled_hostids['enabled_host7']],
|
|
['hostid' => $enabled_hostids['enabled_host8']],
|
|
['hostid' => $disabled_hostids['disabled_host7']],
|
|
['hostid' => $disabled_hostids['disabled_host8']]
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $active_proxyids['Active proxy 1'],
|
|
'hosts' => [
|
|
['hostid' => 99136] // Test item host.
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $active_proxyids['Proxy_1 for filter'],
|
|
'hosts' => [
|
|
['hostid' => $filter_hostids['Host_1 with proxy']]
|
|
]
|
|
],
|
|
[
|
|
'proxyid' => $active_proxyids['Proxy_2 for filter'],
|
|
'hosts' => [
|
|
['hostid' => $filter_hostids['Host_2 with proxy']]
|
|
]
|
|
]
|
|
]);
|
|
|
|
/**
|
|
* Add proxies versions.
|
|
* Supported version "60400" is hardcoded one time, so that no need to change it,
|
|
* even if newer versions of Zabbix are released.
|
|
*/
|
|
DBexecute('UPDATE proxy_rtdata SET version=60400, compatibility=1 WHERE proxyid='.zbx_dbstr($active_proxyids['active_current']));
|
|
DBexecute('UPDATE proxy_rtdata SET version=60200, compatibility=2 WHERE proxyid='.zbx_dbstr($passive_proxyids['passive_outdated']));
|
|
DBexecute('UPDATE proxy_rtdata SET version=0, compatibility=0 WHERE proxyid='.zbx_dbstr($active_proxyids['active_unknown']));
|
|
DBexecute('UPDATE proxy_rtdata SET version=50401, compatibility=3 WHERE proxyid='.zbx_dbstr($passive_proxyids['passive_unsupported']));
|
|
DBexecute('UPDATE config SET server_status='.zbx_dbstr('{"version": "6.4.0alpha1"}'));
|
|
}
|
|
}
|