Skip to content

Commit cf35e21

Browse files
authored
Merge pull request #172 from AbsaOSS/boilerplate/update
Boilerplate update, refactoring, improve webhook callbacks
2 parents f522677 + 5355eb2 commit cf35e21

36 files changed

+231
-179
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ jobs:
100100
101101
# change REBUILD_SEED if you want to manually enforce rebuilding all images
102102
REBUILD_SEED_REDIS="1"
103-
REBUILD_SEED_BASE="2"
103+
REBUILD_SEED_BASE="3"
104104
REBUILD_SEED_AGENCY="1"
105105
106106
export CODE_AGENCY_HASH=${{ hashFiles('vcxagency-node') }}

vcxagency-base/build.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
SCRIPT_DIR_PATH=$(dirname "$0")
44

5-
INDYSDK_REPO="https://gitlab.com/evernym/verity/vdr-tools.git"
5+
VDRTOOLS_REPO="https://gitlab.com/evernym/verity/vdr-tools.git"
66
INDYSDK_REVISION="7df4c69b"
77
DOCKER_TAG="$1"
88

9-
docker build --build-arg "INDYSDK_REPO=$INDYSDK_REPO" \
9+
docker build --build-arg "VDRTOOLS_REPO=$VDRTOOLS_REPO" \
1010
--build-arg "INDYSDK_REVISION=$INDYSDK_REVISION" \
1111
-t "$DOCKER_TAG" \
1212
-f "$SCRIPT_DIR_PATH/vcxagency-base.Dockerfile" \
Lines changed: 12 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
FROM alpine:3.15.4 AS builder
1+
FROM alpine:3.15.4 AS LIBINDY_BUILD
22

33
ARG UID=1001
44
ARG GID=1001
55

6-
ARG INDYSDK_PATH=/home/indy/vdr-tools
7-
ARG INDYSDK_REPO=https://gitlab.com/evernym/verity/vdr-tools.git
8-
ARG INDYSDK_REVISION=7df4c69b
6+
ARG VDRTOOLS_PATH=/home/indy/vdr-tools
7+
ARG VDRTOOLS_REPO=https://gitlab.com/evernym/verity/vdr-tools.git
8+
ARG VDRTOOLS_REVISION=7df4c69b
99

1010
ENV LC_ALL="C.UTF-8"
1111
ENV LANG="C.UTF-8"
@@ -31,39 +31,32 @@ ARG RUST_VER="1.52.0"
3131
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain $RUST_VER --default-host x86_64-unknown-linux-musl
3232
ENV PATH="/home/indy/.cargo/bin:$PATH" RUSTFLAGS="-C target-feature=-crt-static"
3333

34-
RUN git clone $INDYSDK_REPO
35-
RUN cd $INDYSDK_PATH && git --no-pager log --decorate=short --pretty=oneline -n5
36-
RUN cd $INDYSDK_PATH && git checkout $INDYSDK_REVISION
34+
RUN git clone $VDRTOOLS_REPO
35+
RUN cd $VDRTOOLS_PATH && git --no-pager log --decorate=short --pretty=oneline -n5
36+
RUN cd $VDRTOOLS_PATH && git checkout $VDRTOOLS_REVISION
3737

38-
RUN cargo build --release --manifest-path=$INDYSDK_PATH/libindy/Cargo.toml
38+
RUN cargo build --release --manifest-path=$VDRTOOLS_PATH/libindy/Cargo.toml
3939

4040
USER root
41-
RUN mv $INDYSDK_PATH/libindy/target/release/libindy.so /usr/lib
41+
RUN mv $VDRTOOLS_PATH/libindy/target/release/libindy.so /usr/lib
4242

4343
FROM alpine:3.15.4
4444

4545
ARG UID=1001
4646
ARG GID=1001
4747

48-
ENV LC_ALL="C.UTF-8"
4948
ENV LANG="C.UTF-8"
49+
ENV LC_ALL="C.UTF-8"
5050

