Downloads:

21,172

Downloads of v 2.0.0-alpha9:

402

Last Update:

30 Jul 2015

Package Maintainer(s):

Software Author(s):

  • SEEK Ltd.

Tags:

admin DSC

SEEK DSC MessageQueue

This is a prerelease version of SEEK DSC MessageQueue.

2.0.0-alpha9 | Updated: 30 Jul 2015

Downloads:

21,172

Downloads of v 2.0.0-alpha9:

402

Software Author(s):

  • SEEK Ltd.

Tags:

admin DSC

SEEK DSC MessageQueue 2.0.0-alpha9

This is a prerelease version of SEEK DSC MessageQueue.

All Checks are Unknown

2 Test of Unknown Status


Validation Testing Unknown


Verification Testing Unknown

To install SEEK DSC MessageQueue, run the following command from the command line or from PowerShell:

>

To upgrade SEEK DSC MessageQueue, run the following command from the command line or from PowerShell:

>

To uninstall SEEK DSC MessageQueue, run the following command from the command line or from PowerShell:

>

NOTE: This applies to both open source and commercial editions of Chocolatey.

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://chocolatey.org/api/v2. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Enter your internal repository url

(this should look similar to https://chocolatey.org/api/v2)

4. Choose your deployment method:


choco upgrade seek-dsc-messagequeue -y --source="'STEP 3 URL'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:


choco upgrade seek-dsc-messagequeue -y --source="'STEP 3 URL'" 
$exitCode = $LASTEXITCODE

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0
}

Exit $exitCode

- name: Ensure seek-dsc-messagequeue installed
  win_chocolatey:
    name: seek-dsc-messagequeue
    state: present
    version: 2.0.0-alpha9
    source: STEP 3 URL

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.

Coming early 2020! Central Managment Reporting available now! More information...


chocolatey_package 'seek-dsc-messagequeue' do
  action    :install
  version  '2.0.0-alpha9'
  source   'STEP 3 URL'
end

See docs at https://docs.chef.io/resource_chocolatey_package.html.


Chocolatey::Ensure-Package
(
    Name: seek-dsc-messagequeue,
    Version: 2.0.0-alpha9,
    Source: STEP 3 URL
);

Requires Otter Chocolatey Extension. See docs at https://inedo.com/den/otter/chocolatey.


cChocoPackageInstaller seek-dsc-messagequeue
{
   Name     = 'seek-dsc-messagequeue'
   Ensure   = 'Present'
   Version  = '2.0.0-alpha9'
   Source   = 'STEP 3 URL'
}

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.


package { 'seek-dsc-messagequeue':
  provider => 'chocolatey',
  ensure   => '2.0.0-alpha9',
  source   => 'STEP 3 URL',
}

Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.


salt '*' chocolatey.install seek-dsc-messagequeue version="2.0.0-alpha9" source="STEP 3 URL"

See docs at https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.chocolatey.html.

5. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

This package was approved as a trusted package on 30 Jul 2015.

Description

Custom DSC Resources for message queue administration


lib\cMessageQueue\cMessageQueue.psd1
 
lib\cMessageQueue\DSCResources\SEEK_cPrivateMsmqQueue\SEEK_cPrivateMsmqQueue.psm1
Add-Type -AssemblyName "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

function Get-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name
    )

    if(!(Test-QueueExists($Name)))
    {
        return @{Name = $Name; Ensure = "Absent"}
    }

    return Get-QueueDetails($Name)
}


function Set-TargetResource
{
    [CmdletBinding(SupportsShouldProcess=$true)]
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name,

        [ValidateSet("Present","Absent")]
        [System.String]
        $Ensure  = "Present",

        [ValidateSet("true", "false")]
        [System.String]
        $Transactional = "true",

        [ValidateSet("true","false")]
        [System.String]
        $UseJournalQueue = "false",

        [Parameter(HelpMessage="Maximum Journal Size in kilobytes")]
        [ValidateScript({[bool]($_ -as [int] -is [int])})]
        [System.String]
        $MaximumJournalSize = "1024",

        [System.String]
        $Label = "private$\${Name}"
    )

    if($Ensure -eq "Absent")
    {
        if ($PsCmdlet.ShouldProcess($Name, 'Removing') )
        {
          Remove-Queue($Name)
        }
    }
    else
    {
        if(Test-QueueExists($Name))
        {
            if ($PsCmdlet.ShouldProcess($Name, 'Removing existing') )
            {
                Remove-Queue($Name)
            }
        }

        if ($PsCmdlet.ShouldProcess($Name, 'Creating New Queue'))
        {
            New-Queue -Name $Name `
                -Transactional ([System.Boolean]::Parse($Transactional)) `
                -UseJournalQueue ([System.Boolean]::Parse($UseJournalQueue)) `
                -MaximumJournalSize ([int]::Parse($MaximumJournalSize)) `
                -Label $Label
        }
    }
}


