DnsPlugins/Manual.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
function Add-DnsTxtManual {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory,Position=0)]
        [string]$RecordName,
        [Parameter(Mandatory,Position=1)]
        [string]$TxtValue,
        [Parameter(ValueFromRemainingArguments)]
        $ExtraParams
    )

    Write-Verbose "Saving TXT record to display when Save-DnsTxtManual is called."
    if (!$script:ManualTxtAdd) { $script:ManualTxtAdd = @() }
    $script:ManualTxtAdd += [pscustomobject]@{Record=$RecordName;TxtValue=$TxtValue}

    <#
    .SYNOPSIS
        Stores the TXT record to display when Save-DnsTxtManual is called.
 
    .DESCRIPTION
        This plugin requires user interaction and should not be used for any certificates that require automated renewals. Renewal operations will skip these.
 
    .PARAMETER RecordName
        The fully qualified name of the TXT record.
 
    .PARAMETER TxtValue
        The value of the TXT record.
 
    .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-DnsTxtManual '_acme-challenge.site1.example.com' 'asdfqwer12345678'
 
        Stores TXT record data for the specified site with the specified value.
    #>

}

function Remove-DnsTxtManual {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory,Position=0)]
        [string]$RecordName,
        [Parameter(Mandatory,Position=1)]
        [string]$TxtValue,
        [Parameter(ValueFromRemainingArguments)]
        $ExtraParams
    )

    Write-Verbose "Saving TXT record to display when Save-DnsTxtManual is called."
    if (!$script:ManualTxtRemove) { $script:ManualTxtRemove = @() }
    $script:ManualTxtRemove += [pscustomobject]@{Record=$RecordName;TxtValue=$TxtValue}

    <#
    .SYNOPSIS
        Stores the TXT record to display when Save-DnsTxtManual is called.
 
    .DESCRIPTION
        This plugin requires user interaction and should not be used for any certificates that require automated renewals. Renewal operations will skip these.
 
    .PARAMETER RecordName
        The fully qualified name of the TXT record.
 
    .PARAMETER TxtValue
        The value of the TXT record.
 
    .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-DnsTxtManual '_acme-challenge.site1.example.com' 'asdfqwer12345678'
 
        Stores TXT record data for the specified site with the specified value.
    #>

}

function Save-DnsTxtManual {
    [CmdletBinding()]
    param(
        [Parameter(ValueFromRemainingArguments)]
        $ExtraParams
    )

    if ($script:ManualTxtAdd -and $script:ManualTxtAdd.Count -gt 0) {

        Write-Host
        Write-Host "Please create the following TXT records:"
        Write-Host "------------------------------------------"
        $script:ManualTxtAdd | ForEach-Object {
            Write-Host "$($_.Record) -> $($_.TxtValue)"
        }
        Write-Host "------------------------------------------"
        Write-Host

        # clear out the variable so we don't notify twice
        Remove-Variable ManualTxtAdd -Scope Script

        Read-Host -Prompt "Press any key to continue." | Out-Null
    }

    if ($script:ManualTxtRemove -and $script:ManualTxtRemove.Count -gt 0) {

        Write-Host
        Write-Host "Please remove the following TXT records:"
        Write-Host "------------------------------------------"
        $script:ManualTxtRemove | ForEach-Object {
            Write-Host "$($_.Record) -> $($_.TxtValue)"
        }
        Write-Host "------------------------------------------"
        Write-Host

        # clear out the variable so we don't notify twice
        Remove-Variable ManualTxtRemove -Scope Script
    }

    <#
    .SYNOPSIS
        Displays the TXT records that need to be manually created or removed by the user.
 
    .DESCRIPTION
        This function outputs the pending TXT records to be created and waits for user confirmation to continue.
 
    .PARAMETER ExtraParams
        This parameter can be ignored and is only used to prevent errors when splatting with more parameters than this function supports.
    #>

}