class Inspec::Resources::IisAppPool

Public Class Methods

new(pool_name) click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 22
def initialize(pool_name)
  @pool_name = pool_name
  @pool_path = "IIS:\\AppPools\\#{@pool_name}"
end

Public Instance Methods

enable32bit() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 35
def enable32bit
  iis_app_pool[:e32b]
end
exists?() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 75
def exists?
  !!iis_app_pool[:pool_name]
end
max_processes() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 43
def max_processes
  iis_app_pool[:processes]
end
pipeline_mode() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 39
def pipeline_mode
  iis_app_pool[:mode]
end
pool_name() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 27
def pool_name
  iis_app_pool[:pool_name]
end
runtime_version() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 31
def runtime_version
  iis_app_pool[:version]
end
timeout() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 47
def timeout
  iis_app_pool[:timeout]
end
timeout_days() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 51
def timeout_days
  iis_app_pool[:timeout_days]
end
timeout_hours() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 55
def timeout_hours
  iis_app_pool[:timeout_hours]
end
timeout_minutes() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 59
def timeout_minutes
  iis_app_pool[:timeout_minutes]
end
timeout_seconds() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 63
def timeout_seconds
  iis_app_pool[:timeout_seconds]
end
to_s() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 79
def to_s
  "IIS App Pool '#{@pool_name}'"
end
user_identity_type() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 67
def user_identity_type
  iis_app_pool[:user_identity_type]
end
username() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 71
def username
  iis_app_pool[:username]
end

Private Instance Methods

iis_app_pool() click to toggle source
# File lib/inspec/resources/iis_app_pool.rb, line 85
    def iis_app_pool
      @iis_app_pool ||= begin
        # We use `-Compress` here to avoid a bug in PowerShell
        # It does not affect validity of the output, only the representation
        # See: https://github.com/inspec/inspec/pull/3842
        script = <<~EOH
          Import-Module WebAdministration
          If (Test-Path '#{@pool_path}') {
            Get-Item '#{@pool_path}' | Select-Object * | ConvertTo-Json -Compress
          } Else {
            Write-Host '{}'
          }
        EOH
        cmd = inspec.powershell(script)

        begin
          pool = JSON.parse(cmd.stdout)
        rescue JSON::ParserError => _e
          raise Inspec::Exceptions::ResourceFailed, "Unable to parse app pool JSON"
        end

        process_model = pool.fetch("processModel", {})
        idle_timeout = process_model.fetch("idleTimeout", {})

        # map our values to a hash table
        @cache = {
          pool_name: pool["name"],
          version: pool["managedRuntimeVersion"],
          e32b: pool["enable32BitAppOnWin64"],
          mode: pool["managedPipelineMode"],
          processes: process_model["maxProcesses"],
          timeout: "#{idle_timeout["Hours"]}:#{idle_timeout["Minutes"]}:#{idle_timeout["Seconds"]}",
          timeout_days: idle_timeout["Days"],
          timeout_hours: idle_timeout["Hours"],
          timeout_minutes: idle_timeout["Minutes"],
          timeout_seconds: idle_timeout["Seconds"],
          user_identity_type: process_model["identityType"],
          username: process_model["userName"],
        }
      end
    end