|
42 | 42 | # @param apache_listenport_ssl The port for the apache SSL vhost. |
43 | 43 | # @param zabbix_api_user Name of the user which the api should connect to. Default: Admin |
44 | 44 | # @param zabbix_api_pass Password of the user which connects to the api. Default: zabbix |
| 45 | +# @param zabbix_api_access Which host has access to the api. Default: no restriction |
45 | 46 | # @param database_host Database host name. |
46 | 47 | # @param database_name Database name. |
47 | 48 | # @param database_schema Schema name. used for ibm db2. |
|
114 | 115 | Variant[Array[Stdlib::Port], Stdlib::Port] $apache_listenport_ssl = $zabbix::params::apache_listenport_ssl, |
115 | 116 | $zabbix_api_user = $zabbix::params::server_api_user, |
116 | 117 | $zabbix_api_pass = $zabbix::params::server_api_pass, |
| 118 | + Optional[Array[Stdlib::Host,1]] $zabbix_api_access = $zabbix::params::server_api_access, |
117 | 119 | $database_host = $zabbix::params::server_database_host, |
118 | 120 | $database_name = $zabbix::params::server_database_name, |
119 | 121 | $database_schema = $zabbix::params::server_database_schema, |
|
391 | 393 | $apache_listen_port = $apache_listenport |
392 | 394 | } |
393 | 395 |
|
394 | | - # Apache >= 2.4 |
395 | | - $directory_allow = { 'require' => 'all granted', } |
396 | | - $directory_deny = { 'require' => 'all denied', } |
| 396 | + $location_api_access = $zabbix_api_access ? { |
| 397 | + undef => 'all granted', |
| 398 | + default => $zabbix_api_access.map |$host| { "host ${host}" }, |
| 399 | + } |
397 | 400 |
|
398 | 401 | apache::vhost { $zabbix_url: |
399 | 402 | docroot => '/usr/share/zabbix', |
|
402 | 405 | default_vhost => $default_vhost, |
403 | 406 | add_listen => true, |
404 | 407 | directories => [ |
405 | | - merge( |
406 | | - merge({ |
407 | | - path => '/usr/share/zabbix', |
408 | | - provider => 'directory', |
409 | | - }, $directory_allow), |
410 | | - $fcgi_filematch |
411 | | - ), |
412 | | - merge({ |
413 | | - path => '/usr/share/zabbix/conf', |
414 | | - provider => 'directory', |
415 | | - }, $directory_deny), |
416 | | - merge({ |
417 | | - path => '/usr/share/zabbix/api', |
418 | | - provider => 'directory', |
419 | | - }, $directory_deny), |
420 | | - merge({ |
421 | | - path => '/usr/share/zabbix/include', |
422 | | - provider => 'directory', |
423 | | - }, $directory_deny), |
424 | 408 | merge({ |
425 | | - path => '/usr/share/zabbix/include/classes', |
| 409 | + path => '/usr/share/zabbix', |
426 | 410 | provider => 'directory', |
427 | | - }, $directory_deny), |
| 411 | + require => 'all granted', |
| 412 | + }, $fcgi_filematch |
| 413 | + ), |
| 414 | + { |
| 415 | + path => '/usr/share/zabbix/conf', |
| 416 | + provider => 'directory', |
| 417 | + require => 'all denied', |
| 418 | + }, |
| 419 | + { |
| 420 | + path => '/usr/share/zabbix/api', |
| 421 | + provider => 'directory', |
| 422 | + require => 'all denied', |
| 423 | + }, |
| 424 | + { |
| 425 | + path => '/usr/share/zabbix/include', |
| 426 | + provider => 'directory', |
| 427 | + require => 'all denied', |
| 428 | + }, |
| 429 | + { |
| 430 | + path => '/usr/share/zabbix/include/classes', |
| 431 | + provider => 'directory', |
| 432 | + require => 'all denied', |
| 433 | + }, |
| 434 | + { |
| 435 | + path => '/api_jsonrpc.php', |
| 436 | + provider => 'location', |
| 437 | + require => $location_api_access, |
| 438 | + }, |
428 | 439 | ], |
429 | 440 | custom_fragment => $apache_vhost_custom_fragment, |
430 | 441 | rewrites => [ |
|
0 commit comments