5151
RUN addgroup -g $GID node && adduser -u $UID -D -G node node
5252

53-
COPY --from=builder /usr/lib/libindy.so /usr/lib/
53+
COPY --from=LIBINDY_BUILD /usr/lib/libindy.so /usr/lib/
5454

5555
RUN apk update && apk upgrade
5656
RUN apk add --no-cache \
57-
bash \
58-
g++ \
59-
gcc \
6057
libsodium-dev \
6158
libzmq \
62-
make \
63-
cmake \
64-
npm \
6559
openssl-dev \
66-
python2 \
6760
sqlite-dev \
6861
zeromq-dev
6962

@@ -72,4 +65,4 @@ RUN apk add --no-cache nodejs=12.22.12-r0
7265

7366
LABEL org.label-schema.schema-version="1.0"
7467
LABEL org.label-schema.name="indy-sdk"
75-
LABEL org.label-schema.version="${INDYSDK_REVISION}"
68+
LABEL org.label-schema.version="${VDRTOOLS_REVISION}"

vcxagency-node/Dockerfile

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1-
ARG AGENCY_BASE_IMAGE=vcxagency-base:1.15.0
1+
ARG AGENCY_BASE_IMAGE
22
FROM ${AGENCY_BASE_IMAGE}
33

4+
RUN apk add --no-cache \
5+
npm \
6+
bash \
7+
g++ \
8+
gcc \
9+
make \
10+
cmake \
11+
python2
412
RUN npm install -g yarn
513

614
USER node
@@ -27,10 +35,4 @@ LABEL org.label-schema.schema-version="1.1.0"
2735
LABEL org.label-schema.name="vcxagency-node"
2836
LABEL org.label-schema.description="Node VCX Agency"
2937

30-
ENV LOG_LEVEL ${LOG_LEVEL:-'true'}
31-
ENV LOG_ENABLE_INDYSDK ${LOG_ENABLE_INDYSDK:-'false'}
32-
ENV LOG_JSON_TO_CONSOLE ${LOG_JSON_TO_CONSOLE:-'true'}
33-
34-
EXPOSE ${SERVER_PORT}
35-
3638
CMD ["npm", "run", "serve"]

vcxagency-node/package.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@
2121
"test:perf:generatedata": "node ./test/perf/storage/generate-dataset.js",
2222
"test:perf": "jest --runInBand ./test/perf/storage/pgstorage.perf.spec.js",
2323
"test:unit": "SILENT_WINSTON=true jest --runInBand ./test/unit",
24-
"test:unit:storage": "SILENT_WINSTON=true jest --runInBand ./test/unit/storage/",
25-
"test:unit:messaging": "SILENT_WINSTON=true jest --runInBand ./test/unit/messaging/aries-msgs.spec.js",
24+
"test:unit:configuration": "SILENT_WINSTON=true jest --runInBand ./test/unit/configuration",
2625
"test:unit:entities": "SILENT_WINSTON=true jest --runInBand ./test/unit/entities",
27-
"test:unit:configuration": "SILENT_WINSTON=true jest --runInBand ./test/unit/configuration"
26+
"test:unit:messaging": "SILENT_WINSTON=true jest --runInBand ./test/unit/messaging",
27+
"test:unit:notifications": "SILENT_WINSTON=true jest --runInBand ./test/unit/notifications",
28+
"test:unit:state": "SILENT_WINSTON=true jest --runInBand ./test/unit/state",
29+
"test:unit:storage": "SILENT_WINSTON=true jest --runInBand ./test/unit/storage/"
2830
},
2931
"devDependencies": {
3032
"@types/jest": "^25.2.2",

vcxagency-node/src/configuration/app-config-loader.js

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ if (appConfigName) {
3030

3131
function buildAppConfigFromEnvVariables () {
3232
const appConfig = {
33-
LOG_LEVEL: process.env.LOG_LEVEL || 'info',
34-
LOG_ENABLE_INDYSDK: process.env.LOG_ENABLE_INDYSDK || 'false',
33+
LOG_LEVEL: process.env.LOG_LEVEL,
34+
LOG_ENABLE_INDYSDK: process.env.LOG_ENABLE_INDYSDK,
3535
LOG_JSON_TO_CONSOLE: process.env.LOG_JSON_TO_CONSOLE,
3636
LOG_HEALTH_REQUESTS: process.env.LOG_HEALTH_REQUESTS,
3737
DEV_MODE: process.env.DEV_MODE,
3838

3939
SERVER_PORT: process.env.SERVER_PORT,
4040
SERVER_HOSTNAME: process.env.SERVER_HOSTNAME,
41-
SERVER_MAX_REQUEST_SIZE_KB: process.env.SERVER_MAX_REQUEST_SIZE_KB || '300',
41+
SERVER_MAX_REQUEST_SIZE_KB: process.env.SERVER_MAX_REQUEST_SIZE_KB,
4242
SERVER_ENABLE_TLS: process.env.SERVER_ENABLE_TLS,
4343
CERTIFICATE_PATH: process.env.CERTIFICATE_PATH,
4444
CERTIFICATE_KEY_PATH: process.env.CERTIFICATE_KEY_PATH,
@@ -61,7 +61,11 @@ function buildAppConfigFromEnvVariables () {
6161

6262
AWS_S3_PATH_CERT: process.env.AWS_S3_PATH_CERT,
6363
AWS_S3_BUCKET_CERT: process.env.AWS_S3_BUCKET_CERT,
64-
AWS_S3_PATH_CERT_KEY: process.env.AWS_S3_PATH_CERT_KEY
64+
AWS_S3_PATH_CERT_KEY: process.env.AWS_S3_PATH_CERT_KEY,
65+
66+
ECS_CONTAINER_METADATA_URI_V4: process.env.ECS_CONTAINER_METADATA_URI_V4,
67+
WEBHOOK_RESPONSE_TIMEOUT_MS: process.env.WEBHOOK_RESPONSE_TIMEOUT_MS,
68+
EXPLAIN_QUERIES: process.env.EXPLAIN_QUERIES
6569
}
6670
appConfig.SERVER_MAX_REQUEST_SIZE_KB = parseInt(appConfig.SERVER_MAX_REQUEST_SIZE_KB)
6771
appConfig.MYSQL_DATABASE_WALLET_CONNECTION_LIMIT = parseInt(appConfig.MYSQL_DATABASE_WALLET_CONNECTION_LIMIT)

vcxagency-node/src/configuration/app-config.js

Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
'use strict'
1818

1919
const Joi = require('joi')
20-
const fs = require('fs')
2120

2221
function stringifyAndHideSensitive (appConfig) {
2322
function hideSecrets (key, value) {
@@ -40,22 +39,22 @@ const MB_AS_KB = 1024
4039

4140
const configValidation = Joi.object().keys({
4241
LOG_LEVEL: Joi.string().valid('silly', 'debug', 'info', 'warn', 'error'),
43-
LOG_ENABLE_INDYSDK: Joi.string().valid('true', 'false'),
44-
LOG_JSON_TO_CONSOLE: Joi.string().valid('true', 'false'),
45-
LOG_HEALTH_REQUESTS: Joi.string().valid('true', 'false').default('false'),
46-
DEV_MODE: Joi.string().valid('true', 'false').default('false'),
42+
LOG_ENABLE_INDYSDK: Joi.boolean().default(false),
43+
LOG_JSON_TO_CONSOLE: Joi.boolean().default(true),
44+
LOG_HEALTH_REQUESTS: Joi.boolean().default(false),
45+
DEV_MODE: Joi.boolean().default(false),
4746

48-
SERVER_PORT: Joi.number().integer().min(1025).max(65535).required(),
4947
SERVER_HOSTNAME: Joi.string().default('0.0.0.0'),
48+
SERVER_PORT: Joi.number().integer().min(1025).max(65535).required(),
49+
SERVER_ENABLE_TLS: Joi.boolean().default(true),
5050
SERVER_MAX_REQUEST_SIZE_KB: Joi.number().integer().min(1).max(MB_AS_KB * 10).default(512),
51-
SERVER_ENABLE_TLS: Joi.string().valid('true', 'false').default('true'),
5251
CERTIFICATE_PATH: Joi.string(),
5352
CERTIFICATE_KEY_PATH: Joi.string(),
5453

5554
AGENCY_WALLET_NAME: Joi.string().required(),
56-
AGENCY_DID: Joi.string().required(),
57-
AGENCY_SEED_SECRET: Joi.string().min(20).required(),
5855
AGENCY_WALLET_KEY_SECRET: Joi.string().min(20).required(),
56+
AGENCY_SEED_SECRET: Joi.string().min(20).required(),
57+
AGENCY_DID: Joi.string().required(),
5958

6059
REDIS_URL: Joi.string(),
6160
AGENCY_TYPE: Joi.string().valid('enterprise', 'client').required(),
@@ -70,47 +69,26 @@ const configValidation = Joi.object().keys({
7069

7170
AWS_S3_PATH_CERT: Joi.string(),
7271
AWS_S3_BUCKET_CERT: Joi.string(),
73-
AWS_S3_PATH_CERT_KEY: Joi.string()
72+
AWS_S3_PATH_CERT_KEY: Joi.string(),
73+
74+
ECS_CONTAINER_METADATA_URI_V4: Joi.string().uri(),
75+
WEBHOOK_RESPONSE_TIMEOUT_MS: Joi.number().default(1000),
76+
EXPLAIN_QUERIES: Joi.boolean().default(false)
7477
})
7578

7679
function validateFinalConfig (appConfig) {
77-
function testConfigPathExist (appConfig, key) {
78-
const path = appConfig[key]
79-
if (!fs.existsSync(path)) {
80-
throw new Error(`${key} = ${path} is not a valid path or the path does not exist`)
80+
if (appConfig.AGENCY_TYPE === 'client') {
81+
if (!appConfig.REDIS_URL) {
82+
throw new Error('Configuration for agency of type \'client\' must have REDIS_URL specified.')
8183
}
8284
}
83-
8485
function validateTls () {
85-
if (appConfig.AGENCY_TYPE === 'client') {
86-
if (!appConfig.REDIS_URL) {
87-
throw new Error('Configuration for agency of type \'client\' must have REDIS_URL specified.')
88-
}
89-
}
90-
if (appConfig.SERVER_ENABLE_TLS === 'true') {
86+
if (appConfig.SERVER_ENABLE_TLS === true) {
9187
if (!appConfig.CERTIFICATE_PATH || !appConfig.CERTIFICATE_KEY_PATH) {
9288
throw new Error('Valid certificate and key paths must be specified when TLS enabled!')
9389
}
94-
testConfigPathExist(appConfig, 'CERTIFICATE_PATH')
95-
testConfigPathExist(appConfig, 'CERTIFICATE_KEY_PATH')
96-
}
97-
}
98-
99-
if (appConfig.WALLET_TYPE === 'pgsql') {
100-
throw new Error('WALLET_TYPE "pgsql" is not supported anymore')
101-
}
102-
if (appConfig.WALLET_TYPE === 'mysql') {
103-
if (!appConfig.MYSQL_WALLET_HOST) {
104-
throw new Error('"MYSQL_WALLET_HOST" is required')
105-
}
106-
if (!appConfig.MYSQL_WALLET_ACCOUNT) {
107-
throw new Error('"MYSQL_WALLET_ACCOUNT" is required')
108-
}
109-
if (!appConfig.MYSQL_WALLET_PASSWORD_SECRET) {
110-
throw new Error('"MYSQL_WALLET_PASSWORD_SECRET" is required')
11190
}
11291
}
113-
11492
validateTls()
11593
}
11694

0 commit comments

Comments
 (0)