# Class: nginx::param
#
# This module manages NGINX paramaters
#
# Parameters:
#
# There are no default parameters for this class.
#
# Actions:
#
# Requires:
#
# Sample Usage:
#
# This class file is not called directly
class nginx::params {

  $nx_temp_dir                       = '/tmp'
  $nx_run_dir                        = '/var/nginx'

  $nx_conf_template                  = 'nginx/conf.d/nginx.conf.erb'
  $nx_proxy_conf_template            = 'nginx/conf.d/proxy.conf.erb'
  $nx_confd_purge                    = false
  $nx_vhost_purge                    = false
  $nx_worker_processes               = 1
  $nx_worker_connections             = 1024
  $nx_worker_rlimit_nofile           = 1024
  $nx_types_hash_max_size            = 1024
  $nx_types_hash_bucket_size         = 512
  $nx_names_hash_bucket_size         = 64
  $nx_names_hash_max_size            = 512
  $nx_multi_accept                   = off
  # One of [kqueue|rtsig|epoll|/dev/poll|select|poll|eventport]
  # or false to use OS default
  $nx_events_use                     = false
  $nx_sendfile                       = on
  $nx_keepalive_timeout              = 65
  $nx_http_tcp_nodelay               = on
  $nx_http_tcp_nopush                = off
  $nx_gzip                           = on
  $nx_server_tokens                  = on
  $nx_spdy                           = off
  $nx_ssl_stapling                   = off

  $nx_proxy_redirect                 = off
  $nx_proxy_set_header               = [
    'Host $host',
    'X-Real-IP $remote_addr',
    'X-Forwarded-For $proxy_add_x_forwarded_for',
  ]
  $nx_proxy_cache_path               = false
  $nx_proxy_cache_levels             = 1
  $nx_proxy_cache_keys_zone          = 'd2:100m'
  $nx_proxy_cache_max_size           = '500m'
  $nx_proxy_cache_inactive           = '20m'

  $nx_fastcgi_cache_path             = false
  $nx_fastcgi_cache_levels           = 1
  $nx_fastcgi_cache_keys_zone        = 'd3:100m'
  $nx_fastcgi_cache_max_size         = '500m'
  $nx_fastcgi_cache_inactive         = '20m'
  $nx_fastcgi_cache_key              = false
  $nx_fastcgi_cache_use_stale        = false

  $nx_client_body_temp_path          = "${nx_run_dir}/client_body_temp"
  $nx_client_body_buffer_size        = '128k'
  $nx_client_max_body_size           = '10m'
  $nx_proxy_temp_path                = "${nx_run_dir}/proxy_temp"
  $nx_proxy_connect_timeout          = '90'
  $nx_proxy_send_timeout             = '90'
  $nx_proxy_read_timeout             = '90'
  $nx_proxy_buffers                  = '32 4k'
  $nx_proxy_http_version             = '1.0'
  $nx_proxy_buffer_size              = '8k'
  $nx_proxy_headers_hash_bucket_size = '64'

  $nx_logdir = '/var/log/nginx'

  $nx_pid = $::kernel ? {
    /(?i-mx:linux)/   => $::osfamily ? {
        # archlinux has hardcoded pid in service file to /run/nginx.pid, setting
        # it will prevent nginx from starting
        /(?i-mx:archlinux)/ => false,
        default             => '/var/run/nginx.pid',
    },
    /(?i-mx:sunos)/   => '/var/run/nginx.pid',
    /(?i-mx:freebsd)/ => '/var/run/nginx.pid',
  }

  $nx_conf_dir = $::kernelversion ? {
    /(?i-mx:joyent)/    => '/opt/local/etc/nginx',
    default             => $::kernel ? {
      /(?i-mx:freebsd)/ => '/usr/local/etc/nginx',
      default           => '/etc/nginx',
    }
  }

  if $::osfamily {
    $solaris_nx_daemon_user = $::kernelversion ? {
      /(?i-mx:joyent)/ => 'www',
      default => 'webservd',
    }
    $nx_daemon_user = $::osfamily ? {
      /(?i-mx:archlinux)/                => 'http',
      /(?i-mx:redhat|suse|gentoo|linux)/ => 'nginx',
      /(?i-mx:debian)/                   => 'www-data',
      /(?i-mx:solaris)/                  => $solaris_nx_daemon_user,
      /(?i-mx:freebsd)/                  => 'www',
    }
  } else {
    warning('$::osfamily not defined. Support for $::operatingsystem is deprecated')
    warning("Please upgrade from facter ${::facterversion} to >= 1.7.2")
    $nx_daemon_user = $::operatingsystem ? {
      /(?i-mx:archlinux)/                                                                    => 'http',
      /(?i-mx:debian|ubuntu)/                                                                => 'www-data',
      /(?i-mx:fedora|rhel|redhat|centos|scientific|suse|opensuse|amazon|gentoo|oraclelinux)/ => 'nginx',
      /(?i-mx:solaris)/                                                                      => 'webservd',
      /(?i-mx:freebsd)/                                                                      => 'www',
    }
  }

  $root_group = $::operatingsystem ? {
    'FreeBSD' => 'wheel',
    default   => 'root',
  }

  # Nginx is default launched as root if not change this parameter
  $nx_super_user = true

  # Service restart after Nginx 0.7.53 could also be just
  # "/path/to/nginx/bin -s HUP" Some init scripts do a configtest, some don't.
  # If configtest_enable it's true then service restart will take
  # $nx_service_restart value, forcing configtest.

  $nx_configtest_enable = false
  $nx_service_restart = '/etc/init.d/nginx configtest && /etc/init.d/nginx restart'
  $nx_service_ensure = running

  $nx_mail = false

  $nx_http_cfg_append = false

  $nx_nginx_error_log = "${nx_logdir}/error.log"
  $nx_http_access_log = "${nx_logdir}/access.log"

  # package name depends on distribution, e.g. for Debian nginx-full | nginx-light
  $package_name   = 'nginx'
  $package_ensure = 'present'
  $package_source = 'nginx'
  $manage_repo    = true

  # Specific owner for sites-available directory
  $sites_available_owner = 'root'
  $sites_available_group = $root_group
  $sites_available_mode  = '0644'

  # Owner for all other files
  $global_owner = 'root'
  $global_group = $root_group
  $global_mode  = '0644'
}
