Plugins/_Example-HTTP.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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
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,
        <#
        Add plugin specific parameters here. Make sure their names are
        unique across all existing plugins. But make sure common ones
        across this plugin are the same.
        #>

        [Parameter(ValueFromRemainingArguments)]
        $ExtraParams
    )

    # Do work here to publish the specified $Body text at the appropriate
    # URL using the $Domain and $Token values. If needed, you can build
    # the full URL like this:
    #
    # $publishUrl = "http://$($Domain)/.well-known/acme-challenge/$($Token)"
    #
    # Remember to add @script:UseBasic to all calls to
    # Invoke-RestMethod or Invoke-WebRequest.

    <#
    .SYNOPSIS
        Publish an HTTP challenge to <My HTTP Server/Provider>
 
    .DESCRIPTION
        Description for <My HTTP Server/Provider>
 
    .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 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'
 
        Adds an HTTP challenge for the specified domain, token, and body value.
    #>

}

function Remove-HttpChallenge {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory,Position=0)]
        [string]$Domain,
        [Parameter(Mandatory,Position=1)]
        [string]$Token,
        [Parameter(Mandatory,Position=2)]
        [string]$Body,
        <#
        Add plugin specific parameters here. Make sure their names are
        unique across all existing plugins. But make sure common ones
        across this plugin are the same.
        #>

        [Parameter(ValueFromRemainingArguments)]
        $ExtraParams
    )

    # Do work here to unpublish the specified $Body text from the appropriate
    # URL using the $Domain and $Token values. If needed, you can build
    # the full URL like this:
    #
    # $publishUrl = "http://$($Domain)/.well-known/acme-challenge/$($Token)"
    #
    # Remember to add @script:UseBasic to all calls to
    # Invoke-RestMethod or Invoke-WebRequest.

    <#
    .SYNOPSIS
        Unpublish an HTTP challenge from <My HTTP Server/Provider>
 
    .DESCRIPTION
        Description for <My HTTP Server/Provider>
 
    .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 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'
 
        Removes an HTTP challenge for the specified domain, token, and body value.
    #>

}

function Save-HttpChallenge {
    [CmdletBinding()]
    param(
        <#
        Add plugin specific parameters here. Make sure their names are
        unique across all existing plugins. But make sure common ones
        across this plugin are the same.
        #>

        [Parameter(ValueFromRemainingArguments)]
        $ExtraParams
    )

    # If necessary, do work here to save or finalize changes performed by
    # Add/Remove functions. It is not uncommon for this function to have
    # no work to do depending on the HTTP provider. In that case, just
    # leave the function body empty.

    <#
    .SYNOPSIS
        Commits changes for pending HTTP challenges published to <My HTTP Server/Provider>
 
    .DESCRIPTION
        Description for <My HTTP Server/Provider>
 
    .PARAMETER ExtraParams
        This parameter can be ignored and is only used to prevent errors when splatting with more parameters than this function supports.
 
    .EXAMPLE
        Save-HttpChallenge
 
        Commits changes for pending HTTP challenges published.
    #>

}

############################
# Helper Functions
############################

# Add a commented link to API docs if they exist.

# Add additional functions here if necessary.

# Try to follow verb-noun naming guidelines.
# https://msdn.microsoft.com/en-us/library/ms714428