function Test-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name,

        [ValidateSet("Present","Absent")]
        [System.String]
        $Ensure  = "Present",

        [ValidateSet("true","false")]
        [System.String]
        $Transactional = "true",

        [ValidateSet("true","false")]
        [System.String]
        $UseJournalQueue = $false,

        [Parameter(HelpMessage="Maximum Journal Size in kilobytes")]
        [ValidateScript({[bool]($_ -as [int] -is [int])})]
        [System.String]
        $MaximumJournalSize = "1024",

        [AllowNull()]
        [System.String]
        $Label
    )

    $Queue = Get-TargetResource -Name $Name

    if($Ensure -eq "Present")
    {
        if($Queue.Ensure -eq $Ensure`
            -and $Queue.State -eq $state`
            -and $Queue.Transactional -eq [System.Boolean]::Parse($Transactional) `
            -and $Queue.UseJournalQueue -eq [System.Boolean]::Parse($UseJournalQueue) `
            -and $Queue.MaximumJournalSize -eq [int]::Parse($MaximumJournalSize) `
            -and $Queue.Label -eq $Label)
        {
            return $true
        }
    }
    elseif($Queue.Ensure -eq $Ensure)
    {
        return $true
    }

    return $false
}


function Get-QueueDetails
{
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name
    )

    $Details = @{}
    foreach ($Queue in [System.Messaging.MessageQueue]::GetPrivateQueuesByMachine("."))
    {
        if (Test-NameMatchesPath -Name $Name -Path $Queue.QueueName)
        {
            $Details = @{
                Name   = $Name
                Ensure = "Present"
                Transactional = $Queue.Transactional
                UseJournalQueue = $Queue.UseJournalQueue
                MaximumJournalSize = $Queue.MaximumJournalSize
                Label = $Queue.Label
            }
        }
    }
    return $Details
}

function Test-QueueExists
{
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name
    )
    [System.Messaging.MessageQueue]::Exists((Get-QueuePath -Name $Name))
}

function Remove-Queue
{
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name
    )

    foreach ($Queue in [System.Messaging.MessageQueue]::GetPrivateQueuesByMachine("."))
    {
        if (Test-NameMatchesPath -Name $Name -Path $Queue.QueueName)
        {
            Write-Verbose("Removing the MSMQ Queue ${Name}")
            try
            {
                [System.Messaging.MessageQueue]::Delete($Queue.Path)
                Write-Verbose("Successfully removed the MSMQ queue ${Name}")
                break
            }
            catch
            {
                Write-Error("Failed to remove the MSMQ queue ${Name}")
                throw $_
            }
        }
    }
}


function New-Queue
{
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name,

        [parameter(Mandatory = $true)]
        [System.Boolean]
        $Transactional,

        [parameter(Mandatory = $true)]
        [System.Boolean]
        $UseJournalQueue,

        [parameter(Mandatory = $true, HelpMessage = "Maximum Journal Size in kilobytes")]
        [int]
        $MaximumJournalSize,

        [parameter(Mandatory = $true)]
        [System.String]
        $Label
    )

    Write-Verbose("Creating the MSMQ Queue ${Name}")
    $QueuePath = (Get-QueuePath -Name $Name)
    $Queue = $null
    try
    {
        $Queue = [System.Messaging.MessageQueue]::Create($QueuePath, $Transactional)
        $Queue.UseJournalQueue = $UseJournalQueue
        $Queue.MaximumJournalSize = $MaximumJournalSize
        $Queue.Label = $Label
    }
    catch
    {
        Write-Error("Failed to create the MSMQ queue ${Name}")
        throw $_
    }
}


function Get-QueuePath
{
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name
    )

    return ".\private$\${Name}"
}


function Test-NameMatchesPath
{
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Path,

        [parameter(Mandatory = $true)]
        [System.String]
        $Name
    )

    $Path -match "\$\\${Name}$"
}


Export-ModuleMember -Function *-TargetResource
lib\cMessageQueue\DSCResources\SEEK_cPrivateMsmqQueue\SEEK_cPrivateMsmqQueue.schema.mof
 
lib\cMessageQueue\DSCResources\SEEK_cPrivateMsmqQueuePermissions\SEEK_cPrivateMsmqQueuePermissions.psm1
Add-Type -AssemblyName "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

function Get-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Collections.Hashtable])]
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name
    )

    return @{Name = $Name}
}


function Set-TargetResource
{
    [CmdletBinding()]
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name,

        [parameter(Mandatory = $true)]
        [System.String[]]
        $QueueNames,

        [ValidateSet("Present","Absent")]
        [System.String]
        $Ensure  = "Present",

        [AllowEmptyCollection()]
        [System.String[]]
        $AdminUsers = @(),

        [AllowEmptyCollection()]
        [System.String[]]
        $ReadUsers = @(),

        [AllowEmptyCollection()]
        [System.String[]]
        $WriteUsers = @()
    )

    $Acl = (New-Object System.Messaging.AccessControlList | `
            Add-AccessRights -Users $AdminUsers -Rights ([System.Messaging.MessageQueueAccessRights]::FullControl) | `
            Add-AccessRights -Users $ReadUsers -Rights ([System.Messaging.MessageQueueAccessRights] "ReceiveMessage,PeekMessage,GetQueueProperties,GetQueuePermissions,WriteMessage") | `
            Add-AccessRights -Users $WriteUsers -Rights ([System.Messaging.MessageQueueAccessRights]::GenericWrite))

    Get-PrivateQueues | Where-NameIn -Names $QueueNames | Reset-Permissions | Where-Present -Ensure $Ensure | Set-Permissions -AccessControlList $Acl
}


