forked from hyperledgendary/fabric-rest-sample
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconfig.ts
285 lines (253 loc) · 6.46 KB
/
config.ts
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
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
/*
* SPDX-License-Identifier: Apache-2.0
*
* The sample REST server can be configured using the environment variables
* documented below
*
* In a local development environment, these variables can be loaded from a
* .env file by starting the server with the following command:
*
* npm start:dev
*
* The scripts/generateEnv.sh script can be used to generate a suitable .env
* file for the Fabric Test Network
*/
import * as env from 'env-var';
export const ORG1 = 'Org1';
export const ORG2 = 'Org2';
export const JOB_QUEUE_NAME = 'submit';
/*
* Log level for the REST server
*/
export const logLevel = env
.get('LOG_LEVEL')
.default('info')
.asEnum(['fatal', 'error', 'warn', 'info', 'debug', 'trace', 'silent']);
/*
* The port to start the REST server on
*/
export const port = env
.get('PORT')
.default('3000')
.example('3000')
.asPortNumber();
/*
* The type of backoff to use for retrying failed submit jobs
*/
export const submitJobBackoffType = env
.get('SUBMIT_JOB_BACKOFF_TYPE')
.default('fixed')
.asEnum(['fixed', 'exponential']);
/*
* Backoff delay for retrying failed submit jobs in milliseconds
*/
export const submitJobBackoffDelay = env
.get('SUBMIT_JOB_BACKOFF_DELAY')
.default('3000')
.example('3000')
.asIntPositive();
/*
* The total number of attempts to try a submit job until it completes
*/
export const submitJobAttempts = env
.get('SUBMIT_JOB_ATTEMPTS')
.default('5')
.example('5')
.asIntPositive();
/*
* The maximum number of submit jobs that can be processed in parallel
*/
export const submitJobConcurrency = env
.get('SUBMIT_JOB_CONCURRENCY')
.default('5')
.example('5')
.asIntPositive();
/*
* The number of completed submit jobs to keep
*/
export const maxCompletedSubmitJobs = env
.get('MAX_COMPLETED_SUBMIT_JOBS')
.default('1000')
.example('1000')
.asIntPositive();
/*
* The number of failed submit jobs to keep
*/
export const maxFailedSubmitJobs = env
.get('MAX_FAILED_SUBMIT_JOBS')
.default('1000')
.example('1000')
.asIntPositive();
/*
* Whether to initialise a scheduler for the submit job queue
* There must be at least on queue scheduler to handle retries and you may want
* more than one for redundancy
*/
export const submitJobQueueScheduler = env
.get('SUBMIT_JOB_QUEUE_SCHEDULER')
.default('true')
.example('true')
.asBoolStrict();
/*
* Whether to convert discovered host addresses to be 'localhost'
* This should be set to 'true' when running a docker composed fabric network on the
* local system, e.g. using the test network; otherwise should it should be 'false'
*/
export const asLocalhost = env
.get('AS_LOCAL_HOST')
.default('true')
.example('true')
.asBoolStrict();
/*
* The Org1 MSP ID
*/
export const mspIdOrg1 = env
.get('HLF_MSP_ID_ORG1')
.default(`${ORG1}MSP`)
.example(`${ORG1}MSP`)
.asString();
/*
* The Org2 MSP ID
*/
export const mspIdOrg2 = env
.get('HLF_MSP_ID_ORG2')
.default(`${ORG2}MSP`)
.example(`${ORG2}MSP`)
.asString();
/*
* Name of the channel which the basic asset sample chaincode has been installed on
*/
export const channelName = env
.get('HLF_CHANNEL_NAME')
.default('mychannel')
.example('mychannel')
.asString();
/*
* Name used to install the basic asset sample
*/
export const chaincodeName = env
.get('HLF_CHAINCODE_NAME')
.default('basic')
.example('basic')
.asString();
/*
* The transaction submit timeout in seconds for commit notification to complete
*/
export const commitTimeout = env
.get('HLF_COMMIT_TIMEOUT')
.default('300')
.example('300')
.asIntPositive();
/*
* The transaction submit timeout in seconds for the endorsement to complete
*/
export const endorseTimeout = env
.get('HLF_ENDORSE_TIMEOUT')
.default('30')
.example('30')
.asIntPositive();
/*
* The transaction query timeout in seconds
*/
export const queryTimeout = env
.get('HLF_QUERY_TIMEOUT')
.default('3')
.example('3')
.asIntPositive();
/*
* The Org1 connection profile JSON
*/
export const connectionProfileOrg1 = env
.get('HLF_CONNECTION_PROFILE_ORG1')
.required()
.example(
'{"name":"test-network-org1","version":"1.0.0","client":{"organization":"Org1" ... }'
)
.asJsonObject() as Record<string, unknown>;
/*
* Certificate for an Org1 identity to evaluate and submit transactions
*/
export const certificateOrg1 = env
.get('HLF_CERTIFICATE_ORG1')
.required()
.example('"-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----\\n"')
.asString();
/*
* Private key for an Org1 identity to evaluate and submit transactions
*/
export const privateKeyOrg1 = env
.get('HLF_PRIVATE_KEY_ORG1')
.required()
.example('"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n"')
.asString();
/*
* The Org2 connection profile JSON
*/
export const connectionProfileOrg2 = env
.get('HLF_CONNECTION_PROFILE_ORG2')
.required()
.example(
'{"name":"test-network-org2","version":"1.0.0","client":{"organization":"Org2" ... }'
)
.asJsonObject() as Record<string, unknown>;
/*
* Certificate for an Org2 identity to evaluate and submit transactions
*/
export const certificateOrg2 = env
.get('HLF_CERTIFICATE_ORG2')
.required()
.example('"-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----\\n"')
.asString();
/*
* Private key for an Org2 identity to evaluate and submit transactions
*/
export const privateKeyOrg2 = env
.get('HLF_PRIVATE_KEY_ORG2')
.required()
.example('"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\\n"')
.asString();
/*
* The host the Redis server is running on
*/
export const redisHost = env
.get('REDIS_HOST')
.default('localhost')
.example('localhost')
.asString();
/*
* The port the Redis server is running on
*/
export const redisPort = env
.get('REDIS_PORT')
.default('6379')
.example('6379')
.asPortNumber();
/*
* Username for the Redis server
*/
export const redisUsername = env
.get('REDIS_USERNAME')
.example('fabric')
.asString();
/*
* Password for the Redis server
*/
export const redisPassword = env.get('REDIS_PASSWORD').asString();
/*
* API key for Org1
* Specify this API key with the X-Api-Key header to use the Org1 connection profile and credentials
*/
export const org1ApiKey = env
.get('ORG1_APIKEY')
.required()
.example('123')
.asString();
/*
* API key for Org2
* Specify this API key with the X-Api-Key header to use the Org2 connection profile and credentials
*/
export const org2ApiKey = env
.get('ORG2_APIKEY')
.required()
.example('456')
.asString();