Plugins/WebRoot.ps1
function Get-CurrentPluginType { 'http-01' } function Add-HttpChallenge { [CmdletBinding()] param( [Parameter(Mandatory,Position=0)] [string]$Domain, [Parameter(Mandatory,Position=1)] [string]$Token, [Parameter(Mandatory,Position=2)] [string]$Body, [Parameter(Mandatory)] [string[]]$WRPath, [switch]$WRExactPath, [Parameter(ValueFromRemainingArguments)] $ExtraParams ) foreach ($path in $WRPath) { # expand any relative path params $path = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($path) # build the appropriate output folder path if ($WRExactPath) { $outFolder = $path } else { $outFolder = Join-Path $path ".well-known/acme-challenge" } Write-Debug "Creating challenge file for $Domain in $outFolder" # attempt to create the folder if it doesn't exist if (-not (Test-Path $outFolder -PathType Container)) { Write-Debug "Folder doesn't exist, attempting to create it." New-Item -Path $outFolder -ItemType Directory -ErrorAction Stop | Out-Null } $outFile = Join-Path $outFolder $Token Write-Debug "Writing file $outFile" $Body | Out-File $outFile -Encoding ascii -Force } <# .SYNOPSIS Publish an HTTP challenge file to a web server root folder .DESCRIPTION Publish an HTTP challenge file to a web server root folder .PARAMETER Domain The fully qualified domain name to publish the challenge for. .PARAMETER Token The token value associated with this specific challenge. .PARAMETER Body The text that should make up the response body from the URL. .PARAMETER WRPath The path (or paths) to the web server's root folder for the specified site. Files will be written to a '.well-known/acme-challenge' subfolder unless WRExactPath is specified. .PARAMETER WRExactPath If specified, the challenge files will be written to the exact folder WRPath points to instead of a '.well-known/acme-challenge' subfolder. .PARAMETER ExtraParams This parameter can be ignored and is only used to prevent errors when splatting with more parameters than this function supports. .EXAMPLE Add-HttpChallenge 'example.com' 'TOKEN' 'body-value' -WRPath 'C:\inetpub\wwwroot' Adds an HTTP challenge to the specified web root location. #> } function Remove-HttpChallenge { [CmdletBinding()] param( [Parameter(Mandatory,Position=0)] [string]$Domain, [Parameter(Mandatory,Position=1)] [string]$Token, [Parameter(Mandatory,Position=2)] [string]$Body, [Parameter(Mandatory)] [string[]]$WRPath, [switch]$WRExactPath, [Parameter(ValueFromRemainingArguments)] $ExtraParams ) foreach ($path in $WRPath) { # expand any relative path params $path = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($path) # build the appropriate output file path if ($WRExactPath) { $outFile = Join-Path $path $Token } else { $outFile = Join-Path $path ".well-known/acme-challenge/$Token" } Write-Debug "Removing challenge file for $Domain at $outFile" # make sure it actually exists if (Test-Path $outFile -PathType Leaf) { Remove-Item -Path $outFile -Force -ErrorAction Stop } else { Write-Debug "File doesn't exist, nothing to do." } } <# .SYNOPSIS Unpublish an HTTP challenge file from a web server root folder .DESCRIPTION Unpublish an HTTP challenge file from a web server root folder .PARAMETER Domain The fully qualified domain name to publish the challenge for. .PARAMETER Token The token value associated with this specific challenge. .PARAMETER Body The text that should make up the response body from the URL. .PARAMETER WRPath The path (or paths) to the web server's root folder for the specified site. Files will be written to a '.well-known/acme-challenge' subfolder unless WRExactPath is specified. .PARAMETER WRExactPath If specified, the challenge files will be written to the exact folder WRPath points to instead of a '.well-known/acme-challenge' subfolder. .PARAMETER ExtraParams This parameter can be ignored and is only used to prevent errors when splatting with more parameters than this function supports. .EXAMPLE Remove-HttpChallenge 'example.com' 'TOKEN' 'body-value' -WRPath 'C:\inetpub\wwwroot' Removes an HTTP challenge from the specified web root location. #> } function Save-HttpChallenge { [CmdletBinding()] param( [Parameter(ValueFromRemainingArguments)] $ExtraParams ) <# .SYNOPSIS Not required. .DESCRIPTION This provider does not require calling this function to commit changes to HTTP challenges. .PARAMETER ExtraParams This parameter can be ignored and is only used to prevent errors when splatting with more parameters than this function supports. #> } |