function Test-TargetResource
{
    [CmdletBinding()]
    [OutputType([System.Boolean])]
    param
    (
        [parameter(Mandatory = $true)]
        [System.String]
        $Name,

        [parameter(Mandatory = $true)]
        [System.String[]]
        $QueueNames,

        [ValidateSet("Present","Absent")]
        [System.String]
        $Ensure  = "Present",

        [AllowEmptyCollection()]
        [System.String[]]
        $AdminUsers = @(),

        [AllowEmptyCollection()]
        [System.String[]]
        $ReadUsers = @(),

        [AllowEmptyCollection()]
        [System.String[]]
        $WriteUsers = @()
    )

    Write-Verbose "Cannot query queue permissions, testing desired state will return False"
    return $false
}


function Where-Present
{
    [CmdletBinding()]
    param
    (
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [PSObject]
        $InputObject,

        [parameter(Mandatory = $true)]
        [string]
        $Ensure
    )

    process
    {
        if ($Ensure -eq "Present")
        {
            Write-Output $InputObject
        }
    }
}


function Reset-Permissions
{
    [CmdletBinding()]
    param
    (
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [PSObject]
        $InputObject
    )

    process
    {
        if ($InputObject -ne $null)
        {
            Write-Verbose ("Resetting current permissions of queue with path " + $InputObject.Queue.QueueName)
            $InputObject.Queue.ResetPermissions()
        }
        $InputObject | Write-Output
    }
}


function Set-Permissions
{
    [CmdletBinding()]
    param
    (
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [AllowNull()]
        [PSObject]
        $InputObject,

        [parameter(Mandatory = $true)]
        [System.Messaging.AccessControlList]
        $AccessControlList
    )

    process
    {
        if ($InputObject -ne $null)
        {
            Write-Verbose ("Modifying permissions of queue with path " + $InputObject.Queue.QueueName)
            $InputObject.Queue.SetPermissions($AccessControlList)
        }
    }
}


