@pulumi/cloudflare 3.4.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accessKeysConfiguration.d.ts +42 -0
- package/accessKeysConfiguration.js +55 -0
- package/accessKeysConfiguration.js.map +1 -0
- package/accessPolicy.d.ts +36 -0
- package/accessPolicy.js +6 -0
- package/accessPolicy.js.map +1 -1
- package/customHostname.d.ts +12 -4
- package/customSsl.d.ts +3 -3
- package/customSsl.js +3 -3
- package/getOriginCaRootCertificate.d.ts +39 -0
- package/getOriginCaRootCertificate.js +33 -0
- package/getOriginCaRootCertificate.js.map +1 -0
- package/index.d.ts +8 -0
- package/index.js +36 -0
- package/index.js.map +1 -1
- package/loadBalancer.d.ts +3 -3
- package/loadBalancer.js +3 -3
- package/notificationPolicy.d.ts +200 -0
- package/notificationPolicy.js +120 -0
- package/notificationPolicy.js.map +1 -0
- package/notificationPolicyWebhooks.d.ts +123 -0
- package/notificationPolicyWebhooks.js +95 -0
- package/notificationPolicyWebhooks.js.map +1 -0
- package/package.json +2 -2
- package/package.json.dev +1 -1
- package/ruleset.d.ts +311 -0
- package/ruleset.js +254 -0
- package/ruleset.js.map +1 -0
- package/teamsAccount.d.ts +117 -0
- package/teamsAccount.js +90 -0
- package/teamsAccount.js.map +1 -0
- package/teamsLocation.d.ts +152 -0
- package/teamsLocation.js +105 -0
- package/teamsLocation.js.map +1 -0
- package/teamsRule.d.ts +195 -0
- package/teamsRule.js +121 -0
- package/teamsRule.js.map +1 -0
- package/types/input.d.ts +320 -25
- package/types/output.d.ts +322 -27
- package/waitingRoom.d.ts +12 -0
- package/waitingRoom.js +2 -0
- package/waitingRoom.js.map +1 -1
- package/zone.d.ts +6 -16
- package/zone.js +0 -13
- package/zone.js.map +1 -1
- package/zoneSettingsOverride.d.ts +2 -2
package/ruleset.d.ts
ADDED
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
import { input as inputs, output as outputs } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* The [Cloudflare Ruleset Engine](https://developers.cloudflare.com/firewall/cf-rulesets)
|
|
5
|
+
* allows you to create and deploy rules and rulesets.
|
|
6
|
+
* The engine syntax, inspired by the Wireshark Display Filter language, is the
|
|
7
|
+
* same syntax used in custom Firewall Rules. Cloudflare uses the Ruleset Engine
|
|
8
|
+
* in different products, allowing you to configure several products using the same
|
|
9
|
+
* basic syntax.
|
|
10
|
+
*
|
|
11
|
+
* ## Example Usage
|
|
12
|
+
*
|
|
13
|
+
* ```typescript
|
|
14
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
15
|
+
* import * as cloudflare from "@pulumi/cloudflare";
|
|
16
|
+
*
|
|
17
|
+
* // Magic Transit
|
|
18
|
+
* const magicTransitExample = new cloudflare.Ruleset("magic_transit_example", {
|
|
19
|
+
* accountId: "d41d8cd98f00b204e9800998ecf8427e",
|
|
20
|
+
* description: "example magic transit ruleset description",
|
|
21
|
+
* kind: "root",
|
|
22
|
+
* name: "account magic transit",
|
|
23
|
+
* phase: "magic_transit",
|
|
24
|
+
* rules: [{
|
|
25
|
+
* action: "allow",
|
|
26
|
+
* description: "Allow TCP Ephemeral Ports",
|
|
27
|
+
* expression: "tcp.dstport in { 32768..65535 }",
|
|
28
|
+
* }],
|
|
29
|
+
* });
|
|
30
|
+
* // Zone-level WAF Managed Ruleset
|
|
31
|
+
* const zoneLevelManagedWaf = new cloudflare.Ruleset("zone_level_managed_waf", {
|
|
32
|
+
* description: "managed WAF ruleset description",
|
|
33
|
+
* kind: "zone",
|
|
34
|
+
* name: "managed WAF",
|
|
35
|
+
* phase: "http_request_firewall_managed",
|
|
36
|
+
* rules: [{
|
|
37
|
+
* action: "execute",
|
|
38
|
+
* actionParameters: {
|
|
39
|
+
* id: "efb7b8c949ac4650a09736fc376e9aee",
|
|
40
|
+
* },
|
|
41
|
+
* description: "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset",
|
|
42
|
+
* enabled: true,
|
|
43
|
+
* expression: "true",
|
|
44
|
+
* }],
|
|
45
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
46
|
+
* });
|
|
47
|
+
* // Zone-level WAF with tag-based overrides
|
|
48
|
+
* const zoneLevelManagedWafWithCategoryBasedOverrides = new cloudflare.Ruleset("zone_level_managed_waf_with_category_based_overrides", {
|
|
49
|
+
* description: "managed WAF with tag-based overrides ruleset description",
|
|
50
|
+
* kind: "zone",
|
|
51
|
+
* name: "managed WAF with tag-based overrides",
|
|
52
|
+
* phase: "http_request_firewall_managed",
|
|
53
|
+
* rules: [{
|
|
54
|
+
* action: "execute",
|
|
55
|
+
* actionParameters: {
|
|
56
|
+
* id: "efb7b8c949ac4650a09736fc376e9aee",
|
|
57
|
+
* overrides: {
|
|
58
|
+
* categories: [
|
|
59
|
+
* {
|
|
60
|
+
* action: "block",
|
|
61
|
+
* category: "wordpress",
|
|
62
|
+
* enabled: true,
|
|
63
|
+
* },
|
|
64
|
+
* {
|
|
65
|
+
* action: "block",
|
|
66
|
+
* category: "joomla",
|
|
67
|
+
* enabled: true,
|
|
68
|
+
* },
|
|
69
|
+
* ],
|
|
70
|
+
* },
|
|
71
|
+
* },
|
|
72
|
+
* description: "overrides to only enable wordpress rules to block",
|
|
73
|
+
* enabled: false,
|
|
74
|
+
* expression: "true",
|
|
75
|
+
* }],
|
|
76
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
77
|
+
* });
|
|
78
|
+
* // Rewrite the URI path component to a static path
|
|
79
|
+
* const transformUriRulePath = new cloudflare.Ruleset("transform_uri_rule_path", {
|
|
80
|
+
* description: "change the URI path to a new static path",
|
|
81
|
+
* kind: "zone",
|
|
82
|
+
* name: "transform rule for URI path",
|
|
83
|
+
* phase: "http_request_transform",
|
|
84
|
+
* rules: [{
|
|
85
|
+
* action: "rewrite",
|
|
86
|
+
* actionParameters: {
|
|
87
|
+
* uri: {
|
|
88
|
+
* path: {
|
|
89
|
+
* value: "/my-new-route",
|
|
90
|
+
* },
|
|
91
|
+
* },
|
|
92
|
+
* },
|
|
93
|
+
* description: "example URI path transform rule",
|
|
94
|
+
* enabled: true,
|
|
95
|
+
* expression: "(http.host eq \"example.com\" and http.uri.path eq \"/old-path\")",
|
|
96
|
+
* }],
|
|
97
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
98
|
+
* });
|
|
99
|
+
* // Rewrite the URI query component to a static query
|
|
100
|
+
* const transformUriRuleQuery = new cloudflare.Ruleset("transform_uri_rule_query", {
|
|
101
|
+
* description: "change the URI query to a new static query",
|
|
102
|
+
* kind: "zone",
|
|
103
|
+
* name: "transform rule for URI query parameter",
|
|
104
|
+
* phase: "http_request_transform",
|
|
105
|
+
* rules: [{
|
|
106
|
+
* action: "rewrite",
|
|
107
|
+
* actionParameters: {
|
|
108
|
+
* uri: {
|
|
109
|
+
* query: {
|
|
110
|
+
* value: "old=new_again",
|
|
111
|
+
* },
|
|
112
|
+
* },
|
|
113
|
+
* },
|
|
114
|
+
* description: "URI transformation query example",
|
|
115
|
+
* enabled: true,
|
|
116
|
+
* expression: "true",
|
|
117
|
+
* }],
|
|
118
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
119
|
+
* });
|
|
120
|
+
* // Rewrite HTTP headers to a modified values
|
|
121
|
+
* const transformUriHttpHeaders = new cloudflare.Ruleset("transform_uri_http_headers", {
|
|
122
|
+
* description: "modify HTTP headers before reaching origin",
|
|
123
|
+
* kind: "zone",
|
|
124
|
+
* name: "transform rule for HTTP headers",
|
|
125
|
+
* phase: "http_request_late_transform",
|
|
126
|
+
* rules: [{
|
|
127
|
+
* action: "rewrite",
|
|
128
|
+
* actionParameters: {
|
|
129
|
+
* headers: [
|
|
130
|
+
* {
|
|
131
|
+
* name: "example-http-header-1",
|
|
132
|
+
* operation: "set",
|
|
133
|
+
* value: "my-http-header-value-1",
|
|
134
|
+
* },
|
|
135
|
+
* {
|
|
136
|
+
* expression: "cf.zone.name",
|
|
137
|
+
* name: "example-http-header-2",
|
|
138
|
+
* operation: "set",
|
|
139
|
+
* },
|
|
140
|
+
* {
|
|
141
|
+
* name: "example-http-header-3-to-remove",
|
|
142
|
+
* operation: "remove",
|
|
143
|
+
* },
|
|
144
|
+
* ],
|
|
145
|
+
* },
|
|
146
|
+
* description: "example request header transform rule",
|
|
147
|
+
* enabled: false,
|
|
148
|
+
* expression: "true",
|
|
149
|
+
* }],
|
|
150
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
151
|
+
* });
|
|
152
|
+
* // HTTP rate limit for an API route
|
|
153
|
+
* const rateLimitingExample = new cloudflare.Ruleset("rate_limiting_example", {
|
|
154
|
+
* description: "apply HTTP rate limiting for a route",
|
|
155
|
+
* kind: "zone",
|
|
156
|
+
* name: "restrict API requests count",
|
|
157
|
+
* phase: "http_ratelimit",
|
|
158
|
+
* rules: [{
|
|
159
|
+
* action: "block",
|
|
160
|
+
* description: "rate limit for API",
|
|
161
|
+
* enabled: true,
|
|
162
|
+
* expression: "(http.request.uri.path matches \"^/api/\")",
|
|
163
|
+
* ratelimit: {
|
|
164
|
+
* characteristics: [
|
|
165
|
+
* "cf.colo.id",
|
|
166
|
+
* "ip.src",
|
|
167
|
+
* ],
|
|
168
|
+
* mitigationTimeout: 600,
|
|
169
|
+
* period: 60,
|
|
170
|
+
* requestsPerPeriod: 100,
|
|
171
|
+
* },
|
|
172
|
+
* }],
|
|
173
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
174
|
+
* });
|
|
175
|
+
* ```
|
|
176
|
+
*
|
|
177
|
+
* ## Import
|
|
178
|
+
*
|
|
179
|
+
* Currently, you cannot import rulesets.
|
|
180
|
+
*/
|
|
181
|
+
export declare class Ruleset extends pulumi.CustomResource {
|
|
182
|
+
/**
|
|
183
|
+
* Get an existing Ruleset resource's state with the given name, ID, and optional extra
|
|
184
|
+
* properties used to qualify the lookup.
|
|
185
|
+
*
|
|
186
|
+
* @param name The _unique_ name of the resulting resource.
|
|
187
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
188
|
+
* @param state Any extra arguments used during the lookup.
|
|
189
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
190
|
+
*/
|
|
191
|
+
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: RulesetState, opts?: pulumi.CustomResourceOptions): Ruleset;
|
|
192
|
+
/**
|
|
193
|
+
* Returns true if the given object is an instance of Ruleset. This is designed to work even
|
|
194
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
195
|
+
*/
|
|
196
|
+
static isInstance(obj: any): obj is Ruleset;
|
|
197
|
+
/**
|
|
198
|
+
* The ID of the account where the ruleset is being created. Conflicts with `"zoneId"`.
|
|
199
|
+
*/
|
|
200
|
+
readonly accountId: pulumi.Output<string | undefined>;
|
|
201
|
+
/**
|
|
202
|
+
* Brief summary of the ruleset rule and its intended use.
|
|
203
|
+
*/
|
|
204
|
+
readonly description: pulumi.Output<string>;
|
|
205
|
+
/**
|
|
206
|
+
* Type of Ruleset to create. Valid values are `"custom"`, `"managed"`, `"root"`, `"schema"` or `"zone"`.
|
|
207
|
+
*/
|
|
208
|
+
readonly kind: pulumi.Output<string>;
|
|
209
|
+
/**
|
|
210
|
+
* Name of the HTTP request header to target.
|
|
211
|
+
*/
|
|
212
|
+
readonly name: pulumi.Output<string>;
|
|
213
|
+
/**
|
|
214
|
+
* Point in the request/response lifecycle where the ruleset will be created. Valid values are `"ddosL4"`, `"ddosL7"`, `"httpRequestFirewallCustom"`, `"httpRequestFirewallManaged"`, `"httpRequestLateTransform"`, `"httpRequestMain"`, `"httpRequestSanitize"`, `"httpRequestTransform"`, `"httpResponseFirewallManaged"`, `"magicTransit"`, or `"httpRatelimit"`.
|
|
215
|
+
*/
|
|
216
|
+
readonly phase: pulumi.Output<string>;
|
|
217
|
+
/**
|
|
218
|
+
* List of rule-based overrides (refer to the nested schema).
|
|
219
|
+
*/
|
|
220
|
+
readonly rules: pulumi.Output<outputs.RulesetRule[] | undefined>;
|
|
221
|
+
/**
|
|
222
|
+
* Name of entitlement that is shareable between entities.
|
|
223
|
+
*/
|
|
224
|
+
readonly shareableEntitlementName: pulumi.Output<string | undefined>;
|
|
225
|
+
/**
|
|
226
|
+
* The ID of the zone where the ruleset is being created. Conflicts with `"accountId"`.
|
|
227
|
+
*/
|
|
228
|
+
readonly zoneId: pulumi.Output<string | undefined>;
|
|
229
|
+
/**
|
|
230
|
+
* Create a Ruleset resource with the given unique name, arguments, and options.
|
|
231
|
+
*
|
|
232
|
+
* @param name The _unique_ name of the resource.
|
|
233
|
+
* @param args The arguments to use to populate this resource's properties.
|
|
234
|
+
* @param opts A bag of options that control this resource's behavior.
|
|
235
|
+
*/
|
|
236
|
+
constructor(name: string, args: RulesetArgs, opts?: pulumi.CustomResourceOptions);
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Input properties used for looking up and filtering Ruleset resources.
|
|
240
|
+
*/
|
|
241
|
+
export interface RulesetState {
|
|
242
|
+
/**
|
|
243
|
+
* The ID of the account where the ruleset is being created. Conflicts with `"zoneId"`.
|
|
244
|
+
*/
|
|
245
|
+
accountId?: pulumi.Input<string>;
|
|
246
|
+
/**
|
|
247
|
+
* Brief summary of the ruleset rule and its intended use.
|
|
248
|
+
*/
|
|
249
|
+
description?: pulumi.Input<string>;
|
|
250
|
+
/**
|
|
251
|
+
* Type of Ruleset to create. Valid values are `"custom"`, `"managed"`, `"root"`, `"schema"` or `"zone"`.
|
|
252
|
+
*/
|
|
253
|
+
kind?: pulumi.Input<string>;
|
|
254
|
+
/**
|
|
255
|
+
* Name of the HTTP request header to target.
|
|
256
|
+
*/
|
|
257
|
+
name?: pulumi.Input<string>;
|
|
258
|
+
/**
|
|
259
|
+
* Point in the request/response lifecycle where the ruleset will be created. Valid values are `"ddosL4"`, `"ddosL7"`, `"httpRequestFirewallCustom"`, `"httpRequestFirewallManaged"`, `"httpRequestLateTransform"`, `"httpRequestMain"`, `"httpRequestSanitize"`, `"httpRequestTransform"`, `"httpResponseFirewallManaged"`, `"magicTransit"`, or `"httpRatelimit"`.
|
|
260
|
+
*/
|
|
261
|
+
phase?: pulumi.Input<string>;
|
|
262
|
+
/**
|
|
263
|
+
* List of rule-based overrides (refer to the nested schema).
|
|
264
|
+
*/
|
|
265
|
+
rules?: pulumi.Input<pulumi.Input<inputs.RulesetRule>[]>;
|
|
266
|
+
/**
|
|
267
|
+
* Name of entitlement that is shareable between entities.
|
|
268
|
+
*/
|
|
269
|
+
shareableEntitlementName?: pulumi.Input<string>;
|
|
270
|
+
/**
|
|
271
|
+
* The ID of the zone where the ruleset is being created. Conflicts with `"accountId"`.
|
|
272
|
+
*/
|
|
273
|
+
zoneId?: pulumi.Input<string>;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* The set of arguments for constructing a Ruleset resource.
|
|
277
|
+
*/
|
|
278
|
+
export interface RulesetArgs {
|
|
279
|
+
/**
|
|
280
|
+
* The ID of the account where the ruleset is being created. Conflicts with `"zoneId"`.
|
|
281
|
+
*/
|
|
282
|
+
accountId?: pulumi.Input<string>;
|
|
283
|
+
/**
|
|
284
|
+
* Brief summary of the ruleset rule and its intended use.
|
|
285
|
+
*/
|
|
286
|
+
description: pulumi.Input<string>;
|
|
287
|
+
/**
|
|
288
|
+
* Type of Ruleset to create. Valid values are `"custom"`, `"managed"`, `"root"`, `"schema"` or `"zone"`.
|
|
289
|
+
*/
|
|
290
|
+
kind: pulumi.Input<string>;
|
|
291
|
+
/**
|
|
292
|
+
* Name of the HTTP request header to target.
|
|
293
|
+
*/
|
|
294
|
+
name: pulumi.Input<string>;
|
|
295
|
+
/**
|
|
296
|
+
* Point in the request/response lifecycle where the ruleset will be created. Valid values are `"ddosL4"`, `"ddosL7"`, `"httpRequestFirewallCustom"`, `"httpRequestFirewallManaged"`, `"httpRequestLateTransform"`, `"httpRequestMain"`, `"httpRequestSanitize"`, `"httpRequestTransform"`, `"httpResponseFirewallManaged"`, `"magicTransit"`, or `"httpRatelimit"`.
|
|
297
|
+
*/
|
|
298
|
+
phase: pulumi.Input<string>;
|
|
299
|
+
/**
|
|
300
|
+
* List of rule-based overrides (refer to the nested schema).
|
|
301
|
+
*/
|
|
302
|
+
rules?: pulumi.Input<pulumi.Input<inputs.RulesetRule>[]>;
|
|
303
|
+
/**
|
|
304
|
+
* Name of entitlement that is shareable between entities.
|
|
305
|
+
*/
|
|
306
|
+
shareableEntitlementName?: pulumi.Input<string>;
|
|
307
|
+
/**
|
|
308
|
+
* The ID of the zone where the ruleset is being created. Conflicts with `"accountId"`.
|
|
309
|
+
*/
|
|
310
|
+
zoneId?: pulumi.Input<string>;
|
|
311
|
+
}
|
package/ruleset.js
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
|
|
3
|
+
// *** Do not edit by hand unless you're certain you know what you are doing! ***
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
const pulumi = require("@pulumi/pulumi");
|
|
6
|
+
const utilities = require("./utilities");
|
|
7
|
+
/**
|
|
8
|
+
* The [Cloudflare Ruleset Engine](https://developers.cloudflare.com/firewall/cf-rulesets)
|
|
9
|
+
* allows you to create and deploy rules and rulesets.
|
|
10
|
+
* The engine syntax, inspired by the Wireshark Display Filter language, is the
|
|
11
|
+
* same syntax used in custom Firewall Rules. Cloudflare uses the Ruleset Engine
|
|
12
|
+
* in different products, allowing you to configure several products using the same
|
|
13
|
+
* basic syntax.
|
|
14
|
+
*
|
|
15
|
+
* ## Example Usage
|
|
16
|
+
*
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
19
|
+
* import * as cloudflare from "@pulumi/cloudflare";
|
|
20
|
+
*
|
|
21
|
+
* // Magic Transit
|
|
22
|
+
* const magicTransitExample = new cloudflare.Ruleset("magic_transit_example", {
|
|
23
|
+
* accountId: "d41d8cd98f00b204e9800998ecf8427e",
|
|
24
|
+
* description: "example magic transit ruleset description",
|
|
25
|
+
* kind: "root",
|
|
26
|
+
* name: "account magic transit",
|
|
27
|
+
* phase: "magic_transit",
|
|
28
|
+
* rules: [{
|
|
29
|
+
* action: "allow",
|
|
30
|
+
* description: "Allow TCP Ephemeral Ports",
|
|
31
|
+
* expression: "tcp.dstport in { 32768..65535 }",
|
|
32
|
+
* }],
|
|
33
|
+
* });
|
|
34
|
+
* // Zone-level WAF Managed Ruleset
|
|
35
|
+
* const zoneLevelManagedWaf = new cloudflare.Ruleset("zone_level_managed_waf", {
|
|
36
|
+
* description: "managed WAF ruleset description",
|
|
37
|
+
* kind: "zone",
|
|
38
|
+
* name: "managed WAF",
|
|
39
|
+
* phase: "http_request_firewall_managed",
|
|
40
|
+
* rules: [{
|
|
41
|
+
* action: "execute",
|
|
42
|
+
* actionParameters: {
|
|
43
|
+
* id: "efb7b8c949ac4650a09736fc376e9aee",
|
|
44
|
+
* },
|
|
45
|
+
* description: "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset",
|
|
46
|
+
* enabled: true,
|
|
47
|
+
* expression: "true",
|
|
48
|
+
* }],
|
|
49
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
50
|
+
* });
|
|
51
|
+
* // Zone-level WAF with tag-based overrides
|
|
52
|
+
* const zoneLevelManagedWafWithCategoryBasedOverrides = new cloudflare.Ruleset("zone_level_managed_waf_with_category_based_overrides", {
|
|
53
|
+
* description: "managed WAF with tag-based overrides ruleset description",
|
|
54
|
+
* kind: "zone",
|
|
55
|
+
* name: "managed WAF with tag-based overrides",
|
|
56
|
+
* phase: "http_request_firewall_managed",
|
|
57
|
+
* rules: [{
|
|
58
|
+
* action: "execute",
|
|
59
|
+
* actionParameters: {
|
|
60
|
+
* id: "efb7b8c949ac4650a09736fc376e9aee",
|
|
61
|
+
* overrides: {
|
|
62
|
+
* categories: [
|
|
63
|
+
* {
|
|
64
|
+
* action: "block",
|
|
65
|
+
* category: "wordpress",
|
|
66
|
+
* enabled: true,
|
|
67
|
+
* },
|
|
68
|
+
* {
|
|
69
|
+
* action: "block",
|
|
70
|
+
* category: "joomla",
|
|
71
|
+
* enabled: true,
|
|
72
|
+
* },
|
|
73
|
+
* ],
|
|
74
|
+
* },
|
|
75
|
+
* },
|
|
76
|
+
* description: "overrides to only enable wordpress rules to block",
|
|
77
|
+
* enabled: false,
|
|
78
|
+
* expression: "true",
|
|
79
|
+
* }],
|
|
80
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
81
|
+
* });
|
|
82
|
+
* // Rewrite the URI path component to a static path
|
|
83
|
+
* const transformUriRulePath = new cloudflare.Ruleset("transform_uri_rule_path", {
|
|
84
|
+
* description: "change the URI path to a new static path",
|
|
85
|
+
* kind: "zone",
|
|
86
|
+
* name: "transform rule for URI path",
|
|
87
|
+
* phase: "http_request_transform",
|
|
88
|
+
* rules: [{
|
|
89
|
+
* action: "rewrite",
|
|
90
|
+
* actionParameters: {
|
|
91
|
+
* uri: {
|
|
92
|
+
* path: {
|
|
93
|
+
* value: "/my-new-route",
|
|
94
|
+
* },
|
|
95
|
+
* },
|
|
96
|
+
* },
|
|
97
|
+
* description: "example URI path transform rule",
|
|
98
|
+
* enabled: true,
|
|
99
|
+
* expression: "(http.host eq \"example.com\" and http.uri.path eq \"/old-path\")",
|
|
100
|
+
* }],
|
|
101
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
102
|
+
* });
|
|
103
|
+
* // Rewrite the URI query component to a static query
|
|
104
|
+
* const transformUriRuleQuery = new cloudflare.Ruleset("transform_uri_rule_query", {
|
|
105
|
+
* description: "change the URI query to a new static query",
|
|
106
|
+
* kind: "zone",
|
|
107
|
+
* name: "transform rule for URI query parameter",
|
|
108
|
+
* phase: "http_request_transform",
|
|
109
|
+
* rules: [{
|
|
110
|
+
* action: "rewrite",
|
|
111
|
+
* actionParameters: {
|
|
112
|
+
* uri: {
|
|
113
|
+
* query: {
|
|
114
|
+
* value: "old=new_again",
|
|
115
|
+
* },
|
|
116
|
+
* },
|
|
117
|
+
* },
|
|
118
|
+
* description: "URI transformation query example",
|
|
119
|
+
* enabled: true,
|
|
120
|
+
* expression: "true",
|
|
121
|
+
* }],
|
|
122
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
123
|
+
* });
|
|
124
|
+
* // Rewrite HTTP headers to a modified values
|
|
125
|
+
* const transformUriHttpHeaders = new cloudflare.Ruleset("transform_uri_http_headers", {
|
|
126
|
+
* description: "modify HTTP headers before reaching origin",
|
|
127
|
+
* kind: "zone",
|
|
128
|
+
* name: "transform rule for HTTP headers",
|
|
129
|
+
* phase: "http_request_late_transform",
|
|
130
|
+
* rules: [{
|
|
131
|
+
* action: "rewrite",
|
|
132
|
+
* actionParameters: {
|
|
133
|
+
* headers: [
|
|
134
|
+
* {
|
|
135
|
+
* name: "example-http-header-1",
|
|
136
|
+
* operation: "set",
|
|
137
|
+
* value: "my-http-header-value-1",
|
|
138
|
+
* },
|
|
139
|
+
* {
|
|
140
|
+
* expression: "cf.zone.name",
|
|
141
|
+
* name: "example-http-header-2",
|
|
142
|
+
* operation: "set",
|
|
143
|
+
* },
|
|
144
|
+
* {
|
|
145
|
+
* name: "example-http-header-3-to-remove",
|
|
146
|
+
* operation: "remove",
|
|
147
|
+
* },
|
|
148
|
+
* ],
|
|
149
|
+
* },
|
|
150
|
+
* description: "example request header transform rule",
|
|
151
|
+
* enabled: false,
|
|
152
|
+
* expression: "true",
|
|
153
|
+
* }],
|
|
154
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
155
|
+
* });
|
|
156
|
+
* // HTTP rate limit for an API route
|
|
157
|
+
* const rateLimitingExample = new cloudflare.Ruleset("rate_limiting_example", {
|
|
158
|
+
* description: "apply HTTP rate limiting for a route",
|
|
159
|
+
* kind: "zone",
|
|
160
|
+
* name: "restrict API requests count",
|
|
161
|
+
* phase: "http_ratelimit",
|
|
162
|
+
* rules: [{
|
|
163
|
+
* action: "block",
|
|
164
|
+
* description: "rate limit for API",
|
|
165
|
+
* enabled: true,
|
|
166
|
+
* expression: "(http.request.uri.path matches \"^/api/\")",
|
|
167
|
+
* ratelimit: {
|
|
168
|
+
* characteristics: [
|
|
169
|
+
* "cf.colo.id",
|
|
170
|
+
* "ip.src",
|
|
171
|
+
* ],
|
|
172
|
+
* mitigationTimeout: 600,
|
|
173
|
+
* period: 60,
|
|
174
|
+
* requestsPerPeriod: 100,
|
|
175
|
+
* },
|
|
176
|
+
* }],
|
|
177
|
+
* zoneId: "cb029e245cfdd66dc8d2e570d5dd3322",
|
|
178
|
+
* });
|
|
179
|
+
* ```
|
|
180
|
+
*
|
|
181
|
+
* ## Import
|
|
182
|
+
*
|
|
183
|
+
* Currently, you cannot import rulesets.
|
|
184
|
+
*/
|
|
185
|
+
class Ruleset extends pulumi.CustomResource {
|
|
186
|
+
constructor(name, argsOrState, opts) {
|
|
187
|
+
let inputs = {};
|
|
188
|
+
opts = opts || {};
|
|
189
|
+
if (opts.id) {
|
|
190
|
+
const state = argsOrState;
|
|
191
|
+
inputs["accountId"] = state ? state.accountId : undefined;
|
|
192
|
+
inputs["description"] = state ? state.description : undefined;
|
|
193
|
+
inputs["kind"] = state ? state.kind : undefined;
|
|
194
|
+
inputs["name"] = state ? state.name : undefined;
|
|
195
|
+
inputs["phase"] = state ? state.phase : undefined;
|
|
196
|
+
inputs["rules"] = state ? state.rules : undefined;
|
|
197
|
+
inputs["shareableEntitlementName"] = state ? state.shareableEntitlementName : undefined;
|
|
198
|
+
inputs["zoneId"] = state ? state.zoneId : undefined;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
const args = argsOrState;
|
|
202
|
+
if ((!args || args.description === undefined) && !opts.urn) {
|
|
203
|
+
throw new Error("Missing required property 'description'");
|
|
204
|
+
}
|
|
205
|
+
if ((!args || args.kind === undefined) && !opts.urn) {
|
|
206
|
+
throw new Error("Missing required property 'kind'");
|
|
207
|
+
}
|
|
208
|
+
if ((!args || args.name === undefined) && !opts.urn) {
|
|
209
|
+
throw new Error("Missing required property 'name'");
|
|
210
|
+
}
|
|
211
|
+
if ((!args || args.phase === undefined) && !opts.urn) {
|
|
212
|
+
throw new Error("Missing required property 'phase'");
|
|
213
|
+
}
|
|
214
|
+
inputs["accountId"] = args ? args.accountId : undefined;
|
|
215
|
+
inputs["description"] = args ? args.description : undefined;
|
|
216
|
+
inputs["kind"] = args ? args.kind : undefined;
|
|
217
|
+
inputs["name"] = args ? args.name : undefined;
|
|
218
|
+
inputs["phase"] = args ? args.phase : undefined;
|
|
219
|
+
inputs["rules"] = args ? args.rules : undefined;
|
|
220
|
+
inputs["shareableEntitlementName"] = args ? args.shareableEntitlementName : undefined;
|
|
221
|
+
inputs["zoneId"] = args ? args.zoneId : undefined;
|
|
222
|
+
}
|
|
223
|
+
if (!opts.version) {
|
|
224
|
+
opts = pulumi.mergeOptions(opts, { version: utilities.getVersion() });
|
|
225
|
+
}
|
|
226
|
+
super(Ruleset.__pulumiType, name, inputs, opts);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get an existing Ruleset resource's state with the given name, ID, and optional extra
|
|
230
|
+
* properties used to qualify the lookup.
|
|
231
|
+
*
|
|
232
|
+
* @param name The _unique_ name of the resulting resource.
|
|
233
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
234
|
+
* @param state Any extra arguments used during the lookup.
|
|
235
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
236
|
+
*/
|
|
237
|
+
static get(name, id, state, opts) {
|
|
238
|
+
return new Ruleset(name, state, Object.assign(Object.assign({}, opts), { id: id }));
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Returns true if the given object is an instance of Ruleset. This is designed to work even
|
|
242
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
243
|
+
*/
|
|
244
|
+
static isInstance(obj) {
|
|
245
|
+
if (obj === undefined || obj === null) {
|
|
246
|
+
return false;
|
|
247
|
+
}
|
|
248
|
+
return obj['__pulumiType'] === Ruleset.__pulumiType;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
exports.Ruleset = Ruleset;
|
|
252
|
+
/** @internal */
|
|
253
|
+
Ruleset.__pulumiType = 'cloudflare:index/ruleset:Ruleset';
|
|
254
|
+
//# sourceMappingURL=ruleset.js.map
|
package/ruleset.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruleset.js","sourceRoot":"","sources":["../ruleset.ts"],"names":[],"mappings":";AAAA,wFAAwF;AACxF,iFAAiF;;AAEjF,yCAAyC;AAEzC,yCAAyC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiLG;AACH,MAAa,OAAQ,SAAQ,MAAM,CAAC,cAAc;IAqE9C,YAAY,IAAY,EAAE,WAAwC,EAAE,IAAmC;QACnG,IAAI,MAAM,GAAkB,EAAE,CAAC;QAC/B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,MAAM,KAAK,GAAG,WAAuC,CAAC;YACtD,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,MAAM,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAClD,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAClD,MAAM,CAAC,0BAA0B,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;YACxF,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;SACvD;aAAM;YACH,MAAM,IAAI,GAAG,WAAsC,CAAC;YACpD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACxD,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;aAC9D;YACD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACvD;YACD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjD,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACvD;YACD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClD,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;aACxD;YACD,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YACxD,MAAM,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAChD,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YAChD,MAAM,CAAC,0BAA0B,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC,SAAS,CAAC;YACtF,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;SACrD;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,UAAU,EAAE,EAAC,CAAC,CAAC;SACxE;QACD,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IA5GD;;;;;;;;OAQG;IACI,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAA2B,EAAE,KAAoB,EAAE,IAAmC;QAClH,OAAO,IAAI,OAAO,CAAC,IAAI,EAAO,KAAK,kCAAO,IAAI,KAAE,EAAE,EAAE,EAAE,IAAG,CAAC;IAC9D,CAAC;IAKD;;;OAGG;IACI,MAAM,CAAC,UAAU,CAAC,GAAQ;QAC7B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE;YACnC,OAAO,KAAK,CAAC;SAChB;QACD,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC;IACxD,CAAC;;AA1BL,0BA8GC;AAhGG,gBAAgB;AACO,oBAAY,GAAG,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import * as pulumi from "@pulumi/pulumi";
|
|
2
|
+
import { input as inputs, output as outputs } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Provides a Cloudflare Teams Account resource. The Teams Account resource defines configuration for secure web gateway.
|
|
5
|
+
*
|
|
6
|
+
* ## Example Usage
|
|
7
|
+
*
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import * as pulumi from "@pulumi/pulumi";
|
|
10
|
+
* import * as cloudflare from "@pulumi/cloudflare";
|
|
11
|
+
*
|
|
12
|
+
* const main = new cloudflare.TeamsAccount("main", {
|
|
13
|
+
* accountId: "1d5fdc9e88c8a8c4518b068cd94331fe",
|
|
14
|
+
* blockPage: {
|
|
15
|
+
* backgroundColor: "#000000",
|
|
16
|
+
* footerText: "hello",
|
|
17
|
+
* headerText: "hello",
|
|
18
|
+
* logoPath: "https://google.com",
|
|
19
|
+
* },
|
|
20
|
+
* tlsDecryptEnabled: true,
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* ## Import
|
|
25
|
+
*
|
|
26
|
+
* Since a Teams account does not have a unique resource ID, configuration can be imported using the account ID.
|
|
27
|
+
*
|
|
28
|
+
* ```sh
|
|
29
|
+
* $ pulumi import cloudflare:index/teamsAccount:TeamsAccount example cb029e245cfdd66dc8d2e570d5dd3322
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare class TeamsAccount extends pulumi.CustomResource {
|
|
33
|
+
/**
|
|
34
|
+
* Get an existing TeamsAccount resource's state with the given name, ID, and optional extra
|
|
35
|
+
* properties used to qualify the lookup.
|
|
36
|
+
*
|
|
37
|
+
* @param name The _unique_ name of the resulting resource.
|
|
38
|
+
* @param id The _unique_ provider ID of the resource to lookup.
|
|
39
|
+
* @param state Any extra arguments used during the lookup.
|
|
40
|
+
* @param opts Optional settings to control the behavior of the CustomResource.
|
|
41
|
+
*/
|
|
42
|
+
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: TeamsAccountState, opts?: pulumi.CustomResourceOptions): TeamsAccount;
|
|
43
|
+
/**
|
|
44
|
+
* Returns true if the given object is an instance of TeamsAccount. This is designed to work even
|
|
45
|
+
* when multiple copies of the Pulumi SDK have been loaded into the same process.
|
|
46
|
+
*/
|
|
47
|
+
static isInstance(obj: any): obj is TeamsAccount;
|
|
48
|
+
/**
|
|
49
|
+
* The account to which the teams location should be added.
|
|
50
|
+
*/
|
|
51
|
+
readonly accountId: pulumi.Output<string>;
|
|
52
|
+
readonly activityLogEnabled: pulumi.Output<boolean | undefined>;
|
|
53
|
+
/**
|
|
54
|
+
* Configuration for antivirus traffic scanning.
|
|
55
|
+
*/
|
|
56
|
+
readonly antivirus: pulumi.Output<outputs.TeamsAccountAntivirus | undefined>;
|
|
57
|
+
/**
|
|
58
|
+
* Configuration for a custom block page.
|
|
59
|
+
*/
|
|
60
|
+
readonly blockPage: pulumi.Output<outputs.TeamsAccountBlockPage | undefined>;
|
|
61
|
+
/**
|
|
62
|
+
* Indicator that decryption of TLS traffic is enabled.
|
|
63
|
+
*/
|
|
64
|
+
readonly tlsDecryptEnabled: pulumi.Output<boolean | undefined>;
|
|
65
|
+
/**
|
|
66
|
+
* Create a TeamsAccount resource with the given unique name, arguments, and options.
|
|
67
|
+
*
|
|
68
|
+
* @param name The _unique_ name of the resource.
|
|
69
|
+
* @param args The arguments to use to populate this resource's properties.
|
|
70
|
+
* @param opts A bag of options that control this resource's behavior.
|
|
71
|
+
*/
|
|
72
|
+
constructor(name: string, args: TeamsAccountArgs, opts?: pulumi.CustomResourceOptions);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Input properties used for looking up and filtering TeamsAccount resources.
|
|
76
|
+
*/
|
|
77
|
+
export interface TeamsAccountState {
|
|
78
|
+
/**
|
|
79
|
+
* The account to which the teams location should be added.
|
|
80
|
+
*/
|
|
81
|
+
accountId?: pulumi.Input<string>;
|
|
82
|
+
activityLogEnabled?: pulumi.Input<boolean>;
|
|
83
|
+
/**
|
|
84
|
+
* Configuration for antivirus traffic scanning.
|
|
85
|
+
*/
|
|
86
|
+
antivirus?: pulumi.Input<inputs.TeamsAccountAntivirus>;
|
|
87
|
+
/**
|
|
88
|
+
* Configuration for a custom block page.
|
|
89
|
+
*/
|
|
90
|
+
blockPage?: pulumi.Input<inputs.TeamsAccountBlockPage>;
|
|
91
|
+
/**
|
|
92
|
+
* Indicator that decryption of TLS traffic is enabled.
|
|
93
|
+
*/
|
|
94
|
+
tlsDecryptEnabled?: pulumi.Input<boolean>;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The set of arguments for constructing a TeamsAccount resource.
|
|
98
|
+
*/
|
|
99
|
+
export interface TeamsAccountArgs {
|
|
100
|
+
/**
|
|
101
|
+
* The account to which the teams location should be added.
|
|
102
|
+
*/
|
|
103
|
+
accountId: pulumi.Input<string>;
|
|
104
|
+
activityLogEnabled?: pulumi.Input<boolean>;
|
|
105
|
+
/**
|
|
106
|
+
* Configuration for antivirus traffic scanning.
|
|
107
|
+
*/
|
|
108
|
+
antivirus?: pulumi.Input<inputs.TeamsAccountAntivirus>;
|
|
109
|
+
/**
|
|
110
|
+
* Configuration for a custom block page.
|
|
111
|
+
*/
|
|
112
|
+
blockPage?: pulumi.Input<inputs.TeamsAccountBlockPage>;
|
|
113
|
+
/**
|
|
114
|
+
* Indicator that decryption of TLS traffic is enabled.
|
|
115
|
+
*/
|
|
116
|
+
tlsDecryptEnabled?: pulumi.Input<boolean>;
|
|
117
|
+
}
|