From 73dc2fd4d48bb2002b70f38e6041f81f1307cd87 Mon Sep 17 00:00:00 2001 From: joeyaiello Date: Tue, 12 Jul 2016 16:54:08 -0700 Subject: [PATCH] add Samples folder --- .../ApacheHTTPServer/ApacheVirtualHosts.psm1 | 173 ++++++++++++++++ samples/modules/CronTab/CronTab.ps1xml | 69 +++++++ samples/modules/CronTab/CronTab.psd1 | Bin 0 -> 3520 bytes samples/modules/CronTab/CronTab.psm1 | 189 ++++++++++++++++++ samples/modules/README.md | 1 + 5 files changed, 432 insertions(+) create mode 100644 samples/modules/ApacheHTTPServer/ApacheVirtualHosts.psm1 create mode 100644 samples/modules/CronTab/CronTab.ps1xml create mode 100644 samples/modules/CronTab/CronTab.psd1 create mode 100644 samples/modules/CronTab/CronTab.psm1 create mode 100644 samples/modules/README.md diff --git a/samples/modules/ApacheHTTPServer/ApacheVirtualHosts.psm1 b/samples/modules/ApacheHTTPServer/ApacheVirtualHosts.psm1 new file mode 100644 index 0000000000..94710c8130 --- /dev/null +++ b/samples/modules/ApacheHTTPServer/ApacheVirtualHosts.psm1 @@ -0,0 +1,173 @@ +$moduleRoot = Split-Path -Path $MyInvocation.MyCommand.Path + + +Function New-ApacheVHost { + [CmdletBinding()] + param ( + [parameter (Mandatory = $true)][string]$ServerName, + [string]$VHostsDirectory, + [parameter (Mandatory = $true)][string]$DocumentRoot, + [parameter (Mandatory = $true)][string]$VirtualHostIPAddress, + [string[]]$ServerAliases, + [parameter (Mandatory = $true)][string]$VirtualHostPort, + [string]$ServerAdmin, + [string]$CustomLogPath, + [string]$ErrorLogPath + ) + + if ($VHostsDirectory -notlike "*/*"){ + #Try to find default + if (Test-Path "/etc/httpd/conf.d"){ + $VHostsDirectory = "/etc/httpd/conf.d/" + } + if (Test-Path "/etc/apache2/sites-enabled"){ + $VHostsDirectory = "/etc/apache2/sites-enabled" + } + } + + if (!(Test-Path $VHostsDirectory)){ + Write-Error "Specified virtual hosts directory does not exist: $VHostsDirectory" + exit 1 + } + + $vHostDef = ".*:[0-9]*)(?.*)\((?.*)\)" + $VHostProps = $matches + $vhobject |Add-Member -type NoteProperty -name "ServerName" -value $matches.ServerName.Trim() + $vhobject |Add-Member -type NoteProperty -name "ListenAddress" -value $matches.Listen.Trim() + $vhobject |Add-Member -type NoteProperty -name "ConfFile" -value $matches.ConfFile.Trim() + $Vhosts += $vhobject + } + + } + + Return $Vhosts + +} + +Function Restart-ApacheHTTPServer{ + [CmdletBinding()] + Param( + [boolean]$Graceful + ) + + if ($Graceful -eq $null){$Graceful = $fase} + + $cmd = $null + if (Test-Path "/usr/sbin/apache2ctl"){ + $cmd = "/usr/sbin/apache2ctl" + }elseif(Test-Path "/usr/sbin/httpd"){ + $cmd = "/usr/sbin/httpd" + } + + if ($cmd -eq $null){ + Write-Error "Unable to find httpd/apache2ctl command" + exit -1 + } + + if ($Graceful){ + $cmd = $cmd += " -k graceful" + }else{ + $cmd = $cmd += " -k restart" + } + + Invoke-Expression $Cmd +} + +Function Get-ApacheModules{ + $cmd = $null + if (Test-Path "/usr/sbin/apache2ctl"){ + $cmd = "/usr/sbin/apache2ctl" + }elseif(Test-Path "/usr/sbin/httpd"){ + $cmd = "/usr/sbin/httpd" + } + + if ($cmd -eq $null){ + Write-Error "Unable to find httpd/apache2ctl command" + exit -1 + } + + $cmd = $cmd += " -M |grep -v Loaded" + + $ApacheModules = @() + function New-ModuleObj { + New-Object PSObject -Property @{} + } + + + $Results = Invoke-Expression $cmd + Foreach ($mod in $Results){ + $modObj = New-ModuleObj + $modObj | Add-Member -type NoteProperty -name "Module" -value $mod.trim() + $ApacheModules += $modObj + } + + Return $ApacheModules + +} diff --git a/samples/modules/CronTab/CronTab.ps1xml b/samples/modules/CronTab/CronTab.ps1xml new file mode 100644 index 0000000000..1d1f1f90d8 --- /dev/null +++ b/samples/modules/CronTab/CronTab.ps1xml @@ -0,0 +1,69 @@ + + + + + + Default + + CronJob + + + + + + 10 + Left + + + + 10 + Left + + + + 10 + Left + + + + 10 + Left + + + + 10 + Left + + + + Left + + + + + + + Minute + + + Hour + + + DayOfMonth + + + Month + + + DayOfWeek + + + Command + + + + + + + + \ No newline at end of file diff --git a/samples/modules/CronTab/CronTab.psd1 b/samples/modules/CronTab/CronTab.psd1 new file mode 100644 index 0000000000000000000000000000000000000000..23d9d95f051b15feb3b1c0ca41ca273156cd41b4 GIT binary patch literal 3520 zcmbuBTTc{05QXd6#Q!jf4`L!J#_NNLL{KqE2p8XXVHZZ(nRRy&jp47W=j)>F>Dd|7 z7_!WztE*0(sy;P8f4sEscGGTz-z_U_-;Qi%rA=+2r-{{eZ0B}nBR$nxDQu|K$_Bds zwq!BZn%fR+uD@E|O4%;7|5(-+dRo}2?)YEIf*1q&D{U;Bx!&IkSoXBH*3*0aPY7Pf z{{@#cv~wu?srF55O)JezKFHrpD`l`PWPdKJVR%a};}(h(#}PCmw|zN|2a3I> zAJ+%1==+K`)gPS2?03cPrm}$pM>P+KU&(4BTX-sk5C*$!3nT7JTT!fSS(4FL-QUUb z-m(o@ohx(ad?D{V!|`WbNAgeQN+B8PEiuR8O|vG64LE&chvt4g^T*2fnUD_cxjohH z)!^%){H@v}t@zzQ8I5$mD(f|M0#8S}rv}e-_q4^?y3m2a`|P?3fho6kTWDs7T+Y{t^5lfk@qRw= zLNyBEb|n4v07Ki8Gq9rk@5sl)!1)v1Epu{DZ`aiYXSyaVoW+?i&^I%KlVkODex^3U zdQymZwoK#}Nqx^61pwY+=xp$Wr3^j=>~&v!rYKUD-G=Xw=+bcGp+ zbI#0(>~aOkb9^1xXOGvy6%BS)#0Oflrc*ajM0oboMMoEUQ)?He%C+uPca`3k;dE0| z7;yyswQa_qOXF&30h}Gl8=4wBEzcoG*3O92pXz}R$30ReQKP6EaVB9ksdG|-yIP5y zk}ZZHS}PnD`=PiaF*|YN$QGz`o!Ssr-bQ44A(jL zz#2O0ord?BJiFFKwFfI+Smg@3<&N!U$mhcAR(E@iHZvx@H+K}_Lh2VQ^-i&dI#GA^ z+Y4AZ320`Q#T%_GI@X#qj?O6M!xaSnxEm-VuP-yjd&ZyXIaZP0X6!_eD{-`z8pAV%^8a4 zc1CC^yAvO29=hJ_3dM!2W{M0asG-+4=QN?Brp>RVLeKo=*!!%a^)2l<5VDi2zULbO zb!^V+Zf%IXx8uj_ZHKHAnb??K|D6qVwEA}UK?_Vj)99Ir&!&iovP9HK@h9gI8T^?GdR zm@`F>426*S)s508+DEOTu>H)ribuQu!--xpSNtsb+y;mDhJVvtH)r}$Ze98O7kp?L z-GkPQY)2;xuF%l*T@b(Z(=_R;XTLXB)#aLADiZbF6e~;-kD8y$Wlf1X+PAx@tVsp> l{ea+YU}CCo + [CmdletBinding(SupportsShouldProcess=$true,ConfirmImpact="High")] + param ( + [Alias("u")][Parameter(Mandatory=$false)][String] $UserName, + [Alias("j")][Parameter(Mandatory=$true,ValueFromPipeline=$true)][PSTypeName("CronJob")] $Job #TODO use CronJob type + ) + process { + + [string[]] $crontab = Get-CronTab -user $UserName + [string[]] $newcrontab = $null + $found = $false + + foreach ($line in $crontab) { + $cronjob = ConvertTo-CronJob -crontab $line + if ((Compare-object $cronjob.psobject.properties $Job.psobject.properties) -eq $null) { + $found = $true + } else { + $newcrontab += $line + } + } + + if (-not $found) { + $e = New-Object System.Exception -ArgumentList "Job not found" + throw $e + } + if ($pscmdlet.ShouldProcess($Job.Command,"Remove")) { + Import-CronTab -user $UserName -crontab $newcrontab + } + } +} + +function New-CronJob { +<# +.SYNOPSIS + Create a new cron job +.DESCRIPTION + Create a new job in the cron table. Date and time parameters can be specified + as ranges such as 10-30, as a list: 5,6,7, or combined 1-5,10-15. An asterisk + means 'first through last' (the entire allowed range). Step values can be used + with ranges or with an asterisk. Every 2 hours can be specified as either + 0-23/2 or */2. +.EXAMPLE + New-CronJob -Minute 10-30 -Hour 10-20/2 -DayOfMonth */2 -Command "/bin/bash -c 'echo hello' > ~/hello" +.RETURNVALUE + If successful, an object representing the cron job is returned +.PARAMETER UserName + Optional parameter to specify a specific user's cron table +.PARAMETER Minute + Valid values are 0 to 59. If not specified, defaults to *. +.PARAMETER Hour + Valid values are 0-23. If not specified, defaults to *. +.PARAMETER DayOfMonth + Valid values are 1-31. If not specified, defaults to *. +.PARAMETER Month + Valid values are 1-12. If not specified, defaults to *. +.PARAMETER DayOfWeek + Valid values are 0-7. 0 and 7 are both Sunday. If not specified, defaults to *. +.PARAMETER Command + Command to execute at the scheduled time and day. +#> + [CmdletBinding()] + param ( + [Alias("u")][Parameter(Mandatory=$false)][String] $UserName, + [Alias("mi")][Parameter(Position=1)][String[]] $Minute = "*", + [Alias("h")][Parameter(Position=2)][String[]] $Hour = "*", + [Alias("dm")][Parameter(Position=3)][String[]] $DayOfMonth = "*", + [Alias("mo")][Parameter(Position=4)][String[]] $Month = "*", + [Alias("dw")][Parameter(Position=5)][String[]] $DayOfWeek = "*", + [Alias("c")][Parameter(Mandatory=$true,Position=6)][String] $Command + ) + process { + # TODO: validate parameters, note that different versions of crontab support different capabilities + $line = "{0} {1} {2} {3} {4} {5}" -f [String]::Join(",",$Minute), [String]::Join(",",$Hour), + [String]::Join(",",$DayOfMonth), [String]::Join(",",$Month), [String]::Join(",",$DayOfWeek), $Command + [string[]] $crontab = Get-CronTab -user $UserName + $crontab += $line + Import-CronTab -User $UserName -crontab $crontab + ConvertTo-CronJob -crontab $line + } +} + +function Get-CronJob { +<# +.SYNOPSIS + Returns the current cron jobs from the cron table +.DESCRIPTION + Returns the current cron jobs from the cron table +.EXAMPLE + Get-CronJob -UserName Steve +.RETURNVALUE + CronJob objects +.PARAMETER UserName + Optional parameter to specify a specific user's cron table +#> + [CmdletBinding()] + [OutputType([PSObject])] + param ( + [Alias("u")][Parameter(Mandatory=$false)][String] $UserName + ) + process { + $crontab = Get-CronTab -user $UserName + ForEach ($line in $crontab) { + if ($line.Trim().Length -gt 0) + { + ConvertTo-CronJob -crontab $line + } + } + } +} diff --git a/samples/modules/README.md b/samples/modules/README.md new file mode 100644 index 0000000000..9a7f330f3a --- /dev/null +++ b/samples/modules/README.md @@ -0,0 +1 @@ +# Samples