@drunk-pulumi/azure 1.0.29 → 1.0.31
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/Builder/ApimApiBuilder.d.ts +7 -6
- package/Builder/ApimApiBuilder.js +113 -116
- package/Builder/ApimPolicyBuilder.js +14 -22
- package/Builder/ApimProductBuilder.js +24 -18
- package/Builder/ApimRootBuilder.d.ts +7 -4
- package/Builder/ApimRootBuilder.js +39 -9
- package/Builder/AzAppBuilder.d.ts +3 -0
- package/Builder/AzAppBuilder.js +95 -0
- package/Builder/DnsZoneBuilder.js +5 -5
- package/Builder/PrivateDnsZoneBuilder.d.ts +3 -2
- package/Builder/PrivateDnsZoneBuilder.js +7 -7
- package/Builder/index.d.ts +1 -0
- package/Builder/index.js +4 -2
- package/Builder/types/apimProductBuilder.d.ts +4 -19
- package/Builder/types/azAppBuilder.d.ts +25 -0
- package/Builder/types/azAppBuilder.js +3 -0
- package/Builder/types/dnsZoneBuilder.d.ts +7 -8
- package/Builder/types/index.d.ts +1 -1
- package/Builder/types/index.js +2 -2
- package/Builder/types/privateDnsZoneBuilder.d.ts +7 -8
- package/Common/Naming.d.ts +1 -0
- package/Common/Naming.js +2 -1
- package/Sql/index.js +4 -4
- package/VNet/Subnet.d.ts +4 -4
- package/VNet/Subnet.js +10 -10
- package/package.json +2 -3
- package/Builder/ApimWorkspaceBuilder.d.ts +0 -10
- package/Builder/ApimWorkspaceBuilder.js +0 -57
- package/Builder/types/apimWorkspaceBuilder.d.ts +0 -2
- package/Builder/types/apimWorkspaceBuilder.js +0 -3
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import { Input } from '@pulumi/pulumi';
|
|
2
2
|
import { ResourceInfo } from '../types';
|
|
3
|
-
import { ApimApiKeysType, ApimApiPolicyType, ApimApiServiceUrlType, ApimChildBuilderProps, BuilderAsync, IApimApiBuilder, IApimApiServiceBuilder
|
|
3
|
+
import { ApimApiKeysType, ApimApiPolicyType, ApimApiProps, ApimApiServiceUrlType, ApimChildBuilderProps, BuilderAsync, IApimApiBuilder, IApimApiServiceBuilder } from './types';
|
|
4
4
|
export default class ApimApiBuilder extends BuilderAsync<ResourceInfo> implements IApimApiServiceBuilder, IApimApiBuilder {
|
|
5
|
-
private
|
|
5
|
+
private args;
|
|
6
|
+
private _apiSetInstance;
|
|
6
7
|
private _serviceUrl;
|
|
7
8
|
private _keyParameters;
|
|
8
9
|
private _apis;
|
|
9
|
-
private _apiInstanceName;
|
|
10
|
-
private _apiSets;
|
|
10
|
+
private readonly _apiInstanceName;
|
|
11
11
|
private _policyString;
|
|
12
|
-
constructor(
|
|
12
|
+
constructor(args: ApimChildBuilderProps & {
|
|
13
13
|
requiredSubscription: boolean;
|
|
14
14
|
productId: Input<string>;
|
|
15
15
|
});
|
|
16
16
|
withPolicies(props: ApimApiPolicyType): IApimApiBuilder;
|
|
17
17
|
withServiceUrl(props: ApimApiServiceUrlType): IApimApiBuilder;
|
|
18
|
-
withVersion(version: string,
|
|
18
|
+
withVersion(version: string, props: ApimApiProps): IApimApiBuilder;
|
|
19
19
|
withKeys(props: ApimApiKeysType): IApimApiBuilder;
|
|
20
|
+
private buildApiSet;
|
|
20
21
|
private buildApis;
|
|
21
22
|
build(): Promise<ResourceInfo>;
|
|
22
23
|
}
|
|
@@ -32,19 +32,9 @@ const pulumi_1 = require("@pulumi/pulumi");
|
|
|
32
32
|
const Common_1 = require("../Common");
|
|
33
33
|
const ApimPolicyBuilder_1 = __importDefault(require("./ApimPolicyBuilder"));
|
|
34
34
|
const types_2 = require("./types");
|
|
35
|
-
class ApimApiRevisionBuilder {
|
|
36
|
-
version;
|
|
37
|
-
revisions = [];
|
|
38
|
-
constructor(version) {
|
|
39
|
-
this.version = version;
|
|
40
|
-
}
|
|
41
|
-
withRevision(props) {
|
|
42
|
-
this.revisions.push(props);
|
|
43
|
-
return this;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
35
|
class ApimApiBuilder extends types_2.BuilderAsync {
|
|
47
|
-
|
|
36
|
+
args;
|
|
37
|
+
_apiSetInstance = undefined;
|
|
48
38
|
_serviceUrl = undefined;
|
|
49
39
|
_keyParameters = {
|
|
50
40
|
header: 'x-api-key',
|
|
@@ -52,21 +42,20 @@ class ApimApiBuilder extends types_2.BuilderAsync {
|
|
|
52
42
|
};
|
|
53
43
|
_apis = {};
|
|
54
44
|
_apiInstanceName;
|
|
55
|
-
_apiSets = {};
|
|
56
45
|
_policyString = undefined;
|
|
57
|
-
constructor(
|
|
58
|
-
super(
|
|
59
|
-
this.
|
|
60
|
-
this._apiInstanceName = `${
|
|
46
|
+
constructor(args) {
|
|
47
|
+
super(args);
|
|
48
|
+
this.args = args;
|
|
49
|
+
this._apiInstanceName = `${args.name}-set`.toLowerCase();
|
|
61
50
|
//Empty Policy
|
|
62
51
|
this._policyString = new ApimPolicyBuilder_1.default({
|
|
63
|
-
...
|
|
52
|
+
...args,
|
|
64
53
|
name: this._apiInstanceName,
|
|
65
54
|
}).build();
|
|
66
55
|
}
|
|
67
56
|
withPolicies(props) {
|
|
68
57
|
this._policyString = props(new ApimPolicyBuilder_1.default({
|
|
69
|
-
...this.
|
|
58
|
+
...this.args,
|
|
70
59
|
name: this._apiInstanceName,
|
|
71
60
|
})).build();
|
|
72
61
|
return this;
|
|
@@ -75,123 +64,131 @@ class ApimApiBuilder extends types_2.BuilderAsync {
|
|
|
75
64
|
this._serviceUrl = props;
|
|
76
65
|
return this;
|
|
77
66
|
}
|
|
78
|
-
withVersion(version,
|
|
79
|
-
|
|
80
|
-
builder(b);
|
|
81
|
-
this._apis[version] = b.revisions;
|
|
67
|
+
withVersion(version, props) {
|
|
68
|
+
this._apis[version] = props;
|
|
82
69
|
return this;
|
|
83
70
|
}
|
|
84
71
|
withKeys(props) {
|
|
85
|
-
this._keyParameters = props;
|
|
72
|
+
this._keyParameters = { ...this._keyParameters, ...props };
|
|
86
73
|
return this;
|
|
87
74
|
}
|
|
75
|
+
buildApiSet() {
|
|
76
|
+
//Create ApiSet
|
|
77
|
+
this._apiSetInstance = new apim.ApiVersionSet(this._apiInstanceName, {
|
|
78
|
+
versionSetId: this._apiInstanceName,
|
|
79
|
+
displayName: this._apiInstanceName,
|
|
80
|
+
description: this._apiInstanceName,
|
|
81
|
+
serviceName: this.args.apimServiceName,
|
|
82
|
+
resourceGroupName: this.args.group.resourceGroupName,
|
|
83
|
+
versioningScheme: types_1.enums.apimanagement.VersioningScheme.Segment,
|
|
84
|
+
}, { dependsOn: this.args.dependsOn, deleteBeforeReplace: true });
|
|
85
|
+
}
|
|
88
86
|
async buildApis() {
|
|
89
87
|
const date = new Date();
|
|
90
|
-
const tasks = Object.keys(this._apis).map((
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
versionSetId: setName,
|
|
95
|
-
displayName: setName,
|
|
96
|
-
description: setName,
|
|
97
|
-
serviceName: this.props.apimServiceName,
|
|
98
|
-
resourceGroupName: this.props.group.resourceGroupName,
|
|
99
|
-
versioningScheme: types_1.enums.apimanagement.VersioningScheme.Segment,
|
|
100
|
-
}, { dependsOn: this.props.dependsOn, deleteBeforeReplace: true });
|
|
101
|
-
this._apiSets[k] = apiSet;
|
|
88
|
+
const tasks = Object.keys(this._apis).map(async (v) => {
|
|
89
|
+
const apiName = `${this.args.name}-${v}-api`.toLowerCase();
|
|
90
|
+
const revision = 1;
|
|
91
|
+
const apiRevName = `${apiName};rev=${revision}`;
|
|
102
92
|
//Create Api
|
|
103
|
-
const
|
|
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
|
-
|
|
93
|
+
const apiProps = this._apis[v];
|
|
94
|
+
const api = new apim.Api(apiName, {
|
|
95
|
+
apiId: apiName,
|
|
96
|
+
apiVersionSetId: this._apiSetInstance.id,
|
|
97
|
+
displayName: apiName,
|
|
98
|
+
description: apiName,
|
|
99
|
+
serviceName: this.args.apimServiceName,
|
|
100
|
+
resourceGroupName: this.args.group.resourceGroupName,
|
|
101
|
+
apiType: types_1.enums.apimanagement.ApiType.Http,
|
|
102
|
+
isCurrent: true,
|
|
103
|
+
protocols: [types_1.enums.apimanagement.Protocol.Https],
|
|
104
|
+
subscriptionRequired: this.args.requiredSubscription,
|
|
105
|
+
apiVersion: v,
|
|
106
|
+
apiVersionDescription: `The version ${v} of ${this.args.name}`,
|
|
107
|
+
apiRevision: revision.toString(),
|
|
108
|
+
apiRevisionDescription: `${apiRevName} ${date.toLocaleDateString()}`,
|
|
109
|
+
subscriptionKeyParameterNames: this._keyParameters,
|
|
110
|
+
path: this._serviceUrl.apiPath,
|
|
111
|
+
serviceUrl: `${this._serviceUrl.serviceUrl}/${v}`,
|
|
112
|
+
format: 'swaggerUrl' in apiProps
|
|
113
|
+
? types_1.enums.apimanagement.ContentFormat.Openapi_json
|
|
114
|
+
: undefined,
|
|
115
|
+
value: 'swaggerUrl' in apiProps
|
|
116
|
+
? await Common_1.openApi.getImportConfig(apiProps.swaggerUrl, v)
|
|
117
|
+
: undefined,
|
|
118
|
+
}, {
|
|
119
|
+
dependsOn: this._apiSetInstance,
|
|
120
|
+
deleteBeforeReplace: true,
|
|
121
|
+
customTimeouts: { create: '20m', update: '20m' },
|
|
122
|
+
});
|
|
123
|
+
//Link API to Product
|
|
124
|
+
new apim.ProductApi(apiName, {
|
|
125
|
+
serviceName: this.args.apimServiceName,
|
|
126
|
+
resourceGroupName: this.args.group.resourceGroupName,
|
|
127
|
+
productId: this.args.productId,
|
|
128
|
+
apiId: apiName,
|
|
129
|
+
}, { dependsOn: api });
|
|
130
|
+
//Apply Policy for the API
|
|
131
|
+
if (this._policyString) {
|
|
132
|
+
new apim.ApiPolicy(`${apiName}-policy`, {
|
|
133
|
+
serviceName: this.args.apimServiceName,
|
|
134
|
+
resourceGroupName: this.args.group.resourceGroupName,
|
|
136
135
|
apiId: apiName,
|
|
136
|
+
policyId: 'policy',
|
|
137
|
+
format: 'xml',
|
|
138
|
+
value: this._policyString,
|
|
137
139
|
}, { dependsOn: api });
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
140
|
+
}
|
|
141
|
+
//Create Aoi Operations
|
|
142
|
+
if ('operations' in apiProps) {
|
|
143
|
+
apiProps.operations.map((op) => {
|
|
144
|
+
const opsName = op.name.replace(/\//g, '');
|
|
145
|
+
const opsRsName = `${apiRevName}-ops-${opsName}-${op.method}`.toLowerCase();
|
|
146
|
+
return new apim.ApiOperation(opsRsName, {
|
|
147
|
+
operationId: opsName,
|
|
148
|
+
serviceName: this.args.apimServiceName,
|
|
149
|
+
resourceGroupName: this.args.group.resourceGroupName,
|
|
143
150
|
apiId: apiName,
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
151
|
+
displayName: op.name,
|
|
152
|
+
description: op.name,
|
|
153
|
+
urlTemplate: op.urlTemplate ?? op.name,
|
|
154
|
+
method: op.method,
|
|
155
|
+
request: {
|
|
156
|
+
description: op.name,
|
|
157
|
+
headers: [],
|
|
158
|
+
queryParameters: [],
|
|
159
|
+
representations: [
|
|
160
|
+
{
|
|
161
|
+
contentType: 'application/json',
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
},
|
|
165
|
+
responses: op.responses ?? [
|
|
166
|
+
{
|
|
167
|
+
description: 'successful operation',
|
|
168
|
+
headers: [],
|
|
169
|
+
representations: [
|
|
170
|
+
{
|
|
171
|
+
contentType: 'application/json',
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
statusCode: 200,
|
|
175
|
+
},
|
|
176
|
+
],
|
|
147
177
|
}, { dependsOn: api });
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if ('operations' in rv) {
|
|
151
|
-
rv.operations.forEach((op) => {
|
|
152
|
-
const opsName = `${apiName}-${op.name}`;
|
|
153
|
-
const ops = new apim.ApiOperation(opsName, {
|
|
154
|
-
operationId: opsName,
|
|
155
|
-
apiId: api.id,
|
|
156
|
-
displayName: opsName,
|
|
157
|
-
description: opsName,
|
|
158
|
-
serviceName: this.props.apimServiceName,
|
|
159
|
-
resourceGroupName: this.props.group.resourceGroupName,
|
|
160
|
-
...op,
|
|
161
|
-
}, { dependsOn: api });
|
|
162
|
-
//Mock Operations
|
|
163
|
-
const opName = `${opsName}-policy`;
|
|
164
|
-
new apim.ApiOperationPolicy(opName, {
|
|
165
|
-
policyId: 'policy',
|
|
166
|
-
operationId: ops.id,
|
|
167
|
-
apiId: api.id,
|
|
168
|
-
serviceName: this.props.apimServiceName,
|
|
169
|
-
resourceGroupName: this.props.group.resourceGroupName,
|
|
170
|
-
format: 'xml',
|
|
171
|
-
value: new ApimPolicyBuilder_1.default({
|
|
172
|
-
...this.props,
|
|
173
|
-
name: opName,
|
|
174
|
-
})
|
|
175
|
-
.mockResponse({
|
|
176
|
-
code: 200,
|
|
177
|
-
contentType: `Welcome to ${Common_1.organization}`,
|
|
178
|
-
})
|
|
179
|
-
.build(),
|
|
180
|
-
}, { dependsOn: ops, deleteBeforeReplace: true });
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
});
|
|
178
|
+
});
|
|
179
|
+
}
|
|
184
180
|
});
|
|
185
181
|
await Promise.all(tasks);
|
|
186
182
|
}
|
|
187
183
|
async build() {
|
|
184
|
+
this.buildApiSet();
|
|
188
185
|
await this.buildApis();
|
|
189
186
|
return {
|
|
190
187
|
name: this._apiInstanceName,
|
|
191
|
-
group: this.
|
|
192
|
-
id: (0, pulumi_1.interpolate) `${this.
|
|
188
|
+
group: this.args.group,
|
|
189
|
+
id: (0, pulumi_1.interpolate) `${this.args.productId}`,
|
|
193
190
|
};
|
|
194
191
|
}
|
|
195
192
|
}
|
|
196
193
|
exports.default = ApimApiBuilder;
|
|
197
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbUFwaUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltQXBpQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNEQUFtRDtBQUNuRCwyQ0FBb0Q7QUFDcEQsc0NBQW9DO0FBRXBDLDRFQUFvRDtBQUNwRCxtQ0FTaUI7QUFFakIsTUFBcUIsY0FDbkIsU0FBUSxvQkFBMEI7SUFnQnhCO0lBYkYsZUFBZSxHQUFtQyxTQUFTLENBQUM7SUFFNUQsV0FBVyxHQUFzQyxTQUFTLENBQUM7SUFDM0QsY0FBYyxHQUFvQjtRQUN4QyxNQUFNLEVBQUUsV0FBVztRQUNuQixLQUFLLEVBQUUsU0FBUztLQUNqQixDQUFDO0lBQ00sS0FBSyxHQUFpQyxFQUFFLENBQUM7SUFFaEMsZ0JBQWdCLENBQVM7SUFDbEMsYUFBYSxHQUF1QixTQUFTLENBQUM7SUFFdEQsWUFDVSxJQUdQO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBTEosU0FBSSxHQUFKLElBQUksQ0FHWDtRQUdELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxjQUFjO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDJCQUFpQixDQUFDO1lBQ3pDLEdBQUcsSUFBSTtZQUNQLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzVCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBd0I7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQ3hCLElBQUksMkJBQWlCLENBQUM7WUFDcEIsR0FBRyxJQUFJLENBQUMsSUFBSTtZQUNaLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1NBQzVCLENBQUMsQ0FDSCxD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
|
|
@@ -22,14 +22,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
26
|
const apim = __importStar(require("@pulumi/azure-native/apimanagement"));
|
|
30
27
|
const Common_1 = require("../Common");
|
|
31
28
|
const Helper_1 = require("../VNet/Helper");
|
|
32
|
-
const xml_formatter_1 = __importDefault(require("xml-formatter"));
|
|
33
29
|
const types_1 = require("./types");
|
|
34
30
|
class ApimPolicyBuilder {
|
|
35
31
|
props;
|
|
@@ -132,7 +128,7 @@ class ApimPolicyBuilder {
|
|
|
132
128
|
}
|
|
133
129
|
buildHeaders() {
|
|
134
130
|
this._inboundPolicies.push(...this._headers.map((h) => {
|
|
135
|
-
let rs =
|
|
131
|
+
let rs = `\t<set-header name="${h.name}" exists-action="${h.type}">`;
|
|
136
132
|
if (h.value) {
|
|
137
133
|
rs += ` <value>${h.value}</value>`;
|
|
138
134
|
}
|
|
@@ -141,9 +137,9 @@ class ApimPolicyBuilder {
|
|
|
141
137
|
}));
|
|
142
138
|
}
|
|
143
139
|
buildCheckHeaders() {
|
|
144
|
-
this._inboundPolicies.push(...this._checkHeaders.map((ch) =>
|
|
140
|
+
this._inboundPolicies.push(...this._checkHeaders.map((ch) => `\t<check-header name="${ch.name}" failed-check-httpcode="401" failed-check-error-message="The header ${ch.name} is not found" ignore-case="true">
|
|
145
141
|
${ch.value ? ch.value.map((v) => `<value>${v}</value>`).join('\n') : ''}
|
|
146
|
-
</check-header>`));
|
|
142
|
+
\t</check-header>`));
|
|
147
143
|
}
|
|
148
144
|
buildMockResponse() {
|
|
149
145
|
this._inboundPolicies.push(...this._mockResponses.map((m) => `<mock-response status-code="${m.code ?? 200}" content-type="${m.contentType ?? 'application/json'}" />`));
|
|
@@ -249,7 +245,7 @@ class ApimPolicyBuilder {
|
|
|
249
245
|
}</value>
|
|
250
246
|
</set-header>`;
|
|
251
247
|
const checkHeader = `<choose>
|
|
252
|
-
<when condition="@(context.Request.Headers.GetValueOrDefault(
|
|
248
|
+
<when condition="@(context.Request.Headers.GetValueOrDefault("IpAddressValidation", "").Equals(Boolean.FalseString))">
|
|
253
249
|
<return-response>
|
|
254
250
|
<set-status code="403" reason="Forbidden"/>
|
|
255
251
|
<set-body>@{
|
|
@@ -268,12 +264,12 @@ class ApimPolicyBuilder {
|
|
|
268
264
|
serviceName: this.props.apimServiceName,
|
|
269
265
|
resourceGroupName: this.props.group.resourceGroupName,
|
|
270
266
|
format: 'xml',
|
|
271
|
-
value:
|
|
267
|
+
value: `
|
|
272
268
|
<fragment>
|
|
273
269
|
${setHeader}
|
|
274
270
|
${checkHeader}
|
|
275
271
|
</fragment>
|
|
276
|
-
|
|
272
|
+
`,
|
|
277
273
|
});
|
|
278
274
|
this._inboundPolicies.push(`<include-fragment fragment-id="${pfName}" />`);
|
|
279
275
|
}
|
|
@@ -314,8 +310,6 @@ class ApimPolicyBuilder {
|
|
|
314
310
|
// }
|
|
315
311
|
build() {
|
|
316
312
|
this.buildHeaders();
|
|
317
|
-
this.buildBaseUrl();
|
|
318
|
-
this.buildRewriteUri();
|
|
319
313
|
this.buildCacheOptions();
|
|
320
314
|
this.buildMockResponse();
|
|
321
315
|
this.buildRateLimit();
|
|
@@ -323,8 +317,10 @@ class ApimPolicyBuilder {
|
|
|
323
317
|
this.buildCors();
|
|
324
318
|
this.buildValidateJwtWhitelistIp();
|
|
325
319
|
this.buildWhiteListIps();
|
|
326
|
-
this.buildCheckHeaders();
|
|
327
320
|
this.buildFindAndReplace();
|
|
321
|
+
this.buildRewriteUri();
|
|
322
|
+
this.buildCheckHeaders();
|
|
323
|
+
this.buildBaseUrl();
|
|
328
324
|
//this.buildCustomRules();
|
|
329
325
|
//This must be a last rule
|
|
330
326
|
this.buildVerifyClientCert();
|
|
@@ -344,13 +340,13 @@ class ApimPolicyBuilder {
|
|
|
344
340
|
<outbound>
|
|
345
341
|
<base />
|
|
346
342
|
<set-header name="Strict-Transport-Security" exists-action="override">
|
|
347
|
-
<value>max-age=
|
|
343
|
+
<value>max-age=3600; includeSubDomains</value>
|
|
348
344
|
</set-header>
|
|
349
345
|
<set-header name="X-XSS-Protection" exists-action="override">
|
|
350
346
|
<value>1; mode=block</value>
|
|
351
347
|
</set-header>
|
|
352
348
|
<set-header name="Content-Security-Policy" exists-action="override">
|
|
353
|
-
<value>default-src 'self' data
|
|
349
|
+
<value>default-src 'self' data:</value>
|
|
354
350
|
</set-header>
|
|
355
351
|
<set-header name="X-Frame-Options" exists-action="override">
|
|
356
352
|
<value>Deny</value>
|
|
@@ -359,7 +355,7 @@ class ApimPolicyBuilder {
|
|
|
359
355
|
<value>nosniff</value>
|
|
360
356
|
</set-header>
|
|
361
357
|
<set-header name="Expect-Ct" exists-action="override">
|
|
362
|
-
<value>max-age=
|
|
358
|
+
<value>max-age=3600,enforce</value>
|
|
363
359
|
</set-header>
|
|
364
360
|
<set-header name="Cache-Control" exists-action="override">
|
|
365
361
|
<value>none</value>
|
|
@@ -373,12 +369,8 @@ class ApimPolicyBuilder {
|
|
|
373
369
|
<base />
|
|
374
370
|
</on-error>
|
|
375
371
|
</policies>`;
|
|
376
|
-
return
|
|
377
|
-
strictMode: true,
|
|
378
|
-
throwOnFailure: true,
|
|
379
|
-
forceSelfClosingEmptyTag: true,
|
|
380
|
-
});
|
|
372
|
+
return xmlPolicy;
|
|
381
373
|
}
|
|
382
374
|
}
|
|
383
375
|
exports.default = ApimPolicyBuilder;
|
|
384
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbVBvbGljeUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltUG9saWN5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNDQUF5QztBQUN6QywyQ0FBNkM7QUFDN0Msa0VBQXNDO0FBQ3RDLG1DQWtCaUI7QUFFakIsTUFBcUIsaUJBQWlCO0lBcUJUO0lBcEJuQixRQUFRLEdBQWdDLFNBQVMsQ0FBQztJQUNsRCxXQUFXLEdBQW1DLFNBQVMsQ0FBQztJQUN4RCxVQUFVLEdBQWtDLFNBQVMsQ0FBQztJQUN0RCxhQUFhLEdBQWlDLFNBQVMsQ0FBQztJQUN4RCxZQUFZLEdBQWlDLFNBQVMsQ0FBQztJQUN2RCxpQkFBaUIsR0FBbUMsU0FBUyxDQUFDO0lBQzlELEtBQUssR0FBNkIsU0FBUyxDQUFDO0lBQzVDLHVCQUF1QixHQUM3QixTQUFTLENBQUM7SUFDSixjQUFjLEdBQXdCLEVBQUUsQ0FBQztJQUN6QyxRQUFRLEdBQXdCLEVBQUUsQ0FBQztJQUNuQyxhQUFhLEdBQTBCLEVBQUUsQ0FBQztJQUMxQyxhQUFhLEdBQTBCLEVBQUUsQ0FBQztJQUMxQyxnQkFBZ0IsR0FBNkIsRUFBRSxDQUFDO0lBQ3hELDhEQUE4RDtJQUM5RCwrREFBK0Q7SUFFdkQsZ0JBQWdCLEdBQWEsRUFBRSxDQUFDO0lBQ2hDLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztJQUV6QyxZQUEyQixLQUE0QjtRQUE1QixVQUFLLEdBQUwsS0FBSyxDQUF1QjtJQUFHLENBQUM7SUFFcEQsVUFBVSxDQUFDLEtBQXNCO1FBQ3RDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNNLFNBQVMsQ0FBQyxLQUF3QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENB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
|
|
376
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbVBvbGljeUJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQnVpbGRlci9BcGltUG9saWN5QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELHNDQUF5QztBQUN6QywyQ0FBNkM7QUFDN0MsbUNBa0JpQjtBQUVqQixNQUFxQixpQkFBaUI7SUFxQlQ7SUFwQm5CLFFBQVEsR0FBZ0MsU0FBUyxDQUFDO0lBQ2xELFdBQVcsR0FBbUMsU0FBUyxDQUFDO0lBQ3hELFVBQVUsR0FBa0MsU0FBUyxDQUFDO0lBQ3RELGFBQWEsR0FBaUMsU0FBUyxDQUFDO0lBQ3hELFlBQVksR0FBaUMsU0FBUyxDQUFDO0lBQ3ZELGlCQUFpQixHQUFtQyxTQUFTLENBQUM7SUFDOUQsS0FBSyxHQUE2QixTQUFTLENBQUM7SUFDNUMsdUJBQXVCLEdBQzdCLFNBQVMsQ0FBQztJQUNKLGNBQWMsR0FBd0IsRUFBRSxDQUFDO0lBQ3pDLFFBQVEsR0FBd0IsRUFBRSxDQUFDO0lBQ25DLGFBQWEsR0FBMEIsRUFBRSxDQUFDO0lBQzFDLGFBQWEsR0FBMEIsRUFBRSxDQUFDO0lBQzFDLGdCQUFnQixHQUE2QixFQUFFLENBQUM7SUFDeEQsOERBQThEO0lBQzlELCtEQUErRDtJQUV2RCxnQkFBZ0IsR0FBYSxFQUFFLENBQUM7SUFDaEMsaUJBQWlCLEdBQWEsRUFBRSxDQUFDO0lBRXpDLFlBQTJCLEtBQTRCO1FBQTVCLFVBQUssR0FBTCxLQUFLLENBQXVCO0lBQUcsQ0FBQztJQUVwRCxVQUFVLENBQUMsS0FBc0I7UUFDdEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ00sU0FBUyxDQUFDLEtBQXdCO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFCLE9B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
|
|
@@ -28,6 +28,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.ApimProductBuilder = void 0;
|
|
30
30
|
const apim = __importStar(require("@pulumi/azure-native/apimanagement"));
|
|
31
|
+
const env_1 = __importDefault(require("../env"));
|
|
31
32
|
const pulumi_1 = require("@pulumi/pulumi");
|
|
32
33
|
const Random_1 = require("../Core/Random");
|
|
33
34
|
const CustomHelper_1 = require("../KeyVault/CustomHelper");
|
|
@@ -69,22 +70,22 @@ class ApimProductBuilder extends types_1.BuilderAsync {
|
|
|
69
70
|
this.withApi(name, (apiBuilder) => apiBuilder
|
|
70
71
|
.withServiceUrl({
|
|
71
72
|
serviceUrl: 'https://hook.proxy.local',
|
|
72
|
-
apiPath:
|
|
73
|
+
apiPath: `/${name}`,
|
|
73
74
|
})
|
|
74
75
|
.withKeys({ header: props.authHeaderKey })
|
|
75
76
|
.withPolicies((p) => p
|
|
77
|
+
.checkHeader({ name: props.hookHeaderKey })
|
|
78
|
+
//Delete the authentication header so that it is not sending to the external api
|
|
76
79
|
.setHeader({
|
|
77
80
|
name: props.authHeaderKey,
|
|
78
81
|
type: types_1.SetHeaderTypes.delete,
|
|
79
82
|
})
|
|
80
|
-
.checkHeader({ name: props.hookHeaderKey })
|
|
81
83
|
.setBaseUrl({
|
|
82
|
-
url: `@(context.Request.Headers.GetValueOrDefault(
|
|
84
|
+
url: `@(context.Request.Headers.GetValueOrDefault("${props.hookHeaderKey}",""))`,
|
|
83
85
|
}))
|
|
84
|
-
.withVersion('v1',
|
|
85
|
-
revision: 1,
|
|
86
|
+
.withVersion('v1', {
|
|
86
87
|
operations: [{ name: 'Post', method: 'POST', urlTemplate: '/' }],
|
|
87
|
-
}))
|
|
88
|
+
}));
|
|
88
89
|
return this;
|
|
89
90
|
}
|
|
90
91
|
published() {
|
|
@@ -100,11 +101,13 @@ class ApimProductBuilder extends types_1.BuilderAsync {
|
|
|
100
101
|
resourceGroupName: this.args.group.resourceGroupName,
|
|
101
102
|
state: this._state,
|
|
102
103
|
subscriptionRequired: Boolean(this._requiredSubscription),
|
|
104
|
+
subscriptionsLimit: this._requiredSubscription
|
|
105
|
+
? (this._requiredSubscription.subscriptionsLimit ?? 5)
|
|
106
|
+
: undefined,
|
|
103
107
|
approvalRequired: this._requiredSubscription
|
|
104
108
|
? this._requiredSubscription?.approvalRequired
|
|
105
109
|
: undefined,
|
|
106
|
-
|
|
107
|
-
});
|
|
110
|
+
}, { dependsOn: this.args.dependsOn });
|
|
108
111
|
if (this._policyString) {
|
|
109
112
|
new apim.ProductPolicy(`${this._productInstanceName}-policy`, {
|
|
110
113
|
serviceName: this.args.apimServiceName,
|
|
@@ -113,15 +116,16 @@ class ApimProductBuilder extends types_1.BuilderAsync {
|
|
|
113
116
|
format: 'xml',
|
|
114
117
|
policyId: 'policy',
|
|
115
118
|
value: this._policyString,
|
|
116
|
-
});
|
|
119
|
+
}, { dependsOn: this._productInstance });
|
|
117
120
|
}
|
|
118
121
|
}
|
|
119
122
|
buildSubscription() {
|
|
120
123
|
if (!this._productInstance)
|
|
121
124
|
return;
|
|
125
|
+
const { vaultInfo } = this.args;
|
|
122
126
|
const subName = `${this._productInstanceName}-sub`;
|
|
123
|
-
const primaryKey =
|
|
124
|
-
const secondaryKey =
|
|
127
|
+
const primaryKey = `apim-${subName}-primary`;
|
|
128
|
+
const secondaryKey = `apim-${subName}-secondary`;
|
|
125
129
|
const primaryPass = (0, Random_1.randomPassword)({ name: primaryKey }).result;
|
|
126
130
|
const secondaryPass = (0, Random_1.randomPassword)({ name: secondaryKey }).result;
|
|
127
131
|
this._subInstance = new apim.Subscription(subName, {
|
|
@@ -133,15 +137,17 @@ class ApimProductBuilder extends types_1.BuilderAsync {
|
|
|
133
137
|
primaryKey: primaryPass,
|
|
134
138
|
secondaryKey: secondaryPass,
|
|
135
139
|
}, { dependsOn: this._productInstance });
|
|
136
|
-
if (
|
|
140
|
+
if (vaultInfo) {
|
|
137
141
|
(0, CustomHelper_1.addCustomSecrets)({
|
|
138
142
|
contentType: subName,
|
|
139
|
-
vaultInfo
|
|
143
|
+
vaultInfo,
|
|
140
144
|
dependsOn: this._subInstance,
|
|
141
|
-
items:
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
+
items: env_1.default.DPA_CONN_ENABLE_SECONDARY
|
|
146
|
+
? [
|
|
147
|
+
{ name: primaryKey, value: primaryPass },
|
|
148
|
+
{ name: secondaryKey, value: secondaryPass },
|
|
149
|
+
]
|
|
150
|
+
: [{ name: primaryKey, value: primaryPass }],
|
|
145
151
|
});
|
|
146
152
|
}
|
|
147
153
|
}
|
|
@@ -170,4 +176,4 @@ class ApimProductBuilder extends types_1.BuilderAsync {
|
|
|
170
176
|
}
|
|
171
177
|
}
|
|
172
178
|
exports.ApimProductBuilder = ApimProductBuilder;
|
|
173
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXBpbVByb2R1Y3RCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0J1aWxkZXIvQXBpbVByb2R1Y3RCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUVBQTJEO0FBQzNELGlEQUF5QjtBQUN6QiwyQ0FBNkM7QUFDN0MsMkNBQWdEO0FBQ2hELDJEQUE0RDtBQUU1RCxzRUFBOEM7QUFDOUMsNEVBQW9EO0FBQ3BELG1DQVVpQjtBQUVqQixNQUFhLGtCQUNYLFNBQVEsb0JBQTBCO0lBY1A7SUFYbkIsS0FBSyxHQUEyQyxFQUFFLENBQUM7SUFDbkQscUJBQXFCLEdBRWIsU0FBUyxDQUFDO0lBRWxCLGdCQUFnQixHQUE2QixTQUFTLENBQUM7SUFDdkQsWUFBWSxHQUFrQyxTQUFTLENBQUM7SUFDL0Msb0JBQW9CLENBQVM7SUFDdEMsYUFBYSxDQUFTO0lBQ3RCLE1BQU0sR0FBc0IsY0FBYyxDQUFDO0lBRW5ELFlBQTJCLElBQTJCO1FBQ3BELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQURhLFNBQUksR0FBSixJQUFJLENBQXVCO1FBR3BELElBQUksQ0FBQyxvQkFBb0IsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQztRQUNuRCxjQUFjO1FBQ2QsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLDJCQUFpQixDQUFDO1lBQ3pDLEdBQUcsSUFBSTtZQUNQLElBQUksRUFBRSxJQUFJLENBQUMsb0JBQW9CO1NBQ2hDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNiLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBd0I7UUFDMUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQ3hCLElBQUksMkJBQWlCLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQ3pFLENB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
|