function Add-AccessRights
{
    [CmdletBinding()]
    param
    (
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [AllowEmptyCollection()]
        [System.Messaging.AccessControlList]
        $AccessControlList,

        [parameter(Mandatory = $true)]
        [AllowEmptyCollection()]
        [System.String[]]
        $Users,

        [parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [System.Messaging.MessageQueueAccessRights]
        $Rights
    )

    process
    {
        Write-Verbose "Adding access rights to access control list"
        foreach ($UserName in $Users)
        {
            $Trustee = New-Object System.Messaging.Trustee($UserName)
            [void]$AccessControlList.Add((New-Object System.Messaging.MessageQueueAccessControlEntry($Trustee, $Rights)))
        }
        Write-Output $AccessControlList -NoEnumerate
    }
}


function Get-PrivateQueues
{
    [CmdletBinding()]
    param ()

    process
    {
        Write-Verbose "Retrieving all private queues on the local machine"
        [System.Messaging.MessageQueue]::GetPrivateQueuesByMachine(".") | New-QueuePayload
    }
}

function New-QueuePayload
{
    [CmdletBinding()]
    param
    (
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [System.Messaging.MessageQueue]
        $MessageQueue
    )

    process
    {
        New-Object -typename PSObject | Add-Member -membertype NoteProperty -name Queue -value $MessageQueue -passthru
    }
}


function Where-NameIn
{
    [CmdletBinding()]
    param
    (
        [parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [PSObject]
        $InputObject,

        [parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [System.String[]]
        $Names
    )

    process
    {
        foreach ($Name in $Names)
        {
            if ($InputObject.Queue.QueueName -match "\$\\$Name$")
            {
                Write-Verbose ("Processing queue with name " + $Name)
                Write-Output $InputObject
            }
        }

    }
}


Export-ModuleMember -Function *-TargetResource
lib\cMessageQueue\DSCResources\SEEK_cPrivateMsmqQueuePermissions\SEEK_cPrivateMsmqQueuePermissions.schema.mof
 
tools\chocolateyInstall.ps1
try
{
	$DSCResourcesRoot = Join-Path $env:ProgramFiles "WindowsPowerShell\Modules"
	$DSCResourceTarget = Join-Path $env:chocolateyPackageFolder "lib"

	# remove DSC resources that may have been manually installed
	if (Test-Path "$DSCResourcesRoot\SEEK - Modules") {
		cmd /c rmdir "$DSCResourcesRoot\SEEK - Modules"
	}

	
	Get-ChildItem $DSCResourceTarget | Foreach-Object {
		if (Test-Path "$DSCResourcesRoot\$_") {
			# remove previous installation of this package
			cmd /c rmdir "$DSCResourcesRoot\$_"
		}
		cmd /c mklink /j "$DSCResourcesRoot\$_" "$DSCResourceTarget\$_"
		Get-ChildItem -Path "$DSCResourcesRoot\$_" -File -Recurse | Unblock-File
	}

} catch {
	$host.SetShouldExit(1)
	throw $_.Exception
}
tools\chocolateyUninstall.ps1
try
{
	$DSCResourcesRoot = Join-Path $env:ProgramFiles "WindowsPowerShell\Modules"
	$DSCResourceTarget = Join-Path $env:chocolateyPackageFolder "lib"
	Get-ChildItem $DSCResourceTarget | Foreach-Object { cmd /c rmdir "$DSCResourcesRoot\$_" }
} catch {
    throw $_.Exception
}

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Version Downloads Last Updated Status
SEEK DSC MessageQueue 2.0.0-alpha9 402 Thursday, July 30, 2015 Approved
SEEK DSC MessageQueue 2.0.0-alpha7 283 Friday, May 1, 2015 Approved
SEEK DSC MessageQueue 2.0.0-alpha6 247 Wednesday, April 22, 2015 Approved
SEEK DSC MessageQueue 2.0.0-alpha5 284 Tuesday, April 21, 2015 Approved
SEEK DSC MessageQueue 2.0.0-alpha4 232 Tuesday, April 21, 2015 Approved
SEEK DSC MessageQueue 2.0.0-alpha2 285 Tuesday, February 24, 2015 Approved
SEEK DSC MessageQueue 2.0.0-alpha1 266 Monday, February 23, 2015 Approved

This package has no dependencies.

Discussion for the SEEK DSC MessageQueue Package

Ground Rules:

  • This discussion is only about SEEK DSC MessageQueue and the SEEK DSC MessageQueue package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or SEEK DSC MessageQueue, or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus