k2hr3-api 1.0.42 → 2.0.1
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/config/k2hr3-init.sh.templ +4 -4
- package/dist/.gitkeep +0 -0
- package/dist/src/app.js +262 -0
- package/{bin → dist/src/bin}/run.sh +1 -1
- package/dist/src/bin/watcher.js +113 -0
- package/dist/src/bin/www.js +217 -0
- package/dist/src/lib/basicipcheck.js +392 -0
- package/dist/src/lib/cacerts.js +106 -0
- package/dist/src/lib/dbglogging.js +190 -0
- package/dist/src/lib/dummyuserapi.js +719 -0
- package/dist/src/lib/ipwatch.js +354 -0
- package/dist/src/lib/k2hr3acrutil.js +532 -0
- package/dist/src/lib/k2hr3apiutil.js +1444 -0
- package/dist/src/lib/k2hr3cliutil.js +183 -0
- package/dist/src/lib/k2hr3config.js +832 -0
- package/dist/src/lib/k2hr3cryptutil.js +258 -0
- package/dist/src/lib/k2hr3dkc.js +12121 -0
- package/dist/src/lib/k2hr3extdata.js +198 -0
- package/dist/src/lib/k2hr3keys.js +207 -0
- package/dist/src/lib/k2hr3resutil.js +111 -0
- package/dist/src/lib/k2hr3template.js +6546 -0
- package/dist/src/lib/k2hr3tokens.js +2643 -0
- package/dist/src/lib/k2hr3userdata.js +296 -0
- package/dist/src/lib/k8soidc.js +1000 -0
- package/dist/src/lib/openstackapiv2.js +695 -0
- package/dist/src/lib/openstackapiv3.js +932 -0
- package/dist/src/lib/openstackep.js +667 -0
- package/{tests/auto_common.js → dist/src/lib/types.js} +4 -38
- package/dist/src/routes/acr.js +704 -0
- package/dist/src/routes/debugVerify.js +294 -0
- package/dist/src/routes/extdata.js +219 -0
- package/dist/src/routes/list.js +264 -0
- package/dist/src/routes/policy.js +840 -0
- package/dist/src/routes/resource.js +1489 -0
- package/dist/src/routes/role.js +2627 -0
- package/dist/src/routes/service.js +908 -0
- package/dist/src/routes/tenant.js +1141 -0
- package/dist/src/routes/userTokens.js +482 -0
- package/dist/src/routes/userdata.js +212 -0
- package/dist/src/routes/version.js +103 -0
- package/package.json +152 -121
- package/ChangeLog +0 -378
- package/app.js +0 -292
- package/bin/watcher +0 -122
- package/bin/www +0 -180
- package/eslint.config.mjs +0 -68
- package/lib/basicipcheck.js +0 -376
- package/lib/cacerts.js +0 -71
- package/lib/dbglogging.js +0 -151
- package/lib/dummyuserapi.js +0 -766
- package/lib/ipwatch.js +0 -379
- package/lib/k2hr3acrutil.js +0 -516
- package/lib/k2hr3apiutil.js +0 -1494
- package/lib/k2hr3cliutil.js +0 -191
- package/lib/k2hr3config.js +0 -826
- package/lib/k2hr3cryptutil.js +0 -254
- package/lib/k2hr3dkc.js +0 -12632
- package/lib/k2hr3extdata.js +0 -198
- package/lib/k2hr3keys.js +0 -234
- package/lib/k2hr3resutil.js +0 -100
- package/lib/k2hr3template.js +0 -6925
- package/lib/k2hr3tokens.js +0 -2799
- package/lib/k2hr3userdata.js +0 -312
- package/lib/k8soidc.js +0 -1012
- package/lib/openstackapiv2.js +0 -764
- package/lib/openstackapiv3.js +0 -1032
- package/lib/openstackep.js +0 -553
- package/routes/acr.js +0 -738
- package/routes/debugVerify.js +0 -263
- package/routes/extdata.js +0 -232
- package/routes/list.js +0 -270
- package/routes/policy.js +0 -869
- package/routes/resource.js +0 -1441
- package/routes/role.js +0 -2664
- package/routes/service.js +0 -894
- package/routes/tenant.js +0 -1095
- package/routes/userTokens.js +0 -511
- package/routes/userdata.js +0 -218
- package/routes/version.js +0 -108
- package/templ/Dockerfile.templ +0 -71
- package/tests/auto_acr.js +0 -1101
- package/tests/auto_acr_spec.js +0 -79
- package/tests/auto_all_spec.js +0 -142
- package/tests/auto_control_subprocess.sh +0 -243
- package/tests/auto_extdata.js +0 -220
- package/tests/auto_extdata_spec.js +0 -79
- package/tests/auto_init_config_json.sh +0 -275
- package/tests/auto_k2hdkc_server.ini +0 -109
- package/tests/auto_k2hdkc_slave.ini +0 -83
- package/tests/auto_list.js +0 -439
- package/tests/auto_list_spec.js +0 -79
- package/tests/auto_policy.js +0 -1579
- package/tests/auto_policy_spec.js +0 -79
- package/tests/auto_resource.js +0 -10956
- package/tests/auto_resource_spec.js +0 -79
- package/tests/auto_role.js +0 -6150
- package/tests/auto_role_spec.js +0 -79
- package/tests/auto_service.js +0 -770
- package/tests/auto_service_spec.js +0 -79
- package/tests/auto_subprocesses.js +0 -114
- package/tests/auto_template.sh +0 -126
- package/tests/auto_tenant.js +0 -1100
- package/tests/auto_tenant_spec.js +0 -79
- package/tests/auto_token_util.js +0 -219
- package/tests/auto_userdata.js +0 -292
- package/tests/auto_userdata_spec.js +0 -79
- package/tests/auto_usertokens.js +0 -565
- package/tests/auto_usertokens_spec.js +0 -79
- package/tests/auto_version.js +0 -127
- package/tests/auto_version_spec.js +0 -79
- package/tests/auto_watcher.js +0 -157
- package/tests/auto_watcher_spec.js +0 -79
- package/tests/k2hdkc_test.data +0 -986
- package/tests/k2hdkc_test_load.sh +0 -255
- package/tests/k2hr3template_test.js +0 -187
- package/tests/k2hr3template_test.sh +0 -339
- package/tests/k2hr3template_test_async.js +0 -216
- package/tests/k2hr3template_test_template.result +0 -7117
- package/tests/k2hr3template_test_template.txt +0 -3608
- package/tests/k2hr3template_test_vars.js +0 -194
- package/tests/manual_acr_delete.js +0 -143
- package/tests/manual_acr_get.js +0 -297
- package/tests/manual_acr_postput.js +0 -215
- package/tests/manual_allusertenant_get.js +0 -113
- package/tests/manual_extdata_get.js +0 -191
- package/tests/manual_k2hr3keys_get.js +0 -84
- package/tests/manual_list_gethead.js +0 -230
- package/tests/manual_policy_delete.js +0 -132
- package/tests/manual_policy_gethead.js +0 -275
- package/tests/manual_policy_postput.js +0 -297
- package/tests/manual_resource_delete.js +0 -433
- package/tests/manual_resource_gethead.js +0 -423
- package/tests/manual_resource_postput.js +0 -487
- package/tests/manual_role_delete.js +0 -404
- package/tests/manual_role_gethead.js +0 -547
- package/tests/manual_role_postput.js +0 -544
- package/tests/manual_service_delete.js +0 -153
- package/tests/manual_service_gethead.js +0 -178
- package/tests/manual_service_postput.js +0 -348
- package/tests/manual_tenant_delete.js +0 -186
- package/tests/manual_tenant_gethead.js +0 -268
- package/tests/manual_tenant_postput.js +0 -293
- package/tests/manual_test.sh +0 -352
- package/tests/manual_userdata_get.js +0 -173
- package/tests/manual_usertoken_gethead.js +0 -136
- package/tests/manual_usertoken_postput.js +0 -310
- package/tests/manual_version_get.js +0 -127
- package/tests/run_local_test_k2hdkc.sh +0 -174
- package/tests/test.sh +0 -333
|
@@ -1,255 +0,0 @@
|
|
|
1
|
-
#!/bin/sh
|
|
2
|
-
#
|
|
3
|
-
# K2HR3 REST API
|
|
4
|
-
#
|
|
5
|
-
# Copyright 2017 Yahoo Japan Corporation.
|
|
6
|
-
#
|
|
7
|
-
# K2HR3 is K2hdkc based Resource and Roles and policy Rules, gathers
|
|
8
|
-
# common management information for the cloud.
|
|
9
|
-
# K2HR3 can dynamically manage information as "who", "what", "operate".
|
|
10
|
-
# These are stored as roles, resources, policies in K2hdkc, and the
|
|
11
|
-
# client system can dynamically read and modify these information.
|
|
12
|
-
#
|
|
13
|
-
# For the full copyright and license information, please view
|
|
14
|
-
# the license file that was distributed with this source code.
|
|
15
|
-
#
|
|
16
|
-
# AUTHOR: Takeshi Nakatani
|
|
17
|
-
# CREATE: Thu Nov 9 2017
|
|
18
|
-
# REVISION:
|
|
19
|
-
#
|
|
20
|
-
|
|
21
|
-
#==========================================================
|
|
22
|
-
# Common Variables
|
|
23
|
-
#==========================================================
|
|
24
|
-
PRGNAME=$(basename "$0")
|
|
25
|
-
SCRIPTDIR=$(dirname "$0")
|
|
26
|
-
SCRIPTDIR=$(cd "${SCRIPTDIR}" || exit 1; pwd)
|
|
27
|
-
SRCTOP=$(cd "${SCRIPTDIR}/.." || exit 1; pwd)
|
|
28
|
-
|
|
29
|
-
#
|
|
30
|
-
# Variables
|
|
31
|
-
#
|
|
32
|
-
ANTPICKAX_ETC_DIR="/etc/antpickax"
|
|
33
|
-
ANTPICKAX_ETC_CONF_PATH="${ANTPICKAX_ETC_DIR}"
|
|
34
|
-
|
|
35
|
-
TEST_DATA_FILENAME="k2hdkc_test.data"
|
|
36
|
-
TEST_DATA_TEMPLATE_FILE="${SCRIPTDIR}/${TEST_DATA_FILENAME}"
|
|
37
|
-
TEST_DATA_CUSTOMIZED_FILE="/tmp/${TEST_DATA_FILENAME}"
|
|
38
|
-
|
|
39
|
-
AUTO_K2HDKC_CONF_PATH="${SRCTOP}/tests/auto_k2hdkc_slave.ini"
|
|
40
|
-
AUTO_K2HDKC_CTRL_PORT=18031
|
|
41
|
-
|
|
42
|
-
DEFAULT_REMOTE_K2HDKC_CONF_PATH="${ANTPICKAX_ETC_CONF_PATH}/slave.ini"
|
|
43
|
-
DEFAULT_REMOTE_K2HDKC_CTRL_PORT=8031
|
|
44
|
-
DEFAULT_TENANT_MAIN="tenant0"
|
|
45
|
-
DEFAULT_TENANT_SUB="tenant1"
|
|
46
|
-
|
|
47
|
-
#==============================================================
|
|
48
|
-
# Utility functions
|
|
49
|
-
#==============================================================
|
|
50
|
-
#
|
|
51
|
-
# Usage
|
|
52
|
-
#
|
|
53
|
-
PrintUsage()
|
|
54
|
-
{
|
|
55
|
-
echo "Usage: $1 --for_auto_test(-f)"
|
|
56
|
-
echo " $1 --main(-m) <main tenant name> --sub(-s) <sub tenant name> [--conf(-c) <conf file>] [--port(-p) <port>]"
|
|
57
|
-
echo ""
|
|
58
|
-
echo "Option:"
|
|
59
|
-
echo " --for_auto_test(-f) for local k2hdkc as auto testing(dummyuser)"
|
|
60
|
-
echo " --main(-m) specify main tenant name for remote k2hr3 cluster"
|
|
61
|
-
echo " --sub(-s) specify sub tenant name for remote k2hr3 cluster"
|
|
62
|
-
echo " --conf(-c) specify slave chmpx conf file for remote k2hr3 cluster(default is ../k2hr3_dkc/conf)"
|
|
63
|
-
echo " --port(-p) specify slave chmpx port for remote k2hr3 cluster(default is ../k2hr3_dkc/conf)"
|
|
64
|
-
echo ""
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
#==========================================================
|
|
68
|
-
# Parse options
|
|
69
|
-
#==========================================================
|
|
70
|
-
EXEC_MODE=""
|
|
71
|
-
TENANT_MAIN=""
|
|
72
|
-
TENANT_SUB=""
|
|
73
|
-
REMOTE_K2HDKC_CONF_PATH=""
|
|
74
|
-
REMOTE_K2HDKC_CTRL_PORT=""
|
|
75
|
-
|
|
76
|
-
while [ $# -ne 0 ]; do
|
|
77
|
-
if [ -z "$1" ]; then
|
|
78
|
-
break
|
|
79
|
-
|
|
80
|
-
elif echo "$1" | grep -q -i -e "^-h$" -e "^--help$"; then
|
|
81
|
-
PrintUsage "${PRGNAME}"
|
|
82
|
-
exit 0
|
|
83
|
-
|
|
84
|
-
elif echo "$1" | grep -q -i -e "^-f$" -e "^--for_auto_test$"; then
|
|
85
|
-
if [ -n "${EXEC_MODE}" ]; then
|
|
86
|
-
echo "[ERROR] Already specified --for_auto_test(-f) or --main(-m) or --sub(-s) option."
|
|
87
|
-
exit 1
|
|
88
|
-
fi
|
|
89
|
-
EXEC_MODE="auto"
|
|
90
|
-
|
|
91
|
-
elif echo "$1" | grep -q -i -e "^-m$" -e "^--main$"; then
|
|
92
|
-
#
|
|
93
|
-
# input main tenant name
|
|
94
|
-
#
|
|
95
|
-
if [ -n "${EXEC_MODE}" ] && [ "${EXEC_MODE}" = "auto" ]; then
|
|
96
|
-
echo "[ERROR] Already specified --for_auto_test(-f) or --main(-m) or --sub(-s) option."
|
|
97
|
-
exit 1
|
|
98
|
-
fi
|
|
99
|
-
if [ -n "${TENANT_MAIN}" ]; then
|
|
100
|
-
echo "[ERROR] Already specified --main(-m) option."
|
|
101
|
-
exit 1
|
|
102
|
-
fi
|
|
103
|
-
shift
|
|
104
|
-
if [ $# -eq 0 ]; then
|
|
105
|
-
echo "[ERROR] --main(-m) option needs parameter"
|
|
106
|
-
exit 1
|
|
107
|
-
fi
|
|
108
|
-
TENANT_MAIN="$1"
|
|
109
|
-
EXEC_MODE="notauto"
|
|
110
|
-
|
|
111
|
-
elif echo "$1" | grep -q -i -e "^-s$" -e "^--sub$"; then
|
|
112
|
-
#
|
|
113
|
-
# input sub tenant name
|
|
114
|
-
#
|
|
115
|
-
if [ -n "${EXEC_MODE}" ] && [ "${EXEC_MODE}" = "auto" ]; then
|
|
116
|
-
echo "[ERROR] Already specified --for_auto_test(-f) or --main(-m) or --sub(-s) option."
|
|
117
|
-
exit 1
|
|
118
|
-
fi
|
|
119
|
-
if [ -n "${TENANT_SUB}" ]; then
|
|
120
|
-
echo "[ERROR] Already specified --sub(-s) option."
|
|
121
|
-
exit 1
|
|
122
|
-
fi
|
|
123
|
-
shift
|
|
124
|
-
if [ $# -eq 0 ]; then
|
|
125
|
-
echo "[ERROR] --sub(-s) option needs parameter"
|
|
126
|
-
exit 1
|
|
127
|
-
fi
|
|
128
|
-
TENANT_SUB="$1"
|
|
129
|
-
EXEC_MODE="notauto"
|
|
130
|
-
|
|
131
|
-
elif echo "$1" | grep -q -i -e "^-c$" -e "^--conf$"; then
|
|
132
|
-
if [ -n "${EXEC_MODE}" ] && [ "${EXEC_MODE}" = "auto" ]; then
|
|
133
|
-
echo "[ERROR] --conf(-c) option is specified, but already set --for_auto_test(-f) option."
|
|
134
|
-
exit 1
|
|
135
|
-
fi
|
|
136
|
-
if [ -n "${REMOTE_K2HDKC_CONF_PATH}" ]; then
|
|
137
|
-
echo "[ERROR] Already specified --conf(-c) option."
|
|
138
|
-
exit 1
|
|
139
|
-
fi
|
|
140
|
-
shift
|
|
141
|
-
if [ $# -eq 0 ]; then
|
|
142
|
-
echo "[ERROR] --conf(-c) option needs parameter"
|
|
143
|
-
exit 1
|
|
144
|
-
fi
|
|
145
|
-
if [ ! -f "$1" ]; then
|
|
146
|
-
echo "[ERROR] $1 file is not existed"
|
|
147
|
-
exit 1
|
|
148
|
-
fi
|
|
149
|
-
REMOTE_K2HDKC_CONF_PATH="$1"
|
|
150
|
-
EXEC_MODE="notauto"
|
|
151
|
-
|
|
152
|
-
elif echo "$1" | grep -q -i -e "^-p$" -e "^--port$"; then
|
|
153
|
-
if [ -n "${EXEC_MODE}" ] && [ "${EXEC_MODE}" = "auto" ]; then
|
|
154
|
-
echo "[ERROR] --port(-p) option is specified, but already set --for_auto_test(-f) option."
|
|
155
|
-
exit 1
|
|
156
|
-
fi
|
|
157
|
-
if [ "${REMOTE_K2HDKC_CTRL_PORT}" -ne 0 ]; then
|
|
158
|
-
echo "[ERROR] Already specified --port(-p) option."
|
|
159
|
-
exit 1
|
|
160
|
-
fi
|
|
161
|
-
shift
|
|
162
|
-
if [ $# -eq 0 ]; then
|
|
163
|
-
echo "[ERROR] --port(-p) option needs parameter"
|
|
164
|
-
exit 1
|
|
165
|
-
fi
|
|
166
|
-
if echo "$1" | grep -q '[^0-9]'; then
|
|
167
|
-
echo "[ERROR] --port(-p) option parameter must be number"
|
|
168
|
-
exit 1
|
|
169
|
-
elif [ "$1" -eq 0 ]; then
|
|
170
|
-
echo "[ERROR] --port(-p) option parameter must be positive number"
|
|
171
|
-
exit 1
|
|
172
|
-
fi
|
|
173
|
-
REMOTE_K2HDKC_CTRL_PORT="$1"
|
|
174
|
-
EXEC_MODE="notauto"
|
|
175
|
-
|
|
176
|
-
else
|
|
177
|
-
echo "[ERROR] Unknown option $1"
|
|
178
|
-
exit 1
|
|
179
|
-
fi
|
|
180
|
-
shift
|
|
181
|
-
done
|
|
182
|
-
|
|
183
|
-
#
|
|
184
|
-
# Check options
|
|
185
|
-
#
|
|
186
|
-
if [ -z "${EXEC_MODE}" ]; then
|
|
187
|
-
echo "[ERROR] no option is specified."
|
|
188
|
-
exit 1
|
|
189
|
-
fi
|
|
190
|
-
|
|
191
|
-
#
|
|
192
|
-
# Check and set values
|
|
193
|
-
#
|
|
194
|
-
if [ -z "${TENANT_MAIN}" ]; then
|
|
195
|
-
TENANT_MAIN="${DEFAULT_TENANT_MAIN}"
|
|
196
|
-
fi
|
|
197
|
-
if [ -z "${TENANT_SUB}" ]; then
|
|
198
|
-
TENANT_SUB="${DEFAULT_TENANT_SUB}"
|
|
199
|
-
fi
|
|
200
|
-
if [ -z "${REMOTE_K2HDKC_CONF_PATH}" ]; then
|
|
201
|
-
REMOTE_K2HDKC_CONF_PATH="${DEFAULT_REMOTE_K2HDKC_CONF_PATH}"
|
|
202
|
-
fi
|
|
203
|
-
if [ -z "${REMOTE_K2HDKC_CTRL_PORT}" ]; then
|
|
204
|
-
REMOTE_K2HDKC_CTRL_PORT="${DEFAULT_REMOTE_K2HDKC_CTRL_PORT}"
|
|
205
|
-
fi
|
|
206
|
-
|
|
207
|
-
if [ "${EXEC_MODE}" = "auto" ]; then
|
|
208
|
-
K2HDKC_CONF_PATH="${AUTO_K2HDKC_CONF_PATH}"
|
|
209
|
-
K2HDKC_CTRL_PORT="${AUTO_K2HDKC_CTRL_PORT}"
|
|
210
|
-
LOCAL_HOSTNAME="$(hostname | tr -d '\n')"
|
|
211
|
-
IPADDR="127.10.10.10"
|
|
212
|
-
else
|
|
213
|
-
K2HDKC_CONF_PATH="${REMOTE_K2HDKC_CONF_PATH}"
|
|
214
|
-
K2HDKC_CTRL_PORT="${REMOTE_K2HDKC_CTRL_PORT}"
|
|
215
|
-
LOCAL_HOSTNAME="$(hostname | tr -d '\n')"
|
|
216
|
-
IPADDR="$(nslookup "${LOCAL_HOSTNAME}" | grep 'Address' | grep -v '#' | awk '{print $2}' | head -1 | tr -d '\n')"
|
|
217
|
-
fi
|
|
218
|
-
|
|
219
|
-
if [ ! -f "${K2HDKC_CONF_PATH}" ]; then
|
|
220
|
-
echo "[ERROR] slave chmpx configuration file(${K2HDKC_CONF_PATH}) does not exist."
|
|
221
|
-
exit 1
|
|
222
|
-
fi
|
|
223
|
-
|
|
224
|
-
#==========================================================
|
|
225
|
-
# Do work
|
|
226
|
-
#==========================================================
|
|
227
|
-
#
|
|
228
|
-
# Copy file with convert
|
|
229
|
-
#
|
|
230
|
-
if ! sed -e "s#__LOCAL_HOST_NAME__#${LOCAL_HOSTNAME}#g" -e "s#__LOCAL_HOST_IP__#${IPADDR}#g" -e "s#__TENANT_NAME_MAIN__#${TENANT_MAIN}#g" -e "s#__TENANT_NAME_SUB__#${TENANT_SUB}#g" "${TEST_DATA_TEMPLATE_FILE}" >"${TEST_DATA_CUSTOMIZED_FILE}" 2>/dev/null; then
|
|
231
|
-
echo "[ERROR] Failed to convert and copy file(${SCRIPTDIR}/k2hdkc_test.data) to /tmp."
|
|
232
|
-
exit 1
|
|
233
|
-
fi
|
|
234
|
-
|
|
235
|
-
#
|
|
236
|
-
# Run process
|
|
237
|
-
#
|
|
238
|
-
if ! k2hdkclinetool -conf "${K2HDKC_CONF_PATH}" -ctlport "${K2HDKC_CTRL_PORT}" -run "${TEST_DATA_CUSTOMIZED_FILE}" >/dev/null 2>&1; then
|
|
239
|
-
echo "[ERROR] Failed to load test data."
|
|
240
|
-
rm -f "${TEST_DATA_CUSTOMIZED_FILE}"
|
|
241
|
-
exit 1
|
|
242
|
-
fi
|
|
243
|
-
rm -f "${TEST_DATA_CUSTOMIZED_FILE}"
|
|
244
|
-
echo "[SUCCEED] Loaded test data."
|
|
245
|
-
|
|
246
|
-
exit 0
|
|
247
|
-
|
|
248
|
-
#
|
|
249
|
-
# Local variables:
|
|
250
|
-
# tab-width: 4
|
|
251
|
-
# c-basic-offset: 4
|
|
252
|
-
# End:
|
|
253
|
-
# vim600: noexpandtab sw=4 ts=4 fdm=marker
|
|
254
|
-
# vim<600: noexpandtab sw=4 ts=4
|
|
255
|
-
#
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* K2HR3 REST API
|
|
3
|
-
*
|
|
4
|
-
* Copyright 2017 Yahoo Japan Corporation.
|
|
5
|
-
*
|
|
6
|
-
* K2HR3 is K2hdkc based Resource and Roles and policy Rules, gathers
|
|
7
|
-
* common management information for the cloud.
|
|
8
|
-
* K2HR3 can dynamically manage information as "who", "what", "operate".
|
|
9
|
-
* These are stored as roles, resources, policies in K2hdkc, and the
|
|
10
|
-
* client system can dynamically read and modify these information.
|
|
11
|
-
*
|
|
12
|
-
* For the full copyright and license information, please view
|
|
13
|
-
* the license file that was distributed with this source code.
|
|
14
|
-
*
|
|
15
|
-
* AUTHOR: Takeshi Nakatani
|
|
16
|
-
* CREATE: Wed Jul 12 2017
|
|
17
|
-
* REVISION:
|
|
18
|
-
*
|
|
19
|
-
*/
|
|
20
|
-
|
|
21
|
-
'use strict';
|
|
22
|
-
|
|
23
|
-
var fs = require('fs');
|
|
24
|
-
|
|
25
|
-
var r3templeng = require('../lib/k2hr3template');
|
|
26
|
-
var apiutil = require('../lib/k2hr3apiutil');
|
|
27
|
-
|
|
28
|
-
// Debug logging objects
|
|
29
|
-
var r3logger = require('../lib/dbglogging');
|
|
30
|
-
|
|
31
|
-
//
|
|
32
|
-
// check environments
|
|
33
|
-
//
|
|
34
|
-
var templfile = apiutil.getSafeString(process.env.R3TEMPLFILE);
|
|
35
|
-
var varfile = apiutil.getSafeString(process.env.R3VARFILE);
|
|
36
|
-
if(!apiutil.isSafeString(templfile) || ('' !== varfile && !apiutil.isSafeString(varfile))){
|
|
37
|
-
r3logger.elog('Environments are wrong : R3TEMPLFILE=' + JSON.stringify(templfile) + ', R3VARFILE=' + JSON.stringify(varfile));
|
|
38
|
-
process.exit(0);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
//
|
|
42
|
-
// execute main
|
|
43
|
-
//
|
|
44
|
-
function execTemplateEngine(templString, varmap)
|
|
45
|
-
{
|
|
46
|
-
var r3templ = new r3templeng.r3template;
|
|
47
|
-
|
|
48
|
-
// load template string
|
|
49
|
-
if(!r3templ.load(templString)){
|
|
50
|
-
r3logger.elog('could not load string to k2hr3 template engine : string=' + JSON.stringify(templString));
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// print variable names in template
|
|
55
|
-
var vars = r3templ.getVariableNames();
|
|
56
|
-
console.log('----------------------------------------------------------------');
|
|
57
|
-
if(apiutil.isEmptyArray(vars)){
|
|
58
|
-
console.log('var names = n/a');
|
|
59
|
-
}else{
|
|
60
|
-
console.log('var names = ' + r3logger.dump(vars));
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
// execute template engine
|
|
64
|
-
var resobj = r3templ.execute(varmap);
|
|
65
|
-
console.log('----------------------------------------------------------------');
|
|
66
|
-
console.log('RESULT');
|
|
67
|
-
console.log('----------------------------------------------------------------');
|
|
68
|
-
if(resobj.result){
|
|
69
|
-
console.log('result = succeed');
|
|
70
|
-
console.log('input string = ' + templString);
|
|
71
|
-
console.log('output string = ' + resobj.getString());
|
|
72
|
-
}else{
|
|
73
|
-
console.log('result = failed');
|
|
74
|
-
console.log('input string = ' + templString);
|
|
75
|
-
}
|
|
76
|
-
console.log('----------------------------------------------------------------');
|
|
77
|
-
return true;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
//
|
|
81
|
-
// load template file
|
|
82
|
-
//
|
|
83
|
-
fs.readFile(templfile, 'utf8', function(err, templString)
|
|
84
|
-
{
|
|
85
|
-
if(null !== err){
|
|
86
|
-
r3logger.elog('could not load template string from file : ' + JSON.stringify(templfile));
|
|
87
|
-
r3logger.dump(err);
|
|
88
|
-
process.exit(0);
|
|
89
|
-
}
|
|
90
|
-
if(!apiutil.isSafeString(templString)){
|
|
91
|
-
r3logger.elog('loaded template string is empty : ' + JSON.stringify(templString));
|
|
92
|
-
process.exit(0);
|
|
93
|
-
}
|
|
94
|
-
//r3logger.dlog('Template string : ' + JSON.stringify(templString));
|
|
95
|
-
|
|
96
|
-
//
|
|
97
|
-
// check variable file type(allow varfile is null)
|
|
98
|
-
//
|
|
99
|
-
var is_varfile_json = false;
|
|
100
|
-
if('' === varfile){
|
|
101
|
-
r3logger.dlog('variable file(' + varfile + ') is not specified.');
|
|
102
|
-
is_varfile_json = false;
|
|
103
|
-
}else if(apiutil.compareCaseString('.json5', varfile.substr(-6))){
|
|
104
|
-
r3logger.dlog('variable file(' + varfile + ') is JSON5 type.');
|
|
105
|
-
is_varfile_json = true;
|
|
106
|
-
}else if(apiutil.compareCaseString('.json', varfile.substr(-5))){
|
|
107
|
-
r3logger.dlog('variable file(' + varfile + ') is JSON type.');
|
|
108
|
-
is_varfile_json = true;
|
|
109
|
-
}else if(apiutil.compareCaseString('.js', varfile.substr(-3))){
|
|
110
|
-
r3logger.dlog('variable file(' + varfile + ') is JS type.');
|
|
111
|
-
is_varfile_json = false;
|
|
112
|
-
}else{
|
|
113
|
-
r3logger.dlog('variable file(' + varfile + ') is unknown type, then we will load it as JSON type.');
|
|
114
|
-
is_varfile_json = true;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
//
|
|
118
|
-
// load variable file type
|
|
119
|
-
//
|
|
120
|
-
var varmap = {}; // default for varfile is null
|
|
121
|
-
if(is_varfile_json){
|
|
122
|
-
// json file
|
|
123
|
-
fs.readFile(varfile, 'utf8', function(err, jsonVarString)
|
|
124
|
-
{
|
|
125
|
-
if(null !== err){
|
|
126
|
-
r3logger.elog('could not load variable JSON string fromm file : ' + JSON.stringify(varfile));
|
|
127
|
-
r3logger.dump(err);
|
|
128
|
-
process.exit(0);
|
|
129
|
-
}
|
|
130
|
-
if(apiutil.isSafeString(jsonVarString)){
|
|
131
|
-
// parse JSON
|
|
132
|
-
varmap = jsonVarString;
|
|
133
|
-
if(apiutil.checkSimpleJSON(jsonVarString)){
|
|
134
|
-
varmap = JSON.parse(jsonVarString);
|
|
135
|
-
}
|
|
136
|
-
if(!apiutil.isSafeEntity(varmap)){
|
|
137
|
-
r3logger.elog('loaded variable file(.json) is something wrong : ' + JSON.stringify(varmap));
|
|
138
|
-
process.exit(0);
|
|
139
|
-
}
|
|
140
|
-
}else{
|
|
141
|
-
// allow empty string
|
|
142
|
-
r3logger.dlog('loaded variable JSON string is empty.');
|
|
143
|
-
}
|
|
144
|
-
//r3logger.dump(varmap);
|
|
145
|
-
|
|
146
|
-
// execute
|
|
147
|
-
if(!execTemplateEngine(templString, varmap)){
|
|
148
|
-
r3logger.elog('failed to execute k2hr3 template engine.');
|
|
149
|
-
process.exit(0);
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
}else{
|
|
154
|
-
// js file
|
|
155
|
-
// (js file must be like following contents)
|
|
156
|
-
//
|
|
157
|
-
// module.exports = {
|
|
158
|
-
// 'key1': 'value1',
|
|
159
|
-
// 'key2': 'value2',
|
|
160
|
-
// ...
|
|
161
|
-
// };
|
|
162
|
-
//
|
|
163
|
-
if('' !== varfile){
|
|
164
|
-
varmap = require(varfile);
|
|
165
|
-
if(!apiutil.isSafeEntity(varmap)){
|
|
166
|
-
r3logger.elog('loaded variable file(.js) is something wrong : ' + JSON.stringify(varmap));
|
|
167
|
-
process.exit(0);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
//r3logger.dump(varmap);
|
|
171
|
-
|
|
172
|
-
// execute
|
|
173
|
-
if(!execTemplateEngine(templString, varmap)){
|
|
174
|
-
r3logger.elog('failed to execute k2hr3 template engine.');
|
|
175
|
-
process.exit(0);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
/*
|
|
181
|
-
* Local variables:
|
|
182
|
-
* tab-width: 4
|
|
183
|
-
* c-basic-offset: 4
|
|
184
|
-
* End:
|
|
185
|
-
* vim600: noexpandtab sw=4 ts=4 fdm=marker
|
|
186
|
-
* vim<600: noexpandtab sw=4 ts=4
|
|
187
|
-
*/
|